paint-brush
GPU が苦手な人向けに 300 ドルの AI コンピューターを構築する方法@zbruceli
6,605 測定値
6,605 測定値

GPU が苦手な人向けに 300 ドルの AI コンピューターを構築する方法

Bruce Li12m2024/03/24
Read on Terminal Reader

長すぎる; 読むには

しかし、GPU に乏しい私たちにとって、独自の AI コンピューターを持つことは高価な夢のように思えます。 MacBook M3 Max? 3200ドル、うわー!エヌビディア4090? 1850ドル。たとえ手に入れられたとしても痛いです。マイクロソフト Surface Laptop 6? 1200ドルからですが、それでも高すぎます。 便利な AI コンピューターが 300 ドルで手に入ると言ったらどうしますか?興味がある?モニター、キーボード、マウスを自分で用意する必要があります。また、Linux オペレーティング システム、ドライバー、ミドルウェア、構成を少しいじる必要があります。
featured image - GPU が苦手な人向けに 300 ドルの AI コンピューターを構築する方法
Bruce Li HackerNoon profile picture


イントロ

オープンソース AI モデルを私たち自身のコンピューター上でローカルに実行すると、プライバシー、無限の改造の可能性、そして大企業からの自由が得られます。それはほとんど言論の自由の問題です。


しかし、GPU に乏しい私たちにとって、独自の AI コンピューターを持つことは高価な夢のように思えます。 MacBook M3 Max ? 3200ドル、うわー!エヌビディア4090 ? 1850ドル。たとえ手に入れられたとしても痛いです。マイクロソフト Surface ラップトップ 6 ? 1200ドルからですが、それでも高すぎます。


便利な AI コンピューターが 300 ドルで手に入ると言ったらどうしますか?興味がある?モニター、キーボード、マウスを自分で用意する必要があります。また、Linux オペレーティング システム、ドライバー、ミドルウェア、構成を少しいじる必要があります。


明確にしておきますが、私たちは大規模な生成 AI モデルの「トレーニング」や「微調整」について話しているのではありません。オープンソース LLM (次のような大規模な言語モデル) を実行する方法に焦点を当てます。ラマ 2 7B) ローカルで、および次を使用して画像を生成します。安定した拡散


では、続けてみましょう。

優れた (そして安価な) AI コンピューターとは何でしょうか?

zbruceli による高速インターコネクト


家庭用 AI コンピューターの主な使用例の 1 つが実行されていると仮定しましょう。大規模な言語モデルまたはLLM推論。このタスクはすべて CPU で実行できるため、実際には GPU はまったく必要ありません。ラマ.cppは、通常の CPU を使用して非常に高速な LLM 推論を可能にするオープンソース ソフトウェアです。元々は Apple M シリーズ CPU を搭載した Macbook 用に設計されましたが、Intel/AMD CPU でも同様に動作します。


ただし、推論速度を速くするには次のことが必要です。そうしないと、LLM が一度に 1 つのトークンを吐き出す間、手のひらに毛が生えるのを眺めているようなものになってしまいます。


  • 高速な CPU からメモリまでの帯域幅
  • より高速な DRAM (少なくとも DDR4、DDR5 はさらに優れています)
  • 大量のメモリ (最小 16GB など)、特により大きなモデル (7B を超える) を実行したい場合


Stable Diffusion による画像生成には、GPU パワーが必要です。ただし、そのために非常に高性能な GPU を搭載する必要はありません。すでに自宅のコンピューターに組み込まれている GPU を活用できます。


  1. CPU、GPU、高速メモリを統合した M1/M2/M3 CPU を搭載したすべての Mac (非常に優れていますが、価格の関係でこの記事からは除外します)


  2. AMD APU (Ryzen 7 5700U など)。予算に優しいミニ PC 向けに CPU と GPU を統合します。これがこの記事の焦点になります。


  3. 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 の場合、 Ryzen 7 5800H 、メモリは CPU と iGPU (統合 GPU) の間で共有されます。私の場合、合計 32GB の RAM がありますが、iGPU へのデフォルトの割り当てはわずか 3GB でした。これはコンピュータによって異なり、製造時に BIOS で設定されます。


主な使用例に応じて変更する必要があります。

  1. LLM 推論を実行する必要があるだけの場合は、この準備ステップ全体をスキップできます。 LLM 推論には CPU のみを使用する必要があるため、大規模な LLM モデルを実行できるように、ほとんどの RAM を CPU 用に節約する必要があります。


  2. 実行する必要がある場合安定した拡散、 特に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 になりました。


https://winstonhyypia.medium.com/amd-apu-how-to-modify-the-d dedicated-gpu-memory-e27b75905056

準備 2: ドライバーとミドルウェアをインストールする

zbruceli による複雑な構成

星を揃える

AMDのROCm (Radeon Open Compute プラットフォーム)、Nvidia と同等CUDAは、開発者が ADM の GPU の能力を利用できるようにするドライバーとミドルウェアのスイートです。そして通常、AI アプリケーションは GPU アクセラレーションを実現するために ROCm を必要とします。


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


AMD ROCm OS互換性チャート

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/


Pytorch 互換性チャート

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 推論

チャットボットと話す by zbruceli


新しく構成した 300 ドルの AI コンピューターにとって簡単なことから始めましょう。それは、大規模な言語モデルをローカルで実行することです。人気のあるオープンソース モードのいずれかを選択できます。ラマ2チャット用に最適化された 7B パラメータを備えています。


さらに、小規模な LLM を試すこともできます。ミストラル Qウェンゼファー、 そしてビクーニャ。さらに質の高い LLM は、カリフォルニア大学バークレー校の非常に便利な「チャットボット アリーナ リーダーボード」で見つけることができます。 LMSYSラボ


https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard

ラマ.cpp

使用しますラマ.cpp 、最初は CPU 用に最適化され、後に GPU もサポートされます。私の経験では、LLM 推論は CPU ではうまく機能しますが、300 ドルの AI マシンに統合されているような控えめな GPU ではメリットはほとんどありません。


https://github.com/ggerganov/llama.cpp


まず、 wgetgitをインストールする必要があります。次に、手順に従って 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 に収まるようになりました。


また、ファイル形式は次のようにする必要があります。ググフ。それで。この例では、次のファイルの重みをダウンロードする必要があります。

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)

安定した拡散

アーティストが AI でドラゴンを描く by zbruceli

インストール

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 に追加します。



  • git および git clone リポジトリをインストールする


  • ファイル エクスプローラーから webui-user.bat を実行します。


テスト 1:

  • プロンプト:「森の中の馬」
  • 設定: DPM++ 2M Karras、512x512、サンプリング ステップ 20
  • 所要時間:1分19秒

結論

個人デバイス上のオープンソース AI モデル by zbruceli


新しい 300 ドルのミニ PC で独自の生成 AI モデルを実行して楽しんでいますか?そう願っています。


個人のデバイス上で実行されるオープンソース AI モデルは、基本的なモデルを実際にトレーニングするための巨大な GPU プールを持っている人は誰もいないため、いじくり回す人にとって最もエキサイティングな分野の 1 つです。これにより、データのプライバシーを維持しながら、非常にスマートな新世代のアプリが可能になります。


次は何?

  • さらに小さな組み込みデバイスでも実行できます: Raspberry Pi など


  • スマートフォンで実行してください (llama.cpp は iOS と Android をサポートしています)


AI、オープンソース、オンデバイスを楽しくいじってください。