Skip to content

モデルのファインチューニングとデプロイメント

はじめに

大規模モデルは強力ですが、あなたのビジネスを理解していません。 GPT-4は詩を書いたりコードを書いたりできますが、あなたの会社の製品用語や、あなたの業界の専門基準を知りません。ファインチューニングは、汎用大規模モデルにあなたの専門知識を「学習」させるプロセスです — 博識なゼネラリストにオンザジョブトレーニングを提供し、あなたのドメインのエキスパートにするようなものです。

この記事で何を学べるか?

この章を終えると、以下のことが身につきます:

  • プロセスの理解:データの準備からモデルの本番稼働までの完全なファインチューニングパイプラインの習得
  • データエンジニアリング:ファインチューニングデータのフォーマット要件と品質基準の理解
  • 効率的なファインチューニング:LoRAなどのパラメータ効率的ファインチューニング技術の原理と利点の理解
  • モデル圧縮:量子化技術がどのように大規模モデルをコンシューマーハードウェアで実行可能にするかの習得
  • デプロイメントの実践:モデルサービングの主流アーキテクチャと選択戦略の理解
内容コア概念
第1章ファインチューニングパイプラインデータ → 訓練 → 評価 → デプロイメント
第2章訓練データデータフォーマット、品質管理
第3章LoRAファインチューニング低ランク適応、パラメータ効率
第4章モデルの量子化FP16、INT8、INT4
第5章モデルデプロイメント推論サービング、APIゲートウェイ

0. 概要:なぜファインチューニングが必要なのか?

大規模言語モデルの訓練は2つのフェーズに分けられます:事前訓練ファインチューニングです。事前訓練は膨大な汎用データから言語能力を学習し、ファインチューニングは特定タスクのデータから専門能力を学習します。

例えで言えば:事前訓練は大学に行くようなもので — 教養知識を学び、何でも少しずつ理解します。ファインチューニングはオンボーディングトレーニングのようなもので — 特定の職位に向けた専門スキルを学びます。

ファインチューニングはいつ必要か?

  • 特定の出力フォーマット:モデルに常に固定のJSONフォーマットで出力させる必要がある場合
  • 専門ドメインの知識:医療、法律、金融などのドメインの専門用語と規格
  • 言語スタイルの転送:モデルに特定のトーンやスタイルで回答させる(例:カスタマーサービスのスクリプト)
  • ニッチな言語サポート:特定の言語でのモデルのパフォーマンスを向上させる
  • コスト最適化:ファインチューニングされた小規模モデルで大規模モデルのAPI呼び出しを置き換え、推論コストを削減する

1. ファインチューニングパイプライン:データから本番稼働までの完全な旅

ファインチューニングは「データをモデルに投げて終わり」ではありません。すべてのステップが最終結果に影響する厳格なエンジニアリングプロセスです。

微调流水线演示

点击每个阶段,了解微调的完整流程

🧠
选择基座模型
📊
准备训练数据
⚙️
执行微调训练
📈
评估与测试
🚀
部署上线
🧠 选择基座模型

微调的第一步是选择一个合适的预训练基座模型。基座模型已经在海量数据上学习了通用的语言能力,我们要做的是在此基础上进行"专业化训练"。

1根据任务需求选择模型规模(7B、13B、70B 等)
2考虑开源许可证(Apache 2.0、Llama 许可等)
3评估模型的基础能力是否匹配目标场景
4常见选择:Llama、Qwen、Mistral、DeepSeek 等
示例
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-7B")
1 / 5

ファインチューニングの5つの段階

  1. データ準備:訓練データの収集、クリーニング、アノテーション — 最も時間がかかり、最も重要なステップ
  2. モデル選択:適切なベースモデル(Llama 3、Qwen、Mistralなど)の選択
  3. 訓練設定:学習率、バッチサイズ、エポック数などのハイパーパラメータの設定
  4. 訓練の実行:GPUで訓練を実行し、lossカーブと評価指標をモニタリング
  5. 評価とデプロイ:テストセットでパフォーマンスを評価し、合格したらAPIサービスとしてデプロイ
段階主要なアクションよくある落とし穴
データ準備クリーニング、重複除去、フォーマットデータ品質が低いとモデルが「悪い習慣」を学ぶ
モデル選択ベースモデルの能力を評価モデルが大きすぎて訓練できない、または小さすぎて効果が悪い
訓練設定ハイパーパラメータの調整学習率が高すぎると破滅的忘却を引き起こす
訓練の実行lossと指標のモニタリング過学習、訓練が収束しない
評価とデプロイA/Bテスト、段階的ロールアウトテストセットの漏洩による評価指標の水増し

2. 訓練データ:ファインチューニング効果の天井

ファインチューニングには古い格言があります:「Garbage in, garbage out(ゴミを入れればゴミが出る)」。訓練データの品質がファインチューニングの効果の上限を直接決定します。100件の高品質データは、多くの場合10,000件の低品質データを上回ります。

训练数据格式演示

切换不同格式,了解微调数据的组织方式

指令跟随

最常见的微调数据格式。每条数据包含一个指令(instruction)、可选的输入(input)和期望的输出(output)。适合训练通用助手类模型。

通用助手ChatGPT 风格最常用
数据样例
"instruction": "请将以下中文翻译成英文"
"input": "人工智能正在改变世界"
"output": "AI is changing the world"
数据质量要点
指令要清晰明确,避免歧义
输出要完整、准确、格式规范
覆盖多种任务类型(翻译、摘要、问答等)
数据量建议:1,000 ~ 50,000 条

ファインチューニングデータの3つの一般的なフォーマット

  1. 指示フォーマット(Instruction):最も一般的に使用されるフォーマット。instruction(指示)、input(入力)、output(期待される出力)の3つのフィールドを含みます。モデルに指示に従うことを訓練するのに適しています。
  2. チャットフォーマット(Chat):system、user、assistantのロールを持つメッセージリストを含むマルチターン会話フォーマット。チャットボットの訓練に適しています。
  3. 補完フォーマット(Completion):シンプルなprompt-completionペア。テキスト生成、コード補完などのシナリオに適しています。

3. LoRA:パラメータの1%で成果の90%を実現

フルファインチューニングはモデルの全パラメータを更新する必要があります — 70Bパラメータのモデルの場合、数百GBのVRAMと大量のGPUコンピューティング能力が必要です。ほとんどのチームにとって、これは非現実的です。

LoRA(Low-Rank Adaptation)はエレガントなソリューションを提供します:元のモデルパラメータを凍結し、新しく追加された低ランク行列の小さなセットのみを訓練します。 これらの行列は通常、元のモデルの0.1%~1%のパラメータしか持ちませんが、フルファインチューニングに近い結果を達成できます。

LoRA 低秩适配原理演示

理解 LoRA 如何用极少参数实现高效微调

原始权重 W
4096x4096
16,777,216 参数
冻结不动
+
LoRA 适配器
A
4096x8
x
B
8x4096
65,536 参数
可训练
参数节省比例
节省 99.6% 参数
秩越小 = 参数越少、训练越快秩越大 = 表达力越强、效果越好

LoRAのコアアイデア

元のモデルの重み行列Wは巨大な行列(例:4096×4096)です。LoRAはWを直接変更するのではなく、その横に「バイパス」を追加します:W' = W + BA。ここでBとAは2つの小さな行列(例:4096×8と8×4096)です。訓練中はBとAのみが更新され、元のWは変更されません。

  • ランク(Rank):rの値が大きいほど表現力が強くなりますが、パラメータ数も増えます。通常r=8~64で十分です
  • デプロイ時のマージ:訓練完了後、BAをWにマージでき、推論時の追加オーバーヘッドはゼロです

4. モデルの量子化:大規模モデルの「スリム化」

70BパラメータのモデルをFP32(32ビット浮動小数点)で保存する場合、280GBのVRAMが必要です — トップクラスのGPUが数枚なければ実行できません。量子化技術は数値精度を下げることでモデルサイズを圧縮し、大規模モデルをコンシューマーハードウェアで実行可能にします。

模型量化演示

拖动滑块,直观感受不同精度下的模型体积、速度与质量变化

FP32
32 bit
FP16
16 bit
INT8
8 bit
INT4
4 bit
💾
模型体积
~28 GB (7B 模型)
推理速度
1x (基准)
🎯
输出质量
100% (无损)
🖥️
显存需求
~32 GB
FP32 详解

FP32(32位浮点数)是模型训练时的默认精度。每个参数用 32 位存储,精度最高但体积最大。通常只在训练阶段使用,推理时很少直接使用 FP32。

单个参数存储示意
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
每个参数占用 32 位 = 4 字节
适用场景:模型训练、科研实验、精度敏感的任务

量子化のコアとなるトレードオフ

量子化は根本的に精度とスペースの交換です。FP32 → FP16はほぼ無損失、INT8はわずかな損失、INT4は顕著だが通常は許容可能な品質低下があります。重要なのは、あなたのシナリオでの最適なバランスポイントを見つけることです。

  • FP16(半精度):サイズが半分になり、品質はほぼ無損失。訓練と推論のデフォルト選択
  • INT8(8ビット整数):サイズがさらに半分になり、品質の損失は最小限。ほとんどの推論シナリオに適しています
  • INT4(4ビット整数):FP32の1/8のサイズで、ある程度の品質損失あり。リソースが限られたシナリオに適しています

5. モデルデプロイメント:研究所から本番環境へ

モデルの訓練が完了し、量子化・圧縮された後の最後のステップは、呼び出し可能なサービスとしてデプロイすることです。モデルデプロイメントは単に「モデルを実行する」だけでなく、同時実行処理、負荷分散、コスト管理などのエンジニアリングの問題も含みます。

模型服务架构演示

点击不同部署方案,对比其特点与适用场景

🌐
API 服务
最常见的在线部署方式
📱
边缘部署
在终端设备上本地运行
📦
批量处理
离线批量推理大量数据
🌐API 服务

将模型封装为 RESTful API 或 gRPC 服务,通过 HTTP 请求调用。适合需要实时响应的在线应用,如聊天机器人、智能客服、内容生成等。是目前最主流的部署方式。

架构流程
客户端请求
负载均衡
推理服务器
GPU 推理
返回结果
响应延迟
100ms - 2s
并发能力
高(可水平扩展)
部署成本
中高(需 GPU 服务器)
运维复杂度
中等
常用工具
vLLMTGITritonFastAPIOllama

3つの主流デプロイメントソリューション

  1. APIサービスプロバイダー:OpenAI、AnthropicなどのプロバイダーのAPIを直接使用。運用不要、トークン単位の課金、迅速な検証や中小規模の使用に適しています。
  2. セルフホスト推論:vLLMやTGIなどのフレームワークを使用して、自分のGPUサーバーにデプロイ。コストが管理可能、データがオンプレミスに留まる、プライバシー要件がある、または大規模な呼び出しがあるシナリオに適しています。
  3. サーバーレス推論:AWS SageMakerやReplicateなどのプラットフォームを使用し、リクエスト単位の課金で自動スケーリング。トラフィックの変動が大きいシナリオに適しています。

まとめ

モデルのファインチューニングとデプロイメントは、大規模モデルを「汎用ツール」から「専門アシスタント」に変える重要なステップです。データの準備からモデルのデプロイまで、すべてのステップでエンジニアリングの思考と実践が必要です。

この章の重要なポイントの振り返り:

  1. ファインチューニングはオンザジョブトレーニング:汎用モデルに特定ドメインの知識と行動パターンを学習させる
  2. データ品質が上限を決める:100件の高品質データが10,000件の低品質データに勝る
  3. LoRAは効率の王様:パラメータの1%未満でフルファインチューニングに近い結果を実現
  4. 量子化はデプロイメントの武器:INT4量子化により、70BモデルのシングルGPUでの実行が可能に
  5. デプロイメントソリューションはシナリオ次第:迅速な検証にはAPI、大規模にはセルフホスト、変動の大きい場合にはサーバーレス

参考資料