Mosaic AI モデル トレーニングの API を使用してトレーニングの実行を作成する
重要
この機能は、次のリージョンでパブリック プレビュー段階です: centralus
、eastus
、eastus2
、northcentralus
、westus
この記事では、Mozaic AI モデル トレーニング (旧称 Foundation Model Training) の API を使ってトレーニングの実行を作成および構成する方法と、API 呼び出しで使用されるすべてのパラメーターについて説明します。 UI を使用して実行を作成することもできます。 手順については、「Mosaic AI モデル トレーニングの UI を使用してトレーニングの実行を作成する」を参照してください。
要件
「 要件」を参照してください。
トレーニングの実行を作成する
プログラムでトレーニングの実行を作成するには、create()
関数を使用します。 この関数では、指定されたデータセットのモデルをトレーニングし、最終的な Composer チェックポイントを推論用の Hugging Face 形式のチェックポイントに変換します。
必要な入力は、トレーニングするモデル、トレーニング データセットの場所、モデルを登録する場所です。 また、評価を実行し、実行のハイパーパラメーターを変更できる省略可能なパラメーターもあります。
実行が完了すると、完了した実行と最終チェックポイントが保存され、モデルがクローンされ、そのクローンが推論用のモデル バージョンとして Unity Catalog に登録されます。
(Unity Catalog 内のクローンされたモデル バージョンではなく) 完了した実行のモデルと Composer チェックポイントと Hugging Face チェックポイントが MLflow に保存されます。 Composer チェックポイントは、継続的な微調整タスクに使用できます。
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
)
トレーニングの実行を構成する
次の表は、関数のパラメーターを 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 ファイルのフォルダーです。 受け入れられるデータ形式については「Mosaic AI モデル トレーニング用にデータを準備する」を、推奨されるデータ サイズについては「モデル トレーニングの推奨されるデータ サイズ」を参照してください。 |
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_path と同じ形式に従う必要があります。 |
|
eval_prompts |
List[str] | 評価中に応答を生成するプロンプト文字列の一覧。 既定値は None (プロンプトを生成しない) です。 モデルがチェックポイント処理されるたびに、結果が実験に記録されます。 次の生成パラメーターを持つすべてのモデル チェックポイントで生成が行われます: max_new_tokens: 100 、temperature: 1 、top_k: 50 、top_p: 0.95 、do_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 |
Boolean | トレーニング ジョブを送信する前に、入力パスへのアクセスを検証するかどうか。 既定値は True です。 |
カスタム モデルの重みを基にする
モザイク AI モデル トレーニングでは、オプションのパラメーター custom_weights_path
を使用してモデルのトレーニングとカスタマイズを行うカスタムウェイトの追加がサポートされています。
開始するには、前のトレーニング実行の Composer チェックポイント パスに設定custom_weights_path
します。 チェックポイント パスは、前の MLflow 実行の [成果物 ] タブにあります。 チェックポイント フォルダー名は、特定のスナップショットのバッチとエポックに対応します。次に例を示 ep29-ba30/
します。
- 前回の実行の最新のチェックポイントを指定するには、Composer チェックポイントに設定
custom_weights_path
します。 たとえば、custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink
のようにします。 - 以前のチェックポイントを指定するには、目的のチェックポイントに対応するファイルを
.distcp
含むフォルダーへのパスに設定custom_weights_path
します (例custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#
: .
次に、渡したmodel
custom_weights_path
チェックポイントの基本モデルと一致するようにパラメーターを更新します。
次の例 ift-meta-llama-3-1-70b-instruct-ohugkq
では、微調整を行う前の meta-llama/Meta-Llama-3.1-70B
実行です。 最新のチェックポイントift-meta-llama-3-1-70b-instruct-ohugkq
を微調整するには、次のように変数とcustom_weights_path
変数をmodel
設定します。
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 を取得するには:
Databricks ワークスペースの左側のナビゲーション バーで、[コンピューティング] をクリックします。
テーブルで、クラスターの名前をクリックします。
右上隅にある [] をクリックし、ドロップダウン メニューから [JSON の表示] を選択します。
クラスター JSON ファイルが表示されます。 ファイルの最初の行であるクラスター ID をコピーします。
実行の状態を取得する
実行の進行状況は、Databricks UI の実験ページまたは API コマンド get_events()
を使用して追跡できます。 詳細については、「Mosaic AI モデル トレーニングの実行を表示、管理、分析する」を参照してください。
get_events()
からの出力例:
実験ページのサンプルの実行の詳細:
次のステップ
トレーニングの実行が完了した後、MLflow でメトリックを確認し、推論のためにモデルをデプロイできます。 「チュートリアル: Mosaic AI モデル トレーニングの実行を作成してデプロイする」の手順 5 から 7 を参照してください。
データの準備、トレーニング実行の構成のファインチューニング、デプロイの手順を示す手順ファインチューニングの例については、「手順ファインチューニング: 固有表現認識」デモ ノートブックを参照してください。
ノートブックの例
次のノートブックは、Meta Llama 3.1 405B Instruct モデルを使用して合成データを生成し、そのデータを使用してモデルをファインチューニングする方法の例を示しています。