Nemotron super 120b がリリースされ、Strix Halo と llama.cpp での実行にはテンソル形状エラーのため少し苦労しました。
自分がただの馬鹿かもしれませんし、他の人は特に問題なく解決しているかもしれませんが、同じ問題に直面している人がいるかもしれないので投稿します。
私は AMD Ryzen AI MAX+ 395 (Strix Halo)、128GB LPDDR5x 統合メモリ、Radeon 8060S iGPU (gfx1151) を搭載しています。
モデル: Nemotron 3 Super 120B-A12B - 120B パラメータ(推論あたり 12B 活性)、ネイティブコンテキスト 1M、ハイブリッド MoE+SSM アーキテクチャ
概要
| 方法 | 状態 | メモリ | 備考 |
|--------|--------|--------|-------|
| llama.cpp + GGUF Q4_K_M | 動作中 | ~82GB モデル + KV | テスト済み、実運用対応 |
| vLLM 0.17 + BF16 | 未検証 | ~240GB | テンソルパラレルクラスタが必要 |
GGUF の量子化は llama.cpp で機能します。BF16 ルートは vLLM で動作するはずですが、約 240GB のダウンロードと理想的には複数 GPU の構成を要します。クラスタがないため BF16 はまだ試していません。
アーキテクチャのノート
Strix Halo は統合メモリを使用します - GPU が直接システム RAM にアクセスします。BIOS の VRAM 設定が 1GB で正しいです。iGPU は専用 VRAM ではなくファブリックを通じて共有メモリを使用します。これにより実効 VRAM は OS のオーバーヘッドを差し引いたシステム RAM(約 124GB 使用可能)です。
動作するもの: llama.cpp + GGUF
BIOS 設定:
- 4G 以上のデコード: 有効
- Re-Size BAR サポート: 有効
- UMA フレームバッファサイズ: 1GB(統合メモリが残りを処理します)
カーネルパラメータ:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdttm.pages_limit=27648000 amdttm.page_pool_size=27648000"
これらは GPU アクセスのための TTM メモリプールを統合メモリへ拡張します。Debian/Ubuntu の場合は sudo update-grub を、Fedora の場合は sudo grub2-mkconfig -o /boot/grub2/grub.cfg を実行してください。
ROCm 7.2 のインストール(Fedora):
sudo dnf install rocm-dev rocm-libs rocm-utils
sudo usermod -aG render,video $USER
Verify: rocminfo | grep gfx1151
llama.cpp のビルド:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && mkdir build && cd build
cmake .. -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1151
make -j$(nproc)
ターゲット仕様は重要です - これがないと cmake はすべての AMD アーキテクチャをビルドします。
モデルのダウンロード:
pip install huggingface_hub
huggingface-cli download unsloth/NVIDIA-Nemotron-3-Super-120B-A12B-GGUF \\
Q4_K_M/nvidia_Nemotron-3-Super-120B-A12B-Q4_K_M-00001-of-00003.gguf \\
Q4_K_M/nvidia_Nemotron-3-Super-120B-A12B-Q4_K_M-00002-of-00003.gguf \\
Q4_K_M/nvidia_Nemotron-3-Super-120B-A12B-Q4_K_M-00003-of-00003.gguf \\
--local-dir ~/models/q4 --local-dir-use-symlinks False
3 つのシャードの合計約 82GB。シャード 1 は 7.6MB(メタデータのみ)で、これは正しいダウンロードであり、失敗ではありません。
サーバー起動:
./llama-server \\
-m ~/models/q4/nvidia_Nemotron-3-Super-120B-A12B-Q4_K_M-00001-of-00003.gguf \\
--port 8080 -c 393216 -ngl 99 --no-mmap --timeout 1800
パラメータ:
- -c 393216: 384K コンテキスト(メモリ安全性のため保守的)
- -ngl 99: フル GPU オフロード
- --no-mmap: 統合メモリアーキテクチャに必要
- --timeout 1800: 大きなコンテキスト操作のための 30 分のタイムアウト
Systemd サービス(Fedora):
注: SELinux が適用されている Fedora では、ホームディレクトリ内のバイナリには適切なコンテキストが必要です。
サービスファイルの作成:
sudo tee /etc/systemd/system/nemotron-server.service << 'EOF'
[Unit]
Description=Nemotron 120B Q4_K_M LLM Server (384K context)
After=network.target rocm.service
Wants=rocm.service
[Service]
Type=simple
User=ai
WorkingDirectory=/home/ai/llama.cpp
ExecStart=/home/ai/llama.cpp/build/bin/llama-server -m /home/ai/models/q4/nvidia_Nemotron-3-Super-120B-A12B-Q4_K_M-00001-of-00003.gguf --port 8080 -c 393216 -ngl 99 --no-mmap --timeout 1800
Restart=always
RestartSec=10
Environment=HOME=/home/ai
Environment=PATH=/usr/local/bin:/usr/bin:/bin
[Install]
WantedBy=multi-user.target
mxfp4 gguf を試しましたが、うまくいかず、しかし q4 はとてもよく動作しているようです。快適な 384k コンテキストを得られ、テストを進めています。平均して 14-17 トークン/秒を得ています。大きなコンテキストで長い操作を行う場合、タイムアウトを長く設定しました。
誰かの役に立てば幸いです。改善の提案も歓迎します。私はこの分野はあまり得意ではなく、他の人が情報を投稿してくれたおかげで解決できました。
[リンク] [コメント]
