ASUS Ascent GX10(GB10)でLlama-4-Scout-17Bを動かす:NVFP4の罠とGGUF解決策

ASUS Ascent GX10

ASUS Ascent GX10に搭載されたNVIDIA GB10(Grace Blackwell Superchip、128GB統合メモリ)でLlama-4-Scout-17B-16Eを動作させるまでの記録です。結論から言うと、NVFP4量子化モデルは現時点で動作せず、GGUF(Q4_K_M)で512Kトークンまでの長コンテキスト動作に成功しました

環境情報

  • ハードウェア: ASUS Ascent GX10(NVIDIA GB10、128GB LPDDR5x統合メモリ)
  • OS: Ubuntu 24.04.3 LTS(DGX OS)
  • CUDA: 13.0、Driver: 580.95.05
  • Python: 3.12.3(仮想環境)
  • 推論エンジン: llama-cpp-python

試したモデル

使用したモデルはLlama-4-Scout-17B-16E-Instructです。Llama-4-Scoutは以下のスペックを持つMoE(Mixture-of-Experts)モデルです:

HuggingFaceから入手可能なものですが、公式では無いので詳細な情報は控えます。

  • 総パラメータ:109B、アクティブ:17B(16エキスパート)
  • コンテキスト長:最大10Mトークン
  • マルチモーダル対応(テキスト + 画像)

NVFP4版が動かない理由

最初に試したのはLlama-4-Scout-17B-16E-Instruct-nvfp4(NVFP4量子化版)でした。該当ページには以下の対応表があります:

GPUアーキテクチャ対応
NVIDIA H100Hopper
NVIDIA B200Blackwell
NVIDIA RTX 5090Blackwell (SM120)

GX10のGB10もBlackwellアーキテクチャですが、vLLMで起動すると以下のエラーが発生しました:

torch.AcceleratorError: CUDA error: no kernel image is available for execution on the device

根本原因:Compute Capability 12.1

GB10のcompute capabilityを確認すると:

python -c "import torch; print(torch.cuda.get_device_capability(0))"
# 結果: (12, 1)

PyTorchのサポート範囲は8.0〜12.0であり、GB10の12.1はサポート外です。vLLMやPyTorchのプリビルドバイナリにはGB10向けのCUDAカーネルが含まれていません。

今後の展望

GB10(SM121)向けのカーネルがPyTorchやvLLMに追加されれば、NVFP4版も動作するようになる可能性があります。NVIDIAがGX10向けの公式コンテナを提供するか、コミュニティがカーネルを追加するのを待つ必要があります。

※2025/12/20時点での情報。対応の暁には爆速な応答が期待される

解決策:GGUF + llama-cpp-python

llama.cppはより広いハードウェアサポートを持ち、GB10でも動作しました。

インストール

# 仮想環境作成
python3 -m venv llama-env
source llama-env/bin/activate

# llama-cpp-pythonインストール
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu128

モデルダウンロード

huggingface-cli download [HuggingFaceから取得してね] \
  --include "*Q4_K_M.gguf*" \
  --local-dir /workspace/models/llama4-gguf

ファイルが分割されている場合は結合が必要です:

cat Llama-4-Scout-17B-16E-Instruct.Q4_K_M.gguf.part1of2 \
    Llama-4-Scout-17B-16E-Instruct.Q4_K_M.gguf.part2of2 \
    > Llama-4-Scout-17B-16E-Instruct.Q4_K_M.gguf

動作確認コード

from llama_cpp import Llama

llm = Llama(
    model_path="/workspace/models/llama4-gguf/Llama-4-Scout-17B-16E.Q4_K_M.gguf",
    n_ctx=262144,  # 256Kトークン
    n_gpu_layers=-1,
    verbose=False,
    chat_format="chatml"  # 重要:正しいチャットフォーマット
)

messages = [
    {"role": "user", "content": "日本の首都はどこですか?"}
]

response = llm.create_chat_completion(
    messages=messages,
    max_tokens=100,
    temperature=0.7
)

print(response["choices"][0]["message"]["content"])
# 出力: 東京です。

長コンテキストテスト結果

GB10の128GB統合メモリを活かして、様々なコンテキストサイズでテストしました:

n_ctxロード時間生成時間状態
8,1922.21秒3.74秒✅ 成功
16,3842.32秒3.73秒✅ 成功
32,7683.12秒3.76秒✅ 成功
65,5364.48秒3.79秒✅ 成功
131,0726.51秒3.76秒✅ 成功
262,14412.05秒3.79秒✅ 成功
524,28832.14秒4.10秒✅ 成功
1,048,576❌ OOM

実用上限は約512Kトークン。推論速度は約9-10 tokens/secで安定しています。

日本語性能

日本語での複雑な質問にも対応できます:

Q: 機械学習とディープラーニングの違いを簡潔に説明してください。

A: 機械学習(Machine Learning)とディープラーニング(Deep Learning)は、
どちらも人工知能(AI)の分野で重要な概念です。

機械学習:
- 機械学習は、コンピュータがデータから学習し、タスクを改善する手法の総称です。
- データからパターンや関係性を見つけ出し、予測や分類などのタスクを自動化します。
...

重要なポイントまとめ

  • chat_format=”chatml”が必須:デフォルトの”llama-2″ではゴミ出力になる
  • n_gpu_layers=-1:全レイヤーをGPUに載せる
  • 推奨n_ctx:日常使用は262144(256K)が安定
  • NVFP4は待ち:PyTorch/vLLMのGB10サポートを待つ必要あり

まとめ

GX10(GB10)でLlama-4-Scoutを動かすには、現時点ではGGUF版とllama-cpp-pythonの組み合わせが唯一の実用的な選択肢です。512Kトークンという巨大なコンテキスト長を活用できるため、RAGシステムや長文処理に十分な能力を持っています。

NVFP4版は理論上GB10で動くはずですが、PyTorchとvLLMがcompute capability 12.1をサポートするまで待つ必要があります。NVIDIAやコミュニティの対応に期待しましょう。

コメント

タイトルとURLをコピーしました