パイプラインとは
ファインチューニングが1回の操作で完了することは稀です。有用な結果を得るためには、適切な例を適切な形式で準備し、合理的な設定でトレーニングを行った上で、元のモデルと比較検証する必要があります。Scalataではこのプロセスを複数のステージに分割しています。各ステージは前のステージの出力を受け取り、開いて検査可能な結果を生成します。
- 01セッションチャットの選択
- 02データセットサンプルの収集
- 03プロバイダートレーニング環境
- 04データ準備クリーニング + 変換
- 05トレーニングジョブの実行
- 06評価改善の証明
- 07テストチャット自身で試行
- 08使用業務への適用
各ステージの詳細
| ステージ | 入力 | 出力 |
|---|---|---|
| セッション | Scalataでのチャット、または他のアプリからインポートされたチャット | 学習の基となる会話 |
| データセット | 選択されたチャット、合成またはインポートされた例、オプションのドキュメント、およびターゲットとして選択された返答 | 例の固定されたスナップショット |
| プロバイダー | モデルがトレーニングされ、提供される場所 | プラットフォームとそれが提供するモデル |
| データ準備 | データセットとクリーニング設定 | プロバイダーの形式に合わせてクリーニング、墨塗り、分割されたJSONLファイル |
| トレーニング | 準備されたファイル、ベースモデル、手法、および設定 | トレーニング済みモデル、その損失曲線、およびコスト |
| 評価 | トレーニング済みモデル、その元のモデル、およびホールドアウト質問 | 並べて比較された回答、判定スコア、および勝率 |
| テストチャット | トレーニング済みモデル | 対話可能な一時的なデプロイメント |
| 使用 | 評価に合格したモデル | Scalataで稼働するモデル(近日公開) |
すべてのステージが個別のレコードである理由
各ステージは、その後の作業で変更されない記録を書き出します。データセットはチャットへのリンクではなく、チャットのコピーです。データ準備では、生成された正確なファイルが保持されます。トレーニングの実行では、使用された準備データ、設定、および開始時に提示された価格が保持されます。これにより、結果の再現性が確保されます。数ヶ月後でも、どのチャット、どのクリーニング設定、どのハイパーパラメータが特定のモデルを生成したかを特定できます。また、同じ準備データからトレーニングされた2つの実行は、実際に同じデータを参照しているため、公平な比較が可能になります。
また、分岐させることも可能です。1つのデータセットを異なる設定で2回準備したり、1つの準備データから複数のモデルをトレーニングしたり、トレーニング済みの1つのモデルを別の実行の出発点として使用したりすることができます。
問題が通常発生する原因
期待外れの結果は、トレーニング設定よりも初期のステージに起因することが大半です:
- 誤った、または一貫性のないターゲット — モデルはそれらを忠実に学習します。
- 何も取り置かれていない — データ準備で何も取り置かれていないため、評価ではスキルではなく記憶力が測定されます。
- トレーニングと実際の使用との間の不一致 — 異なるシステムプロンプト、またはトレーニングのチャットとは全く異なる実際の質問。
- 複数の変更が同時に — 実行の間に複数の変更が同時に行われたため、どれが役立ったのか判断できません。
典型的な最初のプロジェクト
- セッション → データセット: 400件のサポートチャットがレビューされ、そのうち320件にターゲットとして十分な品質の回答が含まれています。
- プロバイダー → データ準備: クリーニングによりエラーの回答や重複が削除され、個人データは墨塗りされます。会話の10%は評価用のテストセットとして取り置かれ、残りの10%は検証用に保持されます。
- トレーニング: ベースラインとして、自動設定による教師ありファインチューニングを行います。
- 評価: トレーニング済みモデルとベースモデルが、取り置かれたテスト用の質問に回答します。判定者はその大部分においてトレーニング済みモデルを支持しますが、その理由から、請求に関する質問に対する弱点が浮き彫りになります。
- 次のラウンド: 請求に関するチャットをさらに新しいデータセットに追加し、サイクルを繰り返します。変更されたのは1点のみであるため、次の評価でそれが役立ったかどうかがわかります。
よくある間違い
- データセットを確認する前にトレーニング設定を調整すること。
- 同じ実行内で、データセット、準備設定、およびハイパーパラメータを変更すること。
- トレーニングの損失が減少したという理由で評価をスキップすること。
- 古い実行をアーカイブせずに削除すること。これにより、何を試してなぜ失敗したかの記録が失われます。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01Datasheets for DatasetsGebru et al., 2018 · arXiv · arxiv.orgすべてのデータセットに、その出所と作成方法の記録を添付すべき理由。
- 02Model Cards for Model ReportingMitchell et al., 2018 · arXiv · arxiv.orgトレーニング済みモデルにおける同様の考え方:何に基づいてトレーニングおよび評価されたかを文書化すること。
- 03Supervised fine-tuningOpenAI API docs · developers.openai.comホスト型プロバイダーにおける同様のパイプライン:データの準備、トレーニング、評価。
- 04Customize your model to improve its performance for your use caseAmazon Bedrock User Guide · docs.aws.amazon.com別のプロバイダーがカスタマイズジョブをどのように構成しているか。