使用域自适应微调大型语言模型 (LLM) - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用域自适应微调大型语言模型 (LLM)

通过领域适应微调,您可以利用预先训练的基础模型,并使用有限的特定于领域的数据,根据特定任务来调整模型。如果通过提示工程无法提供足够的自定义,则可以使用领域适应微调,让您的模型处理特定于领域的语言,例如行业术语、技术术语或其他专业数据。这个微调过程修改模型的权重。

要在特定领域的数据集上微调模型,请执行以下操作:

  1. 准备您的训练数据。有关说明,请参阅 准备并上传训练数据以进行域自适应微调

  2. 创建您的微调训练作业。有关说明,请参阅 创建训练作业以进行基于指令的微调

你可以在中找到 end-to-end示例示例笔记本

领域适应微调适用于以下基础模型:

注意

一些 JumpStart 基础模型,例如 Llama 2 7B,要求在微调和执行推理之前接受最终用户许可协议。有关更多信息,请参阅 最终用户许可协议

  • Bloom 3B

  • Bloom 7B1

  • BloomZ 3B FP16

  • BloomZ 7B1 FP16

  • GPT-2 XL

  • GPT-J 6B

  • GPT-Neo 13B

  • GPT-Neo 125M

  • GPT-NEO 27B

  • Llama 2 13B

  • Llama 2 13B 聊天

  • Llama 2 13B Neuron

  • Llama 2 70B

  • Llama 2 70B 聊天

  • Llama 2 7B

  • Llama 2 7B Chat

  • Llama 2 7B Neuron

准备并上传训练数据以进行域自适应微调

域自适应微调的训练数据可以以CSVJSON、或TXT文件格式提供。所有训练数据必须放在单个文件夹内的单个文件中。

训练数据取自CSV或JSON训练数据文件的 “文本” 列。如果没有列标记为 “文本”,则训练数据将从JSON训练数据文件的第一列中获取。CSV

以下是用于微调TXT的文件主体的示例:

This report includes estimates, projections, statements relating to our business plans, objectives, and expected operating results that are “forward- looking statements” within the meaning of the Private Securities Litigation Reform Act of 1995, Section 27A of the Securities Act of 1933, and Section 21E of ....

拆分数据用于训练和测试

您可以选择提供另一个包含验证数据的文件夹。此文件夹还应包含一个CSVJSON、或TXT文件。如果未提供验证数据集,则会预留一定数量的训练数据用于验证目的。在选择用于微调模型的超参数时,可以调整用于验证的训练数据的百分比。

将微调数据上传到 Amazon S3

将准备好的数据上传到亚马逊简单存储服务 (Amazon S3),以便在微调 JumpStart 基础模型时使用。您可以使用以下命令上传数据:

from sagemaker.s3 import S3Uploader import sagemaker import random output_bucket = sagemaker.Session().default_bucket() local_data_file = "train.txt" train_data_location = f"s3://{output_bucket}/training_folder" 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

示例笔记本

有关域自适应微调的更多信息,请参阅以下示例 notebook: