より優れたLLMを作るために必要なこと

秋葉拓哉氏:めでたくFine-Tuningもできた。これけっこう、びっくりするかもしれません。コードはさすがにゼロとはいかないと思いますが、ほとんど書かずに実はLLMは作れます。

「さすがにこんなんじゃゴミみたいなモデルしかできないだろう」と思われるかもしれませんが、おそらく余計なことをしなければこれだけでも、まあまあそれっぽいLLMにはなるかなと思います。

なので、ちょっと、先ほどの鈴木先生(鈴木潤氏)の話と若干矛盾してしまって恐縮なのですが、僕のスタンスは、LLMを作るだけであれば思っているよりは簡単かなと思います。ここまで前半でした。

とはいえ、じゃあ、これをやったらGPT-4になるのかっていったら当然ならないわけです。そこにやはりギャップがあるわけですよね。「それは何なのか?」を次に考えていきましょうか。ここはかなりキリがないのですが、挙げられるだけ考えていきましょう。

分析するために、まずこれを見ると、おもしろいかなと思っているものがあります。GPT-4のテクニカルレポートですね。OpenAIがアーカイブにアップロードしています。

これは実は、後ろのほうのページに、誰が何をやったかというクレジットのページが何ページもあって、そこを見ると、どのチームがどのぐらいの大きさなのかがだいたい見積もることができるんですね。

僕がちょっと適当に延べチームサイズを計算したテーブルが(スライドの)右のようになっています。これを見ながら、どこがどのぐらい大変なのかをちょっと考えましょうか。

モデルアーキテクチャは「Transformer」一択

まず、Pretrainingですが、モデルアーキテクチャですね。これ、正確に言うとPretrainingする前に決めることなんですが、Pretrainingする時に決めて、それを引き継ぐことになるので、いったんPretrainingの一部ということにしましょうか。

ディープラーニングのモデルというのはいっぱいありますが、アーキテクチャは、基本的にこの世界で「Transformer」一択です。

ほかにも新しいのがいろいろ出てきていて、そういうのが良かったらいいなとは思っているのですが、とはいえ、今やるんだったら基本的にTransformer一択かなと思います。

細かい差や言いたいことはいくつかあって、まず、細かい差は馬鹿にできないと思います。特に最近、小さなモデルでも性能がかなり上がってきていて、けっこうこのあたりの進歩も影響しているなと思います。

一方で、モデルアーキテクチャを良くしないとGPT-4にならないのか、あるいは、アーキテクチャを良くしたらGPT-4になるのかというとそういうわけではなく、たぶん、ここで得られるパフォーマンスゲインよりもモデルを大きくしたりするほうが、性能だけであればシンプルに上がるんですよね。

実際、GPT-4とかのベースモデルが学習されたのはかなり前だと思うので、たぶんアーキテクチャは古いと思います。

大規模分散学習にはData Parallelだけを活用する

次に、大規模分散学習。これはモデルが大きくなってくるほどけっこう大変です。僕のお勧めですが、もし足りるのであれば、Data Parallelだけを使ったほうがいいです。

というのも、3D parallelismというものがけっこう有名だと思うのですが、これはかなり煩雑になってきて面倒くさいんですね。

一方で、Data Parallelだけでも実はけっこうなサイズまでいけて、しかもそっちのほうがいろいろ楽、だいぶエンジニアリングコストが下がるので、Data ParallelでいけるところまではなるべくData Parallelでやったほうがいいと思います。

このあたりは、大変かもと思われるかもしれませんが、オープンソースでもけっこう有名な実装がいろいろあって、使おうと思えばすぐ使えるので、意外と大変ではないかもしれないし、でも、改善の余地はあるかもしれないという感じですね。

パラメーターを増やしても計算量を増加させない仕組み「Mixture of Experts」

それから次に、Mixture of Experts。これもアーキテクチャの一部なので、ちょっと前後してしまって恐縮ですが、おそらく、キーワードを聞いたことがある人はいるかなというぐらいですかね。あまり有名じゃないかもしれません。

これはどういう技術かというと、普通ディープラーニングのモデルというのは、全部のデータが全部のパラメーターを通って計算されるんですよね。

でも、このMixture of Expertsという技術は、各サンプル、あるいは各トークンが、「君はこのあたりを通ってください」という感じで、モデルが何個かに部分部分に分かれて、この部分だけ通るみたいな感じで計算されていくんですね。

その結果、パラメーターは大きくても、実際にアクティベートされるパラメーターの数が少ない、つまり、まるで小さなパラメーターで推論しているかのようになって速くなる、そういう技術です。これがMixture of Expertsですね。噂によると、GPT-4はMoEを利用しているらしいです。

それから、実際にはMixture of Expertsは研究の世界だと本当にGoogleが大好きな分野なので、おそらくGoogleの「Bard」か「Gemini」のどちらかは使っているんじゃないかなと、僕は思っています。

ここはやり方にもよりますが、大規模分散学習と組み合わせると、けっこうエンジニアリングコストも跳ね上がると思っていて、オープンの世界では、まだMixture of Expertsはあまり模索されていないかなと思います。

