ウェブサイト検索

ProxmoxでNVIDIA GPUパススルーを使用してDeepSeek AIモデルを実行する方法


AIモデルをローカルで実行することは、プライバシーの向上、レイテンシの低減、およびインフラストラクチャ全体の完全な制御を提供します。このガイドでは、Proxmox仮想マシン内にGPUパススルーを使用してDeepSeekモデル(DeepSeek-R1など)をセットアップする方法を説明します。この構成により、AIモデルはNVIDIA GPUに直接アクセスできるため、パフォーマンスが大幅に向上します。

このチュートリアルでは、あなたは学びます:

  • Proxmoxホスト上でIOMMUとGPUパススルーを構成する方法
  • GPUコンピューティングのために適切に構成されたVMを作成する方法
  • VMにNVIDIAドライバーをインストールする方法
  • OllamaをDeepSeekモデルでインストールして実行する方法
  • ハードウェアに基づいて異なるDeepSeekモデルサイズを選択する方法
  • 一般的なGPUパススルーの問題をトラブルシューティングする方法

ProxmoxでのGPUパススルーの設定

OllamaでDeepSeek-R1を実行する前に、仮想マシンがGPUに直接アクセスできるように、GPUパストスルーを適切に設定する必要があります。これにはIOMMUの有効化、システムをVFIOドライバーを使用するように設定すること、およびVMを正しくセットアップすることが含まれます。

  1. IOMMUを有効にしてGRUBを設定する: まず、ホストシステムでIOMMUサポートを有効にする必要があります。

    nano /etc/default/grub

    GRUB_CMDLINE_LINUX_DEFAULTを含む行を見つけて、IOMMUパラメータを追加してください:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

    ファイルを保存した後、GRUBを更新して再起動します:

    update-grub
    reboot
  2. IOMMUが機能しているか確認する: システムが再起動した後、IOMMUが正しく有効になっているか確認してください。

    dmesg | grep -e IOMMU -e DMAR

    IOMMUが有効で機能していることを示す出力が表示されるはずです。

  3. GPUのVFIOドライバーを設定する: NVIDIA GPUにVFIOドライバーを使用するようにシステムを設定します
    まず、GPUのベンダーおよびデバイスIDを見つけます:

    lspci -nn | grep -i nvidia

    出力は次のようになります:

    01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080] [10de:2206] (rev a1)
    01:00.1 Audio device [0403]: NVIDIA Corporation GA102 High Definition Audio Controller [10de:1aef] (rev a1)

    この例では、ベンダーIDとデバイスIDは `10de:2206` (GPU用)と `10de:1aef` (オーディオコンポーネント用)です。適切なパススルーには両方が必要です。

    方法1: modprobeによる自動構成:

    echo "options vfio-pci ids=10de:2206,10de:1aef" > /etc/modprobe.d/vfio.conf
    update-initramfs -u
    reboot

    lspciの出力に示されているように、システムから実際のベンダー:デバイスIDを使用してください。

    方法2: 手動バインディング(自動方法が機能しない場合):
    自動方法が再起動後に機能しない場合、systemdサービスを使用してGPUをVFIOドライバーに手動でバインドすることができます:
    まず、バインディングプロセスを処理するスクリプトを作成します:

    nano /usr/local/bin/vfio-bind-gpu.sh

    次の内容を追加してください:

    #!/bin/bash
    
    The full PCI address needs the domain part "0000:" added before the addresses from lspci
    For example, if lspci shows "01:00.0", use "0000:01:00.0" here
    GPU_IDS="0000:01:00.0 0000:01:00.1"
    
    modprobe vfio-pci
    
    for dev in $GPU_IDS; do
        if [ -e /sys/bus/pci/devices/$dev/driver/unbind ]; then
            echo -n "$dev" > /sys/bus/pci/devices/$dev/driver/unbind
        fi
        if [ -e /sys/bus/pci/drivers/vfio-pci/bind ]; then
            echo -n "$dev" > /sys/bus/pci/drivers/vfio-pci/bind
        fi
    done

    重要: lspci コマンドは「01:00.0」のようなアドレスを表示しますが、sysfs ファイルシステムではドメインプレフィックス「0000:」が必要です。このスクリプトで lspci の各 PCI アドレスを使用する際は、必ず「0000:」を前に追加してください。

    スクリプトを実行可能にする:

    chmod +x /usr/local/bin/vfio-bind-gpu.sh

    ブート時にこのスクリプトを実行するためのsystemdサービスを作成してください:

    nano /etc/systemd/system/vfio-bind-gpu.service

    次の内容を追加してください:

    [Unit]
    Description=Bind NVIDIA GPU to VFIO at Boot
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/vfio-bind-gpu.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target

    サービスを有効にして開始します:

    systemctl daemon-reload
    systemctl enable vfio-bind-gpu.service
    systemctl start vfio-bind-gpu.service

