2 ポイント 投稿者 GN⁺ 2025-03-08 | 1件のコメント | WhatsAppで共有
  • Intel GPUでllama.cppを直接動かしたいユーザー向けのIPEX-LLM portable zip/tgzクイックスタート文書で、最新パッケージではXeonのArc A770 1〜2枚でDeepSeek-R1-671B-Q4_K_Mを実行する手順まで扱う
  • 対象環境はWindowsとLinuxの両方で、Intel Core Ultra/第11〜14世代およびIntel Arc A-Series/B-Series GPUでGGUFモデルを実行する手順を案内する
  • 基本的な流れは、GGUFモデルをローカルに用意したうえで、llama-cli-ngl 99-c 2500-n 2048--temp 0などのオプションを指定して実行する方式
  • Linux専用のFlashMoEはDeepSeek V3/R1系MoE GGUFの実行に合わせたCLIで、DeepSeek V3/R1基準でCPUメモリ380GB、Arc A770 1〜8枚、ディスク500GBが必要
  • 複数のIntel GPUが混在する環境ではデフォルトですべてのGPUを使うため、iGPU/dGPU構成ではONEAPI_DEVICE_SELECTORでGPUを指定するか、SYCL_DEVICE_CHECK=0でチェックを無効化できる

portable zip/tgzでllama.cppを実行

  • llama.cpp portable zipipex-llmベースで、Intel GPU上でllama.cppを直接実行するパッケージ
  • 手動インストールを減らしたportable zip/tgzの流れを前提としており、最新のportable zipではXeonのArc A770 1枚または2枚でDeepSeek-R1-671B-Q4_K_Mを実行する手順を扱う
  • 検証済みハードウェア範囲:
    • Intel Core Ultra processors
    • Intel Core 11th~14th gen processors
    • Intel Arc A-Series GPU
    • Intel Arc B-Series GPU

Windowsクイックスタート

  • Intel GPUドライバーは最新バージョンへ更新することを推奨

  • v2.3.0-nightlyリリースからWindows用IPEX-LLM llama.cpp portable zipをダウンロードして展開する

  • cmdで展開先フォルダーへ移動する

    • cd /d PATH\TO\EXTRACTED\FOLDER
  • 複数GPUを使うユーザーは、実行前にGPU選択設定を適用できる

  • GGUFモデルの実行

    • 実行前に、コミュニティのGGUFモデルをローカルディレクトリへダウンロードまたはコピーしておく必要がある
    • 例のモデルはbartowski/DeepSeek-R1-Distill-Qwen-7B-GGUFDeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf
    • モデルパスを実際の場所に置き換えたうえでllama-cli.exeを実行する
    llama-cli.exe -m PATH\TO\DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf -p "A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: Question:The product of the ages of three teenagers is 4590. How old is the oldest? a. 18 b. 19 c. 15 d. 17 Assistant: <think>" -n 2048  -t 8 -e -ngl 99 --color -c 2500 --temp 0 -no-cnv
    
    • 例の出力には、Intel Arc A770 GraphicsのSYCLデバイス1基、KVキャッシュ、SYCL compute buffer、sampler設定、トークン生成性能情報が表示される

Linuxクイックスタート

  • GPUドライバーのバージョンを確認し、必要であればIntel client GPU driver installation guideに従ってインストールすることを推奨

  • v2.3.0-nightlyリリースからLinux用IPEX-LLM llama.cpp portable tgzをダウンロードして展開する

  • ターミナルで展開先フォルダーへ移動する

    • cd /PATH/TO/EXTRACTED/FOLDER
  • Linuxでllama.cpp portable zipを使う際は、oneAPIをsourceしてはいけない

  • GGUFモデルの実行

    • Windowsと同様に、DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.ggufのようなコミュニティGGUFモデルをローカルに用意する
    • モデルパスを実際の場所に置き換えたうえで./llama-cliを実行する
    ./llama-cli -m /PATH/TO/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf -p "A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: Question:The product of the ages of three teenagers is 4590. How old is the oldest? a. 18 b. 19 c. 15 d. 17 Assistant: <think>" -n 2048  -t 8 -e -ngl 99 --color -c 2500 --temp 0 -no-cnv
    
    • 例の出力には、SYCLデバイス一覧、llama_kv_cache_initllama_init_from_model、sampler chain、n_ctx = 2528n_batch = 4096n_predict = 2048などの実行情報が含まれる

FlashMoEでDeepSeek V3/R1を実行

  • FlashMoEllama.cpp上に構築されたコマンドラインツールで、DeepSeek V3/R1のようなMoEモデルの実行に最適化されている

  • 現在はLinuxプラットフォームで利用可能

  • テスト済みのMoE GGUFモデル:

  • ほかのMoE GGUFモデルもサポートされる

  • 要件と注意事項

    • DeepSeek V3/R1の実行要件:
      • CPUメモリ380GB
      • Arc A770 1〜8枚
      • ディスク500GB
        • より大きなモデルや別の精度では、さらに多くのリソースが必要になる場合がある
        • Arc A770 1枚のプラットフォームではOOMを避けるためにコンテキスト長を短くする必要があり、例としてコマンド末尾に-c 1024を追加する
        • デュアルソケットプラットフォームでは、BIOSでSNC (Sub-NUMA Clustering)を有効化し、実行コマンドの前にnumactl --interleave=allを付けると、より良いデコード性能が得られる
        • FlashMoEを使う場合もoneAPIをsourceしてはいけない
  • CLI実行

    ./flash-moe -m /PATH/TO/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf --prompt "What's AI?" -no-cnv
    
    • 例の出力には、8基のSYCLデバイスのKV buffer、pipeline parallelism enabled、graph nodes/splits、n_threads = 48n_ctx = 4096n_batch = 4096などの実行情報が表示される
  • Serving実行

    ./flash-moe -m /PATH/TO/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf --serve -n 512 -np 2 -c 4096
    
    • -nは予測するトークン数、-npは並列デコードシーケンス数、-cは全体のコンテキストサイズ
    • 値は要件に合わせて調整できる
    • Serving機能はv2.3.0 nightly buildから利用可能
    • 例の出力には、n_slots = 2、各slotのn_ctx_slot = 2048、モデル読み込み、chat template、http://127.0.0.1:8080サーバー待機状態が含まれる

マルチGPU選択とSYCLエラー

  • 異なるSYCLデバイスの検出

    • 異なるGPUが混在していると、Detected different sycl devicesエラーが発生する場合がある
    • 例はArc A770 2枚とIntel UHD Graphics 770 iGPU 1基が同時に検出される状況
    • GPUが同一でない場合、処理はデバイスメモリに応じて割り当てられ、例ではiGPUが計算処理の2/3を受け持つため性能が大きく低下する
    • 選択肢は2つ
      • iGPUを無効化して最高の性能を得る
      • チェックを無効化してすべてのデバイスを使用する
    set SYCL_DEVICE_CHECK=0
    export SYCL_DEVICE_CHECK=0
    
  • 使用するGPUの指定

    • 複数のIntel GPUがある場合、llama.cppはデフォルトですべてのGPU上で実行される
    • 特定のGPUだけを使うには、llama.cppコマンドを開始する前に**ONEAPI_DEVICE_SELECTOR**環境変数を設定する
    • Windows:
    set ONEAPI_DEVICE_SELECTOR=level_zero:0
    set ONEAPI_DEVICE_SELECTOR="level_zero:0;level_zero:1"
    
    • Linux:
    export ONEAPI_DEVICE_SELECTOR=level_zero:0
    export ONEAPI_DEVICE_SELECTOR="level_zero:0;level_zero:1"
    

性能オプションと署名検証

  • Immediate command lists

    • SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTSはGPU作業の投入にimmediate command listsを使うかどうかを決定する
    • 一般的には性能を高められるが例外もあり得るため、環境変数を有効にした場合と無効にした場合の両方を試し、最適な性能を見つけることを推奨
    • Windows:
    set SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
    • Linux:
    export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
  • portable zip/tgz 2.2.0の署名検証

    • portable zip/tgzバージョン2.2.0opensslで署名を検証できる
    • 検証前にシステムへopensslがインストールされている必要がある
    openssl cms -verify -in <portable-zip-or-tgz-file-name>.pkcs1.sig -inform DER -content <portable-zip-or-tgz-file-name> -out nul -noverify
    

1件のコメント

 
GN⁺ 2025-03-08
Hacker News の意見
  • この構成は VRAM が不足しているため、CPU と GPU メモリの間で大量にデータを移動する必要があり、性能はあまり良くない可能性が高い
    それでも DeepSeek-R1 には 256GB 未満の量子化モデルがあり、蒸留版ではない: https://unsloth.ai/blog/deepseekr1-dynamic
    フル FP8 DSR1 との差を定量化するのは難しいが、~Q2 量子化モデルも思ったよりかなり実用的だった
    もう一つ言及に値するモデルは DeepSeek v2.5 で、V3/R1 よりパラメータ数は少ないが、コンシューマー向け機材で動かすには依然としてかなり強めの量子化が必要になる。最近、誰かが作っていた: https://www.reddit.com/r/LocalLLaMA/comments/1irwx6q/deepsee...
    DeepSeek v2.5 は Llama 3 70B より優れていると見る余地もあり、ローカル推論を回したい人ならもっと知っておくべきモデルだと思う

    • Unsloth R1 の量子化をデュアル Xeon Gold 5218 と 384GB DDR4-2666 で試してみたが、メモリチャネルは半分ほどしか使っておらず、最適構成ではなかった
      IQ2_XXS / 183GB、16k コンテキスト基準で CPU のみだとプロンプト処理は 3トークン/秒、応答は 1.44トークン/秒で、CPU + NVIDIA RTX 70GB VRAM ではプロンプト処理 4.74トークン/秒、応答 1.87トークン/秒だった
      Unsloth が DeepSeek V3 にも同様の量子化を出してくれれば、より有用だと思う。推論トークンが不要なので、同じトークン/秒でも全体としては速くなり得る
    • v2.5 は一度動かしてみるつもりで、そこまで小さく量子化しても v3.5 くらい一貫性があるといい
      Q2_K_XL を使っているが、個人的には十分良い。FP8 に劣る部分は 創作文章 のほうなので、同じストーリープロンプトを何度か入れて FP8 と比べてみると差が見える
      コーディングでは 1.58ビットが Q2XXS や Q2_K_XL より明らかにエラーを多く出す
    • 現在 8トークン/秒超が出ており、この投稿にデモがある: https://www.linkedin.com/posts/jasondai_run-671b-deepseek-r1...
  • https://github.com/intel/ipex-llm/blob/main/docs/mddocs/Quic...
    8トークン/秒超の要件は CPU メモリ 380GB、ARC A770 1〜8枚、ディスク 500GB とのこと

    • Jason Dai の投稿のデモも見られる: https://www.linkedin.com/posts/jasondai_with-the-latest-ipex...
    • 8トークン/秒以上を出すのに Intel Arc A770 1枚で十分なのか気になる
    • この構成の費用がだいたいどのくらいなのか気になる
      1万ドル未満だと思うし、トークン/秒の数値も見ていない気がする
  • この状況で Xeon が正確にどんな役割を果たしているのか気になる。ほかの x86 プロセッサではだめな理由があるのだろうか?

    • Xeon ではない大半のマザーボードは、商用で入手できる DIMM でこの程度のメモリを挿せるほど メモリチャネル が多くないからだと思う
    • DDR4 UDIMM はモジュールあたり最大 32GB、DDR5 UDIMM はモジュールあたり最大 64GBで、Xeon ではないマザーボードは通常 UDIMM スロットが最大4本なので、ノードあたり 128GB/256GB が限界
      サーバー向けマザーボードはソケットあたり DIMM スロットが最大16本あり、RDIMM/LRDIMM をサポートしているため、より多くのモジュールやより大容量のモジュールを挿せる
      コロナのピーク時期に 128GB UDIMM が発売されたことはあった
    • 十分な総 RAM を妥当な価格で提供するマザーボードは、Epyc 以外には多くない。テスト/開発用途なら、512GB RAM 搭載の中古 Dell デュアルソケット旧世代 Xeon サーバーをかなり安く買える
      たった今数分検索してみたところ、ビデオカードや SSD を追加する前の基準で 1500ドル未満のものも簡単に見つかり、1024GB RAM 構成でも 2000ドル未満のものが見える
      少なくともフル速度の PCI-Express x16 3.0 カードを複数枚挿すには PCIe レーン も十分に必要だが、シングルソケットの Intel ワークステーション向けマザーボードでは見つけにくい
      例として、512GB RAM 搭載の比較的安価な構成をいくつか挙げられる。電力はかなり食うしうるさいだろうが、hp や supermicro などほかの x86-64 ハードウェアでも同じアプローチ。通常は 16 x 32GB DDR4 DIMM 構成
      https://www.ebay.com/itm/186991103256?_skw=dell+poweredge+t6...
      https://www.ebay.com/itm/235978320621?_skw=dell+poweredge+r7...
      https://www.ebay.com/itm/115819389940?_skw=dell+poweredge+r7...
  • より大容量だが低速な RAM を大量に積んだ GPU をなぜ出さないのか気になる。そうすればより大きなモデルを載せられつつ、価格もなお手の届く範囲にできるはずなのに

    • それがどこで必要になるのだろう。ゲーム用ではないだろうし、AI なら金を払えというのが現在の Nvidia のやり方
      AI 向け GPU の需要は供給を上回っており、その需要の大半の背後には、補助金・融資・投資資金を受け取れる過熱した資金がついている。GPU メーカーはその金を取りに行ける
      残念ながら VRAM は、ライトな利用と資金のある利用を分ける完璧な基準になっている。SSO が企業向けと非企業向けを分ける完璧な基準になり、SSO 税 が課されるのと似ている
    • そう作ると、より高価な GPU を買う動機が減る
    • VRAM がもっと大きい GPU を作ることは当然可能だが、そうしなければならないほど競争がない。今のやり方のほうがはるかに収益性が高い
    • AMD Halo Strix のニュースを見ていないのか? AI では Nvidia 4090 より2倍以上速く、先週発売された
  • DeepSeek はモデル名の付け方を OpenAI から学んだのだろうか

    • 慣例は妙だが、業界全体、とくに GGUF モデルではかなり標準的。671B パラメータを4ビットで量子化したという意味
      K_M という用語は GGUF により特化したものに見え、具体的な量子化戦略を説明している
  • 記事にはもう少し情報が必要。なぜ TPS の数値がすべて x で隠されているのか、この構成でどんな性能を期待できるのか、最近流行した デュアル Epyc ワークステーション構成と比べるとどうなのか気になる

    • 現在、2ソケットの第5世代 Xeon(EMR)で 8TPS 超 が出ている
    • 最近流行したというデュアル Epyc ワークステーションのレシピへのリンクがあれば見てみたい
  • サンプル出力でトークン/秒の値を伏せているのを見ると、きっとかなりよく動いているのだろう

  • Nvidia 以外でも LLM や Stable Diffusion の推論を動かす選択肢がいくつか見えてきた。Intel Arc、Apple M シリーズ、そして今では AMD Ryzen AI Max もある。
    Nvidia で動かすのが最も最適化されているのは明らかだが、手頃な価格の高 VRAM Nvidia カードを入手するのは難しく、非 Nvidia 機材もつい検討し続けてしまう。
    学習やファインチューニングに興味がなく、推論だけを行うなら、こうした解決策は実際に使い物になるのだろうか? Linux マシンで可能なのかも気になる。

    • 本気でやるなら Nvidia に行くのが正解。
      この記事は実質的に、Intel が「うちも GPU を作りました」と思い出させる内容に近く、予算向けカード自体は良いが、エコシステムがあまりにも遅れている。
      正直、これは予算を節約してまともにやるのが難しい領域だ。
  • AI 用の APU が出てくれば、GPU への関心は急速に冷めそうだ。
    AMD Halo Strix や Apple M3 Studio APU で 512GB または 128GB RAM を使えるのに、なぜ高価な Nvidia 4090 を買うのか。
    Nvidia は可能な限り長く価格を高く、性能を低く維持してきたが、ようやく競争がやって来た。Intel も RAM を大量に積んだ APU を作れるはずだ。
    Nvidia が少し焦っていることを願う。