イントロ
オープンソース AI モデルを私たち自身のコンピューター上でローカルに実行すると、プライバシー、無限の改造の可能性、そして大企業からの自由が得られます。それはほとんど言論の自由の問題です。
しかし、GPU に乏しい私たちにとって、独自の AI コンピューターを持つことは高価な夢のように思えます。
便利な AI コンピューターが 300 ドルで手に入ると言ったらどうしますか?興味がある?モニター、キーボード、マウスを自分で用意する必要があります。また、Linux オペレーティング システム、ドライバー、ミドルウェア、構成を少しいじる必要があります。
明確にしておきますが、私たちは大規模な生成 AI モデルの「トレーニング」や「微調整」について話しているのではありません。オープンソース LLM (次のような大規模な言語モデル) を実行する方法に焦点を当てます。
では、続けてみましょう。
優れた (そして安価な) AI コンピューターとは何でしょうか?
家庭用 AI コンピューターの主な使用例の 1 つが実行されていると仮定しましょう。
ただし、推論速度を速くするには次のことが必要です。そうしないと、LLM が一度に 1 つのトークンを吐き出す間、手のひらに毛が生えるのを眺めているようなものになってしまいます。
- 高速な CPU からメモリまでの帯域幅
- より高速な DRAM (少なくとも DDR4、DDR5 はさらに優れています)
- 大量のメモリ (最小 16GB など)、特により大きなモデル (7B を超える) を実行したい場合
Stable Diffusion による画像生成には、GPU パワーが必要です。ただし、そのために非常に高性能な GPU を搭載する必要はありません。すでに自宅のコンピューターに組み込まれている GPU を活用できます。
CPU、GPU、高速メモリを統合した M1/M2/M3 CPU を搭載したすべての Mac (非常に優れていますが、価格の関係でこの記事からは除外します)
AMD APU (Ryzen 7 5700U など)。予算に優しいミニ PC 向けに CPU と GPU を統合します。これがこの記事の焦点になります。
Intel CPU (例: Core i5-1135G7)。CPU と GPU も統合されています。ミニ PC 全体の予算 300 ドルをわずかに上回りますが、読者はご自身でさらに詳しく調べていただけます。
そして300ドルのAIコンピューターは?
以下の仕様を備えた AMD ベースの Mini PC は、通常 300 ドル未満で販売されます。特定のブランドを推奨するつもりはありませんので、ご自身で検索してください。
AMD Ryzen 7 5800H (8C/16T、最大4.4GHz)- 16GB RAM DDR4 (32GB 推奨)
- 512GB NVME M.2 SSD
私は少し奮発して、32GB RAM と 1TB SSD を搭載した 400 ドルのモデルを選びました (他はすべて同じ)。主な理由は、オープンソース LLM の研究を行っており、Stable Difusion の実行に加えて、より大きなモデルも実行したいと考えているためです。ただし、300 ドルのコンピューターがあれば、この記事に記載されているほとんどすべてのことを実行できるはずです。
準備 1: 十分な iGPU メモリを割り当てる
のような AMD APU の場合、
主な使用例に応じて変更する必要があります。
LLM 推論を実行する必要があるだけの場合は、この準備ステップ全体をスキップできます。 LLM 推論には CPU のみを使用する必要があるため、大規模な LLM モデルを実行できるように、ほとんどの RAM を CPU 用に節約する必要があります。
実行する必要がある場合
安定した拡散 、 特にSDXL (1024x1024)、システムが許可する限り多くの RAM を iGPU に割り当てる必要があります (通常は合計 RAM の半分)
私の場合、Stable Diffusion XL と LLM 推論の両方を同じミニ PC 上で実行したいと考えています。したがって、GPU には (合計 32GB のうち) 16GB を割り当てたいと思います。
BIOS の設定を変更することでこれを実現できます。通常、上限があり、デフォルト設定は上限よりも大幅に低い場合があります。私のコンピューターでは、上限は 16GB、つまり使用可能な合計 RAM の半分でした。
優れた BIOS
コンピューターの BIOS がそのような設定をサポートしている場合は、希望の番号に変更してください。私のBIOSにはそのような設定はありません。
BIOS が不十分: Universal AMD ツールを使用する
BIOS にこの設定がない場合は、「AMD Ryzen™ APU の GPU メモリ割り当てのロックを解除しますか?」という素晴らしい手順に従ってください。ウィンストン・マー著試してみたらうまくいったので、VRAM が 16GB になりました。
準備 2: ドライバーとミドルウェアをインストールする
星を揃える
AMDの
AMD の ROCm をインストールして動作させるには、GPU ハードウェア、Linux ディストリビューション、カーネル、Python、HIP ドライバー、ROCm ライブラリ、および pytorch のバージョンに互換性があることを確認する必要があります。痛みを最小限に抑え、初回の成功の可能性を最大限に高めたい場合は、推奨され検証済みの組み合わせを使用してください。
前提条件
次のリンクを確認して、互換性のある Linux OS とカーネルのバージョンを取得し、インストールしてください。最初は、お気に入りの Linux OS とデフォルトの Linux カーネルをインストールするという間違いを犯し、互換性の問題を解決するために後戻りするのは非常に苦痛でした。公式にサポートされている組み合わせを使用するだけで、この問題を回避できます。
ROCmのインストール
インストール全体が正常に完了したら、 rocminfo
と入力すると、次のような内容が表示されます (黄色で強調表示されている最も関連性の高い部分のみを切り取っています)。
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
Mwaitx: DISABLED
DMAbuf Support: YES
==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 7 5800H with Radeon Graphics
Uuid: CPU-XX
Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics
Vendor Name: CPU
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 16777216(0x1000000) KB
Python環境
Python の依存関係は非常に扱いにくいため、適切な環境をセットアップすることをお勧めします。どちらでも使用できます
-
source venv/bin/activate
-
conda activate llm
ピトーチ
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
HSA 上書き
以下は、統合グラフィックスを備えた APU に固有のものです。これらは ROCm によって正式にサポートされていませんが、以下は機能することが証明されました。
export HSA_OVERRIDE_GFX_VERSION=9.0.0
確認方法
さて、複雑な手順をすべて終えた後、ROCm が Torch で動作するかどうかをテストしてみましょう。そして、ROCm が Pytorch の目的で CUDA の「ふりをしている」ことがわかります。
python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
Success
python3 -c 'import torch; print(torch.cuda.is_available())'
True
LLM 推論
新しく構成した 300 ドルの AI コンピューターにとって簡単なことから始めましょう。それは、大規模な言語モデルをローカルで実行することです。人気のあるオープンソース モードのいずれかを選択できます。
さらに、小規模な LLM を試すこともできます。
ラマ.cpp
使用します
まず、 wget
とgit
をインストールする必要があります。次に、手順に従って llama.cpp をコンパイルしてインストールします。
sudo apt-get install build-essential
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
モデルの重みをダウンロードする
高価な GPU を搭載したクラウド サーバーではなく、安価なマシンで LLM を実行するには、RAM スペースに収まるようにモデルの「圧縮」バージョンを使用する必要があります。簡単な例として、LLaMA-2 7B モデルには 7B パラメーターがあり、それぞれが float16 (2 バイト) で表されます。
- Float 16: 14B バイトまたは 14GB は、8GB RAM に収まりません。
- 4 ビットに量子化: 3.5B バイトまたは 3.5GB が 8GB RAM に収まるようになりました。
また、ファイル形式は次のようにする必要があります。
AMD Mini PCでのテスト
まず、AMD mini PC でテストしたところ、1 秒あたり約 10 トークンを達成できました。これは実際には非常に適切であり、あまり待たずに LLM とのチャットを続行できます。
システム構成:
- AMD Ryzen 5800H
- 32GB RAM
コマンドライン命令:
./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock
llama_print_timings: load time = 661.10 ms
llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)
llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)
llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)
llama_print_timings: total time = 64114.27 ms
Intel Mini PC でのテスト
次に、Intel ミニ PC でテストしたところ、1 秒あたり約 1.5 トークンを達成できました。これでは、実りあるチャット セッションを行うには少し遅すぎます。 Intel N5105 は AMD 5800H よりも明らかに弱いため、これは公平な比較ではありません。しかし、私が所有している Intel ミニ PC はこれだけです。より強力な Intel CPU (Core i5-1135G7 など) を使用すると、同等の結果が得られるはずです。以下のコメント欄で調査結果を報告してください。
システム構成:
- 第 11 世代 4 コア N5105 (最大 2.9Ghz) 4 コアおよび 4 スレッド
- 16GB RAM (iGPU には 2GB VRAM)
./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock
llama_print_timings: load time = 14490.05 ms
llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)
llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)
llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)
安定した拡散
インストール
AMD ROCm に関しては、このページにも注目してください。
クイックスタート
export HSA_OVERRIDE_GFX_VERSION=9.0.0
source venv/bin/activate
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
安定拡散 1.5 テスト
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
テスト1
- プロンプト:「森の中の馬」
- ステップ: 20、サンプラー: DDIM、CFG スケール: 7、シード: 519288240、サイズ: 512x512、モデルハッシュ: 6ce0161689、モデル: v1-5-pruned-emaonly、バージョン: v1.6.0
- 所要時間:1分8.3秒
安定拡散 XL 1.0 テスト
SDXL (最大解像度 1024x1024) では少なくとも 12GB VRAM が推奨されるため、iGPU に 16GB VRAM を割り当てるには必ず準備 1 ステップを完了する必要があります。つまり、この作業は 400 ドルのミニ PC でのみ可能です。
./webui.sh --upcast-sampling
テスト 1:
- プロンプト:「森の中の馬」
- ステップ: 20、サンプラー: DDIM、CFG スケール: 7、シード: 1102941451、サイズ: 1024x768、モデルハッシュ: 31e35c80fc、モデル: sd_xl_base_1.0、バージョン: v1.6.0
- 所要時間:7分41秒
テスト 2:
- プロンプト:「森で馬に乗っている赤いパーカーを着た若いテイラー・スウィフト」
- 否定的なプロンプト: 変形、変形、目、変形、歯、指、顔、手、変形
- ステップ: 20、サンプラー: DDIM、CFG スケール: 7、シード: 2960206663、サイズ: 1024x1024、モデルハッシュ: 31e35c80fc、モデル: sd_xl_base_1.0、バージョン: v1.6.0
- 所要時間:6分12.3秒
Windows 11 および AMD/directml
この記事は Linux オペレーティング システムに焦点を当てていますが、Stable Diffusion は Windows でも動作させることができます。私の実験は次のとおりです。
- まず、Python 3.10.6 をインストールする必要があります。
- Python 3.10.6 ディレクターを PATH に追加します。
- 重要: Python パスは最上位のパスである必要があります
- https://realpython.com/add-python-to-path/
- git および git clone リポジトリをインストールする
- ファイル エクスプローラーから webui-user.bat を実行します。
テスト 1:
- プロンプト:「森の中の馬」
- 設定: DPM++ 2M Karras、512x512、サンプリング ステップ 20
- 所要時間:1分19秒
結論
新しい 300 ドルのミニ PC で独自の生成 AI モデルを実行して楽しんでいますか?そう願っています。
個人のデバイス上で実行されるオープンソース AI モデルは、基本的なモデルを実際にトレーニングするための巨大な GPU プールを持っている人は誰もいないため、いじくり回す人にとって最もエキサイティングな分野の 1 つです。これにより、データのプライバシーを維持しながら、非常にスマートな新世代のアプリが可能になります。
次は何?
- さらに小さな組み込みデバイスでも実行できます: Raspberry Pi など
- スマートフォンで実行してください (llama.cpp は iOS と Android をサポートしています)
AI、オープンソース、オンデバイスを楽しくいじってください。