こんにちは、シバタアキラです。前回書いた「生成AI活用のビジネス戦略」から1ヶ月が経ち、引き続きLLMに翻弄され続けているのは私だけではないようで、世界は目まぐるしく動き続けています。ちなみに日本は人口当たりのChatGPTユーザーがスウェーデン、カナダに続いて世界三位だそうで、これを読んでいる読者の皆さんの周りでも、LLMの社内活用について議論が起こっていない方の方が少ないのではないでしょうか?当初の驚きこそ薄れてきたものの、その余波は広がり続けています。特に私の関心の高いのは企業でのLLM活用への動きや、それを可能にするオープンソースLLMモデル、そしてそれらのモデルからアプリケーションを開発するための手法などについて。本稿ではここ1ヶ月で私が学んだことを共有したいと思います:
先週は日本ディープラーニング協会の勉強会にご招待いただき、「大規模言語モデル(LLM)を事業活用するためのプライベート開発を可能にする技術」というタイトルでWeights and BiasesのMLエンジニアの山本さんと一緒に講演を行いました。有料イベントにも関わらず100名近くの方にご参加いただき、様々な企業からLLM活用に取り組んでいる方、取り組もうとしている方とお話しさせていただきました。前回のブログでお話しした内容から発展して、LLM活用の具体的な手法について前回のブログでご紹介したフレームワークを発展させてご紹介した内容のサマリーがこちらです:

ゼロからLLMモデルを構築する方法
については、引き続き大好評のホワイトペーパー「LLMをゼロからトレーニングするためのベストプラクティス」をご覧いただくか、英語ではありますが、OpenAIのAndrej Karpathy氏の講演が非常に参考になると思います。ここで一つ認識して欲しいのはChatGPTはチャット形式の応対にファインチューニングされた基盤モデル(FM)であるということです。逆にいうと、その基盤になっているGPTモデルやこのあと紹介する国産オープンソースモデルなども、チャットボット以外にも様々な用途にチューニングして使うことができます。ChatGPTはすでにプロンプトエンジニアリングでかなり広範囲なタスクをこなすことができるので、「これ以上ファインチューニングで何を学ばせる必要があるのか?」と考えてしまうような方もいるのですが、実際のビジネスアプリケーションを考えると様々なカスタマイズニーズがあります。
セマンティックサーチによる知識追加は実用的
(記事公開時に、セマンティックサーチを誤ってセマンティックセグメンテーションと記している箇所がありました。ご指摘いただきありがとうございます。)
ChatGPTないしその他既存のモデルの基本的な言語・応答能力をベースにアプリケーション開発を行う場合でも、モデルの知識には課題があります。オープンになっていない企業固有のデータなどは情報漏洩してなければ基盤モデルには含まれていません。また、基盤モデルの構築時の学習データに入っていない情報も同様です。例えば、ここで紹介するセマンティックサーチの手法の実装には、Langchainというフレームワークがよく使われますが、下記のような質問をChatGPTにしても、いい答えが返ってきません:

そのような新たな情報に基づく的確な回答をさせるためにはセマンティックサーチの手法が有効です。ここでは対象となる追加情報を含むテキスト群を、事前にエンべディングという深層学習手法を使ってベクトル化することで、検索可能なインデックスを構築します(エンべディングの手法や、インデックスに対する検索方法などは現在進行形で進歩しています。)そしてユーザーが質問をしたタイミングで、その質問に参考になると思われる情報をインデックスから検索してきて、プロンプトの中にコンテクストとして埋め込みます。そうすることで、先ほどの質問に対しても明確な答えが返ってくるようになります:

イベントでお話しした企業の方の中にも、たくさんの種類の複雑な機械を製造されている会社さんでは、マニュアルなどのドキュメントが大量にあり、その中にある情報をチャットボットに答えさせるために、この手法を使って多数のアプリケーションを検証しているという方がいらっしゃいました。実は弊社W&Bにおいても、自社のマニュアルや、サポートでのやり取りなどを取り込んでChatGPTベースのWandBotというボットを公開しています。このボットの開発の詳細は下記のブログに詳しく書かれているので、興味のある方はご参照ください。コードもオープンソース化されています。
基盤モデルのファインチューニングは機能しない?
基盤モデルを拡張するために、追加の学習データを使ってモデルパラメーターの追加学習を行うことをファインチューニングといい、前回のブログでは、自社でモデルを作ることができなくてもオープンソースモデルをファインチューニングすることで、ChatGPTに匹敵するようなモデルができるようになりつつある、というお話をしました。しかし、ファインチューニングに関する私たちの理解はもう少しファインチューニングされる必要があったようです(わかりにくくてスミマセン)。
この点においてはまだ議論が収束していないところではありますが、先月終わりに出た論文 “The False Promise of Imitating Proprietary LLMs” (「ChatGPTと同等のモデルを真似することはできない」)では、ここ数ヶ月のオープンソースモデルの発展に一石を投じました。特に、ChatGPTモデルとのやり取りから生成されたデータをパラメーター効率の良い方法で(一部のパラメーターだけを学習することで)モデルの性能を大幅に向上させ、モデルによっては「半分以上のやり取りにおいてChatGPTと同等ないしそれ以上と人間が判断した」、とされる結果を再検証しています。
人間の評価者が高く評価したファインチューニング後のモデルを、より大規模な検証用データで検証したところ、その評価はChatGPTよりも大幅に低く、また学習データを増やすと悪化したという結果を示しています:

