AI・機械学習
Jamesobによる最先端LLMをローカルで実行するためのガイド
Jamesob's guide to running SOTA LLMs locally (github.com)
要約
この記事は、高価なハードウェア(約2,000ドルから40,000ドル)を使用して、最先端の大規模言語モデル(LLM)や音声認識モデルをローカル環境で実行するための詳細なガイドです。ハードウェアの選定、特にGPUの選択とPCIeスイッチングによるGPU間通信の最適化、BIOSやカーネルの設定、モデルのホスティング方法について解説しています。ローカル環境でのLLM実行に関心のある開発者や愛好家向けの内容です。
全文翻訳
Jamesobによる最先端LLMをローカルで実行するためのガイド
注: このREADMEの表以外はAIによって書かれていません。
ポケットに2,000ドルがあり、ローカルで最先端の人工知能を手に入れたいですか? 40,000ドルではどうですか? DarioやAltmanに胃の調子が悪くなる(そうなるはずです)なら、ローカルでこの新しい種類のコンピューティングを実行する方法を見つけるために読み進めてください。
このリポジトリには、私がSOTA(State-Of-The-Art)をローカルで実行するために使用するハードウェア、なぜそれを選んだのか、そしてそれを設定するためのあまり知られていない秘密、私がどのように音声認識(STT)をローカルで実行しているのか、私が良いと思うモデルを実行するためのDockerコンテナ内でのすぐに使える設定が見つかります。
目次
TL;DR
いくら使いたいですか?
$2kでQwenと良いSTT(かなり進んでいます!)が手に入ります; $40kでOpusに近いものが手に入ります
ベースシステム
旧世代EPYC + eBay DDR4を5.6kドルで
GPU
4× RTX PRO 6000、384GB VRAM、お金の使い道
c-payneスイッチ
サブBOM
Indie PCIeスイッチングでGPUがピアツーピア通信できるようにする
GPUエンクロージャー
1日の大工仕事
スイッチの動作を制御する
BIOS
分岐、リンク速度、ASPM
カーネル / GRUBパラメータ
iommu=off または NCCLハング
ACS無効化
P2Pトラフィックをスイッチファブリック内に留める
GPU電力制限
46kドルのシリコンを110V回路で実行する
結果
Gen4ラインレート: 27.5/50.4 GB/s、サブµsレイテンシ
ランナー/
すぐに使えるサービング設定:
GLM-5.2-594B: vLLM docker-compose, DCP4+MTP5, 約80 t/s @ 240k ctx
ランナー/stt
Whisper-large-v3を使用したすぐに使える音声認識設定
ツール/
measure-gpu-speed.sh: P2P帯域幅/レイテンシベンチマーク
リソース
rtx6kproリポジトリ, c-payne
私のセットアップ
私は運良く/愚かにも、以前はもっと安かった頃に4x RTX Pro 6000を購入しました。RAMが非常に高価になったため、これらのカードをホストするために旧世代DDR4システムを構築することを選択し、部品はeBayから入手しました。これにより、ベースシステムのコストを合理的に抑えつつ、大量のVRAMを確保することができました。もう一つ、私がやや珍しいことをしたのは、PCIe4スイッチ(c-payne.com製)を使用したことです。これにより、GPUはテンソル並列処理のallreduceステップ中に、すべてのデータをPCIルートコンプレックスを経由して送信するのではなく、「直接」ワイヤスピードで互いに通信できます。その結果、カード間のレイテンシが削減されます。したがって、PCIe5/DDR5ベースシステム(2026年7月現在非常に高価)ではなく、VRAM(重要な部分)にお金をかけています。私の特定のBOM(Bill of Materials)を以下に詳述します。
いくら使いたいですか?
約2,000ドル
2x RTX 3090で合計48GBのVRAMを得るのが素晴らしい方法です。その後、Qwen3.6-27Bという素晴らしいモデルを実行できます。また、Whisper-large-v3を使用したSOTA音声認識(STT)も実行できます。これは非常に役立つと私は考えています。それがモデルです。その後、私のクロスプラットフォームSTTハーネスでアクセスできます。ローカルSTTは驚くほど役立つことがわかりました。ホストされた同等品とは異なり、安心して使用できます。約11GBのNvidia GPU VRAMの存在のみを想定する、すぐに使える設定が./runners/sttにあります。
約40,000ドル
この価格帯では、モデルの知能が一段階上がります。Claude Opusにかなり近いものです。4x RTX 6000 Proを購入し、合計384GBのVRAMを得ることになります。
4x RTX 6kPROで現在の最良モデル
GLM-5.2-Int8Mix-NVFP4-REAP-594B
日付
2026-07
最良モデル
GLM-5.2-Int8Mix-NVFP4-REAP-594B
私の構成
ランナー構成
その他のアプローチ
注: これらは私の推奨事項ですが、お金をかけるための完全に有効な方法は他にもあります。例えば、4つのRTX6kPROを入手する代わりに、ほとんどのお金をリンクされた4x DGX Sparkクラスターを構築するために割り当て(合計512GB VRAM)、それをQwen3.7-27bを処理して定型タスクを迅速に実行するための遅いが強力な脳として使用する領域もあるでしょう。
ハードウェア
4x RTX 6000 Proマシン用に購入したハードウェアは以下の通りです。
ベースシステム
eBayからほぼすべての部品を購入した、旧世代のEPYCシステム。
コンポーネント
仕様
価格
マザーボード
ASRock Rack ROMED8-2T (SP3, 7× PCIe 4.0 x16, デュアル10GbE)
$715
CPU
AMD EPYC Milan 7313P (16コア 3.0GHz)
$504
RAM
8× 16GB Crucial CT16G4RFD4213 DDR4 ECC RDIMM (合計128GB, eBay)
$642
CPUクーラー
Dynatron T17 SP3タワー, 280W TDP
$40
ケース
AAAWave Sluice V2オープンフレーム
$100
PSU
2× Super Flower 1700W
$750
PCIeスイッチ
c-payne Microchip Switchtec PM40100 Gen4 (サブBOM参照)
~$1,330
ブートNVMe
4TB M.2
$291
ストレージNVMe (2x)
8TB M.2 (モデルウェイト)
$1,200
ファン
3× 120mm PWM
$15
合計
$5,587
GPU
コンポーネント
仕様
価格
GPU
4× NVIDIA RTX PRO 6000 Blackwellワークステーション (各96GB, 合計384GB VRAM)
~$46,000
c-payne PCIe Gen4スイッチサブBOM (c-payne.com)
パート
数量
単価(€)
備考
PCIe gen4スイッチ
5× x16 — Microchip Switchtec PM40100
1
1,050
2× SlimSAS 8iアップストリーム, 5× x16 クワッド幅スペーシングダウンストリーム, Aux x4 SlimSAS, 3× 8ピンEPS電源
SlimSAS PCIe gen4ホストアダプター
x16 — REDRIVER AIC (DS160PR810)
1
140
ROMED8-2T x16スロットに接続し、スイッチアップストリームに供給
SlimSAS SFF-8654 8iケーブル
PCIe gen4
2
~30
各x8を伝送; ペア=x16アップストリーム
合計
€1,220 ($1,330 USD)
GPUエンクロージャー
PCIスイッチとGPUのために木製のカスタムエンクロージャーを製作する必要があり、約1日かかりました。PCIスイッチの内蔵ファンは非常にうるさく、無用に見えたため、ボードから単純に外しました。
モデルウェイトの保管
モデルウェイトはすべて、2つの8TBドライブに複製されたZFSファイルシステムにローカルに保存し、~/storageにマウントしています。実行したいモデルについては、まず hf download <model-name> --local-dir ~/storage/<model-name> を使用してモデルをダウンロードします。
モデルの実行
モデルウェイトがローカルにキャッシュされたら、各モデル専用のディレクトリがあり、その中にdocker-compose.ymlファイルが含まれています。これにより、各モデルの実行が独自のDockerコンテナに隔離されます。これらの設定は./runners/にあります。各コンテナは~/storage/modelsを読み取り専用モードでマウントし、ローカルにキャッシュしたウェイトを取得します。その後、別のマシン上のVMでホストされているopencodeを使用し、http://clank.j.co:5000でサービングされているモデルにアクセスします。ネットワーク内部のDNSサーバーを使用してclank.j.coをLLMマシンにポイントしますが、単にhttp://:5000を使用することもできます。
PCIスイッチを正しく動作させる
マザーボードがPCIスイッチの速度を低下させないようにするために、BIOSで多くの調整が必要でした。
BIOS設定 (ROMED8-2T)
設定
値
理由
チップセット設定 → AMD PCIEリンク幅 (スイッチスロット)
x16 (x8/x8だった)
分岐がスロットを分割しており、アップストリームリンクはGen4 x8でトレーニングされていました。両方のSlimSAS 8iケーブル(各x8を伝送)が接続されている必要があります。
PCIeリンク速度 (スイッチスロット)
Gen4 (Autoではない)
Blackwell Gen5デバイスがGen4スイッチ経由で自動ネゴシエートすると、トレーニングに失敗しGen1に低下する可能性があります。Gen4を強制することで安定します。
ASPM
無効
ASPM L1はアイドルリンクを2.5GT/sに低下させます。これは、「Gen1ダウングレード」のlspci読み取りの理由であることが判明しました。リンクは負荷下では実際にGen4で実行されていましたが(p2pBandwidthLatencyTestで確認)、ASPMを無効にすることで、見た目の懸念や再トレーニングの遅延がなくなります。
Re-Size BAR
有効
フル96GB VRAM BARの露出とGPU P2Pに必要です。
SR-IOV
無効
ベアメタル推論。IOMMUオーバーヘッドとP2P干渉を回避します。
優先IO
Auto
手動 → バス 81 (c-payneスイッチ) に設定すると、わずかなレイテンシの向上が見られますが、Autoのままにしました。これは最適化であり、修正ではなく、BIOS変更後にバス番号がシフトします。
カーネル / GRUBパラメータ
# /etc/default/grub
GRUB_CMDLINE_LINUX="iommu=off amd_iommu=off nomodeset"
sudo update-grub
# nvidia_uvm P2P修正
echo 'options nvidia_uvm uvm_disable_hmm=1' | sudo tee /etc/modprobe.d/uvm.conf
sudo update-initramfs -u
iommu=offなしでは、NCCLはマルチGPU P2Pでハングします。
ACS無効化 (スイッチP2Pに不可欠)
ACSが有効(デフォルト)の場合、P2PトラフィックはCPUルートポートを経由してバウンスされ、スイッチファブリック内に留まらないため、スイッチが無効になります。pcie_acs_overrideはパッチ適用済みカーネルを必要とするため、実行時にsetpciで無効にします。
# /usr/local/bin/disable-acs.sh
#!/bin/bash
if [ "$EUID" -ne 0 ]; then
echo "ERROR: must be run as root"
exit 1
fi
for BDF in $(lspci -d "*:*:*" | awk '{print $1}'); do
setpci -v -s ${BDF} ECAP_ACS+0x6.w > /dev/null 2>&1
if [