本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立和管理 Amazon Nova 模型的微調任務
您可以使用 Amazon Bedrock 主控台或 API 建立強化微調 (RFT) 任務。RFT 任務可能需要幾個小時的時間,取決於訓練資料的大小、epoch 數量,以及獎勵函數的複雜性。
先決條件
建立 RFT 任務
選擇您偏好方法的索引標籤,然後遵循下列步驟:
- Console
-
若要在 主控台中提交 RFT 任務,請執行下列步驟:
-
開啟 Amazon Bedrock 主控台,並在調校下導覽至自訂模型。
-
選擇建立,然後選擇建立強化微調任務。
-
在模型詳細資訊區段中,選擇 Amazon Nova 2 Lite 作為基礎模型。
-
在自訂詳細資訊區段中,輸入自訂名稱。
-
在訓練資料區段中,選擇您的資料來源。從存放在 Amazon S3 中的可用調用日誌中選取,或選取訓練資料集檔案的 Amazon S3 位置,或直接從您的裝置上傳檔案。
您的訓練資料集應該是 OpenAI 聊天完成資料格式。如果您以 Amazon Bedrock 調用或轉換格式提供調用日誌,Amazon Bedrock 會自動將其轉換為聊天完成格式。
-
在獎勵函數區段中,設定您的獎勵機制:
如需詳細資訊,請參閱設定 Amazon Nova 模型的獎勵函數。
-
(選用) 在超參數區段中,調整訓練參數或使用預設值。
-
在輸出資料區段中,輸入 Amazon Bedrock 應儲存任務輸出的 Amazon S3 位置。
-
在角色組態區段中,從下拉式清單中選擇現有角色,或輸入要建立之服務角色的名稱。
-
(選用) 在其他組態區段中,指向 Amazon S3 儲存貯體、KMS 加密設定,以及任務和模型標籤來設定驗證資料。
-
選擇建立強化微調任務以開始任務。
- API
-
傳送 CreateModelCustomizationJob 請求,並將 customizationType設定為 REINFORCEMENT_FINE_TUNING。
必要欄位:roleArn、baseModelIdentifier、customModelName、jobName、trainingDataConfig、outputDataConfig、 rftConfig
請求範例:
{
"roleArn": "arn:aws:iam::123456789012:role/BedrockRFTRole",
"baseModelIdentifier": "amazon.nova-2.0",
"customModelName": "my-rft-model",
"jobName": "my-rft-job",
"customizationType": "REINFORCEMENT_FINE_TUNING",
"trainingDataConfig": {
"s3Uri": "s3://my-bucket/training-data.jsonl"
},
"customizationConfig": {
"rftConfig" : {
"graderConfig": {
"lambdaGrader": {
"lambdaArn": "arn:aws:lambda:us-east-1:123456789012:function:function-name"
}
},
"hyperParameters": {
"batchSize": 64,
"epochCount": 2,
"evalInterval": 10,
"inferenceMaxTokens": 8192,
"learningRate": 0.00001,
"maxPromptLength": 4096,
"reasoningEffort": "high",
"trainingSamplePerPrompt": 4
}
}
},
"outputDataConfig": {
"s3Uri": "s3://my-bucket/rft-output/"
}
}
Python API 範例請求:
import boto3
bedrock = boto3.client(service_name='bedrock')
# Set parameters
customizationType = "REINFORCEMENT_FINE_TUNING"
baseModelIdentifier = "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-lite-v1:0:256k"
roleArn = "${your-customization-role-arn}"
jobName = "MyFineTuningJob"
customModelName = "MyCustomModel"
customizationConfig = {
'rftConfig' : {
'graderConfig': {
'lambdaGrader': {
'lambdaArn': 'arn:aws:lambda:us-east-1:123456789012:function:function-name'
}
},
'hyperParameters': {
'batchSize': 64,
'epochCount': 2,
'evalInterval': 10,
'inferenceMaxTokens': 8192,
'learningRate':0.00001,
'maxPromptLength': 4096,
'reasoningEffort': 'high',
'trainingSamplePerPrompt':4
}
}
}
trainingDataConfig = {"s3Uri": "s3://${training-bucket}/myInputData/train.jsonl"}
outputDataConfig = {"s3Uri": "s3://${output-bucket}/myOutputData"}
# Create job
response_ft = bedrock.create_model_customization_job(
jobName=jobName,
customModelName=customModelName,
roleArn=roleArn,
baseModelIdentifier=baseModelIdentifier,
customizationConfig=customizationConfig,
trainingDataConfig=trainingDataConfig,
outputDataConfig=outputDataConfig,
customizationType=customizationType
)
jobArn = response_ft['jobArn']
監控 RFT 訓練任務
Amazon Bedrock 會在 RFT 訓練期間,使用視覺化圖形和指標提供即時監控。這些指標可協助您了解模型是否正確收斂,以及獎勵函數是否有效引導學習程序。
任務狀態追蹤
您可以透過 Amazon Bedrock 主控台中的驗證和訓練階段來監控 RFT 任務狀態。
完成指標:
-
當訓練成功完成時,任務狀態會變更為已完成
-
自訂模型 ARN 可用於部署
-
訓練指標達到收斂閾值
即時訓練指標
Amazon Bedrock 在 RFT 訓練期間提供即時監控,並顯示訓練和驗證指標的視覺化圖形。
核心訓練指標
詳細指標類別
獎勵指標 – critic/rewards/mean、critic/rewards/max、 critic/rewards/min(獎勵分佈) 和 val-score/rewards/mean@1(驗證獎勵)
模型行為 – actor/entropy(政策變化;較高等於更探索性)
訓練運作狀態 – actor/pg_loss(政策梯度損失)、 actor/pg_clipfrac(剪輯更新的頻率) 和 actor/grad_norm(梯度大小)
回應特性 – prompt_length/mean、prompt_length/max、 prompt_length/min(輸入字符統計資料)response_length/mean、、response_length/max、 response_length/min(輸出字符統計資料) 和 response/aborted_ratio(不完整的產生率;0 等於所有完成)
效能 – perf/throughput(訓練輸送量)、 perf/time_per_step(每個訓練步驟的時間) 和 timing_per_token_ms/*(每個金鑰的處理時間)
資源用量 – perf/max_memory_allocated_gb、 perf/max_memory_reserved_gb(GPU 記憶體) 和 perf/cpu_memory_used_gb(CPU 記憶體)
訓練進度視覺化
主控台會顯示互動式圖形,隨著 RFT 任務的進行而即時更新。這些視覺化效果可協助您:
-
追蹤收斂以獲得最佳效能
-
及早識別潛在的訓練問題
-
確定最佳停止點
-
比較不同 epoch 的效能
設定推論
任務完成後,部署 RFT 模型以進行隨需推論,或使用佈建輸送量以獲得一致的效能。如需設定推論,請參閱 為自訂模型設定推論。
在遊樂場中使用測試來評估和比較回應與基礎模型。如需評估您已完成的 RFT 模型,請參閱 評估您的 RFT 模型。