なぜこのようなことが起こっているのか?この論文の著者が人間の評価したモデルとのやり取りを確認したところ、多くの場合チューニングモデルは整った形式で答えを返しているものの、内容は不正確だったといいます。つまり評価している人間が騙されてしまうほどもっともらしく返せたとしても、知識が増えているとはいえず、実際に性能の良いモデルを作るにはよりよい基盤モデルを使う他に近道はない、と結論づけています。
ではファインチューニングは意味がないのか?正確にはファインチューニングの目的を明確にする必要があるようです。前述の通り、チューニングされたモデルは人を騙すほどそれらしい答え方をしたというのは注目ポイントです。ファインチューニングが得意なのはインプットに対する答え方の形式の質を上げることのようです。例えば、つい先日OpenAIが発表したリリースでは、GPT3.5及びGPT4の関数呼び出し性能をファインチューニングで向上させたモデルが発表されています:

このモデルは、例えば「ボストンの今の天気を教えて」を「get_current_weather(location: ‘ボストン’, unit: ‘celsius’)」に変換するようなことに特化しています。このようなモデルの有用性はLLMに他のソフトウェアや機械を操作させるようなアプリケーション開発を考えれば自明でしょう。
また、CyberAgent社では先月自社のLLMモデルを発表した際に、広告コピーの自動生成にモデルを応用するというリリースを出していましたが、これなんかもファインチューニングの好例と言えるでしょう。もちろん素のLLMモデルに「新しい鼻毛切りのキャッチコピーをを生成して」と言えばなんだかの答えを返してくれますし、気の利いた答えのこともあるでしょうが、同社のようにたくさんのコピーのデータを持っている会社が独自にモデルをチューニングすることで、より優れた答えを返すモデルができることは想像に難くありません。
また、今後LLMモデルは個人個人に対してもチューニングされるような時代が来るでしょう。自分の代わりに自分に似た返事の仕方で返してくれるアシスタントのようなものを作る上でもファインチューニングは大いに有効と考えられます。先日LLMの開発ワークショップをした時、ChatGPTのチャットでの実力が非常に高いため、これ以上どのようにファインチューニングが必要なのか、という質問を受けて驚いたのですが、これからLLMをベースに作られるアプリケーションは言葉がインプットでも言葉がアウトプットとは限りませんし、むしろチャットというのはLLMから作り出せる数あるアプリケーションの一つという捉え方が正しいでしょう。
一方で、上記論文で指摘されていた「学習させるデータが多いほど精度が下がった」という点については、深く考察がされていませんでしたが、基盤モデルを追加学習させすぎることで基盤モデルの性能を悪化させてしまう、「破壊的忘却」という現象はLLM以前から指摘されており、直近でもLLMにおける破壊的忘却を予防するための手法なども研究が進んでいるようです。
日本語LLMの実力やいかに
LLM基盤モデルを応用する方法について見ていきましたが、基盤モデルの性能が重要であるということは共通の認識と言えるでしょう。一方で、ChatGPTのような他社のAPIに自社のデータを送るなどはコンプライアンス上の重大な問題を孕みますし、またモデルの性能がどんどん良くなっていくことは基本的に良いこととはいえ、自社でその状態をコントロールできるようにしたいなど、さまざまな理由からオープンソースモデルへの期待は高まっています。今月頭に私が調査した時には、HuggingFace上だけでもすでに無数のモデルが出ていましたが、特にダウンロード数が多く、注目されているものは下記のようなものがありました。

前回のブログでも紹介したLLaMA系のモデルに関しては、商用利用ができないこともありアカデミックな研究が中心になっています。一方で、GPT -NEOXやその発展系のPythiaなどは、商用利用も可能なオープンソーススタックのみで開発できるメリットから、多くの企業での開発に取り入れられています。
日本でもNTTやSoftBankなど大企業は「これからやるぞ」と声をあげ、新興企業は「もうやってるぜ」とモデルを公開しています。モデルを公開しているOpenAIやrinnaなどは、企業でのプライベート開発を可能にする開発環境にモデルをデプロイ提供するなどのビジネスを展開し始めていて、実際に導入している企業の話を聞くことも多くなってきました:
- Stability AI: 日本語特化のチャットボット「Stable Chat」開発発表。Stability AI日本公式が告知(2/21)
- SoftBank: ソフトバンクが生成AI開発の子会社を設立(5/10)
- NTT: NTT、効率的な大規模言語モデルの独自開発を発表(5/16)
- 富士通: 「富岳」政策対応枠における大規模言語モデル分散並列学習手法の開発(5/22)
- Rinna: 36億パラメータ・日本語特化型のGPT言語モデルをオープンソースで公開(5/17)
- CyberAgent: 最大68億パラメータの日本語LLMを一般公開(5/17)
- AI Inside: 140億パラメータ日本語LLMサービスを開発しα版を提供(6/8)
- Preferred Networks: プリファード、大規模言語モデル開発 24年商用化目指す(6/16)
もはやアップデートが激しすぎて、キャッチアップするのも一仕事ですが、これらの国産LLMの実力はどの程度のものなのでしょうか?ChatGPTと比べてどのような特徴があるのでしょうか?これら開発企業は今後どのようなマーケットを見据えているのでしょうか?次回のブログではこの辺に焦点を当てていきたいと思います。
こんなアツアツの国内LLM開発をリードする、rinnaの開発リーダーのTianyuさんとCyberAgentの開発リーダーの石上さんをお招きして、ここでしか聞けないお話を聞けるイベントを開催します。資料の共有話、写真撮影も禁止のドキドキのイベントに参加したい方はぜひこちらからお申し込みください!もちろんリモート参加はできませんよ!申し込みは本日が締め切りなので、まだの方はお急ぎください!
