共用方式為


使用基礎模型微調 API 建立訓練運行

重要

這項功能在下列區域開放公開預覽centraluseastuseastus2northcentraluswestus

本文說明如何使用基礎模型微調(現在是馬賽克 AI 模型訓練的一部分)API 來建立和設定定型執行,並描述 API 呼叫中使用的所有參數。 您也可以使用 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-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 字串 要使用的模型名稱。 請參閱支援的模型
train_data_path x 字串 你的訓練資料的位置。 這可以是 Unity 目錄 (<catalog>.<schema>.<table>dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl] 或 HuggingFace 數據集中的位置。
針對 INSTRUCTION_FINETUNE,資料應該格式化為每一列包含 promptresponse 欄位。
若為 CONTINUED_PRETRAIN,這是 .txt 檔案的資料夾。 請參閱 基礎模型微調準備資料 以了解可接受的數據格式,以及 模型訓練建議數據大小 以獲取數據大小建議。
register_to x 字串 Unity Catalog 的目錄和結構(<catalog>.<schema><catalog>.<schema>.<custom-name>),模型會在訓練後註冊,以方便部署。 如果未定義 custom-name,則預設為回合名稱。
data_prep_cluster_id 字串 用於 Spark 資料處理之叢集的叢集 ID。 這是訓練指導工作所必需的,其中訓練數據位於 Delta 表中。 如需如何尋找叢集標識符的資訊,請參閱 取得叢集標識碼
experiment_path 字串 MLflow 實驗中儲存訓練過程輸出(指標和檢查點)的路徑。 默認為使用者個人工作區內的執行名稱(亦即 /Users/<username>/<run_name>)。
task_type 字串 要執行的工作類型。 可以是 CHAT_COMPLETION (預設值)、CONTINUED_PRETRAININSTRUCTION_FINETUNE
eval_data_path 字串 評估資料的遠端位置 (如果有)。 必須遵循與 train_data_path 相同的格式。
eval_prompts List[str] 在評估期間用來產生回應的提示字串列表。 預設值為 None (不會產生提示)。 每次模型進行檢查點時,結果都會記錄到實驗中。 每一個模型檢查點都有下列產生參數:max_new_tokens: 100temperature: 1top_k: 50top_p: 0.95do_sample: true
custom_weights_path 字串 用於訓練之自訂模型檢查點的遠端位置。 預設值為 None,這表示運行會從所選模型的初始預先訓練權重開始。 如果提供自訂權數,則會使用這些權數,而不是模型的原始預先訓練權數。 這些權重必須是 Composer 的檢查點,並且必須符合 model 所指定的架構。 請參閱 建置自定義模型權數
training_duration 字串 您跑步的總時長。 預設值為一個時期或1ep。 可以在 Epoch (10ep) 或權杖 (1000000tok) 中指定。
learning_rate 字串 模型訓練的學習速率。 對於 Llama 3.1 405B Instruct 以外的所有模型,預設學習速率為 5e-7。 對於 Llama 3.1 405B Instruct,預設學習速率為 1.0e-5。 最佳化器是 DecoupledLionW,beta 參數設定為 0.99 和 0.95,且不使用權重衰減。 學習速率排程器是 LinearWithWarmupSchedule,熱身階段佔總訓練持續時間 2%,最後學習速率乘數為 0。
context_length 字串 資料範例的序列長度上限。 這可用來截斷任何太長的資料,並將較短的序列封裝在一起,提高效率。
預設值為 8192 個標記,或所提供模型的最大內容長度,以較小者為準。 您可以使用這個參數設定內容長度,但不支援超出每個模型內容長度上限的設定。 如需每個模型支援的內容長度上限,請參閱支援的模型
validate_inputs 布林值 是否要在送交訓練工作之前,驗證輸入路徑的存取權。 預設值為 True

以自訂模型權數為基礎建置

基礎模型微調支援使用選擇性參數 custom_weights_path 來新增自定義權數,以定型和自定義模型。

若要開始使用,請將 custom_weights_path 設定為先前訓練過程的 Composer 檢查點路徑。 您可以在先前 MLflow 執行的 [成品] 索引標籤中找到檢查點路徑。 檢查點資料夾名稱會對應到特定快照的批次和 Epoch,例如 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
  • 若要提供先前的檢查點,請將 custom_weights_path 設定為包含對應至所需檢查點之 .distcp 檔案的資料夾路徑,例如 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的最新檢查點,請設定 modelcustom_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:

  1. 在 Databricks 工作區的左側導覽列按下[計算]。

  2. 在表格中,點擊叢集的名稱。

  3. 單擊右上角的 更多按鈕,然後從下拉菜單中選取 檢視 JSON

  4. 叢集 JSON 檔案隨即出現。 複製叢集識別碼,亦即檔案中的第一行。

    叢集識別碼

取得執行狀態

若要追蹤回合的進度,您可以使用 Databricks UI 中的 [實驗] 頁面或使用 API 命令 get_events()。 如需詳細資訊,請參閱 檢視、管理和分析基礎模型微調執行

get_events() 輸出範例︰

使用 API 取得執行狀態

實驗頁面上的回合範例詳細資料:

從實驗 UI 取得執行狀態

下一步

訓練回合完成之後,您可以在 MLflow 檢閱計量及部署推斷模型。 請參閱教學課程:建立和部署基礎模型微調執行的步驟 5 到 7

如需指令微調範例,該範例逐步說明資料準備、微調訓練設置和部署,請參閱指令微調:具名實體辨識範例筆記本

筆記本範例

下列筆記本示範如何使用 Meta Llama 3.1 405B 指示模型產生綜合數據,並使用該數據來微調模型:

使用 Llama 3.1 405B Instruct 筆記本產生合成資料

取得筆記本

其他資源