View a markdown version of this page

新版本 2.0 上的 SFT - Amazon Nova

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

新版本 2.0 上的 SFT

Amazon Nova Lite 2.0 為監督式微調提供了增強功能,包括進階推理模式、改善多模態理解和延伸內容處理。在 Nova 2.0 上的 SFT 可讓您將這些強大的功能適應您的特定使用案例,同時在複雜的任務上維持模型的卓越效能。

SFT on Nova 2.0 的主要功能包括:

  • 推理模式支援:訓練模型在增強型分析功能的最終答案之前產生明確的推理追蹤。

  • 進階多模式訓練:微調文件理解 (PDF)、影片理解和影像型任務,以提高準確性。

  • 工具呼叫功能:訓練模型,以有效地使用外部工具和函數呼叫進行複雜的工作流程。

  • 延伸內容支援:利用較長的內容時段,為文件密集型應用程式提供更好的穩定性和準確性。

注意

如需使用哪些容器映像或範例配方的詳細資訊,請前往 Amazon Nova 配方

以下是 SFT 的範例配方。您可以在配方儲存庫中找到此配方和其他項目

run: name: my-full-rank-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl # only and not compatible with SageMaker Training Jobs replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: s3://my-bucket-name/outputs/ # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs) mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-full-rank-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-full-rank-sft-run" # Optional for MLFlow. Note: leave this field non-empty training_config: max_steps: 100 # Maximum training steps. Minimal is 4. save_steps: ${oc.select:training_config.max_steps} # How many training steps the checkpoint will be saved save_top_k: 5 # Keep top K best checkpoints. Note supported only for jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates adam_beta2: 0.95 # Exponential decay rate for second-moment estimates peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "null" # Disable LoRA for PEFT

選擇合理模式 (僅限 Nova 2.0)

Amazon Nova 2.0 支援增強分析功能的推理模式:

  • 原因模式 (已啟用)

    • 在訓練組態reasoning_enabled: true中設定

    • 模型會訓練 在最終答案之前產生推理追蹤

    • 改善複雜推理任務的效能

  • 非原因模式 (已停用)

    • 設定reasoning_enabled: false或省略 參數 (預設)

    • 沒有明確推理的標準 SFT

    • 適合無法受益於step-by-step推理的任務

注意
  • 啟用推理時,會以高推理的努力運作。SFT 沒有低推理選項。

  • SFT 不支援多模式推理內容。原因模式適用於純文字輸入。

reasoning_enabled: true 允許使用 在非合理資料集上訓練 Amazon Nova。不過,這樣做可能會導致模型失去其推理功能,因為 Amazon Nova 主要學習在不套用推理的情況下產生資料中呈現的回應。

如果在非合理資料集上訓練 Amazon Nova,但仍希望在推論期間使用推理:

  1. 在訓練期間停用推理 (reasoning_enabled: false)

  2. 稍後在推論期間啟用推理

雖然此方法允許在推論時間進行推理,但與推論相比,它不保證改善效能,無需推理。

最佳實務:在使用推理資料集時啟用訓練推理和推論,並在使用非合理的資料集時停用兩者。

注意

如需使用哪些容器映像或範例配方的詳細資訊,請前往 Amazon Nova 配方

工具呼叫資料格式

SFT 支援訓練模型以使用工具 (函數呼叫)。以下是工具呼叫的範例輸入格式:

範例輸入:

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": [ "item_id", "zipcode" ] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }

工具呼叫資料的重要考量事項:

  • ToolUse 必須僅以助理輪換顯示

  • ToolResult 必須僅顯示在使用者轉彎中

  • ToolResult 只能是文字或 JSON;Amazon Nova 模型目前不支援其他模態

  • toolSpec 中的 inputSchema 必須是有效的 JSON 結構描述物件

  • 每個 ToolResult 必須參考先前助理 ToolUse 中的有效 ToolUse toolUseId,每個toolUseId 在每次對話中只使用一次

注意

如需使用哪些容器映像或範例配方的詳細資訊,請前往 Amazon Nova 配方

文件了解資料格式

SFT 支援文件理解任務的訓練模型。以下是範例輸入格式:

範例輸入

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }

文件理解的重要考量:

  • 僅支援 PDF 檔案

  • 文件大小上限為 10 MB

  • 範例可以包含文件和文字,但無法將文件與其他形式 (例如影像或影片) 混合

注意

如需使用哪些容器映像或範例配方的詳細資訊,請前往 Amazon Nova 配方

影片了解 SFT

SFT 支援微調模型以進行影片理解任務。以下是範例輸入格式:

範例輸入

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }

了解影片的重要考量:

  • 影片上限為 50 MB

  • 影片最長可達 15 分鐘

  • 每個範例只允許一個影片;不支援相同範例中的多個影片

  • 範例可以包含影片和文字,但無法將影片與其他形式 (例如影像或文件) 混合

注意

如需使用哪些容器映像或範例配方的詳細資訊,請前往 Amazon Nova 配方

資料上傳指示

將訓練和驗證資料集上傳至 S3 儲存貯體。在配方的 run 區塊中指定這些位置:

## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"

注意:將 <bucket-name><training-directory><training-file><validation-directory>和 取代<validation-file>為實際的 S3 路徑。

注意:使用 Amazon Nova 2.0 的 SFT 目前不支援驗證資料集。如果提供驗證資料集,則會予以忽略。

建立微調任務

使用 run 區塊中的 model_typemodel_name_or_path 欄位來定義基本模型:

## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...

SFT 調校參數

可使用 SFT 進行調校的參數包括:

執行組態

  • 名稱:訓練任務的描述性名稱。這有助於在 AWS 管理主控台中識別您的任務。

  • model_type:要使用的 Amazon Nova 模型變體。可用的選項為 amazon.nova-2-lite-v1:0:256k

  • model_name_or_path:用於訓練的基本模型路徑。可用的選項為 nova-lite-2/prod,或訓練後檢查點的 S3 路徑 (s3://customer-escrow-bucket-unique_id/training_run_name)。

  • 複本:用於分散式訓練的運算執行個體數量。可用的值會根據您選擇的模型而有所不同。Amazon Nova Lite 2.0 支援 4、8、16 或 32 個複本。

  • data_s3_path:訓練資料集的 S3 位置,這是 JSONL 檔案。此檔案必須位於與叢集相同的 AWS 帳戶和區域。提供的所有 S3 位置都必須位於相同的帳戶和區域中。

  • validation_data_s3_path:(選用) 驗證資料集的 S3 位置,這是 JSONL 檔案。此檔案必須位於與叢集相同的帳戶和區域中。提供的所有 S3 位置都必須位於相同的帳戶和區域中。

  • output_s3_path:儲存資訊清單和 TensorBoard 日誌的 S3 位置。提供的所有 S3 位置都必須位於相同的 AWS 帳戶和 AWS 區域。

  • mlflow_tracking_uri:用於 MLFlow 記錄的 MLFlow 應用程式的 ARN。

  • mlflow_experiment_name:MLFlow 實驗名稱。

  • mlflow_run_name:MLFlow 執行名稱。

訓練組態

  • max_steps:要執行的訓練步驟數目。每個步驟都會使用元素global_batch_size數目來訓練模型。

  • save_steps:在訓練期間儲存模型檢查點的頻率 (步驟中)。

  • save_top_k:根據驗證指標要保留的最佳檢查點數目上限。

  • max_length:字符的序列長度上限。這會決定訓練的內容範圍大小。SFT 的最大支援值為 32768 個字符。

    序列越長,越能提高訓練效率,但代價是需要增加記憶體。我們建議您將 max_length 參數與資料分佈配對。

  • global_batch_size:跨所有裝置和工作者,一次向前或向後傳遞一起處理的訓練範例總數。

    此值會乘以每個裝置的批次大小和裝置數目。它會影響訓練和輸送量的穩定性。我們建議您從適合您記憶體的批次大小開始,並從該處向上擴展。對於特定網域的資料,批次越大可能會使梯度過度平滑。

  • reasoning_enabled:在訓練期間啟用推理功能的布林值旗標。

學習率排程器

  • warmup_steps:逐步提高學習率的步驟數目。這可改善訓練穩定性。

  • min_lr:衰減結束時的最低學習率。有效值介於 0-1 (含) 之間,但必須小於學習率。

最佳化工具組態

  • lr:學習率,可在最佳化期間控制步進大小。我們建議使用介於 1e-6-1e-4 之間的值,以獲得良好的效能。有效值介於 0-1 (含) 之間。

  • weight_decay:L2 正規化強度。較高的值 (介於 0.01-0.1 之間) 會增加正規化。

  • adam_beta1:Adam 最佳化工具中第一時間預估的指數衰減率。預設為 0.9。

  • adam_beta2:Adam 最佳化工具中第二個時刻預估的指數衰減率。預設為 0.95。

PEFT 組態

  • peft_scheme:要使用的參數有效微調方案。選項'null'適用於全等級微調或lora適用於以 LoRA 為基礎的微調。

LoRA 調校 (當 peft_scheme 為 'lora' 時)

  • alpha:LoRA 擴展參數。控制低階調整的大小。典型值的範圍是 8 到 128。

  • lora_plus_lr_ratio:LoRA+ 最佳化的學習率比率。此乘數會特別針對 LoRA 參數調整學習率。

超參數指引

根據訓練方法,使用以下建議的超參數:

完整排名訓練

  • Epochs:1

  • 學習率 (lr):1e-5

  • 最低學習率 (min_lr):1e-6

LoRA (低排名調整)

  • Epochs:2

  • 學習率 (lr):5e-5

  • 最低學習率 (min_lr):1e-6

注意:根據資料集大小和驗證效能調整這些值。監控訓練指標以防止過度擬合。