たびとの旅路 ~電脳砂漠の冒険譚~

フロッピー頼りに歩き、クラウドの地平を見つめる今日まで。見つけたオアシス、迷い込んだ砂の迷宮、全てこの羊皮紙に。

GPUで目覚める日本語の賢者 ~Swallow-13B、27倍速の錬金術~

ゴーレム(PC)創造の旅を終えた私は、次なる挑戦に向かった。この鉄の器に、真の知性を宿す時が来たのだ。

最終目標は、Swallow-8x7Bという巨大な賢者を、このゴーレムに宿すこと。だが、その前に環境が正しく整っているかを確かめねばならない。そこで、Swallow-13Bという日本語に長けた賢者を召喚し、GPUの魔力が正しく機能するかを検証する。これは、本番への準備運動であり、環境構築の完成を証明する儀式でもある。

WSL2という仮想砂漠(Linuxの仮想環境)の中で、CUDAというGPUの魔力を解き放ち、Pythonという古の言語で対話の呪文を紡ぐ。全ての準備が整った時、賢者は目覚め、問いかけに約1秒で答え始める。この速度こそが、環境が完璧に整った証だ。

この旅路で最も驚くべき発見がある。事前にビルドされた神器と、自ら錬成した神器では、推論速度に約14倍もの差が生まれるのだ。この秘密を知らぬまま旅を続ける者は、本来の力の7%しか引き出せぬまま、途方に暮れることになるだろう。

この羊皮紙のあらまし

この羊皮紙が導く者

  • ローカルでLLMを動かしたい探求者
  • WSL2 + CUDA環境構築に挑む技術者
  • GPU環境が正しく動作するか検証したい開発者
  • Swallow-8x7B環境構築への準備をしたい実務家

砂漠の道標

  • GPU - グラフィックス処理装置。AIの計算を高速化。
  • WSL2 - Windows上でLinuxを動かす仮想環境。
  • CUDA - NVIDIAのGPUを制御する技術。
  • LLM - 大規模言語モデル。文章を理解し生成するAI。
  • Swallow-13B - 日本語AI。今回の環境検証に使用。
  • Swallow-8x7B - より大規模な日本語AI。最終目標。
  • Python - プログラミング言語。
  • RAG - AIに特定の知識を参照させる技術。

仮想砂漠の準備 ~WSL2という小さな世界~

ゴーレムの心臓部を見極める

前回の旅で、初期不良という災厄を経験した私は、慎重になっていた。RTX 5070 Tiには、96個のROPs(Render Output Units)という描画の門が宿っている。この数を確認することで、ゴーレムの心臓部(GPU)が正常に機能しているかを見極められる。

TechPowerUp GPU-Zという診断の水晶を用いて、その真価を確かめよう。

GPU-Zによる RTX 5070Ti の ROPs 数値表示画面

診断の水晶が映し出す、心臓部の真の姿

96という数字が表示されれば、心臓部は正常だ。この確認を終えてから、次の工程に進む。それが、災厄を経験した者の知恵である。

門番の召喚と更新 ~Windows側の準備~

仮想砂漠でCUDAの魔力を解き放つ前に、Windows側の門番(ドライバー)を最新の状態にしなければならない。

GeForce Experienceという自動化の神器のダウンロードボタンを押すと、NVIDIAアプリのページへと導かれる。この新しい管理台をインストールしよう。

NVIDIAドライバーダウンロードページの画面

自動化の神器への入口

NVIDIAアプリ(NVIDIA App)を起動し、ドライバーのタブを選択する。ここに二種類の門番が存在する。Game Readyドライバーは戦闘に特化し、Studioドライバーは創造に最適化されている。我々の旅路には、Studioドライバーこそが相応しい。

NVIDIAアプリでStudioドライバーを選択する画面

創造者の門番を選ぶ瞬間

カスタムインストールを選択し、クリーンインストールを実行する。これは、古き門番の痕跡を完全に消し去り、新たな門番を清らかに迎え入れる儀式だ。

クリーンインストールオプションを選択する画面

清めの儀式を執り行う

この儀式が完了すれば、Windows側の準備は整う。次は、仮想砂漠の中でCUDAの魔力を召喚する番だ。

仮想世界の創造

Windows上に、Linuxという別世界を創造する。それがWSL2(Windows Subsystem for Linux 2)だ。Ubuntu 24.04.1 LTSという安定した大地を選び、この上に全ての工房を築く。

まず、ビルド環境という基礎工事が必要だ。

sudo apt-get update
sudo apt-get install -y build-essential cmake

この基礎工事が完了すれば、次はCUDAという魔力を召喚する番だ。

魔力の錬成 ~CUDA環境の構築~

CUDAとは、NVIDIAが創り出した、GPUの魔力を解き放つ呪文体系である。バージョン13.0を召喚する。

既存の古いCUDAを完全に削除し、WSL2専用のリポジトリを追加する。そして、Toolkitをインストールし、環境変数という道標を設定する。

# 環境変数の設定
echo 'export PATH=/usr/local/cuda-13.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-13.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

動作確認は、簡単なC++の呪文で行う。Hello from GPU!という言葉がターミナルに現れた時、魔力の錬成は成功だ。

CUDA環境構築の全コマンドと詳細手順は、たびとのアトリエ(GitHub)に記録してある。

賢者の工房 ~Python環境の創造~

Pythonという古の言語で賢者と対話するため、専用の工房を創造する。Miniforgeという知恵の泉(Python環境管理ツール)を召喚し、その上にai_envという名の作業場を築く。

# Miniforge召喚
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh

# 工房の創造
mamba create -n ai_env python=3.12 -y
mamba activate ai_env

Miniforgeには、mambaという高速な神器が最初から宿っている。これを使い、必要な道具を揃えていく。

神器の召喚 ~驚異の速度差を生む秘密~

ここで、最も重要な発見を記す。

AIライブラリをインストールする方法は二つある。一つは、事前にビルドされたものを受け取る方法。もう一つは、自らの環境で錬成する方法だ。

推論速度の実測値:

インストール方法 推論時間 速度比
CPU版のみ 約20秒 1x
事前ビルド版 約10秒 2x
ソースビルド版 約0.7秒 約27x

なぜこれほどの差が生まれるのか。事前ビルド版は、様々な環境で動作するよう汎用的に作られている。だが、自らの環境で錬成すれば、RTX 5070 Tiという特定のGPUに最適化される。Compute Capability 12.0という最新の魔力体系に完全対応し、真の力を引き出せるのだ。

ソースビルド版のインストール呪文は、こうだ:

# NumPy制約ファイルの作成
cat > /tmp/constraints.txt << 'EOF'
numpy>=1.20,<2.0
EOF

# CUDA対応版をソースからビルド
CMAKE_ARGS="-DGGML_CUDA=on" uv pip install llama-cpp-python \
  --force-reinstall --no-cache-dir --constraint /tmp/constraints.txt

constraints.txtという制約を設けることで、NumPy 2.x問題も同時に解決する。完璧な錬成だ。

その他の神器も、mambaで召喚する:

mamba install -y faiss-gpu pytorch torchvision torchaudio
mamba install -y langchain-community sentence-transformers gradio

環境検証の儀式 ~Swallow-13Bの覚醒~

準備が整った。環境が正しく構築されたかを検証するため、Swallow-13Bという日本語の賢者を召喚する。

# モデルのダウンロード
wget https://huggingface.co/mmnga/tokyotech-llm-Swallow-13b-instruct-v0.1-gguf/resolve/main/tokyotech-llm-Swallow-13b-instruct-v0.1-Q4_K_M.gguf

RAG(Retrieval-Augmented Generation)という知識の泉を準備する。rag.txtという古文書に、賢者が参照すべき知識を記す。

そして、対話の呪文(swallow-13b.py)を詠唱する。Gradioという水晶玉を通じて、賢者との対話が始まる。

python swallow-13b.py

画面にURIが表示されたら、Ctrlキーを押しながらマウスでクリックする。ブラウザに水晶玉(Web UI)が現れ、賢者への問いかけを入力する窓が開く。

WSL2ターミナルでSwallow-13Bを実行している画面

賢者召喚の儀式が完了した瞬間

問いかけを入力すると、GPUの魔力により驚異的な速度で賢者が答えを返す。短い回答なら0.3秒以内、標準的な回答でも1秒以内、詳細な説明でも1.4秒程度だ。回答の長さによって秒数は変動するが、この速度こそ、ソースビルド版の真価である。

特筆すべきは、2回目以降の問いかけでは、RAGシステムのコンテキストがキャッシュされ、さらに高速化される点だ。この最適化により、対話が進むほど快適になっていく。

Gradio UIで質問と回答が表示されている画面

水晶玉に映る、賢者の言葉

この速度で動作すれば、環境は完璧だ。次なる旅、Swallow-8x7Bという巨大な賢者の召喚に進む準備が整った。

次回ログイン時の儀式

一度工房を離れ、再び戻る時は、環境を再構築する必要がある。

source ~/miniforge3/bin/activate
eval "$(mamba shell hook --shell bash)"
mamba activate ai_env

この呪文を唱えれば、ai_env工房が再び目覚める。

羊皮紙を巻く前に

ローカルでLLMを動かすという旅路は、単なる技術的挑戦ではない。クラウドに依存せず、自らの手元で知性体を創造し、対話する。それは、真の意味での自由な探求である。

今回の検証では、CPU版と比較して約27倍の高速化を達成した。短い回答なら0.3秒、標準的な回答でも1秒以内。この速度があってこそ、ローカルLLMは実用的な「対話」となる。

最も重要な教訓は、「事前ビルド版」と「ソースビルド版」の速度差だ。今回の実測では約14倍の差が確認され、開発効率、コスト、実験サイクルの全てに影響する。この知識があるかないかで、旅の質が根本的に変わる。

Swallow-13Bという日本語賢者との対話で、環境が完璧に整ったことを確認できた。次なる挑戦、Swallow-8x7Bという更に巨大な知性体の召喚へ、私は進む。完璧な工房は、完璧な準備と、秘伝の知識によってのみ完成する。

ああ、そういえば、賢者との対話は予想以上に自然だった。日本語で問いかけ、日本語で答えが返る。その速度は驚異的で、その精度は実用的だ。電脳砂漠に、また一つ、確かなオアシスが生まれた。

砂漠で見つけた魔法のランプ

ラクダの独り言

ご主人が今度は、電気仕掛けの箱に向かって「検証だ」とか言ってる。本番は別にあるらしいが、結局は機械相手の独り言だろうよ。俺様は黙って荷物を運ぶだけで、砂漠中のどこへでも連れて行けるってのによ。それに、本番がどうだろうと、電気が切れたら全部おしまいだ。まあ、ご主人が楽しそうだから、検証だろうが本番だろうが、好きにすればいいさ。