200ドルAIパソコンを作る方法
少し前から、私が愛用するノートパソコンであるDell Inspiron 16 5625をAIパソコンに変貌させるべくチャレンジしてきた。noteを書くこともそうだが、生成AIブームにだいぶ乗り遅れているのは自覚している。
Dell Inspiron 16 5625は2022年の春先に発売され、外面がMacbook Pro風味であること、CPUとGPUをひとつのデバイスに統合したAMD APUを搭載していることが特徴。そして、なにより安かった。私はデルから次のスペックで6万円もしないお値段で買っていた。
AMD Ryzen 5 5625U(6コア/12スレッド、最大4.3GHz)
16GB DDR4メモリ
512GB NVME M.2 SSD
AIといえば生成AI、生成AIといえば画像生成AIのStable Diffusion。そして、Stable Diffusionを「めちゃくちゃ高画質にした」のがStable Diffusion XL(以下、SDXL)。このノートパソコンでSDXLを安定して動かせれば、AIパソコンを名乗ってもよいだろう。
Ryzen 5 5625Uや同じクラスのプロセッサーと16GBのメモリ(できれば32GB)を備えたミニPCは、メルカリなどのフリマで3万円以下、およそ200ドルで手に入る。つまり、ディスプレイやキーボード、マウスが手元にあれば、あとは200ドルで手に入るパソコンでこの記事と同じことができる、はず。
「200ドルAIパソコン」に誇張はないか
この記事のゴールは、安価なAMD APUでSDXLを使えるようにして、大容量のVRAMを備えたGPUを搭載する数千ドルものパソコンと同じ画像生成ができるようになること。
SDXLを動かすための推奨スペックは「NVIDIAのVRAM 16GBを搭載したGPU」と本当に贅沢であり、このスペックを満たすべく同じデルのノートパソコンから選ぶとセール価格で53万円からとなっている。より少ないVRAMで動かしたり、1万円札が飛んでいくクラウドサービスのGPUサーバーを使う方法もあちこちで紹介されているが、どうにも「やってみました。動きました」で終わっているフシがある。海外サイトなど含めて調べまわった結果、個人的にはSDXLは手もとのパソコンで、VRAM 16GBで動かすもんじゃないかと思っている。
細かな説明の前に、本記事で紹介する方法でAMD APUとSDXLにて生成した画像を数枚ピックアップする。
安価であることのトレードオフは、ずばり「時間」。1枚の画像を生成するのにも10分以上かかる。たとえば、クラウド型であるImageFXを使うと4枚の高品質画像が数秒でサクサクっと生成されるが、それらとは単位レベルで異なるのだ。
ともかく、高解像度で高品質なアウトプットを目指すSDXLは、そもそも画像生成に時間がかかり、高価なGPUを使っても1枚あたり2分から数分かかるとされている。目安として、ざっくりその5倍以上の時間がかかるんだと覚悟しておくのがよい。
Windows用アプリ「Amuse」とは
「安価なAMD APUでStable Diffusionを動かす」チャレンジは、私が影響を受けた「How to Build a $300 AI Computer for the GPU-Poor」もそうであるように、どれもLinux(Ubuntu)を前提としている。
そのため、LinuxのOSに関する十分な知識をもっているのはもちろんのこと、ドライバーやミドルウェアを導入する際に手順どおりに進めてもなぜか大量に発生するエラーに適切に対処できるスキルと、ネット検索でやっと探り当てたが正しいかどうかは微妙な情報にも光を見出し、何度も失敗を繰り返しつつコンフィグを書き換えられる辛抱強さが求められる。
この記事ではもっと簡単でシンプルな方法を扱う。Windowsにたったひとつのアプリ「Amuse」をインストールするだけだ。
Amuseは Stable Diffusionをベース として、AMD製プロセッサーに最適化し、だれでも手軽に扱えるインタフェースを備えつけた、Windows用の画像生成AIアプリである。また、簡単でシンプルなだけでなく、無償で利用でき、なんらかのサービスへの登録を促されてサブスクなどでお金を払うことがないのはもちろん、アカウントを作ったりログインする必要さえない。そう、広告も表示されない。
Amuseの推奨システム仕様は、24GB以上のRAMを搭載したRyzen AI 300シリーズ、32GB RAMを搭載したAMD Ryzen 8040シリーズ、またはRadeon RX 7000シリーズである。また、XDNAによる超解像度化は、Ryzen AI 300シリーズおよびRyzen 8000シリーズのみの対応とされている。
したがって、Ryzen 5 5625Uなど古くて安価なAPUは推奨システムから外れるが、基本機能はしっかりと動作する。安心してほしい。
なお、AMD APUデバイスで動くUbuntuへのStable Diffusionの導入と、Windows Amuseとの速さ対決については、別記事にまとめている。
Amuseのインストール手順
まず準備として、Amuseをインストールする前にWindows Updateを完了し、APUのドライバーであるAMD Software Adrenaline Editionをできるだけ最新版に更新しておく。2023年のドライバーでは動作しなかった。
APUドライバーの本家サイトはこちら。
https://www.amd.com/en/support/download/drivers.html
Amuseのインストーラーは本家サイトからダウンロードする。
画面の指示にそってセットアップを完了してAmuseを立ち上げると、「重要なお知らせ(Important Information)」への確認を促す画面が表示されるので、マウスカチカチで確認(トグルボタンを赤から緑にする)にして「Continue」をクリックする。
英文を要約すると「すべての処理はあなたのパソコンの中で行われ、Amuseは一切関与しない。コンテンツに関する責任はすべてユーザーにあり、露骨な表現や不快な画像が作られる可能性 を理解し、商用ライセンスの有無にも留意するように。あと、契約締結できる年齢だよね」。
まずは「赤い帽子をかぶったネコ」
チュートリアル的に、まずは「赤い帽子をかぶったネコ」を出力する。
Amuseを立ち上げると、Promptに「Orange cat wearing a red hat」と書かれている。そのまま「Generate Images」をクリックすると、モデル(SDXL Turbo)のダウンロード画面が表示されるので、先ほどと同じようにトグルボタンを緑にして「Download」をクリックする。
あとは、AIが自動的に画像を作ってくれるのを待つだけ。ここで使うモデルであるSDXL Turboは、わずかなステップで比較的小さな画像を生成することをターゲットにしているので、4枚でも1分ほどで終わる。タスクマネージャーを起動しておくと、CPUはほとんど眠り、GPUが100%近い使用率で働いているのがわかる。
※ モデルをロードするとエラーが表示される件は、Amuse v2.1.19(2024/10/12リリース)で修正されたようだ。
なお、Amuseでは、モデルをロードするタイミングでエラーが表示されることがある。私の場合、Windowsリブート後などの初回立ち上げ後のロード時にはたいていエラーが表示されるのだが、いったんAmuseを終了させて、ふたたびAmuseを立ち上げて同じようにモデルを選んでロードするとうまくいく。推奨スペックから大きく外れた構成かつベータ版なのでエラーは理解するが、なぜ終了と起動でうまくいくのかは、まったくわからない。
iNiverse Mix XLを使ってみる
さて、応用編。Amuseは動画作成やアップスケールなど、生成AIらしい、多様なクリエイティブ機能を備えている。が、この記事では引き続き画像生成にフォーカスする。
Amuseは画像生成で複数のモデルを切り替えて使える。「Orange cat wearing a red hat」の生成で使ったSDXL Turboは速さに全フリした汎用的なモデルで、他にはアニメ調が得意、動物絵が得意、日本人女性が得意といったモデルが標準でリストに並んでいる。
リストに並ぶモデルの数は50ほどと多くはない(説明は省くが、もちろんリストにないモデルも追加できる)。一方で、他のStable Diffusion用アプリがそうであるように、Civitai に並ぶ膨大な数のモデルから選んだり、そんな膨大な数のモデルから厳選したモデルを紹介するたくさんのサイトを巡ったりで時間を溶かすことなく、「適当に選んでクリック」だけで新たなモデルを試したり、使えたりするのはAmuseならではのメリットだと思う。
個人的に多用しているばかりか、もうこれしか使っていないSDXLモデルは iNiverse Mix XL なので、これを例に手順を書いてみる。
流れとしては、Amuseを立ち上げた画面の左下にある「Advanced」をクリックして、「Model Manager」画面で iNiverse Mix XL を選んで「Download Model」をクリック、利用規約(the terms & conditions)を受け入れてダウンロードを始める。11.2GBと相変わらず容量はデカく、だからこそ大容量のメモリをCPUとGPUとで共有するAPUの特徴が活きる。
「Image Generation」画面に戻って、Model Selectorから「iNiverse Mix XL」を選んで「Load」をクリック。かなり残念なスペックであることへの同情を込めてなのか、もっとも丁寧な表現の英語で「Minimumメモリモードに切り替えてみてはいかがでしょうか」と促されるが、32GBや64GBのメモリを搭載していれば「Run Anyway」、16GBのメモリであれば「Yes」をクリックでよいだろう。
ただ、私の場合、どちらをクリックしても最初のLoadは失敗する。前述のとおり、エラーがでたらAmuseを終了させて、また立ち上げて同じようにLoadする。エラーが出ることなく表示が「Ready!」に変われば準備は完了だ。
あとは、SDXLでのAI画像生成を楽しむだけ。おつかれさま。
「露骨な表現や不快な画像」を許すには
Amuseを使った画像生成AIをより楽しむために、少しだけ追記する。
Amuseはプロンプトで「少し攻めた」要求をすると、ぼやかした絵ばかりを生成する。いわゆる「NSFW(Not Safe for Work:職場閲覧注意)対策」である。アプリを使うにあたって「露骨な表現や不快な画像が生成される可能性」を受け入れさせたにもかかわらず、そのような画像が生成されないようにアプリ側で十分な対策が施されている。
ネットで「Amuse NSFW」を検索するだけでも、この親切な対策を回避するために注がれた先人たちの情熱と飽くなき探求心からつむぎ出された知恵にあずかれるが、ここでも触れておく。
ひとつ目は、特定のアプリで特定のモデルファイルを書き換える方法。具体的には onnx-modifier でファイル( C:\Program Files\Amuse\Plugins\ContentFilter\model.onnx )の一部を書き換えるのだが、書き換え済の「unlocked NSFW」なファイルも手に入る。どちらにせよ、自己責任の作業である。
もうひとつは、特定のjsonファイルを書き換える方法。C:\Users\<username>\AppData\Local\Amuse\appsettings.json にある AutoModeratorModel の値を次のとおりに書き換える。
Before
"AutoModeratorModel": "ContentFilter\\model.onnx",
After
"AutoModeratorModel": "null",
メモ帳などで appsettings.json を開いて「AutoModeratorModel」で検索すればすぐに見つかるだろう。そのすぐ下には刺激的な言葉がずらっと並ぶが、これらは単なるNGワードのようなので、削除しなくても構わない。
「該当のフォルダがみあたらない」ときは、エクスプローラーのフォルダーオプション→表示で、「隠しファイル、隠しフォルダー、および隠しドライブを表示する」をチェックすればよいだろう。
おわりに
AMDのAPUやGPUでStable Diffusionを動かす記事は、日本語か英語かを問わずすでにたくさんある。そして、それよりもっと多いのは「どこそこの記事のとおりにセットアップしているが、のっぴきならない状況に陥った。助けてくれ」といった話題であり、「連休つぶしてなんとか動かしたけど、とんでもなく苦労した」といった話題である。
私も「動くまでたどり着いたけど……出てくる絵、なんかおかしくない?」や「OSのサインイン画面が出てこなくなったんですけど?」に幾度も遭遇した。
生成AIのあれこれはNVIDIAのGPUを前提に開発され、AMDのAPUやGPUでの動作など想定していないのが根っこにあり、それを乗り越えるべく工夫には頭が下がるばかりである。が、いくら安価なAPUを使うといっても、セットアップでお金よりも大切な時間を溶かしていくのでは本末転倒である。
ともかく、200ドルのAMD APU パソコンを、簡単かつシンプルにAIパソコンにできることを実証できた。Stable Diffusion環境構築がテーマにもかかわらず、PythonどころかDirectMLやROCmといった言葉を使っていない記事にできたことは、個人的にはうれしい。あとは、楽しんでいただければ幸いだ。