シンギュラリティ実験ノート

購入した1000ドルPCで何がどこまでできるのか実験した記録です。

UM790 ProでRyzen AI Softwareの導入に成功

前回ブログに書いた「UM790 ProのNPUデバイス認識に成功」の続報である。Ryzen AI Softwareの導入になんとか成功し、テストプログラムを動作させることができた。いくつか注意すべき点があったのでここにまとめておきたい。

導入の準備

Ryzen AI Softwareの導入方法は下記のページにある。

Installation Instructions — Ryzen AI Software 1.0.1 documentation

準備としてまず下記のソフトをWindows11環境に導入する必要がある。

導入に必要なソフトとバージョン

Visual Studio

ここは最新バージョンではなく、素直に2019を導入する必要がある。

下記のページを参考にした。

www.kkaneko.jp

上記ページでは「C++によるデスクトップ開発」のみ導入しており、私もこれで十分だろうと思ったのだが、それだと次に実行する.\install.batのチェックが通らない。すべてのコンポーネントを選んで導入してほしい。

cmake

下記のページからダウンロードして導入した。

cmake.org

python

WindowsPowerShellの端末画面を開き、pythonと入力するとアプリの導入画面が開くので画面に従って進めるだけだ。

PowerShellからpython -Vでバージョンを確認するとPython 3.12.2 と表示される。しかし実際のRyzen AIの動作環境でpython -Vでバージョンを確認するとPython 3.9.18と表示されるので、このインストールが必要だったのかはよく分からない)

Anaconda or Miniconda

私は最新のanaconda3を導入した。導入方法はネットに最新の情報があると思うのでそちらを見てもらいたい。

環境変数の設定

導入したソフトのコマンドがPowerShellから利用できるようにシステム環境変数のパスに以下を追加した。(xxxxxは自分の環境で読み替えてほしい)

C:\Users\xxxxx\anaconda3
C:\Users\xxxxx\anaconda3\Scripts
C:\Users\xxxxx\anaconda3\bin
C:\Program Files\CMake\bin
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools

Ryzen AI Softwareの導入

上記のAMDのページから ryzen-ai-sw-1.1.zip をダウンロードして展開する。

PowerShellの端末画面で下記コマンドを実行する。

.\install.bat

導入ソフト、IPUデバイスのチェックを通ると、インストールが始まる。無事に完了するとconda配下にRyzen AI Softwareの環境が作られる。動作環境名は以下のコマンドで確認できる。

$ conda info -e
# conda environments:
#
base                     C:\Users\xxxxxx\anaconda3
ryzenai-1.0-202402XX-XXXXXX     C:\Users\xxxxxx\anaconda3\envs\ryzenai-1.0-202402XX-XXXXXX
ryzenai-1.0-202402YY-YYYYYY     C:\Users\xxxxxx\anaconda3\envs\ryzenai-1.0-202402YY-YYYYYY

私は間違って2回インストールコマンドを実行したので2つ動作環境ができてしまった。動作環境名は上記インストールコマンドの引数で指定することもできる。

Ryzen AI Softwareの動作確認

動作環境のアクティベート

端末画面から下記コマンドを入力する。

conda activate ryzenai-1.0-202402YY-YYYYYY

コマンドエラーとなり、アクティベートできない。原因を調べると下記のページに解決策が書かれていた。

github.com

端末画面から下記のコマンドを入力しろ、と書かれている。

PowerShellの場合は

YourPath\Anaconda\Scripts\activate.bat

Git Bashの場合は、.bash_profileに下記の行を追加しろ、と書かれている。

source YourPath/Anaconda/Scripts/activate

YourPathを自分の環境に合わせて行ってみたが、PowerShellでもGit Bashでもアクティベートができなかった。ちなみにGit Bashこちらからダウンロードした。

ついにこれで詰んだかと思ったが、Git Bashの端末画面から上記のsourceコマンドを入力してみると・・・

(base)

と端末に表示された。動作環境名baseが立ち上がったようだ。確認してみると・・・

$ conda info -e
# conda environments:
#
base                  *  C:\Users\xxxxxx\anaconda3
ryzenai-1.0-202402XX-XXXXXX     C:\Users\xxxxxx\anaconda3\envs\ryzenai-1.0-202402XX-XXXXXX
ryzenai-1.0-202402YY-YYYYYY     C:\Users\xxxxxx\anaconda3\envs\ryzenai-1.0-202402YY-YYYYYY

base環境の行に*があり、base環境が立ち上がっている。コマンドの使い方が分かってきた。アクティベートを一旦解除し、環境名を引数に指定して実行すると・・・

conda deactivate
source /c/Users/xxxxxx/anaconda3/Scripts/activate ryzenai-1.0-202402YY-YYYYYY
(ryzenai-1.0-202402YY-YYYYYY)

Ryzen AIの環境が立ち上がった。紆余曲折はあったが動けばOKである。

pythonのバージョンとインストール済みライブラリを確認する。

$ python -V
Python 3.9.18
$ pip list
Package                Version
---------------------- --------------
colorama               0.4.6
coloredlogs            15.0.1
flatbuffers            23.5.26
glog                   0.3.1
humanfriendly          10.0
markdown-it-py         3.0.0
mdurl                  0.1.2
mpmath                 1.3.0
numpy                  1.26.4
onnx                   1.15.0
onnxruntime            1.17.0
onnxruntime_extensions 0.10.1
onnxruntime-vitisai    1.15.1
packaging              23.2
pip                    23.2.1
protobuf               4.25.3
Pygments               2.17.2
pyreadline3            3.4.1
python-gflags          3.1.2
rich                   13.7.0
setuptools             69.1.0
six                    1.16.0
sympy                  1.12
tqdm                   4.66.2
vai-q-onnx             1.16.0+e38e0c6
voe                    0.1.0
wheel                  0.42.0

テストの実行

cd .\quicktest\
curl https://www.cs.toronto.edu/~kriz/cifar-10-sample/bird6.png -o image_0.png
python -m pip install -r requirements.txt
python quicktest.py --ep ipu

いろいろとワーニングメッセージが出力されたが、下記の行を確認できたのでOKのようだ。

[Vitis AI EP] No. of Operators :   CPU     2    IPU   400  99.50%
[Vitis AI EP] No. of Subgraphs :   CPU     1    IPU     1 Actually running on IPU     1
Image 0: Actual Label cat, Predicted Label not-cat

NPUをどう使うか

なんとかNPUが動作する環境を作ることができた。ではこれからNPUを使って将棋AIやStableDiffusionやLLMを動かすことができるかというと、そう簡単ではなさそうだ。

このNPUは整数演算しかできない。AMDのページに最大性能10TOPS(Tera Operation Per Second)と書かれていて、なぜTFLOPS(Tera FLoating-point Operation Per Second)ではないのかと思ったのだが、浮動小数点演算はできないからなのだ。このため浮動小数点で作られたこれまでのモデルをNPUで使おうとすると、8bit、または16bitの整数に変換(量子化というらしい)をしなければならない。変換したモデルを利用するためには推論部分も書き換えないといけない(と思う)。これは私には荷が重い。

このNPUとRyzen AIは2023年に発表された最新の技術だ。NPUをネット検索しても活用している事例はまだほとんど出てこない。省電力で高速なAIを小型のPCでも動かせることはNPUの大きなメリットだと思う。今年あたりから活発な動きが出てくることを期待している。私はAMDのページにあるサンプルプログラムを動かしながら、しばらくは勉強期間となりそうだ。