※ 先にお断りしておきますが、Stable DiffusionはWebUIのほうではなく、コマンドライン版のことです。
Intel Meteor Lake VPU(NPU)
最近何かと話題になっている次世代CPUにおけるAI処理に関して調べてみました。
ノートPC用の新世代CPU、Core Ultraに搭載されているVPU(NPU)について
PC Watch – Meteor Lakeの内蔵NPU、AI処理の電力効率はCPUの7.8倍
変換効率がCPUの7.8倍などとすごい数字が出ています。
しかし、「効率」に注目してください。
前にも書きましたが「効率」と言い出したらたいていの場合、絶対性能では既存のものに敵わないです。
理由は絶対性能で勝っているならそのまま書けばよいだけだからです。
この画像を見るとなかなかすごそうな性能であること、そしてすでにStable Diffusionが動作しているようです。
これは楽しみ。
しかし、上の画像をよく見ると、真ん中の青緑のグラフは消費電力であることがわかります。
オレンジ色が効率を表し、性能を表しているのは一番左の青いグラフになります。
記事を読むとWindowsでのNPUの利用はDirectML経由になると書かれています。
DiretMLというと思い出すのはMicrosoft Oliveであり、仮に使えたとしても最適化したonnx形式に変換する必要があるのかもしれません。
このNPU対応のStable Diffusionは探してみましたが、どこにも公開されていませんでした。
現時点では公には存在していないか、極めて分かりにくい特殊な手順が必要なのだと思います。
というわけで、2024/2/7現在Intel Meteor Lake VPU(NPU)でのStable Diffusionの対応は確認できませんでした。
Ryzen 7000U/H/8000G AIE
Ryzen7000U/H/8000G に搭載されているAIEは現時点ではWindows11のみの対応となっています。
サポートされる構成
Ryzen AIソフトウェアは、Windows 11を実行するAMD Ryzen™ 7940HS、7840HS、7640HS、7840U、7640Uプロセッサーをサポートします。
Ryzen AI は、IPU device(PCIデバイス、デバイスID=0x1502)として認識されているようです。
また、こちらのDevelopper向けのドキュメントを見ると
開発の流れ
Ryzen AI向けのAIアプリケーションの開発は、3つの簡単なステップにまとめることができる:
トレーニング
クラウド上のPyTorch、TensorFlow、ONNXモデルを選択または開発し、学習させます。量子化
Ryzen AIソフトウェア開発は、複数の量子化フローをサポートしています。開発者は、AMD Vitis™ AI量子化器を活用してモデルをINT8に量子化し、ONNX形式で保存したり、Vitis AI量子化器をプラグインとして搭載したMicrosoft Oliveを使用したりできます。デプロイ
ONNX Runtime Vitis AI EPは、量子化されたONNXモデルをRyzen AIハードウェア上で最適にパーティショニング、コンパイル、実行し、ワークロードを最適化することで、低消費電力で最適なパフォーマンスを実現します。
との表記があります。
どこかで見たことがあるonnxとOliveが目を惹きます。
おそらく、Stable Diffusionが使えたとしてもOlive経由になる可能性が高いのではないでしょうか。
これは多かれ少なかれ、IntelのVPUに関しても同じように感じました。
素晴らしい数字が書かれていてなんの問題もないように見えますが、実際は両方ともonnx形式に変換する必要があるのではないか?という疑念を感じしまた。
明示されていませんが、Intelの性能比較はGPUは通常のpytorchのモデルデータ、NPUは最適化されたonnxのモデルデータを使用していたなどというオチでないことを祈ります。
さて、AMDのAIEのLinuxの対応についてです。
実はすでにgithubにリポジトリがあります。
システム要件
AIアプリケーションを実行するには、以下のシステムが必要です。
プロセッサー
AIアプリケーションを実行する(テスト機): RyzenAIプロセッサー(例 Phoenix/Strix
このリポジトリをビルドする(ビルドマシン): 任意のx86プロセッサー、ただしAMDプロセッサーを推奨😉。
オペレーティングシステム Ubuntu 22.04
Linux カーネル: IOMMU SVA サポート付き v6.7 (下記参照)
XRT 基本パッケージのインストール
XRT基本パッケージがプラグインパッケージと一緒に動作することを確認するために、このリポジトリ(/xrt)のxrtサブモジュールからビルドしてください。
より詳細な情報は https://github.com/Xilinx/XRT を参照してください。
カーネルはv6.7で現在の22.04LTSの最新版は6.2です。
思わず、「解散」と言いたくなるような状況ですが、これから徐々に対応が進んでいくものと思われます。
鳴り物入りで登場はしていますが、現実問題として、既存のローカル生成AIのグレーなデータをそのまま使うのではなく、開発側が自前で用意した学習データを使うことを想定しているのではないでしょうか。
つかえたとしても最適化されたonnx形式に変換が必要という可能性もありますね。
xformerの2倍の性能が出るTensorRTも鳴り物入りで登場しましたが、流行っているようには見えません。
イラストAIの世界ではやはり、変換物はいまいち流行らないというのが現実なのだと思います。
バージョンアップが早いモデルデータだと3か月おきなと゜普通にありますので、3か月に一度変換が必要とか、Control Netが使えないとか聞いただけでげんなりです。
IntelのNPUはすでに実際にStable Diffusionが動いていますので、公開されるのも案外早いかもしれません。
わたくしは今のところテスト環境がありませんのでテストできませんが、使ってみれば一発でわかることなので、今後に期待したいです。
AMDのRyzen AIに関しては今のところAMD Communityにこのような投稿がなされています。
残念ながら最後の回答はAMDスタッフからのようでこのようになされています。
2023 年 10 月 25 日 01:34 午後
こんにちは。Ryzen-AI プラットフォームではまだStable Diffusionを正式にサポートしていません。サポートについては今後のリリースに注目してください。
現時点ではコマンドラインの(WebUIではない)Stable Diffsuionも動作していないようです。
AMDIntelともに先は長そうですね。
半年から1年後はかなり状況が変わっていると思いますので、今後に期待しましょう。
AMDはすでにAIEが登場してからしばらく経つのにこの状況というのは残念なところです。
両社ともに鼻息は荒いですが、現実がついてきていないというのが実際のところのようです。
生成AIというと真っ先に名前が挙がるのがコマンドライン版のStable Diffusionですから、早急に対応してほしいところです。
Stable Diffusionが動けば多くの人が次世代CPUのAI機能について、実感できるのではないでしょうか?