
2026/07/04 0:03
Jamesob が提案するローカルでの最新LLMを実行する方法
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
はい、ソーステキストで提供されている具体的な制約(電力ソリューションやストレージ構成など)を反映しつつ、単なる箇条書きにはならずに技術的な深みをより適切に表すために、改良されたサマリーが必要です。
改良されたサマリー
今では、Claude Opus のようなトップティアのクラウド AI サービスと競うことができます。そのためには、大規模言語モデル (LLM) のローカルな環境構築が必要であり、コストは 2,000 ドルから 40,000 ドルの範囲にあります。このハイパフォーマンスシステムは、ブランド名のprestige を最優先するのではなく、速度を最優先しています。具体的には、上一世代の CPU(AMD EPYC Milan 7313P)、安価な eBay で入手できる RAM、そして 4 つの RTX PRO 6000 GPU に合計 384GB の VRAM を投資することで実現されています。データの高速なやり取りを可能にするために、標準的なルートコンプレックスではなく Switchtec PM40100 Gen4 スイッチ(約 1,330 ドル)を採用しており、Gen4 ラインレートで動作し、サブマイクロ秒の低遅延を実現しています。
重い負荷下での安定性は、BIOS の精密なチューニング(例:Re-Size BAR の有効化、ASPM/SR-IOV の無効化)と特定のカーネルパラメータ (
iommu=off) を設定することで保証されており、フリーズやハングを防いでいます。ユニークな点は、標準的な 110V の住宅用回路で安全に動作できることです。これは、2 つの高ワット数の PSU による電力制限(GPU 1 台あたり 350W)によって実現され、高価な 220V アップグレードやトランスフォーマーの必要性を排除しています。モデルは Docker コンテナ(例:vLLM)を用いて提供され、大規模なコンテキストウィンドウへの対応と最先端の推論をサポートし、約 80 トokens/秒の速度で動作します。このワークステーションには、ローカルでの音声からテキストへの変換(Whisper)、ウェブブラウザ(SearXNG/Kagi)、コード共同作業など、不可欠な統合ワークフローも備わっており、それらは全てカスタム作製の木製エンクロージャ内に収められています。モデルの重みはミラーリングされた ZFS ストレージ上に格納されています。本文
Jamesob のローカル SOTA LLM 実行ガイド:予算別構築・最適化完全版
概要と注意
- 本文の作成について: この記事のメイン部分(表を除く)は、AI によって生成されたものではありません。
- 対象読者: Dario や Elon Altman の動向に不快を感じ、次世代コンピューティング技術をローカルで動作させたい人。
- 予算選択肢:
- ポケットに刺さる程度の資金(約 2,000 ドル)
- 本気を出すための大規模構築(約 4 万ドル)
目次
TL;DR
: GLM-5.2-594B の vLLM Docker 設定で、コンテキスト長 46 万 tokens、推論速度約80 tokens/秒。runners/
: Whisper-large-v3 を使用した即座に動作する音声認識 (STT) 構成。runners/stt
:tools/
を用いた P2P バンド幅・レイテンシベンチマークスクリプト。measure-gpu-speed.sh
リソースリンク
| サイト | URL |
|---|---|
| RTX6KPRO リポジトリ | GitHub |
| c-payne (PCI スイッチメーカー) | 公式サイト |
| RTX6KPRO Discord | 参加リンク |
予算別アプローチ
約 $2,000(2,000 ドル)の構築
- 構成: RTX 3090 × 2枚 (合計 48GB VRAM)。
- 実行可能なモデル: Qwen3.6-27B(非常に優れた性能)。
- 追加機能: Whisper-large-v3 を利用した最新鋭の音声認識 (STT) が動作可能。
- ローカル環境での STT は、ホスティングサービスに比べ、不快感なく利用できるという利点がある。
- 設定ファイルは
(VRAM 11GB あれば動作)にある。./runners/stt
約 $40,000(4 万ドル)の構築
- 構成: RTX PRO 6000 Blackwell (RTX6KPRO) × 4枚。
- 各 GPU: 96GB VRAM、合計 384GB VRAM。
- パフォーマンスは Claude Opus に極めて近いレベルに到達可能。
- 推奨モデル (2026/7):
(GLM-5.2-Int8Mix-NVFP4-REAP-594B
構成)。Runner
| 日付 | 最良モデル | 私の設定 |
|---|---|---|
| 2026-7 | GLM-5.2-Int8Mix-NVFP4-REAP-594B | Runner 構成 |
追加情報とハードウェア選定
その他のアプローチ:DGX クラスターへの拡張
- 注意点: 次の推奨事項は著者の個人的な見解です。他の正当な資金配分方法も存在します。
- 代替案: RTX6KPRO×4 を購入する代わりに、予算の大半を割り当てて**DGX Spark クラスター (合計 512GB VRAM)**を構築。
- Qwen3.7-27b などを用いて「頭の大きいスローなブレイン」として単純作業を処理させる構成が可能。
ベースシステム (Base System)
EPYC システムの一部品として EBid で購入した構成(合計 $5,587)。
| コンポーネント | スペック | 価格 |
|---|---|---|
| マザーボード | 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 タワー, TDP 280W | $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 | 2 枚 8TB M.2 (モデルウェイト用) | $1,200 |
| ファン | 3× 120mm PWM | $15 |
| 合計 | $5,587 |
GPU 構成
| コンポーネント | スペック | 価格 |
|---|---|---|
| GPU | 4× NVIDIA RTX PRO 6000 Blackwell Workstation (各 96GB、合計 384GB VRAM) | ~$46,000 |
c-payne PCIe Gen4 スイッチ用サブ BOM
Microchip Switchtec PM40100 を採用した自作 PCI スイッチの部品一式(合計 ~$1,330)。
| 部品 | 数量 | ユニット価格 (€) | 備考 |
|---|---|---|---|
| PCIe Gen4 スイッチ | 1 | 1,050 | アップストリーム:2× SlimSAS 8i、ダウンストリーム:5× x16 クワッド幅間隔。補助 x4 SlimSAS、電力供給用 3× 8 ピン EPS |
| SlimSAS ホストアダプタ | 1 | 140 | REDRIVER AIC (DS160PR810)。ROMED8-2T の x16 スロット接続でスイッチへアップストリーム供給。 |
| SlimSAS SFF-8654 8i ケーブル | 2 | ~30 | PCIe Gen4。各ケーブルが x8 を伝送し、ペアで x16 アップストリームを実現。 |
セットアップ手順と最適化
モデルウェイトの蓄積
- 保存場所: ZFS ファイルシステム上の
。2 台の 8TB ドライブ間でレプリケーションを実施。~/storage - ダウンロード方法:
hf download <model-name> --local-dir ~/storage/<model-name>
モデルの実行方法
- 各モデルに対して特定のディレクトリを確保し、Docker コンテナ内で動作するように
を用意(docker-compose.yml
に格納)。./runners/ - 実行時にローカルにキャッシュしたウェイトをマウント:
~/storage/models - アクセスポイント: OpenCode VM (http://clank.j.co:5000) を介してアクセス。
- DNS サーバーで
を指すか、IP アドレス (clank.j.co
) で直接接続可能。http://<llm-machine-ip>:5000
- DNS サーバーで
Harness(運用環境)の構築
- VM の
ディレクトリに対して tmux セッションを作成するアプリケーションを構築済み。~/src - 推論マシンの HTTP API にバックスアップされる OpenCode インスタンスを実行中。
- ツール活用例:
- Web ブラウジング/検索:
,camofox
API,kagi.comsearXNG - コミュニケーション: Telegram ボット
- ソースコード管理: ローカルプライベート Gitea インスタンス
- Web ブラウジング/検索:
- 沙漏ボックス化: すべての動作はサンドボックス化された VM 内で完結。ホストシステムへの通信は共有ファイルシステムマウントのみを通じて行われるため、インストールや「Go ham」な操作が可能。
PCI スイッチを正しく動作させるための設定
BIOS で以下の調整を行うことで、速度のダウンレギュレーションを防ぐ。
BIOS 設定 (ROMED8-2T)
| 設定項目 | 推奨値 | 理由 |
|---|---|---|
| Chipset Configuration → AMD PCIE Link Width (switch slot) | x16 (以前は x8/x8) | バイファケーションによりスロットが分割されており、アップストリームリンクは Gen4 x8 で学習済み。SlimSAS 8i ケーブル両方(各 x8)を接続必須。 |
| PCIe Link Speed (switch slot) | Gen4 (Auto ではない) | Blackwell の Gen5 デバイスが自動ネゴシエーションすると失敗して Gen1 に落ちる可能性あり。Gen4 を強制し安定化。 |
| ASPM | Disabled | ASPM L1 はアイドル時を 2.5GT/s に落とす(「Gen1 へダウングレード」)。見せかけの恐怖を解消し、再学習レイテンシを除去。 |
| Re-Size BAR | Enabled | 96GB VRAM の完全な BAR 露出および GPU P2P に必須。 |
| SR-IOV | Disabled | ベアメタル推論用であり、IOMMU オーバーヘッドおよび P2P 干渉を回避。 |
| Preferred IO | Auto (または bus 81) | 限界的なレイテンシ改善のため Manual → bus 81 (c-payne スイッチ) に設定可能だが、Auto で保持。 |
Redriver のゲイン低減
- c-payne のツールを使用してゲインを「lvl 3」に低減した。
- 重要: ゲインレベルは SAS コネクターケーブルの長さの関数であり、最も繊細な調整部分。
サイバスの適切な選定
- Amazon で同様のケーブルを購入したが、わずかな差異が問題を引き起こし再注文が発生した。
- 注意: 必ず製品指定を確認して購入すること。
カーネルおよび GRUB パラメータ調整
NCCL のハング問題を回避するため、以下の設定を行う。
1.
の編集:/etc/default/grub
GRUB_CMDLINE_LINUX="iommu=off amd_iommu=off nomodeset" sudo update-grub
を省略した場合、マルチ GPU P2P で NCCL がハングする。iommu=off
2. nvidia_uvm P2P 修正:
echo 'options nvidia_uvm uvm_disable_hmm=1' | sudo tee /etc/modprobe.d/uvm.conf sudo update-initramfs -u
ACS の無効化 (P2P 維持のため)
ACS が有効(デフォルト)の場合、P2P トライフィックが CPU ルートポートを通過して跳ね返り、スイッチのメリットが失われる。パッチ済みカーネルが必要になる
pcie_acs_override を避けて、以下のスクリプトで無効化する。
スクリプト: /usr/local/bin/disable-acs.sh
#!/bin/bash if [ "$EUID" -ne 0 ]; then echo "ERROR: 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 [ $? -ne 0 ]; then continue fi echo "ACS を $(lspci -s ${BDF}) で無効化" setpci -v -s ${BDF} ECAP_ACS+0x6.w=0000 done
起動時実行 (systemd oneshot): ファイル:
/etc/systemd/system/disable-acs.service
[Unit] Description=Disable PCIe ACS for GPU P2P After=multi-user.target [Service] Type=oneshot ExecStart=/usr/local/bin/disable-acs.sh [Install] WantedBy=multi-user.target
検証:
: すべての項目がマイナス記号 (lspci -vvv | grep ACSCtl
) で表示されていること。-
: 全ての GPU 間に PIX が表示されていること(PHB/NODE でないこと)。nvidia-smi topo -m- 測定は
を使用して行うと簡単。./tools/measure-gpu-speed.sh
- 測定は
GPU の電力制限 (110V回路向け)
220V 回路的なリスクを避けるため、単一の 110V 回路で動作させるが、電力規制を行う(Persistence モード + システム起動時の適用)。
sudo nvidia-smi -pm 1 sudo nvidia-smi -pl 350 # GPU 各々 350W (デフォルト 600W)
- 消費電力:
- ロード時: 1,400W (GPU 合計) + システム約 280W = 計 1,680W。
- 前段階 (Single PSU 時代): 計 1,320W (カード 260W × 4 + システム)。
- 検証コマンド:
nvidia-smi --query-gpu=index,power.limit,power.draw --format=csv
ベンチマーク結果
P2P バンド幅およびレイテンシ:
- アップストリーム (CPU へ): Gen4 x16 (~30 GB/s)
- スイッチ介した P2P:
- バンド幅:片道 27.5 GB/s / 双方向 50.4 GB/s
- レイテンシ: 0.37 – 0.45 µs (すなわち Gen4 ラインレート)
- 備考: ASPM がアクティブな場合、アイドル時に
でダウンストリーム GPU リンクが「2.5GT/s (ダウングレード済み)」と表示されることがあるが、これは見せかけの問題であり、負荷下では Gen4 に再学習される。lspci