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

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

UM790 ProでRyzen AI Software(ver1.3)の導入に成功

UM790 ProにRyzen AI Softwareのバージョン1.3を再導入し、quicktestの確認までできたたので手順をここにメモしておきたい。

 

導入の準備

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

Installation Instructions — Ryzen AI Software 1.3 documentation

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

Visual Studio

こちらのMicrosoftのサイトからダウンロードした。

モジュールは「C++によるデスクトップ開発」のみを選択するだけでいい。

cmake

こちらのサイトからダウンロードした。

Miniconda

Anacondaは取り扱いが難しいので今回はMinicondaを導入した。

こちらのMinicondaのサイトからダウンロードし、インストール方法は京都大学のサイトを参考にした。インストールしたらシステム環境変数PATHに、インストール先パス名\miniconda3\Scriptsを追加しておくこと。

Ryzen AI Softwareの導入

上記のAMDのページから ryzen-ai-rt-1.3.0-20241204.msi. をダウンロードする。

このインストールプログラムを実行するだけでいい。ただし注意することが一つだけある。デフォルトではインストール先ディレクトリが”C:\Program Files”になっている。ここにインストールしてしまうとファイルは全て読み込み専用となり、修正ができなくなる。後述するがテストプログラムは修正しないと動作しないので、インストール先ディレクトリはどこか別のディレクトリを指定する必要がある。

インストールプログラムを実行すると、同時にPyhton仮想環境として環境名ryzen-ai-1.3.0の環境が作成される。

システム環境変数”RYZEN_AI_INSTALLATION_PATH”にインストールしたディレクトリのパス名が設定されていることをシステムの設定アプリで確認する。

動作確認

Anaconda promptを開き、以下のコマンドでPythonの環境名ryzen-ai-1.3.0を起動する。

conda activate ryzen-ai-1.3.0

テストプログラムを実行する。

cd %RYZEN_AI_INSTALLATION_PATH%/quicktest
python quicktest.py

実行すると以下のようなエラーが出る。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83

このエラーの原因はGoogle検索するとすぐにわかる。テストプログラム内で「pnputil」コマンドを実行して結果を読み取る時にシフトJISのコードをutf8と思って読み込むことが原因だ。従って正しいコードを指定してやればよい。テストプログラムquicktest.pyの該当部分を以下のように修正する。

def get_apu_info():
    # Run pnputil as a subprocess to enumerate PCI devices
    command = r'pnputil /enum-devices /bus PCI /deviceids '
    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    # Check for supported Hardware IDs
    apu_type = ''
    if 'PCI\\VEN_1022&DEV_1502&REV_00' in stdout.decode("cp932"): apu_type = 'PHX/HPT'
    if 'PCI\\VEN_1022&DEV_17F0&REV_00' in stdout.decode("cp932"): apu_type = 'STX'
    if 'PCI\\VEN_1022&DEV_17F0&REV_10' in stdout.decode("cp932"): apu_type = 'STX'
    if 'PCI\\VEN_1022&DEV_17F0&REV_11' in stdout.decode("cp932"): apu_type = 'STX'
    if 'PCI\\VEN_1022&DEV_17F0&REV_20' in stdout.decode("cp932"): apu_type = 'KRK'
    return apu_type

再度テストプログラムを実行すると以下のように表示される。

(base) C:\RyzenAI\quicktest>conda activate ryzen-ai-1.3.0
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.12.3
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

(ryzen-ai-1.3.0) C:\RyzenAI\quicktest>python quicktest.py
Setting environment for PHX/HPT
XLNX_VART_FIRMWARE= C:\RyzenAI\voe-4.0-win_amd64\xclbins\phoenix\1x4.xclbin
NUM_OF_DPU_RUNNERS= 1
XLNX_TARGET_NAME= AMD_AIE2_Nx4_Overlay
WARNING: Logging before InitGoogleLogging() is written to STDERR
I20241208 05:15:14.117488   756 vitisai_compile_model.cpp:1046] Vitis AI EP Load ONNX Model Success
I20241208 05:15:14.117488   756 vitisai_compile_model.cpp:1047] Graph Input Node Name/Shape (1)
I20241208 05:15:14.117488   756 vitisai_compile_model.cpp:1051]          input : [-1x3x32x32]
I20241208 05:15:14.117488   756 vitisai_compile_model.cpp:1057] Graph Output Node Name/Shape (1)
I20241208 05:15:14.117488   756 vitisai_compile_model.cpp:1061]          output : [-1x10]
[Vitis AI EP] No. of Operators :   CPU     2    NPU   398
[Vitis AI EP] No. of Subgraphs :   NPU     1 Actually running on NPU     1
2024-12-08 05:15:14.2529993 [W:onnxruntime:, session_state.cc:1166 onnxruntime::VerifyEachNodeIsAssignedToAnEp] Some nodes were not assigned to the preferred execution providers which may or may not have an negative impact on performance. e.g. ORT explicitly assigns shape related ops to CPU to improve perf.
2024-12-08 05:15:14.2574963 [W:onnxruntime:, session_state.cc:1168 onnxruntime::VerifyEachNodeIsAssignedToAnEp] Rerunning with verbose output on a non-minimal build will show node assignments.
Test Passed

onnxruntime関係のワーニングは出るが、「Test Passed」と表示されているのでOK。NPUは正しく動作しているようだ。

 

まとめ

ようやくRyzen AI の環境が準備できたのでサンプルプログラムやLLMをNPUで動かしてみたいが、当初の目的はPython環境を作成してStable DiffusionやComfyUIをWindows+DirectML+GPUで動かすことだ。これまでVRAM不足であきらめていたLTXVをまずは動かしてみたい。多分16GBのVRAMがあれば動くはずだ。npakaさんの下記の記事を参考に試してみる予定。

 

note.com

Â