GPU計算のためのVMの作成

ホストにGPUパススルーが設定されたので、パススルーされたGPUを使用するように適切に構成されたVMを作成する必要があります。このプロセスにはProxmoxのWebインターフェースを使用します。

  1. Proxmoxのウェブインターフェースにアクセスする: ウェブブラウザを開き、Proxmoxホスト(https://your-proxmox-ip:8006)に移動し、資格情報でログインします。
  2. 新しいVMを作成する: Proxmoxのウェブインターフェースで:

    1. サーバービュー(左パネル)でProxmoxノードを選択してください
    2. 右上の「仮想マシンを作成」ボタンをクリックします。
    3. 「一般」タブで:

      • VM ID: 一意のIDを選択してください(例:9100)
      • 名前:説明的な名前を入力してください(例: “ollama-vm”)
      • 次へクリックしてください
  3. OS設定を構成する: 「OS」タブで:

    1. 「CD/DVDディスクイメージファイル(iso)を使用する」を選択してください
    2. ストレージ: あなたのISOストレージを選択してください(例: “local-disks”)
    3. ISOイメージ: お使いのLinuxディストリビューションのISOを選択してください(例: 「debian-12.9.0-amd64-netinst.iso」)
    4. タイプ: Linux
    5. バージョン: 6.x - 2.6 カーネル
    6. 次へクリックしてください
  4. システム設定を構成する: 「システム」タブにて:

    1. グラフィックカード:“デフォルト”に設定
    2. マシン: 「q35」を選択してください(これはPCIパススルーにとって非常に重要です)
    3. BIOS: 「OVMF (UEFI)」を選択してください
    4. EFIディスクを追加: このオプションをチェックします
    5. EFIストレージ:ZFSストレージプールを選択してください(例:「zfs_raid1_storage」)
    6. 事前登録されたキー: このオプションのチェックを外してください(セキュアブートが無効になります)
    7. 次へクリックしてください
  5. ディスクの設定: 「ディスク」タブで:

    1. ストレージ: ZFSストレージプールを選択してください(例: “zfs_raid1_storage”)
    2. ディスクサイズ: 「100」GBに設定
    3. 形式: qcow2
    4. 次へクリックしてください
  6. CPUの設定: 「CPU」タブで:

    1. ソケット: 1
    2. コア数: 8(ご利用可能なリソースに基づいて調整してください)
    3. タイプ:ホスト(最高のパフォーマンスのため)
    4. 次へクリックしてください
  7. メモリを設定する: 「メモリ」タブで:

    1. メモリ: 7Bパラメータモデル用に32768 MB(32GB)、または14Bパラメータモデル用に65536 MB(64GB)
    2. 次へクリックしてください
  8. ネットワークを設定する: 「ネットワーク」タブで:

    1. ブリッジ: vmbr0
    2. ファイアウォール: チェック済み(ファイアウォール保護が必要な場合)
    3. 次へクリックしてください
  9. 設定を確認: 設定を確認し、VMを作成するには「完了」をクリックしてください。
  10. VMにGPUを追加する: VMを作成した後:

    1. 左のパネルで新しく作成したVMを選択してください。
    2. 「ハードウェア」タブに移動します
    3. 「追加」をクリック → 「PCIデバイス」
    4. ドロップダウンからNVIDIA GPUを選択してください
    5. 「すべての機能」をチェックしてください(GPUとオーディオコンポーネントの両方を含む)
    6. 「PCI-Express」を確認してください(現代のGPUに必要です)
    7. 「追加」をクリックして下さい
  11. ハードウェア構成の確認: あなたのハードウェアタブには次のように表示されるはずです:

    • メモリ:あなたの割り当てられたメモリ(例:32または64 GiB)
    • プロセッサ: 設定されたCPUコア
    • BIOS: OVMF (UEFI)
    • 機械:q35
    • SCSIコントローラー: VirtIO SCSI
    • CD/DVDドライブ: あなたのDebian/Ubuntu ISO
    • ハードディスク: あなたのZFSストレージディスク(例:100G)
    • ネットワークデバイス: ブリッジを使用したvirtio
    • EFIディスク: あなたのZFSストレージEFIディスク(1MB)
    • PCIデバイス:あなたのGPU(例:0000:01:00,pcie=1)

  12. VMを起動しLinuxをインストール: 「スタート」ボタンをクリックしてVMを起動し、Linuxディストリビューションをインストールします。

ハードウェアの推奨:

  • 7Bパラメータモデル用:8以上のCPUコア、32GB RAM、8GB以上のVRAMを持つNVIDIA GPU(RTX 3060以上)
  • 14Bパラメータモデル用:12以上のCPUコア、64GB RAM、16GB以上のVRAMを持つNVIDIA GPU(RTX 3080以上)

VMにNVIDIAドライバーをインストールする

VMが稼働したら、GPUにアクセスするためにNVIDIAドライバをインストールする必要があります。

  1. 非自由および contrib リポジトリを追加する: NVIDIA ドライバーに必要なリポジトリを有効にします

    apt update
    apt install -y software-properties-common
    add-apt-repository contrib
    add-apt-repository non-free
    apt update
  2. NVIDIAドライバーとCUDAツールキットをインストールする: VMに必要なドライバーとCUDAをインストールします

    apt install -y nvidia-driver nvidia-cuda-toolkit firmware-misc-nonfree
    reboot

    VMが再起動した後、GPUが認識されていることを確認してください:

    nvidia-smi

    GPUモデル、ドライバーバージョン、その他の情報を表示する出力が表示されるはずです。

DeepSeekモデルを使用してOllamaをインストールおよび実行する

私たちのVMがGPUにアクセスできるようになったので、OllamaをインストールしてDeepSeekモデルを実行できます。

  1. Ollamaをインストール: あなたのVMにOllamaをインストールします

    curl -fsSL https://ollama.com/install.sh | sh

    インストールを確認してください:

    ollama --version
  2. DeepSeekモデルを選択して実行する: お好みのモデルをダウンロードして実行してください
    7Bパラメータモデル(速く、リソースをあまり消費しない)の場合:

    ollama pull deepseek-r1:7b
    ollama run deepseek-r1:7b

    14Bパラメータモデル(高品質でリソース集約型)のために:

    ollama pull deepseek-r1:14b
    ollama run deepseek-r1:14b

    これによりモデルがダウンロードされます(インターネット接続の速度によって時間がかかることがあります)そして、対話型チャットセッションが開始されます。7Bモデルは速度と品質の良いバランスを提供し、14Bモデルはより良い応答を提供しますが、より多くのGPUメモリが必要で、動作が遅くなります。

  3. GPU使用状況を監視する: 推論中にGPU使用状況を監視できます

    nvidia-smi -l 1

    これにより、GPUの使用状況、メモリの消費量、温度をリアルタイムで表示し、毎秒更新されます。これにより、選択したモデルサイズに対してハードウェアが十分かどうかを判断するのに役立ちます。

一般的な問題のトラブルシューティング

  1. VMでGPUが検出されない: GPUが検出されない場合

    lspci | grep NVIDIA

    GPUがリストに表示されない場合は、以下を確認してください:

  2. 1. IOMMUグループの分離
    2. GPUがホストから適切にバインド解除されたかどうか
    3. VMの構成(q35マシンタイプでUEFIである必要があります)

  3. NVIDIAドライバーの問題: ドライバーが正しく読み込まれない場合

    dmesg | grep -i nvidia

    エラーメッセージを探してください。一般的な問題には以下が含まれます:

  4. 1. セキュアブートの干渉(無効にする必要があります)
    2. 非互換のドライバーバージョン
    3. GPUが完全にパススルーされていない(ビデオとオーディオの両方の機能がパススルーされる必要があります)

結論

ProxmoxでGPUパススルーを用いてDeepSeekモデルを設定することで、最適なパフォーマンスで強力なAIモデルをローカルで実行することができます。この構成は、応答時間、プライバシー、およびAIインフラストラクチャに対する制御が改善されます。初期設定プロセスは複雑に思えるかもしれませんが、完全なGPUアクセラレーションを備えたローカルで稼働するLLMの利点は非常に大きいです。

このガイドに従うことで、バックアップ、クローン作成、移行が可能な専用AI仮想マシンを作成しました。他のProxmox VMと同様に操作できますが、高性能GPUへのアクセスを維持しています。異なるモデルサイズ(7Bまたは14B)から選択する柔軟性により、ハードウェアの能力とニーズに基づいて性能と品質のバランスを取ることができます。

私たちのテストによると、RTX 3080 GPUを搭載したシステムでは、7Bモデルが最小限のレイテンシで迅速な応答を提供し、14Bモデルは若干遅い応答時間の代わりにより高品質の出力を提供します。今後はOllamaがサポートする他のモデルを探索したり、特定の使用ケースに合わせてDeepSeekをカスタマイズしたりすることができます。

関連記事: