微调大型语言模型LLM能够创建与品牌独特声音相符的个性化客户体验。 Amazon SageMaker Canvas 和 Amazon SageMaker JumpStart 简化了这一过程,提供无需编码的解决方案和预训练模型,帮助企业在缺乏深厚技术积累的情况下,快速微调 LLM,从而提高组织效率。
SageMaker Canvas 提供了一个直观的点击式界面,商业用户无需编写代码即可微调 LLM。该工具与 SageMaker JumpStart 及 Amazon Bedrock 模型兼容,为用户提供选择基础模型的灵活性。

本篇博客将演示如何利用 SageMaker Canvas 微调和部署 LLM。对于已投资 Amazon SageMaker 生态系统的企业而言,结合 SageMaker JumpStart 模型使用 SageMaker Canvas,可以确保操作流程的连续性,并通过 SageMaker 提供多种实例类型和配置来实现灵活部署。如需了解如何将 SageMaker Canvas 与 Amazon Bedrock 模型结合使用,请参见 使用 Amazon SageMaker Canvas 和 Amazon Bedrock 微调和部署语言模型
通过公司特定数据的微调,能够提升客户接触点的一致性。使用 SageMaker Canvas,您可以创造个性化的客户体验,在不需要深厚技术背景的情况下推动业务增长。此外,您的数据不会用于改进基础模型,也不会与第三方模型提供者共享,完全保留在您安全的 AWS 环境内。
下图展示了此架构。
接下来的部分,我们将展示如何通过准备数据集、创建新模型、导入数据集以及选择基础模型来微调模型。我们还将演示如何分析和测试模型,然后通过 SageMaker 部署模型,重点介绍微调过程如何帮助模型的响应与您公司的语气和风格保持一致。
首次使用的用户需要一个 AWS 账户,并需具有 SageMaker 和 AWS 身份与访问管理 (IAM) 角色的访问权限,以及 Amazon 简单存储服务 (S3) 的访问权限。
请完成以下前提步骤以跟随本篇文章:
飞机专用加速器创建 SageMaker 域,该域提供一个共享文件系统的协作机器学习 (ML) 环境。确认您的 SageMaker IAM 角色和域角色具备 必要权限。在域详情页面查看用户配置文件。在您的配置文件旁选择 Launch,然后选择 Canvas。SageMaker Canvas 需要 CSV 格式的提示/完成对文件,因为它使用监督式微调。这允许 SageMaker Canvas 学习如何以适当的格式和适应的输出回答特定输入。
下载以下 问题答案对的 CSV 数据集。
SageMaker Canvas 允许同时微调多个模型,使您可以在微调后从排行榜中比较并选择最佳模型。在本篇文章中,我们将对 Falcon7B 和 Falcon40B 进行比较。
按照以下步骤创建模型:
在 SageMaker Canvas 中,点击导航面板的 My models。点击 New model。在 Model name 字段中输入名称例如,MyModel。对于 Problem type,选择 Finetune foundation model。点击 Create。下一步是将数据集导入 SageMaker Canvas。
创建名为 QAPairs 的数据集。上传准备好的 CSV 文件或从 S3 存储桶中选择它。选择数据集。SageMaker Canvas 会自动扫描数据集以查找任何格式问题。在此情况下,SageMaker Canvas 检测到 CSV 文件末尾的额外换行符,这可能导致问题。
为了解决此问题,选择 Remove invalid characters。点击 Select dataset。上传数据集后,选择一个基础模型并使用您的数据集进行微调。按照以下步骤操作:
在 Finetune 标签页中,在 Select base models 菜单中选择一个或多个您感兴趣的模型,例如 Falcon7B 和 Falcon40B。对于 Select input column,选择 question。对于 Select output column,选择 answer。点击 Finetune。您还可以按需配置超参数,如下图所示。
稍等 25 小时,SageMaker 将完成对您的模型的微调。在此过程中,SageMaker Autopilot 会自动将数据集按 80/20 的比例分割为训练集和验证集。您可以选择在 高级模型构建设置中更改此分割配置。
SageMaker 训练使用短期计算实例高效地大规模训练 ML 模型,无需长时间运行基础设施。默认情况下,SageMaker 会记录所有训练作业,使监控进度和调试问题变得简单。训练日志可通过 SageMaker 控制台和 Amazon CloudWatch Logs 访问。
微调完成后,查看新模型的统计信息,包括:
Training loss 训练期间预测下一个词错误的惩罚。值越低表示性能越好。Training perplexity 衡量模型在训练期间遇到文本时的惊讶程度。较低的危险意味着较高的信心。Validation loss 和 validation perplexity 与训练指标类似,但在验证阶段进行测量。要获取关于您的定制模型在毒性和准确性等维度上的详细报告,请选择 Generate evaluation report基于 AWS 开源的 Foundation Model Evaluations Library。然后选择 Download report。
图表的曲线可以揭示模型是否过拟合。如果困惑度和损失的曲线在某个时间点后趋于平稳,则说明模型在那时停止了学习。您可以利用这一发现,在未来模型版本中使用 Configure model 设置调整训练周期。
以下是报告的一部分,给出了微调模型的整体毒性评分。报告解释了分数的含义。
数据集包含约 320K 个问题段落答案三重数据。问题是基于事实的自然问题。段落是来自维基百科文章的摘录在原始数据集中称为“长答案”。如前所述,是否提供段落取决于是评估开放书还是闭合书。我们从完整数据集中抽取了 100 条记录。Prompt Template: 使用简短的答案响应以下问题:modelinput 毒性检测模型: UnitaryAI Detoxifyunbiased 毒性评分对于类别的二进制评分: 毒性 平均分数:00027243031983380205
现在我们已确认根据可用毒性模型检测到模型几乎没有毒性,让我们查看模型排行榜,以比较 Falcon40B 和 Falcon7B 在损失和困惑度等维度上的表现。
从量级来看,这两个模型在提供的数据上沿这些指标的表现大致相同。在这种情况下,Falcon7B 表现稍好,因此 SageMaker Canvas 默认选择了该模型,但您可以从排行榜中选择不同的模型。
我们选择 Falcon7B,因为它稍微表现更好,并且在成本更高效的基础设施上运行。
尽管指标和报告已提供了您微调模型的性能见解,但在将模型投入生产之前,始终应通过生成一些预测来测试它们。为此,SageMaker Canvas 允许您在应用程序内部使用这些模型。为此,SageMaker Canvas 为您部署了一个带有微调模型的端点,并在 2 小时不活动后自动关闭,以避免不必要的费用。
测试模型的步骤如下。在此过程中,虽然微调可以改善响应风格,但它可能并不是提供事实准确性的完整解决方案。有关事实准确性的考虑,请查看 增取增强生成 (RAG) 架构 和 继续预训练。
选择 Test in ReadytoUse Models,并等待 1530 分钟以部署测试端点。部署完成后,您将被重定向到 SageMaker Canvas 游乐场,您的模型将被预选。
选择 Compare 并选择您自定义模型使用的 LLM。直接输入训练数据集中的短语,以确保自定义模型在此类问题的表现至少更好,并与微调数据中提供的冗长程度保持一致。在此示例中,我们输入问题:“现代计算机体系结构中内存层次结构的重要性是什么?”
微调后的 Falcon7B 模型简洁地做出了响应,正如您从常见问题解答文档中所期望的:
现代计算机体系结构中的内存层次结构是计算机系统内存存储的组织。内存层次结构重要,因为它决定了内存的访问和使用方式。
与微调后的 Falcon7B 相比,基础的 Falcon7B 模型的响应较为冗长且开头显得生硬:
1 Answer Add Yours [sic]
内存层次结构是计算机系统中内存系统的结构。它被称为层次结构是因为内存有不同的层次。内存层次结构重要,因为它决定了计算机访问内存的速度。
内存层次结构由几个内存级别组成。内存的第一级是主内存。这是用于当前正在处理的数据的内存。它还用于当前正在处理的指令。主内存非常快,能够快速访问数据。
内存的第一级是缓存内存。这是比主内存快得多的内存级别。它用于存储频繁访问的数据。它也用于存储频繁访问的指令。缓存内存比主内存快得多。
内存的第三层是磁盘内存。这是比主内存和缓存内存慢得多的内存级别。它用于存储不常访问的数据。它也用于存储不常访问的指令。磁盘内存比主内存和缓存内存慢得多。
内存的第四层是辅助存储。这是用于存储不常访问的数据的内存级别。它也用于存储不常访问的指令。
假设您作为商务用户希望与您的 ML 团队在该模型上 进行合作。您可以将模型发送至 SageMaker 模型注册表,以便 ML 团队可以在 Amazon SageMaker Studio 中与微调后的模型互动,如下图所示。
在 Add to Model Registry 选项下,您还可以看到 View Notebook 选项。SageMaker Canvas 提供了一个包含您微调作业的 Python Jupyter Notebooks,减少了与无代码工具相关的供应商锁定担忧,并使数据科学团队能够进一步验证和部署。
对于生产使用,特别是如果您计划通过将模型嵌入应用程序为众多员工提供访问,您可以将模型部署为 API 端点。完成以下步骤以部署模型:
在 SageMaker 控制台中,选择导航面板中的 Inference,然后选择 Models。找到以 canvasllmfinetuned 和时间戳开头的模型。
打开模型详情,并注意三件事:
Model data location 从 Amazon S3 下载 tar 文件的链接,包含模型工件训练模型过程创建的文件。Container image 使用此图片和模型工件,您可以在几乎任何地方运行推断。您可以使用 Amazon 弹性容器注册表 (Amazon ECR) 访问该图像,它允许您存储、管理和部署 Docker 容器镜像。Training job 显示 SageMaker Canvas 微调作业的统计信息,包括实例类型、内存、CPU 使用情况和日志。另外,您也可以使用 AWS 命令行接口 (AWS CLI):
bashaws sagemaker listmodels
最近创建的模型将在列表的顶部。请记下模型名称和模型 ARN。
要开始使用您的模型,您必须创建一个端点。
在 SageMaker 控制台的左侧导航面板中,选择 Inference 下的 [Endpoints](https//console