利用领域适应性微调大型语言模型(LLM)
通过领域适应微调,您可以利用预先训练的基础模型,并使用有限的特定于领域的数据,根据特定任务来调整模型。如果通过提示工程无法提供足够的自定义,则可以使用领域适应微调,让您的模型处理特定于领域的语言,例如行业术语、技术术语或其他专业数据。这个微调过程修改模型的权重。
要在特定领域的数据集上微调模型:
-
准备训练数据。有关说明,请参阅 准备和上传训练数据以进行领域适应微调。
-
创建您的微调训练作业。有关说明,请参阅 创建基于指令的微调的训练作业。
您可以在 示例笔记本 中找到端到端的示例。
领域适应微调适用于以下基础模型:
注意
一些 JumpStart 基础模型,例如 Llama 2 7B,在进行微调和执行推理之前需要接受最终用户许可协议。有关更多信息,请参阅 最终用户许可协议。
-
Bloom 3B
-
Bloom 7B1
-
BloomZ 3B FP16
-
BloomZ 7B1 FP16
-
GPT-2 XL
-
GPT-J 6B
-
GPT-Neo 1.3B
-
GPT-Neo 125M
-
GPT-NEO 2.7B
-
Llama 2 13B
-
Llama 2 13B Chat
-
Llama 2 13B Neuron
-
Llama 2 70B
-
Llama 2 70B Chat
-
Llama 2 7B
-
Llama 2 7B Chat
-
Llama 2 7B Neuron
准备和上传训练数据以进行领域适应微调
域适应微调的训练数据可以采用 CSV、JSON 或 TXT 文件格式提供。所有训练数据必须放在单个文件夹内的单个文件中。
训练数据取自 CSV 或 JSON 训练数据文件的文本列。如果没有标记为文本的列,则训练数据将从 CSV 或 JSON 训练数据文件的第一列中获取。
以下是用于微调的 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 ....
拆分数据用于训练和测试
您可以选择提供另一个包含验证数据的文件夹。此文件夹还应包含一个 CSV、JSON 或 TXT 文件。如果未提供验证数据集,则会留出一定量的训练数据用于验证。在选择用于微调模型的超参数时,可以调整用于验证的训练数据比例。
将微调数据上传到 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.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 类微调公开可用的基础模型。
示例笔记本
有关域适应微调的更多信息,请参阅以下示例笔记本: