Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Inetl NPU でローカル LLM

Inetl NPU でローカル LLM

Intel NPU で LLM が動くことを再現できる形で見せます
- NPU とはなにか
- Docker を使って NPU 利用
- モデルの準備と利用方法

Avatar for desigrammer

desigrammer

May 21, 2026

More Decks by desigrammer

Other Decks in Programming

Transcript

  1. 今日のゴール Intel NPU で LLM が動くことを 再現できる形で見せる NPU とは何か Docker

    でどう NPU に接続するか モデルをどう準備して動かすか 2 2
  2. 最初に結論 NPU は GPU の代替ではない 価値は 省電力 と CPU/GPU を空けること

    LLM デモで難しいのは推論コードよりも ドライバ・モデル・キャッシュ・バージョン整合 今回は Docker 化して再現性を上げる 3 3
  3. NPU = Neural Processing Unit AI 推論に特化したプロセッサ CPU ・GPU とは別に搭載された

    AI 専用チップ 行列演算や量子化推論を 低消費電力 で処理 性能指標として TOPS が使われる NPU 3 (Meteor Lake) より NPU 4 (Lunar Lake 以降) で大幅に増加 5 5
  4. 全体像 層 役割 Host Ubuntu NPU を /dev/accel/accel0 として認識 Docker

    NPU デバイスをコンテナへ渡す linux-npu-driver + Level Zero NPU のユーザー空間ドライバ OpenVINO GenAI LLM 推論ランタイム OpenVINO IR model openvino_model.xml + .bin 8 8
  5. なぜ Docker にしたか ホストに Python venv を作らない ホストユーザを render グループに追加しなくてよい

    ドライバと OpenVINO のバージョンを固定できる デモ環境を作り直しやすい ホスト側で /dev/accel/accel0 が見えること、ホストユーザが docker を実行できることは前提 10 10
  6. デモのバージョン構成 コンポーネント バージョン OS Ubuntu 24.04 linux-npu-driver v1.32.1 Level Zero

    libze1 v1.27.0 OpenVINO 2026.1 OpenVINO GenAI 2026.1 Model Qwen2.5-14B-Instruct INT4 NPU はバージョン相性の影響が大きいので固定する 11 11
  7. OpenVINO + OpenVINO GenAI Intel NPU に推論を流すためのランタイム OpenVINO IR 形式のモデルを読み込む

    Tokenizer / Detokenizer も OpenVINO 形式で扱う NPU ではモデルコンパイルとキャッシュが重要 14 14
  8. 重み圧縮の仕組み LLM 推論のボトルネックは 重み行列のメモリ帯域 重みだけを INT4 / INT8 / NF4

    に圧縮 効果: モデルサイズ縮小 → メモリ転送削減 → 速度向上 LLM 推論は memory-bound なので「重みだけ圧縮」が効く 15 15
  9. NPU で LLM を動かすときの注意 FP16 のままの 14B モデルはサイズ・計算量とも重すぎ る NPU

    推論には OpenVINO IR + 4bit 重み圧縮 を使う 自前 export では NPU 向けの量子化条件 を守る必要が ある 今回は 公式変換済みモデル を使うので、変換作業はしな い --sym / --group_size / --ratio などの詳細は Appendix 16 16
  10. 今回のモデル 項目 内容 モデル OpenVINO/Qwen2.5-14B-Instruct-int4-ov 元モデル Qwen2.5-14B-Instruct 形式 OpenVINO IR

    重み INT4 、 group_size: 128 ライセンス Apache-2.0 モデルカード上は INT4_ASYM ・group_size 128 。NPU 4 ではこの設定で動 作確認済み。自前で NPU 向けに export するなら --sym を使う (Appendix 参照) 17 17
  11. NPU 世代の見分け方 DEVICE_ARCHITECTURE 世代 例 3720 NPU 3 Meteor Lake

    4000 NPU 4 Lunar Lake / Arrow Lake 今回の実機ログは Architecture: 4000 21 21
  12. 量子化パラメータの読み方 パラメータ 意味 --weight-format int4 / int8 / nf4 /

    mxfp4 --sym 対称量子化 ( 中心 0) 。非対称より省メタデータ --group_size 1 グループあたりの重み数 ( 128 / -1 ) --ratio INT4 に量子化する層の割合 ( 1.0 = 全層) group_size を小さくすると精度↑メタデータ↑。AWQ や scale estimation でさらに精度を底上げできる 32 32
  13. NPU 向けに自前 export する場合の 条件 基本は 対称量子化 ( --sym )

    --ratio 1.0 --group-size は 128 か -1 〜4B → 128 (group-wise) 7B 以上 → -1 (channel-wise) INT4 / NF4 を使う (NF4 は Core Ultra Series 2 以降) 今回は OpenVINO 公式の変換済み IR モデルを利用するため、自前 export は しない 33 33
  14. 参考 Intel linux-npu-driver v1.32.1 Release OpenVINO GenAI on NPU OpenVINO

    Model Caching Qwen2.5-14B-Instruct-int4-ov Model Card 38 38