指令式微調 - Amazon SageMaker

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

指令式微調

指令式微調使用標籤的範例來改善預先訓練的基礎模型在特定任務上的效能。帶有標籤的範例依指令被格式化為提示、回應和用詞。此微調程序會改變模型的權重。有關指令式微調的更多資訊,請參閱文獻FLAN 簡介:更通用的指令微調語言模型擴展指令微調的語言模型。

微調語言網路 (FLAN) 模型使用指令調整,讓模型更適合解決一般下游 NLP 任務。 SageMaker JumpStart Amazon 在 FLAN 模型系列中提供了許多基礎模型。例如,FLAN-T5 模型會針對各種任務進行指令微調,以提升各種常見使用案例的零樣本表現。透過額外的資料和微調,指令式模型可以進一步適應訓練期間沒考慮到的更具體任務。

與基於指令的微調兼容的型號

只有一部分基 JumpStart 礎模型與指令式微調相容。指令式網域適應性微調適用於下列基礎模型:

注意

某些 JumpStart 基礎模型 (例如 Lama 2 7B) 需要在微調和執行推論之前接受使用者授權合約。如需詳細資訊,請參閱 終端使用者授權協議

  • 法蘭 T5 基地

  • 法蘭-T5 大號

  • 法蘭-T5 小

  • 法蘭-T5 XL

  • 法蘭-T5 號

  • 美洲駝

  • 美洲駝 2 13 B 聊天

  • 美洲駝神經元

  • 美洲駝

  • 美洲駝 2 70B 聊天

  • 美洲駝

  • 美洲駝 2 7B 聊天

  • 美洲駝神經元

  • 米斯特拉尔

  • RedPajama 煽动基地

  • RedPajama 煽动基地 7B V1

  • RedPajama 煽動聊天

  • RedPajama 煽動聊天 7B V1

  • RedPajama 煽動指示 3B V1

  • RedPajama 煽動指示 7B V1

準備並上傳訓練資料以進行指令式微調

指令式微調的訓練資料必須以 JSON Lines 文字檔格式提供,其中每一行都是一個字典。所有訓練資料必須位於單一資料夾中。資料夾可以包含多個 .jsonl 檔案。

訓練資料夾也可以包含範本 JSON 檔案 (template.json),描述資料的輸入和輸出格式。如果未提供範本檔案,則會使用下列範本檔案:

{ "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}", "completion": "{response}" }

根據template.json檔案,訓練資料的每個 .jsonl 項目都必須包含{instruction}{context}、和欄位。{response}

如果您提供自訂範本 JSON 檔案,請使用"prompt""completion"金鑰來定義您自己的必要欄位。根據下列自訂範本 JSON 檔案,訓練資料的每個 .jsonl 項目都必須包含{question}{context}、和欄位:{answer}

{ "prompt": "question: {question} context: {context}", "completion": "{answer}" }

拆分數據以進行培訓和測試

您可以選擇提供包含驗證資料的其他資料夾。此資料夾也應包含一或多個 .jsonl 檔案。如果未提供驗證資料集,則會為驗證目的預留一定數量的訓練資料。當您選擇超參數來微調模型時,您可以調整用於驗證的訓練資料百分比。

將微調資料上傳到 Amazon S3

將準備好的資料上傳到 Amazon Simple Storage Service (Amazon S3),以便在微調 JumpStart 基礎模型時使用。您可以使用下列指令來上傳資料:

from sagemaker.s3 import S3Uploader import sagemaker import random output_bucket = sagemaker.Session().default_bucket() local_data_file = "train.jsonl" train_data_location = f"s3://{output_bucket}/dolly_dataset" S3Uploader.upload(local_data_file, train_data_location) S3Uploader.upload("template.json", train_data_location) print(f"Training data: {train_data_location}")

建立訓練工作以進行指令式微調

將資料上傳到 Amazon S3 之後,您可以微調和部署 JumpStart基礎模型。若要在 Studio 中微調模型,請參閱在 Studio 中微調基礎模型。若要使用 SageMaker Python SDK 微調模型,請參閱使用班級微調公開可用的JumpStartEstimator基礎模型

範例筆記本

如需指令式微調的詳細資訊,請參閱下列範例筆記本: