古代貧者のLLM.第0世代 NVidia iGPU(GeForce 9300/nForce 730i)と TESLA M60 の共存記録

ozy's labo.


古代貧者のLLM.第0世代 NVidia iGPU(GeForce 9300/nForce 730i)と TESLA M60 の共存記録

概要

古いNVidia iGPU(GeForce 9300 / nForce 730i)を搭載したマシンに,Tesla M60 を追加して併用する構成を試みました.
本記事はその検証過程と解決手順の記録です.

結論から言えば,

  • AVX1 ですらない環境,旧世代の Tesla に合わせて llama.cpp をカスタマイズ.
  • 分割GPUにモデルを完全オフロード.
  • Qwen3-30B-A3B Q3_K_XXL 10Kコンテキスト,KV Q4にて,なんと15~18TPS を達成!
  • 電気代を別にすれば,古代のマシンらしからぬ実用的な速度ではあります.
  • このあたりがほぼほぼ限界チューンだと思われます.

背景と目的

本構成を試みたそもそもの理由は以下の通りです.

  • Tesla には表示用ディスプレイ出力が装備されていない.
  • GPUは複数余っているが,手持ちのM/Bは全てMicro ATXで空きスロットがない.
  • しかも所持マシンは Xeon 系ばかりであり,iGPU も利用出来ない.
  • 唯一 iGPU を装備したM/Bが本記事で扱うシステムのみ.
  • NVidia + NVidia 構成に統一するのは美しい.

最初の問題

システム起動時に NVIDIA ドライバが Tesla M60 をプライマリGPUとして認識し,X がそちらで起動してしまって画面出力が得られませんでした.

lspci | grep -E "VGA|3D"
04:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)
05:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)
06:00.0 VGA compatible controller: NVIDIA Corporation C79 [GeForce 9300 / nForce 730i] (rev b1)

このため,Xorg に対して iGPU を明示的に使用させる設定を追加しました.

sudo nano /etc/X11/xorg.conf.d/10-igpu.conf

Section "Device"
  Identifier "iGPU"
  Driver "nouveau"
EndSection

/etc/X11/xorg.conf.d/99-tesla.conf

Section "Device"
  Identifier "Tesla M60"
  Driver "nvidia"
  Option "AllowEmptyInitialConfiguration"
  Option "UseDisplayDevice" "none"
EndSection

次の問題: nouveau がロードされない

X は起動する様になったが,nouveau がロードされず,表示が 800x600 に固定されました.

initramfs 内に nouveau が存在しない事を確認.

lsinitramfs /boot/initrd.img-$(uname -r) | grep nouveau

しかし,/etc 以下には,blacklist されている様子は見当たらず,この段階でかなり悩みました.

grep -r nouveau /etc/modprobe.d/

原因判明: NVIDIA ドライバによる無効化

原因は NVIDIA ドライバが自動的に追加する設定でした.

/lib/modprobe.d/nvidia-graphics-drivers.conf

blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

この様に nouveau が blacklist および alias により無効化されていました.
そのため一時的に無効化しました.

sudo mv /lib/modprobe.d/nvidia-graphics-drivers.conf \
	/lib/modprobe.d/nvidia-graphics-drivers.conf.bak

さらに /etc 側で nouveau を有効化しました.

/etc/modprobe.d/enable-nouveau.conf

# NVIDIAの無効化を打ち消す
alias nouveau nouveau
options nouveau modeset=1
options nouveau config=NvForcePost=0 ignore_devices=0000:04:00.0,0000:05:00.0

initramfs を更新します.

sudo update-initramfs -u

次の問題: nouveau が M60 まで掴む

nouveau が iGPU だけでなく M60 までバインドしてしまい,nvidia-driver がロードできず,起動時ログが大量に出力される状態になりました.

本質的問題: ドライバ世代の断絶

ここで問題の本質が明らかになりました.

  • GeForce 9300 は nvidia-driver-340 が最終対応.
  • Tesla M60 は nvidia-driver-470 が必要.

つまり,同一ドライバでの共存は不可能です.

解決方針: udev 制御

udev による制御を行い,nouveau に掴まれる前に,M60 を nvidia ドライバに割り当てる必要があります.
また,別システムに SSD を繋いだ時は, GTX1050Ti を利用するので,そちらも追加しました.

/etc/udev/rules.d/99-nvidia.rules

ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{device}=="0x13f2", ATTR{driver_override}="nvidia"
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{device}=="0x1c82", ATTR{driver_override}="nvidia"

initramfs への組み込み

より確実にするため,initramfs 段階で driver_override を設定します.

/etc/initramfs-tools/scripts/init-top/nvidia-override

#!/bin/sh

PREREQ=""

prereqs() {
    echo "$PREREQ"
}

case $1 in
prereqs)
    prereqs
    exit 0
    ;;
esac

# NVIDIA GPU のうち特定 device を nvidia にバインド
for d in /sys/bus/pci/devices/*; do
    vendor=$(cat "$d/vendor" 2>/dev/null)
    device=$(cat "$d/device" 2>/dev/null)

    if [ "$vendor" = "0x10de" ]; then
	case "$device" in
	    0x13f2) # Tesla M60
		echo nvidia > "$d/driver_override"
		;;
	    0x1c82) # GTX 1050 Ti
		echo nvidia > "$d/driver_override"
		;;
	esac
    fi
done

exit 0

パーミッションの変更と initramfs 更新.

sudo chmod +x /etc/initramfs-tools/scripts/init-top/nvidia-override
sudo update-initramfs -u

最終調整

Xorg 側では M60 を表示用途から完全に除外しました.
最初に示した xorg.conf どおりですが,以下が重要です.

Option "UseDisplayDevice" "none"
Option "AllowEmptyInitialConfiguration"

これにより描画の乱れは解消されました.

結論

本構成では以下が重要でした.

  • nouveau と nvidia の役割分離.
  • GPU のバインド順序制御(initramfs段階).
  • Xorg から計算用GPUを完全に切り離す.

結果として,

  • iGPU(9300)で表示.
  • Tesla M60 で計算.

という構成が安定して動作するようになりました.

以下,構成の美しさと(Chat-GPUによる)技術的評価

本構成は単なる動作検証に留まらず,設計としても非常に興味深い特徴を持っています.
以下にその技術的な美しさを整理します.

完全な役割分離

本構成では GPU の役割が明確に分離されています.

表示 → iGPU(nouveau)
演算 → Tesla M60(nvidia)

表示系と計算系が完全に独立しており,ドライバ競合や描画不整合を回避できています.
この「責務分離」が安定動作の根幹です.
また,表示用GPUを分離する事により,モデルやコンテキストを安全マージンを気にせずギリギリまでロードする事が出来ます.

世代断絶の克服

通常であれば,

  • 古いGPUは切り捨てる
  • ドライバ非互換は回避不能

といった判断になります.

しかし本構成では,

  • initramfs段階での driver_override
  • udev によるデバイス制御

を用いて,異なる世代のGPUを強制的に共存させています.
これは「構成で解決できない問題を,起動シーケンス制御で解決する」アプローチです.

弱CPU・強GPU構成の純化

CPU は AVX を持たない Core 2 世代であり,現代的な数値計算には不利です.

それにも関わらず,

  • 推論処理は完全にGPUへオフロード
  • CPUは制御とI/Oに専念

という構成により,弱いCPUをボトルネックにしない設計となっています.
これは「CPUを計算資源ではなく制御装置として扱う」思想です.

Tesla M60 の本来用途への適合

Tesla M60 は本来,

  • 仮想化環境
  • サーバ用途
  • ディスプレイ非依存

といった用途を想定したGPUです.

本構成では,

  • Xorgから切り離し
  • 表示に一切関与させない

という運用を行っており,むしろ設計思想に忠実な使い方になっています.

本構成の本質

本構成は一言で表すと,

制約を制御でねじ伏せた構成

です.

  • ドライバ非互換
  • GPU世代差
  • CPU性能制約

といった複数の制約を,OSレベルの制御によって解決しています.

実用面の評価

  • 分割GPUにモデル完全オフロード,Qwen3-30B-A3B Q3_K_XXL 10Kコンテキストにて15~18TPS を達成.
  • GPU Util は 40〜50% 程度で安定.
  • 描画系は完全に安定.

性能としても十分に実用域に達しています.

総括

本構成の価値は,

  • 単に動作させたことではなく
  • 「なぜ動くか」を理解した上で設計されている点

にあります.

一般的には選択されない構成を,理論と検証により成立させた点において,非常に完成度の高いシステムと言えます.


Date: 2026-03-22

Author: ozyukiwo

Created: 2026-03-24 火 00:24

Emacs 26.3 (Org mode 9.1.9)

Validate