AMD Ryzen AI装備でCPU、統合型GPU(integrated GPU|iGPU)、NPUをも積むRyzen 7 8845HS搭載な自身初購入のミニパソコンAOOSTAR GEM12 Pro MAX、何をせずともAIを堪能できるのかと思いきや、AMD Ryzen AIソフトウェアとNPUドライバのインストールが必要だったのでプリインストール(到着後クリーンインストール)済みWindows 11 ProとUSB SSDでマルチブートしているAMDXDNA(Ryzen AI NPU)が実装されたLinuxカーネル6.14な25.04ベータを入れていたUbuntuにインストールしてみた話。
尚、今回インストールしたRyzen AI PCに必須のツール&ランタイムライブラリであるAMD Ryzen AIソフトウェアとAMD Ryzen APU|IPUやAMD Radeon GPUボード用パフォーマンスチューニングアプリAMD Softwareとは全くの別物。
AMD Software(PROやAdrenalin)とは、また異なるAMD Ryzen AIソフトウェアとは、「AI PCでのAI推論を最適化および展開するためのツールとランタイム ライブラリ」とのこと。
キーボードにcopilotキーがあることも[AI PC]と呼べる条件らしき話もあり、自身が買った本体のみのGEM12 Pro MaxをAI PCと言ってよいのかは、さておきます。
このソフトウェアがあると学習済みのTensorFlowモデル、または、PyTorchモデルを、後者ならそのままでも、両者ともに汎用なONNXモデルへ変換、ONNXランタイムで展開されるため、PCなどハードウェア上でCPU/GPU(iGPU)/NPU何れか単独、または併用して推論を行うことができ、エッジAIを地で行くことができるっぽい。
AMD Ryzen 8000シリーズな8845HS / Hawk PointもCPU/Central Processing Unit、そしてAIタスクに特化したNPU/Neural network Processing Unit、画像処理や生成などの並列演算やMLタスクに適したiGPU/integrated Graphics Processing Unitを一体化したAMD独自のAPUを搭載しており、AI機能を搭載したより上位機種に比べると機能は、限定的も、この対象となるとのこと。
インストールについては、Installation Instructions / Ryzen AI Software 1.4 documentationに沿っていけば良いのですが、いくつか注意点があります。
まず、リリースノートのサポート済み構成/Supported Configurations を確認しましょう。
冒頭にRyzenのどのシリーズが対応していて、それぞれどんなモデルを利用できるのかの一覧やテーブルがあり、リリースノートなので興味があれば、バージョンごとにどういった実装がなされているかも載っています。
8845HSをはじめとして自身のPC人生の中で圧倒的なスペックであり、通常利用においてはハイスペック過ぎる感があるほど満足しているものの、Ryzen AI PCを買う前に、このページを読む機会があれば、選択も違っただろうなと微かな後悔もあります。
続いて開発環境における依存関係としてWindows 11/Visual Studio/cmake/Anaconda or Minicondaについて、それぞれバージョンが記載されています。
この各バージョンの依存関係は、かなりシビアで重要なポイントとなるので要注意、これを軽んじるとチュートリアルのサンプルすら原因不明なエラー要因になり得るので。
例えば、cmakeについては、当初、4.0.0を使っていましたが、cmakeとは直接関係なさそうなところでエラーになったものの、もしかしてと思って3.31.6にダウングレードしたところ、当該エラーが解消し、以後も、そのバージョンを使っています。
自身は、Windows 11 Pro 24H2 OSビルド:26100.3476/Visual Studio 2022 Community Edition/cmake 3.31.6/Anaconda3-2024.10-1-Windows-x86_64として後述のチュートリアルを実行できています。
Ryzen AIソフトウェアのインストール時、「Anacondaの仮想環境名の設定」もあり、既定では[ryze-ai-1.4.0]となっており、これを後にconda activate ryze-ai-1.4.0とすることでRyzen AIソフトウェアとこれに必要な依存関係もインストール、Ryzen AI NPUが使えるようになります。
なお、この時、(Anacondaと)condaの実行パスを[システム環境変数のpath]に設定しておく必要があり、登録されていないと、かつ登録後、Windowsを再起動しておかないとRyzen AIソフトウェアのインストールに失敗するのでRyzen AIソフトウェアより前にAnacondaをインストール、システム環境変数への登録もインストール中に自動(非推奨と注記がある)か、インストール後、手動で設定しておく必要があります。
登録するのは、[システム環境変数のpath]であって(ユーザー定義の)[環境変数のPATH]ではないので注意。
少なくともAnacondaをローカルにインストールする設定にしつつ、インストーラで自動的に環境変数を設定するようにしておくとユーザー環境変数へ登録されてしまい、結局、後でシステム環境変数の方に設定し直し、Windowsを再起動し、これが原因で実はインストールできていないRyzen AIソフトウェアを改めてインストールすことになるので(それもあって自動設定は非推奨なのかも?)併せて注意。
というか、今回、自身は、それ以前のことを、やらかしてしまっており、この辺にも気づくに至りました、詳細は、訂正・追記に至る事の顛末で...。
自身は、Windows 11 Pro 24H2 OSビルド:26100.3476/Visual Studio 2022 Community Edition/cmake 3.31.6として後述のチュートリアルを実行できています。
尚、仮想環境としてのAnacondaは、当初、Anaconda3-2024.10-1を使っていましたが、pip+virtualenvに替えることにし、Anacondaはアンインストール、また、C++で試すこともあるかもしれないですし、もしかするとライブラリ等必要かもしれないのでアンインストールはしていないものの、Visual Studioは使っておらず、VS Codeに代えてVIMを使用(GUIとPowerShell上でCLIなvimを併用)しています。
尚、Pythonは、当初、最新の3.13.2を使っていましたが、安定版をと、なんとなく、3.13ではなく、3.12に切り替えました。
何れもエラーに起因するものだったかは定かではありませんが、使い勝手もさることながら、根拠なく、より安定性がありそうと思っての変更ではあります。
また、Pythonについては、チュートリアルの実行で文字エンコーディングに起因したエラーがあり、なんとWindowsでは、5種類もあり、1つでも違うとエラーにつながるというPythonエンコーディング設定項目について、自身のケースでは、2ヶ所を設定する必要がありました(3ヶ所は期待通りUTF-8でしたが、1つはNull、もう1つはCP932でした)。
Installation Instructionsに沿うとNPUドライバは、ともかく、Ryzen AIソフトウェアを先にインストールすると思える人々も大勢いるのではと思いますが...(かくいう自身がまさに)。
少なくとも現時点では、Ryzen AIソフトウェアには、Anaconda必須。
指定環境において、インストールする順番も物凄く、めちゃくちゃ、鬼、超、スペシャル、やばっていうほど大事。
少なくともRyzen AIソフトウェアよりも先にAnacondaをインストール、Anaconda、condaの各種実行パスをユーザー用ではなく、[システム環境変数]に登録、Windowsを再起動することから始める必要があり、そうしないとRyzen AIソフトウェアは、いつまで経ってもインストールされません。
むしろ、NPUドライバ、AnacondaやVisual Studio、Ryzen AIソフトウェアの順にインストールした方が良さ気。
Python(やpy)はWindowsも実は同梱していたりしますし、cmakeもcondaやpipにも(Visual Studioにも?)あるので後で大丈夫かと。
前述の各種注意事項を踏まえれば、あとは、Installation Instructionsに沿っていけばOK。
これも前述の通り、自身は、AnacondaやMiniconda、VS Codeではなく、pip+vitualenvだったり、vimだったりする点は異なりますが。
さておき、まずは、NPUドライバとRyzen AI Softwareをインストールするわけですが、少なくとも今日時点では、これらインストーラのダウンロード時、会員登録、それぞれ(登録済み会員による)氏名(fistname lastname)の入力とボタン押下が必要でした。
当たり前ではありますが、ダウンロードしたら、NPU_RAI1.4_GA_257_WHQL.zipのようなzipファイル展開後のフォルダ内にあるnpu_sw_installer.exe、実行ファイルがそのままダウンロードされるryzen-ai-1.4.0.exeを実行し、インストールを完了させます。
Ryzen AIソフトウェアは、Ryzen AI Software on Linuxの通り、Linuxにインストールすることもできます(が、Windows版と異なり、quicktestはありません)。
先月となる3月末には、待望のAMDXDNA(AMD Ryzen NPUドライバ)組み込み済みのLinuxカーネル 6.14が正式リリースされるなどLinuxでも着々とRyzen AIの利用環境は整ってきています。
それ以前にAMD XDNAドライバは、コンパイルは必要ながらgithubに公開されていましたし、Ryzen AIソフトウェアもLinuxにインストールできるようになっていましたが。
自身は、短期間でUbuntu 24.04から24.10、そしてLinuxカーネル 6.14な25.04ベータ版に替え、Ryzen AIソフトウェアを入れていたわけですが、これを書く動機ともなった無効となっていたGPUの有効化とRyzen-SWチュートリアルとCoreCtrlでGPU動作確認を今日行ないました。
NPUのモニタリングについては、調査中ですが。
自身が使ったLinuxカーネルがベータ版だったからなのか、正式リリースでも同様なのか、Ryzen AI対応のPCでLinuxにRyzen AIソフトウェアをインストールする場合、併せてカーネルでGPU、NPUが有効になっているかを確認する必要がありそうです。
これらが有効になっていなくてもCPUだけながら、チュートリアルを実行することもできますが片手落ちとなるので。
これが判明したのは、amd / RyzenAI-SWチュートリアルを一通り試しつつもGPUとNPUが使われてなさ気、どうやったら確認できるんだろうと思いつつ、今日になって検索していたところ、GPUなら検出してくれそうなhwinfoなるパッケージがあることを知り、apt install、hwinfo --gfxcardしてみたらGPUが無効[amdgpu is not activate]になっており、[modprobe amdgpu]してねと書いてあったから。
出力結果にあった通り、sudo modprobe amdgpu後、無事[amdgpu is activate]になりました。
ちなみに当初、やってみたら、「即ログアウトしてログイン画面に遷移」数回試すも同じ、「何も起きることなくプロンプトが返ってくる」こと数回、再起動してみても有効にならず、その後、-fフラグをつけたら、失念したものの、何やらエラーが、もしやとapt update後に再度実行してみたら、その後、再起動したか否かは忘却の彼方も、あっさり、amdgpuが有効になった次第。
が、端末からの実行だけでは、一時的なようで再ログインや再起動すると、同じような状況になったので~/.config/autostartに任意の名称で.desktopファイルを作成、Exec行に/usr/bin/sleep 10 && /usr/bin/apt update && /usr/sbin/modprobe amdgpuなどとして常に効くようにしました。
動作確認については、別件でWindows用のScreen Control SoftwareからAMD Softwareを知り、Linux用は?と探してたどり着いて既にインストール済みだったCoreCtrlを起動しつつ、yolov8_pythonのyolov8_webcam.ipynbを実行してみた結果、modprobe amdgpuする以前は、表示されなかったiGPUによる推論結果画像が表示されたこととCoreCtrlのグラフの動きから、GPUが動作していることを確認できた次第。
端末でsudo nvtopでも良いですが。
CoreCtrlは、主要なディストロなら標準リポジトリからインストールできるアプリケーションプロファイルを使って簡単にハードウェア制御できるというソフトウェアですが、制御できるか否か、できたとして、どの程度できるのかについては、機種によるっぽいです。
Ryzen 8845HSでは、システム情報の参照やチェックボックスによる項目ごとのグラフ上の表示|非表示変更、パフォーマンスモードを[高度|Advanced]、[自動|Automatic]、[固定|Fixed]、[制御なし|No Control]から選択、[高度]で周波数のMIN|MAXをスライダで、[固定]でLOW|HIGHに変更できるくらい、[設定]は、今あるものを、減らすことはできても増やすことはできなさそう、グラフに[(冷却)ファン]の項目はなく、回転数などの設定変更もできないようです。
ちなみにGPUタブのグラフ表示項目は、Used Memory/Activity/Power/Voltage/Temperature/Memory/GPU、CPUの方は、Usage/CPU周波数の2つ、CPU側で変更できるのは、PerformanceモードかPowersaveモードかと、この設定を無効にするかCustomするかのみ。
続いてNPUですが、どこかでRyzen AI NPUは、PCIとして認識されると書いてあったような...
ということで、hwinfo --pciしてみると...ありました、[Signal processing controller]としてありました[amdxdna]。
というわけでLinuxでもRyzen AI NPUの情報取得まではでき、なんならmodprobeで無効・有効にすることもできると。
あとは、LinuxでRyzen AI NPUをモニタリングできるツールがあれば、そしてRyzen AI対応ソフトが増えてくれば、もうWindowsを温存しておく必要もなさそうです。
NPUモニタリングツールは、Windowsのタスクマネージャにあるくらいですから、Linuxでも素人目には簡単そうに思えますが、実現してないところを見るとそうでもないんですかね?
プロプライエタリな部分とかがあって?壁になってるのかな...?
とはいえ、LinuxでもRyzen AI対応アプリについては、既に各種LLM/大規模言語モデルを使う前提の実はマルチプラットフォームなLM Studioはあり、モデルに応じてローカルAIアシスタントにもなれば、AI画像認識で画像内の物体や文字認識もできるわけで、画像生成、映像生成までできれば尚良いというレベルにはありますよね。
前述の通り、githubのAMD RyzenAI-SWのTutorialも、Strix含む以降ならExampleも既に取り組めますしね。
インストールが終わったら、Ryzen AIソフトウェアが正しくインストールできたことを確認できるPythonスクリプトを実行するわけですが、その前に(各プロジェクトごとに)仮想環境を作っておきます。
スクリプトがPythonだからということよりも、環境やパッケージ間の依存関係がシビアに影響してくるので1つの仮想環境を共有するよりも環境整備の柔軟性が増すからです。
Ryzen AIソフトウェアのインストール時に設定したcondaの仮想環境をアクティベート。
それを元にRyzen AIソフトウェアが依存関係含め、インストールされるので、これを使わないと意味がないということで。
そもそもconda info -eしたら、そのくらいしかないはず。
condaなら、インストールさえしてあれば、conda activate envのようにすれば良いようですが、それはさておき、ここでは、Pythonのvirtualenvを前提とし、Pythonがインストールされているものとします。
少なくともWindows版ならダウンロードしてインストールすればpipも入っていて、あえてインストーラでPATHへの登録をしなかったなどなければ、pythonもpipもパスは通っているはずです。
これでany_dir以下に.venvという仮想環境ができます。
PowerShellはユーザー権限で開けばよく、今回、path\to\any_dirは、C:\ProgramFiles\RyzenAI\1.4.0\といったRyzen AIソフトウェアをインストールしたパスを指定し、その直下にあるquicktest\フォルダを指定するものとします。
pipのパスが通っていないとか、複数バージョンの(Pythonの)pipが存在し、使い分ける意図でもない限り、[python -m ](Windowsの場合、[py -m]も)なしでpip installとしても構いません。
ちゃんとRyzen AIソフトウェアがインストールされた後のquicktest.py実行結果がこちら。
「ちゃんと」というのも...訂正・追記に至る事の顛末に譲ります。
仮想環境を作ったら、quicktest.pyを実行してAMD Ryzen AIソフトウェアが正常にインストールされているかをチェックしてみましょう。
ただ、自身は、結果、[Test Passed]となりましたが、2つほどのエラー対処という寄り道が必要でした。
1については、[Case 1]自分で書いたプログラム、[Case 2]依存ライブラリ何れによってエラーが出たかを場合分けしているWindowsでUnicodeDecodeError: 'cp932' codec can't decode byte... が出たときの対処方法のおかげで対処できました。
自身のように[Case 2]の場合、「pythonで使っているデフォルトのエンコーディングがShift_JIS(CP932)になっており、基本のエンコーディングのUTF-8を読み込めなくなっている可能性が...(5つもある!?システムエンコーディング設定の内、)一つでも cp932 があるとそれが原因でファイルを読み込めない場合があり...」、こんなの気づかないって...、さすが、[!大好きな]Windowsだけのことはある...。
2は、condaでも良かったのかもしれませんが、(virtualenv済み)pip install onnxruntimeした後、実行することでエラーが解消しました。
これら対処で無事[Test Passed]に至りました。
Ryzen AIソフトウェアの導入テストが終わったら、amd / RyzenAI-SWでAI学習を試してみることをお勧めします。
今回買ったRyzen 8000シリーズな8845HS(やRyzen 200シリーズ)、コードネームHawk Point(や前バージョンな7000シリーズ、Phoenix)はZen4系、Zen5系が既にあること知っていた上であえて選択しました。
ただ、Supported Configurationのモデル互換テーブルを見るにCNN INT8/CNN BF16/NLP BF16/LLM (OGA)の内、CNN INT8のみ対応とのことで全て対応するZen5系のStrix/Strix Halo/Krackan Pointと比べると試すことが可能なサンプルやできることは極々限られる模様。
購入動機の1つが、Android Studio要件を満たすものとは言え、アプリは1つ作れればよく、後のことを考え、触りだけでもAIと思い、コスパ等から最新を追うことなく、1世代前をあえて買った自身も、触りだけでもとは言え、買う前に、このページを読むことができていたら、Zen5系を選択、もしくは、AI系は見送り、今回はとりあえず、Android Studio要件を満たす程度のものを選定していたかもな...と思ってみたりもします。
と言ってもこのあたりの技術の進歩は著しく、今後も常に買うタイミングによる選定は難しい状況なのでしょうが。
さておき、これを買ってから9割以上をLinux(Ubuntu)で検証していた割には結果を出せず、Windowsで試してみたら、割とあっさり[Passed Test]に至った次第。
搭載モニタ用Screen Control SoftwareからAMD Softwareの代替を求めてCoreCtrlとか、Windows 11/Ubuntu 24.04のマルチブートからUbuntu再インストールを経て22.10のアップグレードやAMDXDNAも実装された最新6.14カーネルな次期25.04のベータ版再インストールでAI性能確認試行とか。
03/31付のこの記事、自身の不注意から肝心なRyzen AIがインストールされておらず、機能していないという大きなミスを犯していたことが判明しました。
quicktest時点で十分に怪しさはあったのですが、とりあえず、Test Passedにはなったし、エラーはあるも、よくわからないし、チュートリアルやってみてもNPU比較にしても、実際NPUが動いてない気はしていたものの、実はそれこそが肝心なのに、究明は後回しで良いかと...。
このミスの根源は、Ryzen AIソフトウェアには、Anacondaが必須、かつ、Anacondaをインストールした後にRyzen AIソフトウェアをインストールする必要があるのに、その2点が重要である点を見落とし、Ryzen AIソフトウェアのインストールが完了していなかったこと、また、インストールはしたものの、少しして勝手に、性に合わないAnacondaからpip virtualenvに完全に切り替えてしまったこと...。
Ryzen AIソフトウェアのインストールの最後に表示される、こんなに親切なポップアップも見逃していたとは...。
チュートリアルもyolo8を残したところで、quicktest含め、CPUとせいぜいiGPUしか使えてないんじゃないかと薄々思っており、ここにきてそれが確信に変わってきたので、原点に戻って確認してみた次第...。
ちなみに自身は、これに気づくのに1週間?8日?かかりました...。
なかなか実行結果を得られないyolo8もRyzen AIソフトウェア(Vitis AI Execution Provider)が動かないことには始まらないんじゃないかと思い始め、それ以外のチュートリアルも終わった後...とは言え、終わったと思ったチュートリアルもCPUでしか実行できてなかったはずなので他の記事もどう訂正したら良いものか悩み中...。
quicktest含め、その間も何かおかしい、NPU使われてない気がする...とは思ってたんですけどね...。
いざ、向き合ってみてもRyzen AIソフトウェアのパスはC:\ProgramFiles以下にあったこともあり、condaとpip virtualenvの違いか?くらいにしか思わず。
当初、quicktestもVitisだったかな?今にして思えば肝心なExecution Providerがないというエラーはありつつ、Test Passedしたとは言え、CPUさえあればそうなるんでしょうし。
pip virtualenvじゃなく、もしかしてcondaじゃないとダメだったんじゃ?と思って後も、しばらく再インストールするということもなく、conda info -eしても仮想環境は存在せず、勝手に意味のない環境をconda createして試行していたり...。
昨夜に至っては、condaでもpip virtualenvでも、python -m pip install -r requirements.txtしたら、1時間経っても終わらず、キャッシュクリアして再挑戦、当然、更に時間はかかる、なら、そのまま寝るかと朝起きても終わっておらず...。
更に更に、Vitis AIを入れないとダメ?それにはROCmがないとダメ?いや、VitisだけでOK?え?Windows用ないの?Linuxで詰まったから、Windowsに切り替えたのにLinuxでDocker?え?じゃ入れてみる?ってことで初のWSL2にUbuntuをインストール、Vitis AIも入れてみた...がどうやれば、Windows環境に反映できるの?とか...。
ようやく、AnacondaやRyzen AIソフトウェアを別個に再インストールしてみること、何れも数回、その内、Anacondaをアンインストールした状態でRyzen AIソフトウェアをインストールするとconda見当たらないけど、もし、あるならシステム環境変数に登録しておいてねというエラーに遭遇、Anacondaを再インストール後もユーザー環境変数には登録されてるしと、何度か当該エラーをスルー...、とか。
返す返すもアホかいな...、なんとも間抜けな話........。
Google系のインデックスと反映が遅すぎるおかげで、いらしたとしても限定的だとは思いますが、修正前に見てくれた方がいらっしゃったら、すみません。
というか、AMD Ryzen AI 1.4.0、インストールしても、インストールパスはあるものの、いつの間にか機能しなくなって、なかったことになってるんですけど...。
しかもNPUのみならず、iGPUも一蓮托生なのか、その2つのExecution Providerが見当たらないって言われたり、量子化でCPU、NPU別の出力と思しき結果が一緒だったり...。
さっきまであったのに、なくなってんじゃん!?みたいな、Recoveryじゃダメ、一回、Rmove(削除)して、改めてインストールすると復活...。
気のせいだと思ってたら、気のせいじゃないし、途中も何度も行き来しつつ、やっとチュートリアル完遂と思いつつ、あれ?よく見たら、この結果ってNPU使えてなくない?と何周も回って何度もそんな感じになるんだけど、なんでなんで?
これに気づくまで複数のチュートリアルで共通としてたcondaな仮想環境、とりあえず、Ryzen AIソフトウェアインストール直後のryzen-ai-1.4.0を一切いじらず、これを元に各チュートリアルごとにconda create -n ANY_ENV_NAME --clone ryzen-ai-1.4.0して様子見中。
なぜか、conda listのリダイレクトによる.txt出力やconda env exportによる.yml出力だとうまくいかず(ん!?conda activateしないでやったからか!?)、後者はpipを排除すればいけそうもconda環境内でpipインストールされたパッケージも欲しかったので先の方法で。
遭遇する事象がことごとくレアケースなのか、ググっても情報皆無、あって極少数ながら、求める答えと違うこと多々...、そもそも濃いユーザーレビューは、まずなく、チュートリアルは尚更、実行例はまずなく、肝心で具体的な内容に触れず、数行のコメントで終わるもの多々、中には、バージョンが違うからか、想像で書いているのか、そういう結果にはならないはず...と思えるものも...。
公式ドキュメントも検索にヒットしてもリンク切れ多数、最新バージョンで状況が変わっているのか、お!1.4.0のドキュメント探してもなかったんだよ!それそれっていう旧バージョンのページがリンク切れという確率が高いような...。
もう少し高度なところにチャレンジすれば、もっと情報得られるものなのか?
広くAIじゃなく、エッジAIで、Ryzen AIに特化したところで、できれば、最新で上位、より性能が高く、よりできることが多いZen5ベースではなく、もっと絞ってZen4ベースなHawk Point、Phoenix界隈で濃密な情報が、どこまで出来て、どこら辺からできなくなるかという境界がわかるような情報も欲しいところ...、もしや出だしから人柱?
エッジAIなAI PC、そうじゃなくともNPUを積んだ、ましてAMD、Ryzen AIとなると、せいぜい、ここ2〜3年の話でユーザーの絶対数もそう多くない、AIに長けた人は、もっと最新、上位なNPUが載ったものを求める...、なんなら、次期バージョンを待ってでも...、とするならば、Hawk Point/Phoenix...、更にはそのチュートリアルの1つ...なんて絞れば絞るほど、濃い情報にありつけないのは必然か...。
前向きに捉えれば、もともとAI目的じゃなかったPC探しで結果、安価なミニPCに出会え、先々の使いみち考えたらAI、エッジAIかと選んでみれば、さほど遅れていたわけでもなく、時流に乗るに良いタイミングではあったってことになるのかな?
で、なんか問題あったっけ?(単純)