Grok 2
xAI の Grok 2 モデルをローカルで実行しましょう!
次のコマンドを実行できます Grok 2 (別名 Grok 2.5)、xAI の2700億パラメータモデル。フル精度では必要となるのは 539GBで、Unsloth の動的3ビット版はサイズをわずか 118GB にまで縮小します(75%の削減)。GGUF: Grok-2-GGUF
最新の 3ビット Q3_K_XL モデルは単一の 128GB Mac または 24GB VRAM + 128GB RAMで動作し、 5+ トークン/秒 の推論を達成します。llama.cpp チームとコミュニティに感謝します Grok 2 のサポート と、これを可能にしてくれたことに感謝します。私たちも途中で少し助けることができて嬉しかったです!
すべてのアップロードはUnslothを使用しています Dynamic 2.0 SOTA の 5-shot MMLU と KL ダイバージェンス性能を示しており、量子化した Grok LLM を最小限の精度損失で実行できることを意味します。
⚙️ 推奨設定
3ビットの動的量子化はディスク領域として118GB(126GiB)を使用します — これは128GB RAM の統一メモリの Mac や 1x24GB カードと 128GB の RAM でうまく動作します。この3ビット量子化を実行するには少なくとも120GB の RAM を持つことが推奨されます。
必ず使用してください --jinja Grok 2 用です。を使用しないと正しくない結果が出る可能性があります --jinja
8ビット量子化はサイズが約300GBで、(MoE レイヤーを RAM にオフロードすれば)1x 80GB GPU に収まります。この構成では、追加で200GB の RAM があればおおよそ5トークン/秒を期待できます。生成速度を上げ、より長いコンテキストに対応する方法については、 こちらをお読みください.
必須ではありませんが、最高のパフォーマンスを得るには VRAM + RAM の合計がダウンロードする量子化ファイルのサイズと等しいことが望ましいです。そうでない場合でも、llama.cpp でハードドライブ/SSD へのオフロードは動作しますが、推論は遅くなります。
サンプリングパラメータ
Grok 2 は最大コンテキスト長が128Kなので、次を使用してください
131,072以下のコンテキストもしくはそれ以下。使用してください
--jinjallama.cpp バリアントの場合
モデルを実行するための公式のサンプリングパラメータはないため、ほとんどのモデルで標準のデフォルトを使用できます:
を設定してください temperature = 1.0
Min_P = 0.01 (オプションですが 0.01 はよく機能します、llama.cpp のデフォルトは 0.1)
Grok 2 チュートリアルを実行する:
現在、Grok 2 は llama.cpp でのみ実行できます。
✨ llama.cppで実行する
特定のをインストールしてください llama.cpp Grok 2 の PR を に対して GitHubで入手してください。以下のビルド手順にも従うことができます。を変更してください -DGGML_CUDA=ON に -DGGML_CUDA=OFF GPUを持っていない場合やCPUで推論したい場合は Apple Mac / Metalデバイスの場合、次を設定してください -DGGML_CUDA=OFF その後通常通り続行してください — Metalサポートはデフォルトで有効です。
もし直接 llama.cpp モデルを直接ロードするには、以下を実行できます:(:Q3_K_XL)は量子化タイプです。Hugging Face(項目3)からダウンロードすることもできます。これは次に類似します ollama run に類似しています。 使用してください export LLAMA_CACHE="folder" llama.cpp を強制して
ぜひ試してみてください -ot ".ffn_.*_exps.=CPU" -ot ".ffn_.*_exps.=CPU"
もし少し多くのGPUメモリがあるなら、次を試してください -ot ".ffn_(up|down)_exps.=CPU" これは up と down の投影 MoE 層をオフロードします。
試してみてください -ot ".ffn_(up)_exps.=CPU" さらに多くのGPUメモリがある場合。これは up 投影の MoE 層のみをオフロードします。
もしさらに多くのGPUメモリがある場合。これはup投影のMoEレイヤーのみをオフロードします。 -ot ".ffn_.*_exps.=CPU" そして最後にすべてのレイヤーを次でオフロードします
正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。
モデルをダウンロードするには(をインストールした後) モデルをダウンロードするには( を選択できます。 UD-Q3_K_XL (動的3ビット量子化)または他の量子化バージョンのような Q4_K_M Q4_K_XL などの他の量子化版です。私たちは サイズと精度のバランスを取るために私たちの2.7ビット動的量子化を または上記を使ってサイズと精度のバランスを取る.
--include "*UD-Q2_K_XL*" # 動的1ビットの場合は "*UD-TQ1_0*" を使用 次の --threads 32 はCPUスレッドの数、 --ctx-size 16384 はコンテキスト長、 --n-gpu-layers 2
モデルのアップロード
私たちの全てのアップロード — imatrix ベースでないものや動的でないものも含め — は、会話、コーディング、言語タスク向けに特に最適化されたキャリブレーションデータセットを利用しています。
🏂 GLM 4.7で生成されたPythonコードを実行するためのツール呼び出し
より多くの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" は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。
最新の llama.cpp リリース 高スループットモードも導入しています。使用するには llama-parallel。詳細は こちら。また、 KVキャッシュを4ビットに量子化することができます こちら
をご覧ください。さらに、
より長いコンテキストに対応するには、 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キャッシュも量子化できますが、 Flash Attentionを使ってllama.cppをコンパイルする必要があります サポートを有効にするには -DGGML_CUDA_FA_ALL_QUANTS=ON、そして --flash-attn コンパイルする必要があります 次のように :
-DGGML_CUDA_FA_ALL_QUANTS=ONを指定し、そして使用してください、
最終更新
役に立ちましたか?

