メインコンテンツまでスキップ

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

備考

プレビュー

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

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

必要条件

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

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

トレーニングの実行をプログラムで作成するには、 create() 関数を使用します。この関数は、指定されたデータセットでモデルをトレーニングし、トレーニングされたモデルを推論用に保存します。

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

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

Unity Catalog のクローン作成されたモデル バージョン ではなく 、完了した実行のモデルが MLflow に保存されます。チェックポイントは、継続的なファインチューニング タスクに使用できます。

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

Python
from databricks.model_training import foundation_model as fm

run = fm.create(
model='meta-llama/Llama-3.2-3B-Instruct',
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

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

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で、選択したモデルの元の事前学習済み重みから実行が開始されます。カスタムの重みが指定されている場合、モデルの元の事前トレーニング済みの重みの代わりに、これらの重みが使用されます。これらのウエイトは、ファインチューニング APIによって製造され、指定された model のアーキテクチャと一致している必要があります。 「カスタムモデルの重みに基づいて構築する」を参照してください。 注: 2025 年 3 月 26 日より前にモデルをトレーニングした場合、それらのモデル チェックポイントから継続的にトレーニングすることはできなくなります。以前に完了したトレーニングの実行は、プロビジョニングされたスループットで問題なく提供できます。

training_duration

str

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

learning_rate

str

モデル トレーニングの学習率。 すべてのモデルは、学習率のウォームアップを使用して AdamW オプティマイザーを使用してトレーニングされます。デフォルトの学習率はモデルによって異なる場合があります。ハイパーパラメータ スイープを実行して、さまざまな学習率とトレーニング期間を試し、最高品質のモデルを取得することをお勧めします。

context_length

str

データサンプルのシーケンスの最大長です。これは、長すぎるデータを切り捨て、効率を上げるために短いシーケンスをまとめてパッケージ化するために使用されます。 デフォルトは、8192 トークンまたは指定されたモデルの最大コンテキスト長のいずれか小さい方です。 このパラメーターを使用してコンテキストの長さを構成できますが、各モデルの最大コンテキスト長を超えて構成することはサポートされていません。 各モデルでサポートされるコンテキストの最大長については、「 サポートされるモデル 」を参照してください。

validate_inputs

ブール値

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

カスタムモデルの重みに基づいて構築する

注: 2025 年 3 月 26 日より前にモデルをトレーニングした場合、それらのモデル チェックポイントから継続的にトレーニングすることはできなくなります。以前に完了したトレーニングの実行は、プロビジョニングされたスループットで問題なく提供できます。

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

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

以前のMLflow実行の[アーティファクト]タブ

  • 前回の実行から最新のチェックポイントを取得するには、 を custom_weights_path をファインチューニング APIによって生成されたチェックポイントに設定します。たとえば、 custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink.
  • 以前のチェックポイントを提供するには、custom_weights_pathcustom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba# など、目的のチェックポイントに対応する .distcp ファイルを含むフォルダーへのパスに設定します。

次に、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 変数を次のように設定します。

Python
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 Instructノートブックを使用して合成データを生成する

Open notebook in new tab

追加のリソース