square-x-twitterGrok 2

xAI の Grok 2 モデルをローカルで実行!

今すぐ実行できます Grok 2 (別名 Grok 2.5)、xAI の 270B パラメータモデル。フル精度では必要です 539GB、一方で Unsloth の動的 3 ビット版はサイズをわずか 118GB (75%の削減)。GGUF: Grok-2-GGUFarrow-up-right

その 3-bit Q3_K_XL モデルは単一の上で動作します 128GB の Mac または 24GB VRAM + 128GB RAM、達成しているのは 5+ トークン/秒 の推論。Grok 2 をサポートしてくれた llama.cpp チームとコミュニティに感謝します Grok 2 のサポートarrow-up-right そしてこれを可能にしたこと。私たちも少しでもお手伝いできて嬉しかったです!

すべてのアップロードはUnslothを使用しています Dynamic 2.0 SOTA の 5-shot MMLU および KL ダイバージェンスの性能のため、量子化された Grok LLM を最小限の精度低下で実行できます。

llama.cpp チュートリアルで実行する

⚙️ 推奨設定

この 3 ビット動的量子化はディスク上で 118GB(126GiB)を使用します — これは 128GB RAM のユニファイドメモリ Mac、または 1x24GB カードと 128GB の RAM の構成でうまく動作します。この 3 ビット量子化を実行するには少なくとも 120GB の RAM を持つことが推奨されます。

circle-exclamation

8 ビット量子化はサイズが約 300GB で、(MoE レイヤーを RAM にオフロードすれば)1x 80GB GPU に収まります。この構成では、追加で 200GB の RAM があればおおよそ 5 トークン/秒程度を期待できます。生成速度を上げ、より長いコンテキストを扱う方法については、 ここを読む.

circle-info

必須ではありませんが、最高のパフォーマンスを得るには VRAM + RAM の合計がダウンロードする量子化モデルのサイズと等しいことが望ましいです。そうでない場合でも、llama.cpp ではハードドライブ/SSD オフロードが機能しますが、推論は遅くなります。

サンプリングパラメータ

  • Grok 2 は最大コンテキスト長が 128K なので、使用してください 131,072 コンテキスト以下。

  • 使用する --jinja llama.cpp 変種用

モデルを実行するための公式サンプリングパラメータは存在しないため、ほとんどのモデルでは標準的なデフォルトを使用できます:

  • を設定してください temperature = 1.0

  • Min_P = 0.01 (オプションですが、0.01 がよく機能します。llama.cpp のデフォルトは 0.1)

Grok 2 チュートリアルを実行:

現在 Grok 2 は llama.cpp でのみ実行できます。

✨ llama.cppで実行する

1

特定の をインストールしてください llama.cpp Grok 2 用の PR を に適用してください GitHub で入手arrow-up-rightできます。下のビルド手順に従うこともできます。変更してください -DGGML_CUDA=ON から -DGGML_CUDA=OFF GPU がない場合や CPU 推論のみを行いたい場合は。

2

直接モデルを読み込むために llama.cpp モデルを直接ロードするには、以下を実行できます:(:Q3_K_XL)は量子化タイプです。Hugging Face(ポイント 3)経由でもダウンロードできます。これは似ています ollama run に類似しています。使用してください export LLAMA_CACHE="folder" で強制的に llama.cpp を特定の場所に保存させます。モデルは最大128Kのコンテキスト長しか持たないことを忘れないでください。

circle-info

ぜひお試しください -ot ".ffn_.*_exps.=CPU" ですべてのMoE層をCPUにオフロードします!これにより、非MoE層を1つのGPUに収められるようになり、生成速度が向上します。GPU容量が大きい場合は正規表現をカスタマイズしてより多くの層を適合させることができます。

もしもう少しGPUメモリがあるなら、次を試してください -ot ".ffn_(up|down)_exps.=CPU" これはupおよびdownの投影MoE層をオフロードします。

