イントロ オープンソース AI モデルを私たち自身のコンピューター上でローカルに実行すると、プライバシー、無限の改造の可能性、そして大企業からの自由が得られます。それはほとんど言論の自由の問題です。 しかし、GPU に乏しい私たちにとって、独自の AI コンピューターを持つことは高価な夢のように思えます。 ? 3200ドル、うわー! ? 1850ドル。たとえ手に入れられたとしても痛いです。 ? 1200ドルからですが、それでも高すぎます。 MacBook M3 Max エヌビディア4090 マイクロソフト Surface ラップトップ 6 便利な AI コンピューターが 300 ドルで手に入ると言ったらどうしますか?興味がある?モニター、キーボード、マウスを自分で用意する必要があります。また、Linux オペレーティング システム、ドライバー、ミドルウェア、構成を少しいじる必要があります。 明確にしておきますが、私たちは大規模な生成 AI モデルの「トレーニング」や「微調整」について話しているのではありません。オープンソース LLM (次のような大規模な言語モデル) を実行する方法に焦点を当てます。 7B) ローカルで、および次を使用して画像を生成します。 。 ラマ 2 安定した拡散 では、続けてみましょう。 優れた (そして安価な) AI コンピューターとは何でしょうか? 家庭用 AI コンピューターの主な使用例の 1 つが実行されていると仮定しましょう。 またはLLM推論。このタスクはすべて CPU で実行できるため、実際には GPU はまったく必要ありません。 は、通常の CPU を使用して非常に高速な LLM 推論を可能にするオープンソース ソフトウェアです。元々は Apple M シリーズ CPU を搭載した Macbook 用に設計されましたが、Intel/AMD CPU でも同様に動作します。 大規模な言語モデル ラマ.cpp ただし、推論速度を速くするには次のことが必要です。そうしないと、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 ドル未満で販売されます。特定のブランドを推奨するつもりはありませんので、ご自身で検索してください。 5800H (8C/16T、最大4.4GHz) AMD Ryzen 7 16GB RAM DDR4 (32GB 推奨) 512GB NVME M.2 SSD 私は少し奮発して、32GB RAM と 1TB SSD を搭載した 400 ドルのモデルを選びました (他はすべて同じ)。主な理由は、オープンソース LLM の研究を行っており、Stable Difusion の実行に加えて、より大きなモデルも実行したいと考えているためです。ただし、300 ドルのコンピューターがあれば、この記事に記載されているほとんどすべてのことを実行できるはずです。 準備 1: 十分な iGPU メモリを割り当てる のような AMD APU の場合、 、メモリは CPU と iGPU (統合 GPU) の間で共有されます。私の場合、合計 32GB の RAM がありますが、iGPU へのデフォルトの割り当てはわずか 3GB でした。これはコンピュータによって異なり、製造時に BIOS で設定されます。 Ryzen 7 5800H 主な使用例に応じて変更する必要があります。 LLM 推論を実行する必要があるだけの場合は、この準備ステップ全体をスキップできます。 LLM 推論には CPU のみを使用する必要があるため、大規模な LLM モデルを実行できるように、ほとんどの RAM を CPU 用に節約する必要があります。 実行する必要がある場合 、 特に (1024x1024)、システムが許可する限り多くの RAM を iGPU に割り当てる必要があります (通常は合計 RAM の半分) 安定した拡散 SDXL 私の場合、Stable Diffusion XL と LLM 推論の両方を同じミニ PC 上で実行したいと考えています。したがって、GPU には (合計 32GB のうち) 16GB を割り当てたいと思います。 BIOS の設定を変更することでこれを実現できます。通常、上限があり、デフォルト設定は上限よりも大幅に低い場合があります。私のコンピューターでは、上限は 16GB、つまり使用可能な合計 RAM の半分でした。 優れた BIOS コンピューターの BIOS がそのような設定をサポートしている場合は、希望の番号に変更してください。私のBIOSにはそのような設定はありません。 BIOS が不十分: Universal AMD ツールを使用する BIOS にこの設定がない場合は、「AMD Ryzen™ APU の GPU メモリ割り当てのロックを解除しますか?」という素晴らしい手順に従ってください。ウィンストン・マー著試してみたらうまくいったので、VRAM が 16GB になりました。 https://winstonhyypia.medium.com/amd-apu-how-to-modify-the-d dedicated-gpu-memory-e27b75905056 準備 2: ドライバーとミドルウェアをインストールする 星を揃える AMDの (Radeon Open Compute プラットフォーム)、Nvidia と同等 は、開発者が ADM の GPU の能力を利用できるようにするドライバーとミドルウェアのスイートです。そして通常、AI アプリケーションは GPU アクセラレーションを実現するために ROCm を必要とします。 ROCm CUDA AMD の ROCm をインストールして動作させるには、GPU ハードウェア、Linux ディストリビューション、カーネル、Python、HIP ドライバー、ROCm ライブラリ、および pytorch のバージョンに互換性があることを確認する必要があります。痛みを最小限に抑え、初回の成功の可能性を最大限に高めたい場合は、推奨され検証済みの組み合わせを使用してください。 前提条件 次のリンクを確認して、互換性のある Linux OS とカーネルのバージョンを取得し、インストールしてください。最初は、お気に入りの Linux OS とデフォルトの Linux カーネルをインストールするという間違いを犯し、互換性の問題を解決するために後戻りするのは非常に苦痛でした。公式にサポートされている組み合わせを使用するだけで、この問題を回避できます。 https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html ROCmのインストール https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html インストール全体が正常に完了したら、 と入力すると、次のような内容が表示されます (黄色で強調表示されている最も関連性の高い部分のみを切り取っています)。 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 ピトーチ https://pytorch.org/get-started/locally/ 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 の「ふりをしている」ことがわかります。 https://rocm.docs.amd.com/en/latest/how_to/pytorch_install/pytorch_install.html#test-the-pytorch-installation 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 コンピューターにとって簡単なことから始めましょう。それは、大規模な言語モデルをローカルで実行することです。人気のあるオープンソース モードのいずれかを選択できます。 チャット用に最適化された 7B パラメータを備えています。 ラマ2 さらに、小規模な LLM を試すこともできます。 、 、 、 そして 。さらに質の高い LLM は、カリフォルニア大学バークレー校の非常に便利な「チャットボット アリーナ リーダーボード」で見つけることができます。 。 ミストラル Qウェン ゼファー ビクーニャ LMSYSラボ https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard ラマ.cpp 使用します 、最初は CPU 用に最適化され、後に GPU もサポートされます。私の経験では、LLM 推論は CPU ではうまく機能しますが、300 ドルの AI マシンに統合されているような控えめな GPU ではメリットはほとんどありません。 ラマ.cpp https://github.com/ggerganov/llama.cpp まず、 と をインストールする必要があります。次に、手順に従って llama.cpp をコンパイルしてインストールします。 wget git 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 に収まるようになりました。 また、ファイル形式は次のようにする必要があります。 。それで。この例では、次のファイルの重みをダウンロードする必要があります。 ググフ https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/blob/main/llama-2-7b-chat.Q4_0.gguf 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) 安定した拡散 インストール https://github.com/AUTOMATIC1111/stable-diffusion-webui AMD ROCm に関しては、このページにも注目してください。 https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs クイックスタート 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 でも動作させることができます。私の実験は次のとおりです。 https://github.com/lshqqytiger/stable-diffusion-webui-directml まず、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、オープンソース、オンデバイスを楽しくいじってください。