私はノートPCはThinkPadを30年ほど愛用していますが、7年振りに新しく買い換えました。
購入したのは「ThinkPad T14s Gen 6 Strix Point AMD」です。
www.lenovo.com
AMDのCPU「Ryzen AI 7 PRO 360」を搭載していて、AI処理用のNPU(Neural Processing Unit)を搭載した「Copilot+PC」です。
スペックの詳細は上記のサイトを参照してください。
こちらのブログで書いているように、私は画像生成AIをいろいろ試しています。
このCopilot+PCでどのように画像生成ができるのか?NPUの効果はあるのか?試してみました。
紹介動画
環境構築
基本のWindows11設定やアップデートを済ませた後、AI用の環境を準備します。
AMDの公式サイト(英語)に環境構築方法のドキュメントがあり、ダウンロードファイルのリンクもあります。
https://ryzenai.docs.amd.com/en/latest/inst.html
Visual Studio 2022
Microsoftのサイトから、Visual Studio 2022をダウンロードします。
https://visualstudio.microsoft.com/ja/vs/
ダウンロードファイルの種別は「Community 2022」で良いです。
インストーラーファイル(VisualStudioSetup.exe)がダウンロードされるので、それを実行します。
各種ファイルをダウンロードしながらインストールします。
cmake
プログラムをコンパイルするツール「cmake」をインストールします。
https://cmake.org/download/
「Latest Release (3.31.6)」のリストにある「Windows x64 Installer」(cmake-3.31.6-windows-x86_64.msi)をダウンロードします。
ダウンロードされたインストーラーを実行して、インストールします。
NPUドライバ
上記のAMDのドキュメントページから、NPU Driver 1.3.1_242(RAI_1.3._242_WHQL.zip)をダウンロードします。
(なおダウンロードする前に、AMDのユーザーアカウントの作成と、ユーザー登録が必要です)
ダウンロードしたZIPファイルを展開して、「npu_sw_installer.exe」を実行します。
(セキュリティ警告が出ますが、強制的に実行します)
ターミナルの黒い画面が一瞬表示されて、すぐにインストールが終了します。
デバイスマネージャーを開くと、「NPU Compute Accelerator Device」が入っています。
タスクマネージャーのパフォーマンスタブを出すと、「NPU」のパフォーマンスグラフが追加されています。
Anaconda
開発環境の「Anaconda」をダウンロードします。
https://www.anaconda.com/download
ページの右側に登録ウインドウが表示されていますが、下にある小さい文字の「Skip registration」をクリックすると、登録せずにダウンロードページへ行けます。
フルバージョンの「Anaconda」とミニバージョンの「Miniconda」がありますが、AnacondaのWindows版をダウンロードします。
実行してインストーラーを起動します。
インストールパスが「C:¥ProgramData¥anaconda3」になります。
(ProgramDataディレクトリは隠しディレクトリになっているので注意)
※なおネット上の情報では「Minicondaでもよい」とも書かれていますが、私のThinkPadではMinicondaをインストールすると、次のRyzen AI Softwareのインストールで「Anacondaが見つからない。システム環境変数PATHにパスを追加をせよ」とエラーが出て、環境変数をいくらいじっても先へ進めませんでした。Anacondaだとインストール時に自動的にPATHを追加してくれます。
Ryzen AI Software
上記のAMDのドキュメントページのリンクから、ryzen-ai-1.3.1.msiをダウンロードして、インストールします。
DirectMLを有効にする
以上で基本的な環境はできるのですが、NPUを使うためにはローレベル環境の「DirectML」をインストールする必要があります。
その情報は、Microsoftのサイトにあります。
learn.microsoft.com
こちらの手順に従い、上でインストールしたAnacondaを使って、conda仮想環境の中からtorch-directmlモジュールをインストールします。
コマンドプロンプトウインドウを出して、
conda create --name pytdml -y conda init ←ページには書かれていませんがこれが必要でした。 conda activate pytdml pip install torch-directml
StabilityMatrixで画像生成→失敗
最初に、これまでデスクトップPCで使っていた「StabilityMatrix」環境をインストールして試してみました。
が、ComfyUIやstable-diffusion-webuiなどのインターフェースを組み込んだものの、モデルを選択したり画像生成をスタートしたりすると、エラーが出て止まったりフリーズしたりして、結局うまく動きませんでした。
AMUSEで画像生成
そこで、AMD環境に最適化された画像生成AIツール「AMUSE」を試してみました。
www.amuse-ai.com
内部でStable Diffusionを使っていて、Stable Diffusion用の生成モデルをインストールして使えます。
なお「Ryzen AI 7 PRO環境で実行するには16GBのRAMが必要」と聞いていたので、32GB搭載のThinkPadを今回選びました。
インストール後に起動すると、簡単なイージーモードが表示されます。
最初は何も生成モデルが入っていない状態なので、左下の「Advanced」ボタンをクリックして、アドバンスモードに入ります。
上のタブ「Model Manager」をクリックして、生成モデルを検索してインストールします。
「NPU」とタグが付いたモデルを検索すると、「SDXL Turbo」1個しか出てこなかったので、それをインストールします。
イージーモード
イージーモード画面に戻り、左側のペインで画像生成のプロンプトや条件を設定します。
- Prompt=とりあえず「1girl,japanese,cute,sweet,smile」
- Perfomance=中間の「Balanced」に。
- Image Count=1。一度に画像を何枚生成するかの設定。
- AMD XDNA 2 Stable Diffusion=ON
- AMD XDNA Super Resolution=ON
- Aspect Ratio=一番左の正方形をクリックして選択
これで下の「Generate Image」ボタンをクリックすると、画像を生成します。
所要時間は、画像1枚目は初期設定で数十秒+画像生成で数秒くらい。2枚目からは画像生成のみなので数秒くらいで生成できます。
ちなみに標準だと画像サイズは512×512ドットですが、上記の「AMD XDNA Super Resolution」をONにしておくと、生成後に超解像拡大して1024×1024ドットの画像が生成されます。
生成後に右下の「Save Image」ボタンをクリックすると、任意のディレクトリに画像を保存できます。
イージーモード(高品質)
ちなみに生成設定の「Performance」で「Quality」を選ぶと、追加で生成モデル「Dreamshaper Lightning」をダウンロードします。
ダウンロード・インストール後に「Quality」で画像生成すると、生成時間は1分くらいかかりますが、2048×2048ドットのかなり綺麗な画像ができます。
このサイズの画像が1分で生成できるのはかなり速いです。
生成した画像(2048×2048ドット)はこちら。
アドバンスモード
アドバンスモードだと、いろいろ細かい設定ができます。
左側ペインの上部で、使用モデルなどの設定をします。
- Model Selector=インストールされている生成モデルから、使用モデルを選びます。
- Variant=DefaultとRyzenAIが選べます。今回はRyzenAIを選択。
- AMD XDNA Super Resolution=イージーモードと同じく、ONにすると生成画像が2倍に超解像拡大されます。
設定したら、右下の「Load」ボタンをクリックすると、モデルなどを読み込んで「Ready!」表示になります。
ペインの下部で、オプションの設定をします。
- Width, Height=512×512ドットに設定。ちなみにこれ以上のサイズを設定するとエラーになって生成できません。
- Inference Steps=この画像サイズなので20ステップに設定。
これくらいで「Generate」ボタンをクリックすると、画像が生成されます。
生成中は左下の棒グラフの「NPU」が動くので、NPUが使われていることがわかります。
ちなみに上部の設定「Variant」を「Default」にすると、生成画像サイズは「1024×1024ドット」も設定できます。
(超解像をONにすると、生成画像は2048×2048ドット)
が、この場合はNPUを使わずCPUだけで作画するらしく(最後の超解像度化だけGPUを使用)、画像品質が悪くなります。