メインコンテンツへスキップ
見出し画像

LLMプロダクト開発とはどういうものなのか?

    erukiti

    LLMプロダクト開発者がMac Studioを買ってローカルLLMを触るべき理由という記事を書きました。

    mutaguchiさんのツイートを見て、LLMプロダクトの開発とはどういうものなのかを知らない人も多いのかなと気づいたので、そこらへんを記事として書いてみます。

    https://t.co/4WvjuuoGnC
    「LLMプロダクト開発者がMac Studioを買ってローカルLLMを触るべき理由」の記事のはてブコメント見てたんだけど、ほとんど理解されてなかったのが興味深い。

    ・プロプライエタリなLLMでは、ランニングコストが嵩み、これを利用したサービスは成立しづらい…

    — mutaguchi (@mutaguchi) April 24, 2024

    商用LLM APIとローカルLLMって使い方が全然違う気がしてる。

    商用LLM APIって、機微情報を送らないこと、規約違反テキストを送らないこと、サーバーに負荷をかけないようにアクセス頻度を調節すること、できるだけ最小回数のコールに留め、コストを節約すること…

    — mutaguchi (@mutaguchi) April 24, 2024

    ローカルLLMのポテンシャルがいまいち認知されない理由って、ChatGPTのせいかなぁという気がしてる。
    LLMとは、チャットAIのことである、という刷り込みが強烈すぎる。「自然言語命令を受け取って自然言語を出力するプロセッサ」だと捉えている人が少ないように感じる。

    — mutaguchi (@mutaguchi) April 25, 2024

    LLMプロダクト開発について

    LLMを使ったプロダクトの開発として、世界で最もユースケースがわかりやすいのがチャットアプリです。弊社もシゴラクAIを手がけています。

    ChatGPTのインパクトが強く、言語系の生成AI=ChatGPTという認識の人がめちゃくちゃ多いですが、実際のLLMプロダクトには他にもいろいろな形があります。

    GitHub CopilotやCursorのような開発者にとって身近なアプリもLLMプロダクトです。

    そもそも、toCのようなわかりやすいプロダクトだけではありません。toBの世界では、様々な形でLLMを組み込もうとしている人たちや組織があり、我々もシゴラクAI以外の様々な取り組みを行っています。

    LLMプロダクトを開発している企業は、そういった新しい形のものを生み出そうと日々研究と開発を行っています。

    我々も日々事業開発をしているのであまり詳しく語ることはできませんが、様々な情報の分析、加工、生成をしています。

    • ChatGPTだけがLLMプロダクトではない

    • 様々な形のプロダクトが今すでに生まれ、これから生まれようとしている

    • LLMプロダクトを開発している生成AI企業にとっては、むしろ新たな形のプロダクトやサービスを生み出すことが主戦場である

    LLMとは、文字列を入れたら文字列が帰ってくる関数である

    mutaguchiさんも言及しているとおり、LLMとは、自然言語を入力したら自然言語が帰ってくる装置なので、言ってみれば文字列を加工する関数です。

    LLMを使えば、様々な自然言語処理が可能です。従来的な自然言語処理では、タスクに合わせた「学習」やロジックの構築が必要でしたが、LLMを使えば、プロンプトを工夫すればそれなりの精度で様々なタスクを行えます。

    たとえば、株のシステムトレードを作るとします。これまでのやり方ならば、ロジックを組んで分析するか、大量のデータを機械学習で学習させてから処理をしていました。

    LLMを使う場合は、様々なデータをプロンプトと一緒にLLMに食わせて帰ってきたデータを元に処理を行います。

    システムトレードに必要な情報分析は、リアルタイム性が必要なものだけではないはずです。長期にわたり継続的に分析し続けるようなタスクも必要でしょう。そういったタスクでは、リアルタイム性や応答速度はあまり問題にならないはずです。

    つまり、LLMプロダクトにおいて、応答速度は二の次というタスクもあるということです。

    先日OpenAIがバッチモードをリリースしました。最大24時間のレイテンシがある代わりにAPI利用料金が半額になるというものです。まさにこういったタスクをやるためにあるものです。

    • LLMの使い道はリアルタイム性が重要なものばかりではありません

    • ものすごく時間がかかってもかまわないようなタスクもあります

    API呼び出しはお金がかかる

    LLMは主にOpenAI, Azure, Anthropic, AWS, Google等が提供するAPI経由で使うことがほとんどです。このAPI経由で、GPT-4のようなLLMを触ることになります。

    API利用料金は、入力トークン数と出力トークン数に比例する従量課金です。

    • GPT-3.5は100万トークンの入力で$0.5, 出力で$1.5

    • GPT-4は100万トークンの入力で$10, 出力で$30

    • Claude3 Haikuは100万トークンの入力で$0.25, 出力で$1.25

    • Claude3 Opusは100万トークンの入力で$15, 出力で$75

    です。海外のモデルにおいて日本語はとても不利なので大体1文字=1トークンを目安に考えるといいでしょう。

    たとえばある商品情報が入稿されるので、ECサイトのデータを生成するようなタスクがあるとします。仮に5000文字を入力して1000文字にデータ整形をするとして、これを1000商品で行った場合

    • GPT-3.5で$2.5+$1.5で$4(日本円だと600円)

    • GPT-4で$50+$30で$80(日本円だと12000円)

    • Haikuなら$1.75+$1.25で$3(日本円だと450円)

    • Opusなら$75+$75で$150(日本円だと22500円)

    かかるという計算になります。

    実際、Haikuを使えば、450円で済むのでまだ安いといえる金額でしょう。ですが、100万件を処理しようと思ったらHaikuですら45万円かかります。

    ましてやHaikuやGPT-3.5はあまり頭の良いモデルではありません。GPT-4やOpus(あるいはその中間くらいの性能である Claude3 Sonnet)位の性能が無いと不可能なタスクもあります。

    これが単発の案件ならまだしも、定常的に発生するようなものであれば、考えたくもないような金額が発生する事になります。

    開発中にもAPI利用料金は重くのしかかります。処理方法やプロンプトのチューニングも必要です。ちょっとミスっただけで数千円の課金が発生するなんていうのもあるあるです。

    多くのLLMプロダクトでは、API呼び出しにかかる費用との戦いです。如何にしてトークン数やAPI呼び出し回数を削るかに取り組んでいます。

    チャットサービスにしても月額3000円程度で使い放題というのはかなり破格なのです。

    ローカルLLMのメリット

    ローカルLLMであれば、購入費用など初期コストと、電気代などのランニングコストさえ支払えば無限に使えます。

    たとえばGPUメモリが大量にないと実用的に動かす事ができないCommand-R+やLlama3の70Bと呼ばれるような大規模モデルの性能は、Sonnet〜GPT-4クラスと言われていますし、触った人は実際にそれくらいの感想を持つようです。

    そして今後Llama3のチューンされたモデルや、他社からも様々なGPT-4クラスのモデルが登場することが期待できるわけです。

    ローカルLLMであれば、このようなGPT-4クラスのLLMも電気代のみで動かせられます。API呼び出しが青天井だったことを考えると、LLM放題プランはとても魅力的に見えませんか?

    価格の話以外でも、API呼び出しには問題がつきまといます。

    日本の企業にとても多いのですが、どこにデータがあってどういう通信経路をたどるのか、プライバシーについて気にする顧客がとても多いです。

    また、LLM APIサービスではどのサービスでも、一定期間はデータを保持して、良くないデータ生成をしていないか?という検閲を必ずしています。

    日本の基準ではなくアメリカやカナダやフランスなど海外の基準においての検閲を行うため、日本のエンタメコンテンツなんかもフィルターに引っかかってしまう事もあります。これはエンタメ企業がLLM APIを活用しようとすると生じる壁です。

    ローカルに持っているデータをローカルLLMに投げると、余計な通信経路を通らず、余計な検閲をされずに済むという利点があります。

    もちろんローカルにデータを持つ場合は適切なデータ管理が必要にはなりますが、それはクラウド上にデータを持つ場合でも同様ですね。

    LLMプロダクト開発で必要なこと

    ここまでで説明したとおり、LLMプロダクト開発において、LLMの扱い方については、それを適用する領域に応じて、様々な使い分けが必要です。

    API呼び出しをする場合でも、GPT-4, Claude3 Haiku, Claude3 Opusや他のモデルについては、値段や性能など、それぞれ特性が違うので使い分けることを考えなければいけません。

    OpenAIのバッチAPIや、ローカルLLMのようなのものも検討すべきです。

    MacとNVIDIA

    さて、ローカルハードウェアでローカルLLMを動かすとして、Mac以外の選択肢もあります。

    むしろ機械学習の界隈では、NVIDIA一強という世界観です。実際のところNVIDIAのCUDAに強い利点があることは事実です。

    ただ、LLMプロダクトに限れば、モデルの学習やファインチューニングなどをするのでなければそこまでNVIDIAに依存するわけでもありません。

    特にLLMのAPI呼び出しだけしかしてないような事例であればNVIDIAである必然性はほとんどないでしょう。

    NVIDIA GPUは、高価で電力消費が激しく、取り扱いが難しいです。実際に4090を積んだゲーミングPCを作ってみてください。ケースの選び方、電源の選び方、ケーブリング、冷却装置その他を考えるととても大変です。BTOで探してみるとわかりますが、4090を積んだPCは50万円以上します。

    4090はグラフィック用のメモリを24GB積んでいます。

    実際のところ24GBのメモリに収まるモデルであれば、ご家庭で普通に入手可能な環境としては最高性能が出ます。

    「学習」を行う場合、速度が重要な鍵なので4090がほしいと言われると間違いなくそうでしょう。あるいはもういっそA100なりプロユースのものがほしいというのは当然の事実です。

    ただ、これまで述べたように速度依存のタスクばかりではありません。

    Mac StudioはNVIDIAほどの速度は出ませんが、45万円前後で96GBのメモリを積んで、そこそこの速度で動いて、箱から出せばそのまま使えて、しかもOSやデバイスドライバーのインストールが不要で、省電力です。

    • NVIDIAは、24GBのGPUメモリに収まるものを動かすなら4090が圧倒的に高速だけど、マシンをセットアップするのは素人には厳しい

      • それ以上のメモリサイズを求めると、複数差しや、プロ向けのカードを買う必要があるのでさらに厳しい

    • Mac Studioなら、UMAで96GB以上のメモリを載せることができ、箱から出すだけで動かせられる手軽さがある

      • 100万円出していいなら192GB搭載のM2 Ultra Mac Studioが入手できる

    という違いがあります。

    何がなんでも速度がほしい人はNVIDIA GPU買ってください。それ以外に選択肢はないでしょう。

    結局のところ、何を求めるか次第です。適材適所です。NVIDIAもMacもいい感じに使えばいいと思います。

    • LLMプロダクト開発においては、大抵のケースでは推論がメインですし、速度が重要じゃないタスクもあります。その場合は、Mac Studioでも問題なくこなせるわけです

    LLMプロダクト開発は大変だけど楽しい

    LLMは、自然言語を汎用的にかついい感じに加工できる技術です。これによって可能になったことはいろいろとあります。そしてこれまでコストの問題で出来なかったことも、最近の競争の激化に伴うコストダウンやローカルLLMによって少しずつ可能になり始めています。

    プロンプトチューニングやシステムアーキテクチャの工夫や他ありとあらゆる努力は必要ですが、人類がこれまで見たことのないサービスを生み出すことができる可能性があります。

    最近になってGPT-4クラスのローカルLLMが立て続けに登場してきて、LLMプロダクト界隈が盛り上がっている理由の一端が少しでも皆様に届けば幸いです。

     
     
     
    ソフトウェアエンジニアです。

    あなたへのおすすめ