![見出し画像](https://assets.st-note.com/production/uploads/images/162768441/rectangle_large_type_2_7dcf7adda4a4a0a84eb556bbc470a5d6.png?width=1200)
Mistral AIの大規模言語モデルを解読する:Devendra Chaplot
5,878 文字
みなさん、こんにちは。本日はここに参加できて大変嬉しく思います。特にオープンモデルのトラックがあることを嬉しく思います。今日はMistral AIのオープンモデルについてお話しし、なぜオープンソース化を行うのか、どのようにオープンソース化を進めているのかについて、より深く掘り下げていきたいと思います。
まず初めに、Mistral AIは昨年6月に設立されました。最初のオープンモデルであるM 7Bを2023年9月にリリースし、その後12月には初めての専門家混合型オープンモデルである8X 7Bをリリースしました。それと同時に、モデルAPIを備えたプラットフォームと、商用モデルのMistral MediumとM Embedもリリースしました。
今年2月には、最高レベルの推論能力と数学能力を持つフラッグシップモデル、M Largeをリリースしました。4月には新しいオープンモデル8X 22bをリリースし、最近の6月にはC 22bというコード特化型モデルをリリースしました。これはM Largeとともにチャットインターフェースで利用可能で、無料で使用できます。
我々のミッションは、最先端のAIを誰もが使えるようにすることです。特に開発者向けの最先端AIの構築に注力しており、モデルのトレーニングとリリースに関して特定の原則を持っています。
第一の原則は開放性です。最高クラスのオープンモデルを訓練し、オープンソースコミュニティにリリースすることを目指しています。我々のモデルはポータブルであることを重視しており、Azure、AWS、GCP、プライベートクラウドで利用可能で、オンプレミスでの展開も可能です。つまり、モデルの重みをライセンス化し、自社のサーバーで使用でき、データのセキュリティとプライバシーを完全にコントロールできます。
パフォーマンスと速度の比率を最適化することを心がけており、特定のサイズで最高のパフォーマンスを発揮できるように設計されています。また、カスタマイズ可能であることも重視しています。アプリケーションに応じてモデルをカスタマイズするためのライブラリやツールを備えたプラットフォームを構築しています。最近では、オープンソースのMistral fine-tuneライブラリをリリースし、これを使用して任意のオープンソースモデルをファインチューニングできます。プラットフォームではファインチューニングAPIも提供しており、その前にはM inferenceという推論ライブラリもオープンソースでリリースしました。
過去1年間にオープンソース化した3つのモデルについてお話ししました。最初のモデルは密なトランスフォーマーモデルで、7BモデルとしてはMMUで60を達成した最初のモデルでした。60 MMUはモデルが実用的になる最低限のレベルと考えられており、多くの人々が様々なアプリケーションでこのモデルを使用しています。特に、ラップトップやスマートフォンでも合理的な速度で展開できることが確認されています。
12月にリリースした最初のスパース混合専門家モデル8X 7Bは、混合専門家アーキテクチャに基づいています。これにより、推論時のコストを抑えながらモデルのパフォーマンスを向上させることができます。モデルの重みに知識を保存しながら、各トークンに対して少数のパラメータのみを使用することで、高速でコスト効率の良い推論を実現しています。
4月にはこのスパース混合専門家アーキテクチャの大規模バージョンである8X 22bをリリースしました。さらに優れたパフォーマンス、より広いコンテキストウィンドウを持ち、多言語対応も実現しています。英語、フランス語、イタリア語、ドイツ語、スペイン語など、多くの言語をサポートしています。
多くの人が「オープンソース化してどうやって収益を上げるのか」と質問します。これは、オープンソースと利益が相反するという一般的な誤解です。実際にはそうではありません。オープンソースは利益と両立可能であり、必ずしも対立する必要はありません。むしろ補完的な関係になり得ると考えています。我々はモデルをオープンソース化しながら、長期的なビジネス価値を創出できる領域を目指しています。
なぜオープンソース化するのか、その理由の第一は、優れたブランディングとマーケティングツールになるということです。オープンソースとオープンサイエンスを信じ、コミュニティに貢献したいと考えていますが、これは一方通行ではありません。コミュニティが我々のモデルから恩恵を受けるのと同様に、我々もオープンソースから恩恵を受けています。
多くの人々が我々のモデルを気に入り、他の人々にその良さを伝えてくれます。モデルのパフォーマンスが自身を物語っています。社内にマーケティングチームを持たない我々にとって、モデルのオープンソース化は製品の認知度を高める手段となっています。
また、顧客獲得にも役立ちます。オープンソースモデルを試用して気に入った人々が、商用モデルへのアップグレードを求めて我々のところに来て、そのアップグレードに対して支払いをしてくれます。
カスタマイズとポータビリティの面でも有益です。例えば、7Bモデルをラップトップやスマートフォンで実行しようとする試みがあります。これは我々にとって有益な情報となります。最初から全ての環境での動作を保証する必要はなく、コミュニティがモデルをどのようにカスタマイズし、新しい環境に展開できるかを学ぶことができます。
これらのオープンソースモデルはどのように訓練されているのでしょうか。LLMトレーニングの異なるステージについて、高レベルな概要をお話しします。通常、LLMは事前訓練、指示調整、人間からのフィードバックによる学習という3つのステージで訓練されます。
事前訓練の考え方はとてもシンプルです。テキストを一片取り、それを単語ごとまたはトークンごとに大規模言語モデルに通し、次のトークンを予測するようモデルに要求します。アイデア自体は単純で、タスクは次のトークン予測です。各トークンはおよそ75%が単語で、語彙サイズは数万から時には数十万のトークンです。各トークンは基本的に整数として表現され、それに関連する埋め込みを持っています。モデルの任務は、埋め込みまたはトークンのシーケンスを受け取り、次のトークンを予測することです。
概念は単純ですが、実際には非常に難しい作業です。なぜ難しいのでしょうか。それは、データセットの構築に多大な努力が必要だからです。データセットは巨大で、数兆トークン、数十兆トークンの規模になります。これには前処理、クリーニング、重複排除、キュレーションが必要です。また、より多くのデータが必ずしもより良いパフォーマンスにつながるわけではないという一般的な誤解があります。データにノイズがある場合、実際にモデルのパフォーマンスを低下させる可能性があります。
また、多大な投資も必要です。これらのモデルは巨大で、数百億、時には数兆のパラメータを持つことがあります。各モデルの訓練には数千万から数億ドルかかります。最も困難な点は、モデルを訓練する機会が複数回得られないことです。非常にコストがかかるため、訓練中に何か問題が発生した場合、別の訓練を行うための投資を得るのは非常に困難です。
特に小規模な企業にとって、モデルの実行が失敗した場合、次の実行のための資金を得るのは困難になります。これが難しい理由の一つは、小規模モデルに最適なハイパーパラメータが、大規模モデルには最適でない可能性があるためです。
ここでLlama 1モデルファミリーのサイズに関するハイパーパラメータをお見せしていますが、なぜLlama 65bのレイヤー数が82ではなく0なのかと疑問に思われるかもしれません。答えは、我々にもわからないということです。直感的に決定されたことが多く、厳密な科学ではありません。モデルを訓練する最善の方法や、最適なアーキテクチャ、最適なデータセットの組み合わせについては、まだ十分に成熟していません。
では、この事前訓練モデルを使用できるでしょうか。例えば、入力された数が素数かどうかを判定するPython関数を書くように事前訓練モデルに依頼した場合、モデルはこのように応答するかもしれません。テキストの続きを生成し、例を示してアプローチを説明しますが、コードを提供しないかもしれません。これは、モデルがこのように訓練されているためです。次のトークンを予測するように訓練されているため、訓練データから最も可能性の高いトークンを予測します。
しかし、モデルを騙す方法があります。Pythonの関数定義とドキュメント文字列として入力を与えると、モデルは実際にコードを生成します。これは、モデルが答えを知っているものの、人間の好みに合わせて調整されていないことを示しています。人間が望むような方法で人間と対話するように訓練されていないのです。これが次の2つのステージが必要な理由です。
指示調整のステージでは、単なるテキストの文字列の代わりに、プロンプトと応答のペアを使用します。ここでは、人間がモデルと対話したい方法でプロンプトを与えます。例えば、Python関数を書くというプロンプトに対して、応答は直接コードになります。なぜなら、それが人間が望む応答だからです。
技術は非常にシンプルで、ここでも次のトークン予測を行いますが、唯一の違いはプロンプト自体をマスクすることです。応答に対してのみ予測を行います。データセットはプロンプトと応答のペアで、通常10万から数十万の指示を使用します。タスクは次のトークン予測ですが、入力指示をマスクするだけです。必要な計算能力は大幅に少なく、通常100台程度のGPUで数時間から数日あれば十分です。
最後のステップは人間からのフィードバックによる学習です。ここでのアイデアは、人間の好みは完全な人間のアノテーションよりも取得が容易だということです。このようなプロンプトと2つの応答を与えた場合、人間にとって、ゼロから応答全体を書くよりも、どちらの応答が良いかを判断する方が容易です。これにより、データをより迅速にスケールアップできます。
人間からのフィードバックによる強化学習と直接的な選好最適化という2つの主要な技術があり、この種の選好データを使用してモデルをさらにファインチューニングします。まとめると、これら3つのステージがあり、それぞれデータセットと計算要件の規模が異なり、タスクも若干異なります。我々のすべてのオープンソースモデルは、これらの技術を使用して訓練されています。
モデルアーキテクチャの詳細には立ち入りませんが、パフォーマンスとコストの比率を示すこの素晴らしいグラフをお見せしたいと思います。特定のサイズのモデルから最高のパフォーマンスを引き出すことを目指していることがわかります。X軸はモデルの実行コストに直接比例するアクティブパラメータを、Y軸は一般的なベンチマークであるMLUを示しています。より低いコストでより高いパフォーマンスを得るため、左上のコーナーを目指しています。
最近リリースしたCodr 22bは、コードに特化して訓練された密なトランスフォーマーモデルです。ここでもパフォーマンスと速度の最適化を図っています。80以上のプログラミング言語に精通しており、指示とフィルインザミドルの両モードを備えています。これは、GitHub Copilotのようなコードエディタでのコード補完にも、ChatGPTのようにバグやエラーについての質問にも使用できることを意味します。
このモデルは、はるかに小規模なモデルでありながら、CodeLlama 70b、DeepSeek Code 33b、Llama 70bを上回るパフォーマンスを発揮します。また、他のオープンソースコードモデルよりも長いコンテキストウィンドウを持っています。多言語対応で、80以上のプログラミング言語で訓練されており、これらすべての言語で他のモデルよりも優れたパフォーマンスを示す傾向にあります。
chat.mistral.aiのチャットインターフェースで無料で使用できます。また、我々のプラットフォームAPIエンドポイントであるlabプラットフォームでもAPIアクセスが可能で、7月末まで無料で使用できると思います。VS CodeとJetBrainsとの統合も実現しており、VS CodeやJetBrainsのプラグインをダウンロードしてコード補完のためのコーディングアシスタントとして使用できます。
最後に、オープンソースモデルの使用に関する実践的なアドバイスをお話ししたいと思います。これらは、オープンソースモデルと商用モデルをそれぞれいつ使用すべきかについてよく寄せられる質問です。
特定のアプリケーションを考えていて商用モデルを試してみたい場合、プロンプトエンジニアリング、プロンプティング、思考の連鎖などの手法を使用できます。また、検索拡張生成も可能です。商用モデルは通常ファインチューニングを許可していないためです。
一方、オープンソースモデルではタスク特有のファインチューニングも可能です。そのためには少量のデータと計算能力が必要ですが、最終的な選択は、パフォーマンスとコストのバランスをどのようにとるかにかかっています。
商用モデルは汎用性能が高いため、新しいアプリケーションを構築し始める際には非常に使いやすいです。しかし、本番環境に移行したり、高いボリュームを扱うようになると、ファインチューニングを施したオープンソースモデルは特定のタスクで商用モデルを上回ることができます。
一般的に見られるパターンとして、最高性能のモデルでプロトタイプを作成し、解決したいタスクが明確になった段階で、Mistral 7BやAX 7Bなどのオープンソースモデルを採用し、そのタスクに特化してファインチューニングを行うことで、パフォーマンスとコストの比率を最適化しています。
我々はパリ、ロンドン、マリアにオフィスを構えており、常に優秀な研究者、エンジニア、ビジネス、マーケティングの人材を求めています。ぜひご応募ください。質問を受け付けているかわかりませんが...ありがとうございました。