学習データは事前学習において最も重要

あとは、データですね。ここもちょっとキリがないのと、けっこう細かい話が多いのですが、やはりどういったデータを使うか、どういった割合で混ぜるか、どのように前処理するかはおそらくかなり影響します。

これはけっこう検証が難しい部分でもあって、何が良かったのかというところはわからないなというのが正直なところですが、このあたりのプラクティスもどんどん進歩しているなと感じます。

Fine-Tuningには高品質で多様なアノテーションデータが必要

次に、Fine-Tuningですね。まず、やはりここのデータは、おそらく差としてめちゃくちゃ大きな部分かなと思っていて、例えばGPT-4に追いつきたかったらかなり大変な部分なんじゃないかなと思います。

おそらくではありますが、やはりこのあたりに、非常に高品質で多様なアノテーションデータが必要になってくる上に、おそらく専門家がアノテーションする必要があるんですね。

みなさんもプログラミングされると思いますが、プログラミングをする人間がGPT-4を使って満足できるということは、やはりそういう人間がアノテーションをしていないといけないわけです。

プログラミングだけではなくおそらくいろいろな分野においてそうなので、かなり専門性のある人間を、かなり多様なところから雇ってアノテーションをさせているんじゃないかなと思います。

それが、量も質も多様性も必要ということで、おそらくここにもかなり投資をしていて、そういうデータを持っているグループは、かなりまだ少ないかなと思いますね。

最近オープンな世界でけっこうおもしろいアイデアだなと思うのは、GPT-4にアノテーションをさせる。例えばChatGPTを使ったりもするのですが、ChatGPT、GPT-4にアノテーションをさせるというアプローチですね。

残念ながら、これをやるとデータのライセンスに制限されるのですが、とはいえ、これがかなりいいなと思うのは、やはりいったん試せることです。

GPT-4にデータを生成させて、こういうデータだとこういうモデルの挙動になるんだとわかると、その次のアクションを考えられますよね。そんなこんなで、こういうことがけっこうできるようになったのは、新しい風かなと思ったりもします。

あとは、「RLHFが必要なのか?」という議論ですね。これはちょっと専門性のある話になってしまって恐縮ですが、Fine-Tuningは基本的に、SFT、Supervised Fine-Tuningと、RLHF、Reinforcement Learning from Human Feedbackというのをやります。

有名なグループ、例えばOpenAIのGPT-4や、MetaのLlama-2-Chatっは、RLHFまでやっているんですね。ただ、オープンなLLMだと、RLHFまでせずにSFTだけというモデルがけっこう多かったりします。

しかも、SFTだけでもけっこうパフォーマンスがいいモデルが出ていて、そういうのをだけ見ていると、「本当にRLHFが必要なのか?」という議論があるかなと思います。

個人的な予想としては、結局、RLHFもすることになるかなと思ってはいます。もしかしたら来月は、言っていることが変わっているかもしれません。ちょっと時間が限られるので、そのあたりの考えは、また今度のイベントで話します。

圧倒的にチームの人数が多いのは、Evaluation & Analysis

最後に、Evaluation & Analysisですね。もしかしたらびっくりされる方もいるかもしれませんが、実は、GPT-4のテクニカルレポートだと、ここが圧倒的に人数が一番多いです。

ただ、個人的には、さもありなんかなという感じです。やはりLLMはけっこうこれまでのマシンラーニングモデルと大きく違って、汎用性がむちゃくちゃ高くていろいろなことができるので、やはりその能力を測定したり、安全性を理解したりというところで、かなりいろいろなことを評価しているんですね。なので、シンプルに人手が必要です。

こういうところも、やはりこのぐらいのエフォートをかけられているグループはまだまだ少ないかなとは思いますが、ただ、オープンな世界では、評価用のデータアセットもどんどん出てきたり、リーダーボードも、いろいろ出てきたりしているので、そういうところも追いつきつつあるかもしれないとは思います。

LLMの取り組みでは「Weights & Biases」を活用

ここまで、いろいろなポイントがあるよねという話ですが、こういったことをStability AIでは実際に踏まえて、LLMの活動に取り組んでいます。

詳細は省きますが、Pretraining、Fine-Tuning、Evaluation、そういったすべての部分において、その重要な部分を見極めて、どんどん進歩を積み重ねています。

それから、日本チームでは、日本語のような、データの量が限られる言語に向けてどうすればいいのかといったことも研究してノウハウを積み重ねています。

取ってつけたようで恐縮ですが、本当にWeights & Biasesは、めちゃくちゃ活用しています。自分で見られるだけではなく、チームで共有したり、ほかの人の実験をちらっと見たり、設定も確認できたり、レポート機能で外に公開したりなど、かなりいろいろ活用しています。

まとめ

というわけでですね、まとめたいと思います。

今日は、タイトルとして「LLMを作るのは簡単なのか? 難しいのか?」ということで、とにかく作るだけであれば意外と簡単かもしれないという話と、一方で、そこからの伸びしろにどういう部分があるのかというところと、Stability AIが実際そういうところに取り組んでいるんだという話をいたしました。

以上になります。ありがとうございました。

(会場拍手)