HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

Jamesobによる最先端LLMをローカルで実行するためのガイド

Jamesob's guide to running SOTA LLMs locally (github.com)

387 pointsby livestyle174 コメント

要約

この記事は、高価なハードウェア(約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 [