llama.cpp ネイティブ環境構築とTesla V100フル稼働の記録
Ollamaのようなラッパー(ブラックボックス)を排除し、C/C++ネイティブの llama.cpp をソースからビルドして、Tesla V100(32GB)の性能を限界まで引き出す。エッジAI・組み込みAIの基礎になる「量子化」や「ローレベルな推論制御」を自分の手で握るためのベース環境を作った記録。
前提環境
- OS: Ubuntu Server(Proxmox VM101)
- GPU: NVIDIA Tesla V100(VRAM 32GB)
- 目的: AIのアーキテクチャ階層を直接操作し、フィジカルAI・エージェントAIの基盤技術(量子化・推論制御)を検証する
1. 依存関係とCUDA Toolkitの導入
C++ソースからGPU用プログラムをコンパイルするため、ビルドツールとCUDA Toolkit(nvcc等)を導入する。
# ビルドツールと依存ライブラリ
sudo apt update
sudo apt install build-essential cmake git -y
# CUDA Toolkit(nvccコンパイラ等)
sudo apt install nvidia-cuda-toolkit -y
# 確認(バージョンが出ればOK)
nvcc --version2. llama.cpp のクローンとビルド
公式リポジトリを取得し、CUDA(GPU高速化)を有効化してネイティブバイナリをコンパイルする。
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# CUDA有効化 + 全コアでビルド
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j$(nproc)ビルド成功後、build/bin/ に推論エンジン llama-cli が生成される。
3. モデルのダウンロード(Hugging Face CLI)
URLのリダイレクトやリンク切れを避けるため、pipx でHugging Face公式のダウンローダーを導入して取得する。
# pipx と Hugging Face CLI
sudo apt install pipx -y
pipx install huggingface_hub[cli]
pipx ensurepath
source ~/.bashrc
# GGUFモデル(Qwen2.5 7B の 4bit量子化版)を取得
hf download bartowski/Qwen2.5-7B-Instruct-GGUF Qwen2.5-7B-Instruct-Q4_K_M.gguf --local-dir models/4. 推論の実行(V100フル稼働テスト)
GPUレイヤーのオフロードを最大化して推論する。
./build/bin/llama-cli \
-m models/Qwen2.5-7B-Instruct-Q4_K_M.gguf \
-p "AIのアーキテクチャについて、技術的な視点で短く語ってください。" \
-n 400 -c 4096 -ngl 99主なパラメータ:
-m: モデルファイル(GGUF)のパス-p: プロンプト-n 400: 最大生成トークン数(無限生成の防止)-c 4096: コンテキストサイズ。大きくするとVRAM消費が増える-ngl 99: GPUオフロード層数。99のように大きな値で全レイヤーをV100のVRAMに載せきり、最高速(約108 tokens/s)を記録した
まとめ
ラッパーを介さずソースからビルドすることで、量子化・KVキャッシュ・GPUオフロードといった推論の低レベル制御を自分で握れるようになった。この環境が、以降の自作量子化やマルチエージェント基盤の土台になる。