Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ローカルLLMでファインチューニング

 ローカルLLMでファインチューニング

機械学習の社会実装勉強会第48回 (https://machine-learning-workshop.connpass.com/event/358793/) の発表資料です。

More Decks by 西岡 賢一郎 (Kenichiro Nishioka)

Other Decks in Technology

Transcript

  1. 📋 アジェンダ Fine-tuningとは何か? 1 Ollamaの誤解を解く 2 できること・できないこと 3 Fine-tuningの実際 4

    実演デモ 5 Ollamaで使うまでの手順 6 検証結果と現実 7 必要なリソースと実用化の現実 8 実践的なアプローチ 9 まとめとQ&A 10 LLM Fine-tuning 実践ガイド
  2. プロンプトエンジニアリング vs Fine-tuning 項目 プロンプトエンジニアリング Fine-tuning 学習 既存知識の活用のみ 新しい知識を学習可能 コスト

    無料・即座に実行 GPU必要・時間がかかる 効果 限定的(表面的な調整) 根本的な動作変更可能 データ量 数個の例で可能 最低50-100サンプル必要 💡 具体例 プロンプト:「カスタマーサポートとして回答して」 → 一般的な回答しかできない Fine-tuning:自社の具体的な返品ポリシー、価格表を学習 → 「14日間返品無料、送料は¥500」など具体的に回答 1. Fine-tuningとは何か? LLM Fine-tuning 実践ガイド
  3. なぜOllamaでFine-tuningができないのか? 1.  設計思想の違い Ollama = モデルを「動かす」ためのツール Fine-tuning = モデルを「訓練する」プロセス

     Ollama Architecture Design 2.  技術的制限 OllamaはGGUF形式(実行用)を使用 Fine-tuningはPyTorch形式(訓練用)が必要  GGUF Format Guide 3.  リソースの違い Ollama:CPUでも動作、軽量 Fine-tuning:GPU必須、大量メモリ  Ollama & Fine-tuning Resource Requirements  Ollamaは実行フレームワークであり、微調整(Fine-tuning)を直接サポートしていません。Fine-tuningには専用の訓練環境が必要です。 2. Ollamaの誤解を解く LLM Fine-tuning 実践ガイド
  4. ✅ Ollamaでできること 事前に用意された様々なモデルを実行する Modelfileでシステムプロンプトを設定 パラメータ調整(temperature等) CPU/GPUでの効率的な推論 API経由でのアプリケーション連携 FROM llama3.2:1b SYSTEM

    "あなたはカスタマーサポートです" PARAMETER temperature 0.7 ❌ Ollamaでできないこと モデルの重み(パラメータ)の更新 新しい知識を学習させる 自社独自データでの訓練 学習された応答パターンの変更 根本的な動作の改善  重要: ModelfileのSYSTEMは単なるプロンプト設定であり、モデル の学習やパラメータ更新は行われません 技術的制限の背景 設計思想の違い Ollama = モデルを「動かす」ためのツール Fine-tuning = モデルを「訓練する」プロセス ファイル形式の違い Ollama = GGUF形式(実行用) Fine-tuning = PyTorch形式(訓練用) 必要リソースの違い Ollama = CPUでも実行可能・軽量 Fine-tuning = GPU必須・大量メモリ必要 参照情報  Ollama Architecture Guide  GGUF Format Guide  Ollama Modelfile Documentation 2. Ollamaでできること・できないこと LLM Fine-tuning 実践ガイド
  5. Fine-tuningワークフロー  訓練データ準備   PyTorch/HF で Fine-tuning  

    LoRAアダプター作成   モデルマージ   GGUF形式に変換   量子化 (オプション) 必要なツール 1. 訓練フェーズ PyTorch:深層学習フレームワーク Hugging Face Transformers:事前学習モデ ル PEFT(LoRA):効率的な訓練手法 2. 変換フェーズ llama.cpp:GGUF変換ツール 量子化ツール:ファイルサイズ削減 3. 実行フェーズ Ollama:最終的な実行環境 訓練データの形式 { "instruction": "配送料について教えてください", "output": "配送料は以下の通りです:\n- 通常配送:¥500\n- 5,000円以上:送料無料\n- 速達:¥800" }  ポイント:具体的な数値、ルールを含むデータが重要 3. Fine-tuningの実際 LLM Fine-tuning 実践ガイド
  6. TinyLlama Fine-tuning実行 # Fine-tuning実行 python scripts/tinyllama_fine_tuning.py 実行ログ例: 使用デバイス: mps trainable

    params: 2,359,296 || all params: 1,102,885,120 訓練時間: 0:00:40.123456 効果の検証 # 検証スクリプト実行 python verify_tinyllama_finetuning.py Before(ベースモデル): Q: What are the shipping costs? A: I do not have access to specific shipping rates... (一般的で曖昧な回答) After(Fine-tuned): Q: What are the shipping costs? A: Shipping costs vary depending on your location... (やや改善されたが、具体的な価格は学習されず) 🔍 重要な観察ポイント  部分的な改善 回答の構造は改善、しかし具体的な情報($6.99など)は学習されない  データ量の影響 10サンプルでは限界あり、実用レベルには100+サンプル必要 4. Fine-tuning実演デモ LLM Fine-tuning 実践ガイド
  7. 完全なワークフロー 1 Fine-tuningでPyTorch形式保存 2 LoRAアダプターをマージ 3 GGUF形式に変換 4 量子化(オプション) 5

    Modelfile作成&モデル登録 6 実行! 量子化レベルの比較 量子化レベル サイズ 品質 推奨用途 F16(なし) 6GB 最高 開発・検証 Q8_0 3.2GB ほぼ同等 高品質要求時 Q4_K_M 1.8GB 実用十分 本番環境(推奨) Q2_K 1.1GB 低下 メモリ制限時のみ コマンド例 # 1. Fine-tuning(PyTorch形式で出力) python scripts/qwen_fine_tuning.py # → 出力:./finetuned_qwen2.5_model/ # 2. LoRAアダプターをマージ python merge_qwen_model.py # → 出力:./merged_qwen2.5_model/ # 3. GGUF形式に変換 python convert-hf-to-gguf.py merged_qwen2.5_model \ --outfile qwen-f16.gguf --outtype f16 # → 出力:qwen-f16.gguf (6GB) # 4. 量子化(オプション) llama-quantize qwen-f16.gguf qwen-q4.gguf Q4_K_M # → 出力:qwen-q4.gguf (1.8GB) # 5. Modelfile作成 cat > Modelfile << EOF FROM ./qwen-q4.gguf SYSTEM "You are a helpful customer support." EOF # 6. Ollamaモデル作成と実行 ollama create my-support -f Modelfile ollama run my-support "配送料はいくらですか?" 5. Ollamaで使うまでの手順 LLM Fine-tuning 実践ガイド
  8. 実測パフォーマンス分析 モデル データ数 訓練時間 効果 実用性 TinyLlama 1.1B 10 40秒

    △ 検証用のみ Gemma3 1B 10 27秒 △ 実験用 Qwen2.5 3B 10 62秒 ◦ 限定的に実用可 Qwen2.5 3B 100+ 10分 ◎ 実用レベル  パラメータ数と訓練データ量の両方が効果に大きく影響。同じモデル(Qwen2.5)でもデータ量を増やすことで実用レベルに到達。 学習効果の詳細分析 ✅ 学習された要素  回答の基本構造  カスタマーサポートらしいトーン  質問への対応パターン  一般的な文章構成能力 ❌ 学習されなかった要素  具体的な価格($6.99 → 学習されず)  詳細な返品ポリシー(14日間 → 言及なし)  箇条書きなどの構造化フォーマット  商品コードや型番の正確な参照  データ構造の重要性: 具体的な数値やルールは反復回数が多くないと学習されにくい傾向。同じ情報が複数の文脈で出現するデータセット設計が効果的。 6. 検証結果と現実 LLM Fine-tuning 実践ガイド
  9.  最小限の実験 データ量: 10-20サンプル 所要時間: 5〜10分程度 効果: 限定的(基本パターンのみ) リソース: Google

    Colab無料枠 (T4) 適用範囲: 初期検証・コンセプト実証  Fine-tuning with Small Data  実用レベル データ量: 100-500サンプル 所要時間: 10-30分(モデルサイズによる) 効果: 実用的(具体的知識習得) リソース: A10 GPU (T4の約2倍性能) 適用範囲: 業務利用・特定ドメイン対応  GPU Performance Comparison  本格運用 データ量: 1000+サンプル 所要時間: 1-6時間(データ量による) 効果: 高品質(詳細知識と高応答力) リソース: A100/H100 GPU (生産性2倍) 適用範囲: プロダクション・複合タスク  H100/A100 Performance Comparison 🔍 実用化へのポイント 実用段階(100-500サンプル)でも十分な効果が得られることが多く、データの質(具体的な数値や特殊用語の含有率)がデータ量よりも重要なケースもあります。投資効果を最 大化するには、小規模から始めて段階的に拡大するアプローチが推奨されます。  データ量と効果の関係性分析 $ クラウドGPU料金比較  訓練時間の見積方法 7. 必要なリソースと実用化の現実 LLM Fine-tuning 実践ガイド
  10. 推奨される段階的アプローチ  Fine-tuningが適している場合  プロンプトで十分な場合 8. 実践的なアプローチ 1 プロンプトエンジニアリング コスト:¥0、時間:即座

    2 Few-shot学習 コスト:¥0、時間:数分 3 小規模Fine-tuning コスト:低、時間:1時間 4 大規模Fine-tuning コスト:高、時間:数時間 ドメイン固有の知識が必要 一貫したフォーマットが重要 大量の反復タスク プロンプトでは限界がある 一般的なタスク 少量の処理 頻繁に要件が変わる 即座に結果が必要 LLM Fine-tuning 実践ガイド
  11. 重要ポイント  Fine-tuningは強力だが、魔法の杖ではない - データ量と品質が鍵  OllamaとFine-tuningは別物 - Ollama:実行環境、Fine-tuning:訓練プロセス 参照

     段階的アプローチが現実的 - まずプロンプトで試し、必要に応じてFine-tuning  変換プロセスを理解する - PyTorch → GGUF → Ollama、量子化でバランス よくある質問 Q: GPUは必須ですか? A: Mac(Apple Silicon)やCPUでも可能ですが、GPUがあれば10倍以上高速です。 最初の実験はGoogle Colabでも十分です。 Colab例 Q: 日本語のFine-tuningは可能ですか? A: 可能です。ただし日本語対応モデルを選び(Qwen、Command-Rなど)、英語 よりも多くのデータが必要です。トークナイザーの設定にも注意。 Qwen Q: コストはどのくらいかかりますか? A: ローカル実行なら無料です。クラウドGPU使用時は小規模モデルで数ドル、大規 模モデルで数十ドル程度かかりますが、プロバイダや利用状況により変動します。 GPU料金比較 Q: 量子化で品質はどの程度落ちますか? A: Q4_K_Mなら実用上問題ありません。心配なら最初はF16で試してください。 量 子化比較 Q: Fine-tuningしたモデルの配布は可能ですか? A: 技術的には可能ですが、元モデルのライセンスと訓練データの権利も考慮する必 要があります。GGUFファイルを共有すればOKです。 ライセンス解説 9. まとめ & Q&A LLM Fine-tuning 実践ガイド