オープンソース AI モデルを私たち自身のコンピューター上でローカルに実行すると、プライバシー、無限の改造の可能性、そして大企業からの自由が得られます。それはほとんど言論の自由の問題です。
しかし、GPU に乏しい私たちにとって、独自の AI コンピューターを持つことは高価な夢のように思えます。
便利な AI コンピューターが 300 ドルで手に入ると言ったらどうしますか?興味がある?モニター、キーボード、マウスを自分で用意する必要があります。また、Linux オペレーティング システム、ドライバー、ミドルウェア、構成を少しいじる必要があります。
明確にしておきますが、私たちは大規模な生成 AI モデルの「トレーニング」や「微調整」について話しているのではありません。オープンソース LLM (次のような大規模な言語モデル) を実行する方法に焦点を当てます。
では、続けてみましょう。
家庭用 AI コンピューターの主な使用例の 1 つが実行されていると仮定しましょう。
ただし、推論速度を速くするには次のことが必要です。そうしないと、LLM が一度に 1 つのトークンを吐き出す間、手のひらに毛が生えるのを眺めているようなものになってしまいます。
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 ドルをわずかに上回りますが、読者はご自身でさらに詳しく調べていただけます。
以下の仕様を備えた AMD ベースの Mini PC は、通常 300 ドル未満で販売されます。特定のブランドを推奨するつもりはありませんので、ご自身で検索してください。
私は少し奮発して、32GB RAM と 1TB SSD を搭載した 400 ドルのモデルを選びました (他はすべて同じ)。主な理由は、オープンソース LLM の研究を行っており、Stable Difusion の実行に加えて、より大きなモデルも実行したいと考えているためです。ただし、300 ドルのコンピューターがあれば、この記事に記載されているほとんどすべてのことを実行できるはずです。
のような AMD APU の場合、
主な使用例に応じて変更する必要があります。
LLM 推論を実行する必要があるだけの場合は、この準備ステップ全体をスキップできます。 LLM 推論には CPU のみを使用する必要があるため、大規模な LLM モデルを実行できるように、ほとんどの RAM を CPU 用に節約する必要があります。
実行する必要がある場合
私の場合、Stable Diffusion XL と LLM 推論の両方を同じミニ PC 上で実行したいと考えています。したがって、GPU には (合計 32GB のうち) 16GB を割り当てたいと思います。
BIOS の設定を変更することでこれを実現できます。通常、上限があり、デフォルト設定は上限よりも大幅に低い場合があります。私のコンピューターでは、上限は 16GB、つまり使用可能な合計 RAM の半分でした。
コンピューターの BIOS がそのような設定をサポートしている場合は、希望の番号に変更してください。私のBIOSにはそのような設定はありません。
BIOS にこの設定がない場合は、「AMD Ryzen™ APU の GPU メモリ割り当てのロックを解除しますか?」という素晴らしい手順に従ってください。ウィンストン・マー著試してみたらうまくいったので、VRAM が 16GB になりました。
AMDの
AMD の ROCm をインストールして動作させるには、GPU ハードウェア、Linux ディストリビューション、カーネル、Python、HIP ドライバー、ROCm ライブラリ、および pytorch のバージョンに互換性があることを確認する必要があります。痛みを最小限に抑え、初回の成功の可能性を最大限に高めたい場合は、推奨され検証済みの組み合わせを使用してください。
次のリンクを確認して、互換性のある Linux OS とカーネルのバージョンを取得し、インストールしてください。最初は、お気に入りの Linux OS とデフォルトの Linux カーネルをインストールするという間違いを犯し、互換性の問題を解決するために後戻りするのは非常に苦痛でした。公式にサポートされている組み合わせを使用するだけで、この問題を回避できます。
インストール全体が正常に完了したら、 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 の依存関係は非常に扱いにくいため、適切な環境をセットアップすることをお勧めします。どちらでも使用できます
source venv/bin/activate
conda activate llm
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
以下は、統合グラフィックスを備えた 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
新しく構成した 300 ドルの AI コンピューターにとって簡単なことから始めましょう。それは、大規模な言語モデルをローカルで実行することです。人気のあるオープンソース モードのいずれかを選択できます。
さらに、小規模な LLM を試すこともできます。
使用します
まず、 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 バイト) で表されます。
また、ファイル形式は次のようにする必要があります。
まず、AMD mini PC でテストしたところ、1 秒あたり約 10 トークンを達成できました。これは実際には非常に適切であり、あまり待たずに LLM とのチャットを続行できます。
システム構成:
コマンドライン命令:
./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 ミニ PC でテストしたところ、1 秒あたり約 1.5 トークンを達成できました。これでは、実りあるチャット セッションを行うには少し遅すぎます。 Intel N5105 は AMD 5800H よりも明らかに弱いため、これは公平な比較ではありません。しかし、私が所有している Intel ミニ PC はこれだけです。より強力な Intel CPU (Core i5-1135G7 など) を使用すると、同等の結果が得られるはずです。以下のコメント欄で調査結果を報告してください。
システム構成:
./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
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
テスト1
SDXL (最大解像度 1024x1024) では少なくとも 12GB VRAM が推奨されるため、iGPU に 16GB VRAM を割り当てるには必ず準備 1 ステップを完了する必要があります。つまり、この作業は 400 ドルのミニ PC でのみ可能です。
./webui.sh --upcast-sampling
テスト 1:
テスト 2:
この記事は Linux オペレーティング システムに焦点を当てていますが、Stable Diffusion は Windows でも動作させることができます。私の実験は次のとおりです。
テスト 1:
新しい 300 ドルのミニ PC で独自の生成 AI モデルを実行して楽しんでいますか?そう願っています。
個人のデバイス上で実行されるオープンソース AI モデルは、基本的なモデルを実際にトレーニングするための巨大な GPU プールを持っている人は誰もいないため、いじくり回す人にとって最もエキサイティングな分野の 1 つです。これにより、データのプライバシーを維持しながら、非常にスマートな新世代のアプリが可能になります。
次は何?
AI、オープンソース、オンデバイスを楽しくいじってください。