基盤モデル ファインチューニング API を使用してトレーニング 実行を作成する

プレビュー

この機能はus-east-1us-west-2パブリックプレビュー段階です。

この記事では、基盤モデル ファインチューニング (現在は Mosaic AI Model トレーニングの一部) APIを使用してトレーニング実行を作成および構成する方法と、 API 呼び出しで使用されるすべてのパラメーターについて説明します。 UI を使用して実行を作成することもできます。 手順については、「 基盤モデル ファインチューニング UI を使用してトレーニング 実行を作成する」を参照してください。

要件

要件を参照してください。

トレーニング実行を作成する

プログラムでトレーニング実行を作成するには、create()関数を使用します。この関数は、提供されたデータセットでモデルをトレーニングするし、最終的なComposerチェックポイントを推論用のHugging Faceのチェックポイントに変換します。

必要な入力は、トレーニングするモデル、トレーニング データセットの場所、およびモデルを登録する場所です。 また、評価を実行し、実行のハイパーパラメータを変更できるオプションのパラメータもあります。

実行が完了すると、完了した実行と最終チェックポイントが保存され、モデルがクローン化され、そのクローンが推論用のモデルバージョンとしてUnity Catalogに登録されます。

Unity Catalogのクローンモデルバージョンではなく、完了したランのモデルと、そのコンポーザーとHugging FaceのチェックポイントがMLflowに保存されます。コンポーザーチェックポイントは、継続的な微調整タスクに使用できます。

create()関数の引数の詳細については、トレーニング実行の構成を参照してください。

from databricks.model_training import foundation_model as fm

run = fm.create(
  model='meta-llama/Llama-2-7b-chat-hf',
  train_data_path='dbfs:/Volumes/main/mydirectory/ift/train.jsonl', # UC Volume with JSONL formatted data
  # Public HF dataset is also supported
  # train_data_path='mosaicml/dolly_hhrlhf/train'
  register_to='main.mydirectory', # UC catalog and schema to register the model to
)

トレーニング実行を構成する

次の表は、 foundation_model.create() 関数のパラメーターをまとめたものです。

パラメーター

必須

タイプ

説明

model

x

str

使用するモデルの名前。サポートされているモデルを参照してください。

train_data_path

x

str

トレーニングデータの場所。これは、Unity Catalog内( <catalog>.<schema>.<table>またはdbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl )、またはHuggingFaceデータセットの場所にすることができます。

INSTRUCTION_FINETUNEの場合、各行にpromptフィールドとresponseフィールドが含まれるようにデータをフォーマットする必要があります。

CONTINUED_PRETRAINの場合、これは.txtファイルのフォルダです。受け入れられるデータ形式については「 基盤モデルのファインチューニングのためのデータの準備 」を、データ サイズの推奨事項については「 モデル トレーニングの推奨データ サイズ 」を参照してください。

register_to

x

str

簡単にデプロイできるようにトレーニング後にモデルが登録されるUnity Catalogカタログとスキーマ(<catalog>.<schema>または<catalog>.<schema>.<custom-name> )。custom-nameが指定されていない場合は、デフォルトで実行名が使用されます。

data_prep_cluster_id

str

Sparkデータ処理に使用するクラスターのクラスターID。これは、学習用データがDeltaテーブルにある教師ありトレーニングタスクに必要です。クラスターIDの見つけ方については、クラスターIDの取得を参照してください。

experiment_path

str

トレーニング実行出力(メトリクスとチェックポイント)が保存されるMLflowエクスペリメントへのパス。デフォルトは、ユーザーの個人ワークスペース内の実行名(つまり/Users/<username>/<run_name>です)。

task_type

str

実行するタスクのタイプ。INSTRUCTION_FINETUNE(デフォルト)、CHAT_COMPLETION、またはCONTINUED_PRETRAINになります。

eval_data_path

str

評価データのリモートロケーション(存在する場合)。train_data_path0}と同じ形式に従わなければなりません。

eval_prompts

リスト[str]

評価中に応答を生成するためのプロンプト文字列のリスト。デフォルトはNone(プロンプトを生成しない)です。モデルがチェックポイントされるたびに、結果がエクスペリメントに記録されます。生成は、次の生成パラメーターを使用して、すべてのモデルチェックポイントで発生します:max_new_tokens: 100temperature: 1top_k: 50top_p: 0.95do_sample: true

custom_weights_path

str

トレーニング用のカスタムモデルチェックポイントのリモートロケーション。 デフォルトは Noneで、選択したモデルの元の事前学習済み重みから実行が開始されます。 カスタムの重みが指定されている場合、モデルの元の事前トレーニング済みの重みの代わりに、これらの重みが使用されます。 これらのウェイトは Composer チェックポイントである必要があり、指定した model のアーキテクチャと一致する必要があります。 「カスタムモデルの重みに基づいて構築する」を参照してください

training_duration

str

実行の合計時間。デフォルトは1エポックまたは1epです。エポック(10ep)またはトークン(1000000tok)で指定できます。

learning_rate

str

モデル トレーニングの学習率。 Llama 3.1 405B Instruct以外のすべてのモデルでは、デフォルトの学習率は 5e-7です。 Llama 3.1 405B Instructの場合、デフォルトの学習率は 1.0e-5です。 オプティマイザは DecoupledLionW で、ベータは 0.99 と 0.95 で、ウェイト減衰はありません。 学習率スケジューラは LinearWithWarmupSchedule で、ウォームアップは合計トレーニング時間の 2% で、最終学習率乗数は 0 です。

context_length

str

データサンプルのシーケンスの最大長です。これは、長すぎるデータを切り捨て、効率を上げるために短いシーケンスをまとめてパッケージ化するために使用されます。

デフォルトは8192トークンか、提供されたモデルのコンテキストの最大長のどちらか低い方です。このパラメーターを使用してコンテキスト長を設定できますが、各モデルの最大コンテキスト長を超える設定はサポートされていません。各モデルでサポートされる最大コンテキスト長については、「サポートされるモデル」を参照してください。

validate_inputs

ブール値

トレーニングジョブを送信する前に入力パスへのアクセスを検証するかどうか。デフォルトはTrueです。

カスタムモデルの加重を構築する

基盤モデル ファインチューニングは、オプションのパラメーター custom_weights_path を使用してモデルのトレーニングとカスタマイズにカスタム重みを追加することをサポートしています。

開始するには、 custom_weights_path を以前のトレーニング実行の Composer チェックポイント パスに設定します。 チェックポイント パスは、以前のMLflow 実行の アーティファクト タブにあります。チェックポイント・フォルダ名は、特定のスナップショットのバッチとエポックに対応します ( ep29-ba30/など)。

以前のMLflow実行の[アーティファクト]タブ
  • 前回の実行から最新のチェックポイントを指定するには、 custom_weights_path を Composer チェックポイントに設定します。 たとえば、 custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink.

  • 以前のチェックポイントを指定するには、目的のチェックポイントに対応する.distcpファイルを含むフォルダへのパス ( custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#など) を custom_weights_path に設定します。

次に、custom_weights_pathに渡したチェックポイントの基本モデルと一致するようにmodelパラメーターを更新します。

次の例では、 ift-meta-llama-3-1-70b-instruct-ohugkq を微調整する前の実行 meta-llama/Meta-Llama-3.1-70Bです。 ift-meta-llama-3-1-70b-instruct-ohugkqから最新のチェックポイントを微調整するには、model 変数と custom_weights_path 変数を次のように設定します。

from databricks.model_training import foundation_model as fm

run = fm.create(
model = 'meta-llama/Meta-Llama-3.1-70B'
custom_weights_path = 'dbfs:/databricks/mlflow-tracking/2948323364469837/d4cd1fcac71b4fb4ae42878cb81d8def/artifacts/ift-meta-llama-3-1-70b-instruct-ohugkq/checkpoints/latest-sharded-rank0.symlink'
... ## other parameters for your fine-tuning run

)

ファインチューニング 実行で他のパラメーターを構成する方法については、「 トレーニング 実行の構成 」を参照してください。

クラスターIDを取得する

クラスター ID を取得するには:

  1. Databricksワークスペースの左側のナビゲーションバーで、[コンピュート]をクリックします。

  2. テーブルで、クラスタリングの名前をクリックします。

  3. 右上隅にある詳細ボタンをクリックしてドロップダウンメニューからJSONの表示を選択します。

  4. クラスタリングJSONファイルが表示されます。ファイルの最初の行にあるクラスタリングIDをコピーします。

    ClusterID

実行のステータスを取得する

実行の進行状況は、 Databricks UI のエクスペリメント ページまたは API コマンド get_events()を使用して追跡できます。 詳細については 、基盤モデル ファインチューニング 実行の表示、管理、および分析を参照してください。

get_events()からの出力例:

API を使用して実行ステータスを取得する

サンプル実行の詳細はエクスペリメントページをご覧ください:

エクスペリメントUI から実行状態を取得する

次のステップ

トレーニング 実行が完了したら、 MLflow でメトリクスを確認し、推論のためにモデルをデプロイできます。 チュートリアル: 基盤モデル ファインチューニング 実行の作成とデプロイのステップ 5 から 7 を参照してください。

データの準備、微調整トレーニング実行設定、およびデプロイメントを説明する指示を微調整の例については、指示を微調整:エンティティを識別できる名前デモノートブックを参照してください。

ノートブックの例

次のノートブックは、Meta Llama 3.1 405B Instruct モデルを使用して合成データを生成し、そのデータを使用してモデルを微調整する方法の例を示しています。

Llama 3.1 405B 指示ノートブックを使用して合成データを生成する

ノートブックを新しいタブで開く