LM StudioでOpenAIのgpt-ossをローカル実行

OpenAIと提携し、LM Studioでローンチ初日からgpt-ossをサポートできることを嬉しく思います 🎉
編集 2025/8/8: LM Studioでgpt-ossを実行するためのOpenAIのクックブックをご覧ください。
その取り組みの一環として、MLXに以下の実装を寄付しました(PR)。本日中に改善されて更新される予定です。
実装のいくつかの側面についての簡単な技術的詳細については、以下をご覧ください。
モデルをローカルで実行するには、LM Studio 0.3.21にアップデートしてください。
モデルは2つのサイズがあります:20Bと120B。
小さい方のモデルには約13GBのRAMが必要です。
Transformerを非常に強力にする「秘訣」として一般的に credited されるアテンション方程式を見たことがあるかもしれません。
Attention(Q, K, V) = softmax(QK^T/sqrt(d))V
これをフルアテンションと呼びます。これは、モデルが入力全体に注意を払うことができるためです。Q、K、Vは入力全体からの関数であるため、モデルはシーケンス内のすべてのトークンにアクセスできます。これにより、アテンションは非常に強力になりますが、残念ながら、チャットが長くなるにつれてQ、K、Vが大きくなるという副作用があります。これは、チャットが数千トークンに達すると、アテンションの計算にさらに多くの計算が必要になり、メモリ使用量の増加と応答速度の低下として現れることを意味します。実際、この増加は二乗であるため、チャットの長さを2倍にすると、モデルの応答に約4倍の時間がかかることになります!
これはオンデバイスAIにはあまり良くありません。誰も応答を待って30分も座っていたいとは思いません。スライディングウィンドウアテンションは、この問題に対処するために、最後のWトークン(Wはモデルによって異なる)のスライディングウィンドウの入力埋め込みのみを使用します。これは、Q、K、Vが固定サイズに制限され、メモリ使用量と計算要件も同様に制限されることを意味します。これにより、チャットの長さに関係なく、モデルが応答に不合理な時間がかかったり、コンピューターのメモリをすべて使い果たしたりすることはありません。
素晴らしいですよね?1つの問題は、モデル全体がスライディングウィンドウアテンションを使用した場合、小さなスライディングウィンドウの外にあるものは何も見えなくなるため、以前のチャットを忘れてしまうことです!記憶喪失のモデルは楽しくないので、OpenAIはこのモデルでフルアテンションとスライディングウィンドウアテンションを50/50で分割して、両方の長所を活かしています。つまり、入力全体を把握しつつ、他のモデルよりも効率的に処理できます。
アテンション操作のこの部分を見てみましょう。
softmax(QK^T/sqrt(d))
行列QK^Tにはアテンションスコアが含まれています。これは、各トークンが他のトークンにどれだけ注意を払いたいかを定量化したものです。モデルは、主語や動詞のような負荷の高い単語には高いスコアを付け、"the" のような助詞には低いスコアを付ける可能性があります。モデルが次の部分に流れる情報を決定するために、これらのアテンションスコアを使用してVに格納されている情報の組み合わせを抽出したいと考えています。これを、数値が過大にならないようにしながら行うために、モデルはsoftmax操作を適用します。これにより、トークンから発信されるすべてのスコアは合計で1になります。
しかし、モデルが特定のトークンに注意を払いたくない場合はどうでしょうか?softmaxはそれでもスコアを合計して1にするため、モデルは重要でないトークンに過剰な注意を払うことを強制されます!これらの過剰なアテンションスコアは通常、シーケンスの最初のトークンにプールされ、アテンションシンクと呼ばれます。これはスライディングウィンドウアテンションの問題となります。これらのトークンがスライディングウィンドウから外れると、その過剰なアテンションは他のトークンに分散され、モデルが何も見ないことに余分な注意を払う原因となります!この現象は、長時間の会話や長い入力プロンプトでLLMの応答品質が著しく低下することが発見されています。
Xiao et al. は、アテンションスコアに追加されるカスタムトークンを使用してこれを解決しています。これらのトークンは、Vからの情報抽出時には使用されません。これにより、過剰なアテンションはシンクトークンにプールされ、アテンション出力に影響を与えず、品質低下を防ぎます。OpenAIはこのGPT OSSモデルにこれを採用しており、モデルは数百万トークンに及ぶクエリに正確に応答したり、数時間にわたる会話を継続したりできます!
現在の実装は初期段階であり、今後数日間で改善されたエンジンアップデートをフォローアップします。
Discordサーバーに参加してください! https://discord.gg/lmstudio