使用提示指示微調大型語言模型 (LLM) - Amazon SageMaker

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

使用提示指示微調大型語言模型 (LLM)

指令式微調使用標籤的範例來改善預先訓練的基礎模型在特定任務上的效能。帶有標籤的範例依指令被格式化為提示、回應和用詞。此微調程序會改變模型的權重。如需以指示為基礎的微調的詳細資訊,請參閱介紹 的文件FLAN:使用 Instruction Fine-Tuning 和 Scaling Instruction-Finetuned Language Models 進行更一般化的語言模型

微調後的 LAnguage Net (FLAN) 模型使用指令調校,讓模型更適合解決一般下游NLP任務。Amazon 在模型系列中 SageMaker JumpStart 提供許多基礎FLAN模型。例如,FLAN-T5 模型會針對各種任務微調指令,以提高各種常見使用案例的零擷取效能。透過額外的資料和微調,指令式模型可以進一步適應訓練期間沒考慮到的更具體任務。

若要使用提示-回應對任務指示,在特定任務LLM上微調 :

  1. 準備JSON檔案中的指示。如需提示回應對檔案所需格式以及資料資料夾結構的詳細資訊,請參閱 準備和上傳訓練資料以進行以指示為基礎的微調

  2. 建立您的微調訓練任務。如需說明,請參閱 建立教學型微調的訓練任務

您可以在 end-to-end 中找到範例範例筆記本

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

注意

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

  • Flan-T5 基礎

  • Flan-T5 大型

  • Flan-T5 小型

  • Flan-T5 XL

  • Flan-T5 XXL

  • Llama 2 13B

  • Llama 2 13B 聊天

  • Llama 2 13B Neuron

  • Llama 2 70B

  • Llama 2 70B 聊天

  • Llama 2 7B

  • Llama 2 7B 聊天

  • Llama 2 7B Neuron

  • 雜音 7B

  • RedPajama INCITE 基礎 3B V1

  • RedPajama INCITE 基礎 7B V1

  • RedPajama INCITE 聊天 3B V1

  • RedPajama INCITE 聊天 7B V1

  • RedPajama INCITE 指示 3B V1

  • RedPajama INCITE 指示 7B V1

準備和上傳訓練資料以進行以指示為基礎的微調

指示型微調的訓練資料必須以JSON行文字檔案格式提供,其中每一行都是字典。所有訓練資料都必須位於單一資料夾中。資料夾可以包含多個 .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類別微調公開可用的基礎模型

範例筆記本

如需以指示為基礎的微調的詳細資訊,請參閱下列範例筆記本: