使用 API 建立 AutoML 工作以微調文字產生模型 - Amazon SageMaker

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

使用 API 建立 AutoML 工作以微調文字產生模型

大型語言模型 (LLM) 在多種生成任務中脫穎而出,包括文字產生、摘要、完稿、問答等。之所以能有如此表現,可以歸因於其規模龐大,並對各種資料集和各類任務進行了廣泛的訓練。但是,醫療保健和金融服務等特定領域可能需要進行自訂微調,以適應獨特的資料和使用案例。透過根據特定領域量身打造的訓練,LLM 可以提高效能,並為目標應用程式提供更準確的輸出。

Autopilot 提供一系列微調預訓練的生成文字模型的功能。特別是,Autopilot 支持基於指令的微調一系列通用大型語言模型(LLM)提供支持。 JumpStart

注意

支援 Autopilot 微調的文字產生模型目前僅可在 Canvas 支援的地區存取。 SageMaker 如需支援區域的完整清單,請參閱 SageMaker Canvas 的文件。

微調預訓練的模型需要有明確指令的特定資料集,以指導模型如何生成輸出或針對任務執行動作。該模型從資料集中學習,調整其參數以符合提供的說明。基於指令的微調涉及使用格式化為提示-響應配對並表述為指令的標籤示例。如需微調的詳細資訊,請參閱微調基礎模型。

以下準則概述了建立 Amazon SageMaker Autopilot 任務作為試驗的過程,以使用 API 參考微調文字產生 LMS。 SageMaker

注意

文字和影像分類、時間序列預測以及大型語言模型的微調等工作可透過 AutoML REST API 的第 2 版獨家取得。如果您選擇的語言是 Python,您可以直接參考AWS SDK for Python (Boto3)或參考 Amazon SageMaker Python 開發套件的 AutoMLv2 物件

偏好使用者介面便利性的使用者可以使用 Amazon SageMaker Canvas 存取預先訓練的模型和生成 AI 基礎模型,或建立針對特定文字、影像分類、預測需求或生成 AI 量身打造的自訂模型。

若要以程式設計方式建立自動輔助駕駛實驗以微調 LLM,您可以使用 Amazon SageMaker Autopilot 或. CreateAutoMLJobV2 AWS CLI

有關此 API 動作如何以您選擇的語言轉換為函數的詳細資訊,請參閱的「另請參閱」一節CreateAutoMLJobV2並選擇 SDK。例如,對於 Python 使用者,請參閱 AWS SDK for Python (Boto3)中的create_auto_ml_job_v2的完整請求語法。

注意

Autopilot 在微調大型語言模型時,無需訓練和評估多個候選模型。相反地,Autopilot 會使用您的資料集直接微調您的目標模型,以增強預設目標指標,即交叉熵損失。在 Autopilot 中微調語言模型時,無需設定 AutoMLJobObjective欄位。

對 LLM 進行了微調後,您可以通過在進行 DescribeAutoMLJobV2 API 調用BestCandidate時通過訪問各種ROUGE分數來評估其性能。該模型還提供了有關其訓練和驗證損失以及困惑度的資訊。如需評估微調模型所產生文字品質的完整指標清單,請參閱用於微調 Autopilot 中大型語言模型的指標

必要條件

在中使用 Autopilot 自動輔助駕駛來建立微調實驗之前 SageMaker,請務必執行下列步驟:

  • (選用) 選擇您要微調的預訓練模型。

    如需 Amazon SageMaker Autopilot 自動輔助駕駛中可用於微調的預先訓練模型清單,請參閱。支援大型語言模型進行微調模型的選擇不是強制性的;如果沒有指定模型,Autopilot 自動輔助駕駛會自動預設為 Fal Con7b 指示模型。

  • 建立指令的資料集。請參資料集檔案類型與輸入資料格式閱以瞭解指令型資料集的格式需求。

  • 將您的資料集放入 Amazon S3 儲存貯體。

  • 授予對 Amazon S3 儲存貯體的完整存取權,該儲存貯體包含用於 SageMaker 執行實驗的執行角色的輸入資料。

    • 如需擷取 SageMaker 執行角色的資訊,請參閱取得執行角色

    • 如需授與存取 Amazon S3 中一或多個特定儲存貯體的 SageMaker 執行角色許可的相關資訊,請參閱中的 SageMaker 執行角色新增其他 Amazon S3 許建立執行角色

  • 此外,您應該為執行角色提供必要的許可,以存取所使用的預設儲存 Amazon S3 儲存貯體 JumpStart。在 JumpStart中儲存和擷取預先訓練過的模型加工品時,需要此存取權。若要授予此 Amazon S3 儲存貯體的存取權,您必須在執行角色上建立新的內嵌自訂政策。

    以下是在以下位置設定 AutoML 微調工作時,可在 JSON 編輯器中使用的範例原則:us-west-2

    JumpStart的值區名稱遵循預定的模式,取決於 AWS 區域. 您必須相應地調整儲存貯體的名稱。

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-us-west-2", "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*" ] }

完成此操作後,您可以透過這個執行角色的 ARN 在 Autopilot API 請求中使用。

必要參數

打電話創CreateAutoMLJobV2建用於 LLM 微調的自動駕駛實驗時,必須提供以下值:

  • 用於指定任務的名稱的 AutoMLJobName。名稱應為類型string,並且最小長度為 1 個字元,最大長度為 32 個字元。

  • 至少在AutoMLJobInputDataConfig中有一個training類型的AutoMLJobChannel。此通道指定微調資料集的 Amazon S3 儲存貯體名稱。您有選擇定義validation通道的選項。如果未提供驗證通道,且在 AutoMLDataSplitConfig 中設定了 ValidationFraction,則會使用此分數將訓練資料集隨機劃分為訓練和驗證集。此外,您可以指定資料集的內容類型 (CSV 或 Parquet 檔案)。

  • AutoMLProblemTypeConfig種用TextGenerationJobConfig來設定訓練工作設定的類型。

    特別是,您可以在 BaseModelName 欄位中指定要微調的基本模型名稱。如需 Amazon SageMaker Autopilot 自動輔助駕駛中可用於微調的預先訓練模型清單,請參閱。支援大型語言模型進行微調

  • OutputDataConfig,指定 Amazon S3 輸出路徑,以儲存 AutoML 任務的成品。

  • RoleArn 用來指定用於存取您的資料的角色的 ARN。

以下是進行 API 呼叫以微調 a (Falcon7BInstruct) 模型時所使用的完整要求格式範例。CreateAutoMLJobV2

{ "AutoMLJobName": "<job_name>", "AutoMLJobInputDataConfig": [ { "ChannelType": "training", "CompressionType": "None", "ContentType": "text/csv", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://<bucket_name>/<input_data>.csv" } } } ], "OutputDataConfig": { "S3OutputPath": "s3://<bucket_name>/output", "KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>" }, "RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>", "AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7BInstruct" } } }

所有其他參數都是選用參數。

選用的參數

以下各章節提供一些選用參數的詳細資訊,您可以將這些參數傳送至您的微調 AutoML 任務。

您可以提供自己的驗證資料集和自訂資料分割比例,或讓 Autopilot 自動分割資料集。

每個AutoMLJobChannel物件 (請參閱 AutoML 必要參數 JobInputDataConfig) 都有一個ChannelType,可以設定為trainingvalidation值,這些值可指定建立機器學習模型時如何使用資料。

至少必須提供一個資料來源,最多允許兩個資料來源:一個用於訓練資料,另一個用於驗證資料。將資料分割為訓練和驗證資料集的方式,取決於您有一個或兩個資料來源。

  • 如果您只有一個資料來源,則ChannelType依預設會將其設定為training,且必須具有此值。

    • 如果未設定 AutoMLDataSplitConfig 中的 ValidationFraction 值,則預設會使用來自此來源的 0.2 (20%) 資料進行驗證。

    • 如果設定ValidationFraction為介於 0 和 1 之間的值,則會根據指定的值來分割資料集,其中值會指定用於驗證的資料集分數。

  • 如果您有兩個資料來源,則必須將其中一個AutoMLJobChannel物件的ChannelType設定為training,即預設值。其他資料來源的ChannelType必須設定為validation。這兩個資料來源必須具有相同的格式 (CSV 或 Parquet),以及相同的結構描述。在這種情況下,您不得設定ValidationFraction的值,因為每個來源的所有資料都會用於訓練或驗證。設定此值會導致錯誤。

使用 Autopilot 自動輔助駕駛,您可以將微調的模型自動部署到端點。若要啟用微調模型的自動部署,請在 AutoML 任務請求中包括ModelDeployConfig。這允許將您微調的模型部署到 SageMaker 端點。以下是可用於自訂的組態。

對於需要在微調之前接受使用者授權合約的模型,您可ModelAccessConfigTrueTextGenerationJobConfig在配置您的. AcceptEula AutoMLProblemTypeConfig

您可以在配置您的. TextGenerationJobConfig 時,在的TextGenerationHyperParameters屬性中設定超參數值,以最佳化文字產生模型的學習程序。AutoMLProblemTypeConfig

Autopilot 自動輔助駕駛允許在所有型號上設定四個常見的超參數。

  • epochCount: 它的值應該是一個包含1到範圍內的整數值的字符串10

  • batchSize: 它的值應該是一個包含1到範圍內的整數值的字符串64

  • learningRate: 它的值應該是一個包含在 to 範圍內的浮點值的0字符串。1

  • learningRateWarmupSteps: 它的值應該是一個包含0到範圍內的整數值的字符串250

如需每個超參數的詳細資訊,請參閱使用超參數優化文本生成模型的學習過程

下列 JSON 範例顯示傳送至設定所有四個超參數之 TextGenerationJobConfig 位置的TextGenerationHyperParameters欄位。

"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }