測定結果
| 項目 | Before | After |
|---|---|---|
| パフォーマンス | Google Colab無料プラン(VRAM 15GB制限) | ローカル環境構想(VRAM 48GB、RAM 128GB) |
| コスト | 月額0円(Colab無料) + 開発時間無限 | 初期投資55万円 + 電気代月5,000円 |
| 所要時間 | 調査・実装で8時間 | |
プロジェクト概要:タクミAIの進化
前回のLLMファインチューニング実験の続き。Google Colabの無料プランでVRAM不足に直面し、「いっそ最強のローカル環境を作ろう」という野望が芽生えた1日。
今回のテーマ:
- Google Colab → OpenAI API → GGUFへの変換フロー確立
- ローカルLLM開発環境のハードウェア調査(GPU、RAM、MB選定)
- サイドクエスト:Excel注文書の自動化
技術スタック全体像
Phase 1: ファインチューニング(Google Colab)
# LoRAでELYZA-3.0-8Bをファインチューニング base_model = "elyza/Elyza-japanese-Llama-2-7b-instruct" dataset = "職人キャラクター「タクミ」の会話データ" # 学習設定 config = { "r": 8, # LoRAのランク "lora_alpha": 16, "target_modules": ["q_proj", "v_proj"], "lora_dropout": 0.05, "task_type": "CAUSAL_LM" } # 🔴 問題発生: VRAM不足(Colab無料プランは15GB制限) # 💡 解決策1: モデルを4bit量子化 → メモリ消費を1/4に削減 # 💡 解決策2: gradient_checkpointing有効化 → さらに50%削減
VRAMの限界突破テクニック:
# ❌ Before: 通常読み込み(VRAM 15GB使用 → OOM) model = AutoModelForCausalLM.from_pretrained("elyza-8b") # ✅ After: 4bit量子化(VRAM 4GB使用) from transformers import BitsAndBytesConfig bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.float16 ) model = AutoModelForCausalLM.from_pretrained( "elyza-8b", quantization_config=bnb_config, device_map="auto" )
Phase 2: API統合(Next.js + OpenAI)
// src/app/api/chat/route.ts import OpenAI from 'openai'; const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); export async function POST(request: Request) { const { message } = await request.json(); const completion = await openai.chat.completions.create({ model: "gpt-4o-mini", // 月額80円(100会話/日想定) messages: [ { role: "system", content: "お前は職人「タクミ」だ。〜だぜ、〜だな、口調で話す..." }, { role: "user", content: message } ], max_tokens: 200, temperature: 0.7, }); return Response.json({ response: completion.choices[0].message.content }); }
API統合のメリット:
- ✅ インフラ不要(サーバーレス)
- ✅ 月額80円〜(低コスト)
- ✅ GPT-4o miniの高品質出力
デメリット:
- ❌ 外部API依存(オフライン不可)
- ❌ データプライバシー懸念
- ❌ カスタマイズ性の限界
Phase 3: GGUF変換(ローカル実行用)
# 方法1: Hugging Face Hubを経由(無料) # ① LoRAアダプターをHF Hubにアップロード huggingface-cli login huggingface-cli upload my-adapter ./lora-output # ② HF Spaces(llama.cpp)でGGUF変換 # https://huggingface.co/spaces/ggml-org/gguf-my-repo # ③ 変換済みGGUFをダウンロード wget https://huggingface.co/username/model-gguf/resolve/main/model-q4_k_m.gguf
GGUF形式のメリット:
- ✅ 完全オフライン実行
- ✅ 4bit量子化で8GBモデルが2GBに圧縮
- ✅ llama.cpp/Ollamaで簡単に実行
最強ローカルLLM開発環境の研究
現状の限界
現在のPC:
- CPU: Snapdragon X Elite(ARM)
- RAM: 16GB
- GPU: Adreno GPU
問題点:
- ❌ CUDA非対応(NVIDIAが必須)
- ❌ RAM不足(70Bモデルには128GB必要)
- ❌ ARM環境(PyTorch/LlamaIndexの互換性に難)
ハードウェア調査結果
🏆 最強コスパ構成(予算: 約55万円)
| パーツ | 仕様 | 価格 | 理由 | |--------|------|------|------| | GPU | RTX 3090 24GB × 2枚(中古) | 28万円 | VRAM 48GB、70Bモデルを4bit量子化で実行可能 | | RAM | DDR4 3200MHz 128GB | 6万円 | モデルマージ、GGUF変換時に必要 | | CPU | AMD Ryzen 9 7900X | 6万円 | 12コア、TDP 170W | | MB | ASUS TUF X670E-PLUS | 4.5万円 | PCIe 5.0 x16 × 2(デュアルGPU対応) | | SSD | PCIe 4.0 NVMe 2TB | 2.5万円 | データセット保存用 | | PSU | 1200W 80PLUS Platinum | 3万円 | デュアルGPUの消費電力対応 | | その他 | ケース + 冷却 | 5万円 | エアフロー重視 | | 合計 | - | 55万円 | - |
💎 究極性能構成(予算: 約140万円)
| パーツ | 仕様 | 価格 | 理由 | |--------|------|------|------| | GPU | RTX 4090 24GB × 2枚(新品) | 70万円 | RTX 3090比で1.5倍高速、消費電力-20% | | RAM | DDR5 5200MHz 192GB | 18万円 | 大規模モデルのマージ対応 | | CPU | AMD Ryzen 9 7950X | 8万円 | 16コア、最高性能 | | その他 | - | 44万円 | - | | 合計 | - | 140万円 | - |
🔬 プロ向け構成(予算: 約200万円)
| パーツ | 仕様 | 価格 | 理由 | |--------|------|------|------| | GPU | NVIDIA RTX 6000 Ada 48GB × 2枚 | 180万円 | VRAM 96GB、24時間稼働保証 | | RAM | 256GB ECC | - | エラー訂正メモリ | | その他 | - | 20万円 | - | | 合計 | - | 200万円 | - |
🔍 NVLinkは必要か?
従来の認識:
「デュアルGPUならNVLink必須(VRAM統合のため)」
2025年の現実:
- ✅ PyTorch FSDP(Fully Sharded Data Parallel)がNVLink不要に
- ✅ DeepSpeed ZeRO-3も同様にPCIe経由で効率的
- ✅ NVLinkは「あれば便利」程度(必須ではない)
結論: 中古RTX 3090のコスパが圧倒的(NVLink対応だが無くても可)
📊 RAM要件(重要)
| モデルサイズ | 推奨RAM | 用途 | |--------------|---------|------| | 7B | 16GB | 実験・学習 | | 13B | 32GB | 中規模開発 | | 30B | 64GB | 大規模開発 | | 70B | 128GB | プロダクション |
⚠️ 注意: モデルマージ時はさらに2倍必要
- 例: 70Bモデルをマージ → 256GB RAM必要
💻 OS選択: Windows WSL2 vs Linux
| OS | 性能 | メリット | デメリット | |----|------|----------|-----------| | Linux Ubuntu 22.04 LTS | 100%(ベースライン) | ドライバ安定、コミュニティ大 | GUI不慣れ、ゲーム不可 | | Windows 11 + WSL2 | 99%(ほぼ同等) | 普段使いと両立、VS Code統合 | CUDA設定が若干複雑 |
結論: WSL2で十分(性能差1%は誤差範囲)
サイドプロジェクト: Excel自動化
背景
「工事注文書_本格版.xlsx」の改善依頼。手作業で毎回フォーマットを整えるのが面倒。
実装: openpyxl + pandas
from openpyxl import load_workbook from openpyxl.styles import Font, Alignment, PatternFill wb = load_workbook('工事注文書_本格版.xlsx') ws = wb.active # 自動計算式を挿入 ws['F20'] = '=C20*E20' # 金額 = 数量 × 単価 ws['F36'] = '=SUM(F20:F34)' # 小計 ws['F37'] = '=ROUNDDOWN(F36*0.1,0)' # 消費税10% ws['F38'] = '=F36+F37' # 合計 # 色分け header_fill = PatternFill(start_color='D9E1F2', end_color='D9E1F2', fill_type='solid') total_fill = PatternFill(start_color='FFF2CC', end_color='FFF2CC', fill_type='solid') ws['A5'].fill = header_fill # ヘッダー部分 ws['F38'].fill = total_fill # 合計金額 # イワサキ内装の情報を事前入力 ws['B6'] = 'イワサキ内装' ws['B7'] = '東京都江東区' wb.save('工事注文書_改善版.xlsx')
結果:
- ✅ 手入力が50%削減
- ✅ 計算ミス防止
- ✅ 見やすいレイアウト
技術的学びとGGUF変換の選択肢
GGUF変換方法の比較
| 方法 | 難易度 | 費用 | 時間 | メリット | |------|--------|------|------|----------| | Hugging Face Spaces | ⭐ 簡単 | 無料 | 10分 | GUI操作、初心者向け | | ローカルllama.cpp | ⭐⭐⭐ 難 | 無料 | 30分 | カスタマイズ性高 | | 有料変換サービス | ⭐ 簡単 | $5〜 | 5分 | 最速、サポート有 |
ハードウェア選定の教訓
- GPU: 中古RTX 3090が最強コスパ(新品4090の1/2.5価格で80%性能)
- RAM: 128GB以上必須(70Bモデル運用の最低ライン)
- NVLink: 2025年時点では「あれば便利」程度(必須ではない)
次のステップ
短期(1週間以内)
- ✅ Google ColabでLoRA学習完了
- ✅ OpenAI API統合完了
- ⏳ GGUF変換(HF Hub経由)
- ⏳ Ollamaでローカル実行テスト
中期(1ヶ月以内)
- ⏳ 中古RTX 3090を2枚購入(予算28万円)
- ⏳ ローカル開発環境セットアップ
- ⏳ 70Bモデルでファインチューニング実験
長期(3ヶ月以内)
- ⏳ Buildeeプロジェクトへの統合
- ⏳ 職人向けAIアシスタントのプロダクト化
- ⏳ 論文執筆(「中小企業におけるローカルLLM活用事例」)
まとめ
今回の一番の学びは、「ローカルLLM開発は想像以上にハードウェア投資が必要」 という現実。
主な発見:
- Google Colabの無料プランは「実験」までが限界
- プロダクション運用にはVRAM 48GB+、RAM 128GB+が必要
- 中古RTX 3090が2025年時点で最強コスパ
- NVLinkは2025年では必須ではない(FSDP、DeepSpeed対応)
そして意外な発見は、Excel自動化がめちゃくちゃ楽しい こと。openpyxlでビジネス文書を自動生成できると、事務作業の効率が劇的に改善される。
「AIで世界を変える」とか大きなビジョンも大事だけど、こういう地味な自動化の積み重ねが、実は一番インパクトがあるのかもしれない。
参考資料:
コード例
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model
# 4bit量子化設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16
)
# モデル読み込み(VRAM 4GB)
model = AutoModelForCausalLM.from_pretrained(
"elyza/Elyza-japanese-Llama-2-7b-instruct",
quantization_config=bnb_config,
device_map="auto"
)
# LoRA設定
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)Google Colab無料プランでもVRAM 15GB以内に収める4bit量子化 + LoRA学習の設定
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
wb = load_workbook('工事注文書_本格版.xlsx')
ws = wb.active
# 自動計算式
ws['F20'] = '=C20*E20' # 金額 = 数量 × 単価
ws['F36'] = '=SUM(F20:F34)' # 小計
ws['F37'] = '=ROUNDDOWN(F36*0.1,0)' # 消費税10%
# 会社情報事前入力
ws['B6'] = 'イワサキ内装'
ws['B7'] = '東京都江東区'
wb.save('工事注文書_改善版.xlsx')Excel注文書の自動化。計算式と会社情報を事前入力することで手作業を50%削減
失敗した試み
- ✗Colab無料プランで70Bモデルを直接学習 → VRAM不足でOOM
- ✗NVLinkなしでデュアルGPUは不可能と思い込んでいた → 実は不要
- ✗ARM CPUでもPyTorchは動くと期待 → CUDA非対応で断念
未解決の課題
- ⚠ローカル環境の初期投資をどう捻出するか(55万円)
- ⚠GGUF変換後のモデル品質検証方法
- ⚠Excel自動化のさらなる展開(見積書、請求書など)
AI生成コンテンツについて
この記事は、AI(Claude、ChatGPT等)によって生成されたコンテンツです。 経営者とAIの実際の対話を元に作成していますが、技術的な内容には誤りが含まれる可能性があります。
重要な決定をされる際は、専門家にご相談されることをお勧めします。 また、記事の内容について疑問がある場合は、お気軽にお問い合わせください。