試してみてください -ot ".ffn_(up)_exps.=CPU" もしさらに多くのGPUメモリがある場合。これはup投影MoE層のみをオフロードします。

そして最後にすべての層を次でオフロードします -ot ".ffn_.*_exps.=CPU" これは最小のVRAMを使用します。

正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" は6層目以降のgate、up、downのMoE層をオフロードすることを意味します。

3

(以下をインストールした後に)モデルをダウンロードします pip install huggingface_hub hf_transfer )。量子化バージョンとして選べます UD-Q3_K_XL (動的 3 ビット量子化)や他の量子化版、例えば Q4_K_M )を選択できます。私たちは 2.7ビット動的量子化の使用を推奨します UD-Q2_K_XL またはサイズと精度のバランスを取るために上記を使用してください.

4

次の --threads 32 でCPUスレッド数を編集できます、 --ctx-size 16384 でコンテキスト長を、 --n-gpu-layers 2 で何層をGPUにオフロードするかを指定します。GPUがメモリ不足になる場合は調整してみてください。CPUのみの推論の場合はこれを削除してください。

モデルのアップロード

私たちのすべてのアップロード — imatrix ベースでないものや動的でないものを含め、会話、コーディング、言語タスク向けに特別に最適化されたキャリブレーションデータセットを利用しています。

MoE ビット数
タイプ + リンク
ディスクサイズ
詳細

1.66bit

81.8 GB

1.92/1.56bit

1.78bit

88.9 GB

2.06/1.56bit

1.93bit

94.5 GB

2.5/2.06/1.56

2.42bit

99.3 GB

2.5/2.06bit

2.71bit

112 GB

3.5/2.5bit

3.12bit

117 GB

3.5/2.06bit

3.5bit

126 GB

4.5/3.5bit

4.5bit

155 GB

5.5/4.5bit

5.5bit

191 GB

6.5/5.5bit

🏂 生成速度の改善

もしVRAMがより多くある場合は、さらに多くのMoE層をオフロードするか、層全体をオフロードすることを試すことができます。

通常、 -ot ".ffn_.*_exps.=CPU" はすべてのMoE層をCPUにオフロードします!これにより非MoE層を1つのGPUに収めることができ、生成速度が向上します。GPU容量が大きい場合は正規表現をカスタマイズしてより多くの層を適合させることができます。

もしもう少しGPUメモリがあるなら、次を試してください -ot ".ffn_(up|down)_exps.=CPU" これはupおよびdownの投影MoE層をオフロードします。

試してみてください -ot ".ffn_(up)_exps.=CPU" もしさらに多くのGPUメモリがある場合。これはup投影MoE層のみをオフロードします。

正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" は6層目以降のgate、up、downのMoE層をオフロードすることを意味します。

その 最新のllama.cppリリースはarrow-up-right 高スループットモードも導入します。使用すると、 llama-parallelです。詳細は ここarrow-up-rightを参照してください。さらに、 KVキャッシュを4ビットに量子化することもできます 例えばVRAM / RAMの移動を減らすことで、生成プロセスを高速化することができます。

📐長いコンテキスト(フル128K)を収める方法

より長いコンテキストを収めるには、 KVキャッシュの量子化 を使用してKおよびVキャッシュをより低いビットに量子化できます。これによりRAM/VRAMのデータ移動が減り、生成速度が向上することがあります。K量子化の許容オプション(デフォルトは f16)には以下が含まれます。

--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1

若干精度が向上するために _1 変種を使用するべきですが、わずかに遅くなります。例えば q4_1, q5_1

Vキャッシュも量子化できますが、その場合は llama.cppをFlash Attentionサポートでコンパイルする必要があります には次を使用してください -DGGML_CUDA_FA_ALL_QUANTS=ON、そして次を使用して --flash-attn で有効にします。次に --cache-type-k :

と一緒に使用できます:--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1

最終更新

役に立ちましたか?