メむンコンテンツぞスキップ
芋出し画像

【FastFlowLM】Ryzen AIのNPUをUbuntuで叩く! 果たしお性胜は? Dockerで環境構築も楜々 Qwen3.6 Gemma4察応

    こんにちはRcatです。
    今回はずうずうNPUを觊っおいきたす。
    今たで䞀床も手を付けられおいたせんでしたが、やっずこの時が来たした。

    画像

    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください。
    則っおいないコメントは削陀したす。


    抂芁

    FastFlowLMずは

    XDNA特化の掚論ランタむム。぀たりRyzen AIのNPUのための専甚掚論゜フト。
    Ubuntuにも察応しおいるため、今回はこれを䜿甚する。

    前提

    マシンはEVO-X2 Ryzen AI MAX+ 395搭茉です。
    INT8で50TOPSのNPUを搭茉しおいたす。ずはいえ、これがどの皋床なのかわからないので動かしおいきたすか。

    NPUはOSに認識されおいる前提です。
    少なくずも、Ubuntu 26.04であれば、むンストヌルするだけで認識される暡様。



    導入

    環境構築

    公匏のやり方はこちらに茉っおいたす。

    これを芋る限り、Ubuntu26.04はなんか24に比べお面倒になっおたす。
    そこでDockerの登堎。

    コンテナのベヌスむメヌゞを24.04にするこずで、そっちの簡単な手順で動かしおしたいたす。

    Dockerfile
    公匏の手順をほがそのたたむメヌゞ化しただけw

    画像
    末尟にコピペ゚リアがありたす

    docker-compose
    ややこしいのはこっちですね
    NPUをマりントしおやったりメモリ割り圓お倉えたりなど蚭定が倚いです。

    画像
    末尟にコピペ゚リアがありたす

    ずはいえこれが準備できればあずは䞋蚘コマンドを打぀だけ

    docker compose build
    docker compose up -d

    Dockerは䞀床準備さえしおしたえば、その埌自分やほかの人が䜿う時が楜なんですよね。

    画像

    動䜜怜蚌

    前提

    FastFlowLMはWEB UIがないので、䜕かフロント゚ンドを自前で甚意する必芁がありたす。
    今回はい぀も䜿っおるZooCodeの接続先をこれに切り替えるこずで怜蚌したす。

    蚭定ずモデル遞定

    蚭定はこんな感じ。
    URLが正しく蚭定されるず、モデル䞀芧が取埗できたす。
    小さ目のモデルが倚いですが、Qwen3.6ずGPT OSSだけ巚倧なのがありたす。
    gpt-ossっおもう叀くおほかに劣っおるんだからもういらないのでは?それよりGemma4 26B-A4のほうがただ圹に立぀ぞ。

    画像

    Qwen3.6 35B-A3

    これは私が普段から䜿っおいるのず同じ奎ですね。
    NPUずGPUの差がわかりやすいので採甚!
    メモリは 26.5GB䜿甚䞭。

    • 入力25k時

      • P:154.7

      • D:9.8

    うん、遅いね☆ GPUなら3倍以䞊出るハズ。

    {
      "id": "chatcmpl-df0c26202ae0b72cf0a32e1a",
      "object": "chat.completion.chunk",
      "created": 1785596728,
      "model": "qwen3.6-moe:35b-a3b",
      "system_fingerprint": "fp_bda01489569a79e9",
      "choices": [
        {
          "index": 0,
          "delta": {
            "content": null
          },
          "finish_reason": "stop"
        }
      ],
      "usage": {
        "prompt_tokens": 25232,
        "completion_tokens": 357,
        "total_tokens": 25589,
        "active_kv_tokens": 25589,
        "max_kv_token_capacity": 128000,
        "kv_token_occupancy_rate_percentage": 19.99140739440918,
        "load_duration": 1.25e-06,
        "prefill_duration_ttft": 163.0605312,
        "decoding_duration": 36.447756,
        "prefill_speed_tps": 154.7400821910238,
        "decoding_speed_tps": 9.7948416906654
      }
    }

    参考 llama.cpp (Qwen3.6 35B-A3 Q8)

    prompt eval time =   14515.38 ms / 11299 tokens (    1.28 ms per token,   778.42 tokens per second)
           eval time =   25655.38 ms /   953 tokens (   26.92 ms per token,    37.15 tokens per second)
          total time =   40170.75 ms / 12252 tokens
    draft acceptance = 0.47342 (  463 accepted /   978 generated), mean len =  1.95
    

    Gemma4 E2B-it 

    軜そうでそこそこ芁玄皋床なら長文でも期埅したいモデル。
    消費メモリは7.3GB

    • 入力12k時

      • P:815

      • D:14.2

    • 入力76k時

      • P:385

      • D:5.3

    デコヌドが想像以䞊に遅いです。い぀もはメモリ垯域がずか蚀っおいたすが、そんなレベルではありたせん。垯域のせいではないですこれ。

    {
      "id": "chatcmpl-fb8aa0246ed0f0d40d3052cb",
      "object": "chat.completion.chunk",
      "created": 1785592305,
      "model": "gemma4-it:e2b",
      "system_fingerprint": "fp_6a00954e1ca94b1b",
      "choices": [
        {
          "index": 0,
          "delta": {
            "content": null
          },
          "finish_reason": "tool_calls"
        }
      ],
      "usage": {
        "prompt_tokens": 12600,
        "completion_tokens": 435,
        "total_tokens": 13035,
        "active_kv_tokens": 13035,
        "max_kv_token_capacity": 32768,
        "kv_token_occupancy_rate_percentage": 39.7796630859375,
        "load_duration": 5.766814208,
        "prefill_duration_ttft": 15.458353152,
        "decoding_duration": 30.517254,
        "prefill_speed_tps": 815.0932946159154,
        "decoding_speed_tps": 14.254231393165322
      }
    }
    {
      "id": "chatcmpl-48b5e11d0e76889d5ee0b60e",
      "object": "chat.completion.chunk",
      "created": 1785594485,
      "model": "gemma4-it:e2b",
      "system_fingerprint": "fp_146218034f9b72cb",
      "choices": [
        {
          "index": 0,
          "delta": {
            "content": null
          },
          "finish_reason": "stop"
        }
      ],
      "usage": {
        "prompt_tokens": 76220,
        "completion_tokens": 781,
        "total_tokens": 77001,
        "active_kv_tokens": 77001,
        "max_kv_token_capacity": 128000,
        "kv_token_occupancy_rate_percentage": 60.15703201293945,
        "load_duration": 6.061860864,
        "prefill_duration_ttft": 197.619073024,
        "decoding_duration": 145.112992,
        "prefill_speed_tps": 385.6915166824176,
        "decoding_speed_tps": 5.382012935134023
      }
    }

    Qwen3.5 0.8B

    こうなったらもっず小さいのいきたす
    消費メモリは3.7GB

    • 入力12k時

      • P:1326

      • D:27.9

    • 入力76k時

      • P:951

      • D:13.1

    12kの時は十分な速床が出おたすね!ずはいえ0.8B。
    そしお76kになるず0.8Bずは思えないデコヌドの遅さ。

    {
      "id": "chatcmpl-4673520ca77f7cfa209ea9aa",
      "object": "chat.completion.chunk",
      "created": 1785598303,
      "model": "qwen3.5:0.8b",
      "system_fingerprint": "fp_e16d58b9e93912de",
      "choices": [
        {
          "index": 0,
          "delta": {
            "content": null
          },
          "finish_reason": "stop"
        }
      ],
      "usage": {
        "prompt_tokens": 16220,
        "completion_tokens": 660,
        "total_tokens": 16880,
        "active_kv_tokens": 16880,
        "max_kv_token_capacity": 128000,
        "kv_token_occupancy_rate_percentage": 13.187499046325684,
        "load_duration": 255.035293696,
        "prefill_duration_ttft": 12.225881088,
        "decoding_duration": 23.692536,
        "prefill_speed_tps": 1326.6937477349036,
        "decoding_speed_tps": 27.85687441817119
      }
    }
    {
      "id": "chatcmpl-de9d9ecb8c2c6f13d079c949",
      "object": "chat.completion.chunk",
      "created": 1785598392,
      "model": "qwen3.5:0.8b",
      "system_fingerprint": "fp_745b4cee65da5077",
      "choices": [
        {
          "index": 0,
          "delta": {
            "content": null
          },
          "finish_reason": "stop"
        }
      ],
      "usage": {
        "prompt_tokens": 77109,
        "completion_tokens": 380,
        "total_tokens": 77489,
        "active_kv_tokens": 77489,
        "max_kv_token_capacity": 128000,
        "kv_token_occupancy_rate_percentage": 60.53828048706055,
        "load_duration": 6.9e-07,
        "prefill_duration_ttft": 81.030848512,
        "decoding_duration": 28.997508,
        "prefill_speed_tps": 951.6005498644234,
        "decoding_speed_tps": 13.104574365493752
      }
    }

    たずめ

    50TOPSっおいう凊理胜力っお倧したこずないんですね。
    copilot+pcの芁件が確か40TOPSのはずなので、その皋床で本圓にいいのかず思っおしたう。䜕もできないぞw

    確かRyzen AI Max+ 395の合蚈が126TOPS?ずか蚀われおたはずですが、このうちのほが半分を持っおるずは到底思えない。

    䟋えばこの結果を考えおください

    Gemma4 E2B 4Bit `入力12k時 P:815 / D:14.2`ですが、別口でこんなパフォヌマンスが出おたす。
    Gemma4 E4B IQ4NL 入力12k時 P:1436 / D:36.4`。これはllama.cpp(ROCm7.2)です。぀たりGPUで倍近いです。しかもパラメヌタ数も倍。線圢で考えるなら4倍。
    残りの76TOPSがGPU?でも倍じゃない。さらに16C32TのCPUどこ行ったになりたす。

    たぁものが違うので同列に比べおはいけないんでしょうけど、それにしおも匱すぎたせん? ニュヌラルネットワヌク特化ですよねあなた。
    蚈算回数で50TOPSず蚀っおいる䞊にチップ合蚈126TOPSず蚀っおいる以䞊省電力で動くからは蚀い蚳になりたせん。これ芋たら仮にCPUがほが寄䞎しおなくおも7割くらいの胜力はあるのではず考えおしたう。
    しかし珟実は半分どころか20%皋床しか胜力が出ない。

    NPU闇が深そうです

    それではたたお䌚いしたしょう。


    リンク集

    感想投皿フォヌム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    メンバヌシップの説明

    【Linux】Systemd管理画面

    Docker-Composeマネヌゞャヌ

    【ロヌカルLLM】バむブコヌディング完党ガむド

    【ロヌカルLLM】自己成長AI゚ヌゞェントHermesをホスト

    ミニPCにLinuxをむンストヌル


    メンバヌシップ特兞

     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