你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure AI Studio 中微调 Meta Llama 模型

重要

本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

使用 Azure AI Studio,可以使用名为微调的过程为个人数据集定制大语言模型。

通过为特定任务和应用程序启用自定义和优化,微调提供了重要的价值。 这可以提高性能和成本效益、降低延迟和定制输出。

在本文中,你会了解如何在Azure AI Studio 中微调 Meta Llama 模型。

Meta Llama 系列大型语言模型 (LLM)是经过预训练和微调的生成文本模型集合,参数范围从 70 亿到 700 亿个不等。 该模型系列还包括经过优化用于对话场景的微调版本,采用了人类反馈强化学习 (RLHF),称为 Llama-Instruct。

重要

预览版的模型在模型目录中的模型卡上标记为“预览”。

模型

微调为即用即付计费服务时,Llama 3.1 在 Azure 市场中可提供以下模型:

  • Meta-Llama-3.1-70B-Instruct(预览版)
  • Meta-LLama-3.1-8b-Instruct(预览版)

位于美国西部 3 的项目当前支持对 Llama 3.1 模型进行微调。

重要

目前,我们无法对序列长度为 128K 的 Llama 3.1 进行微调。

先决条件

具有有效付款方式的 Azure 订阅。 不能使用免费或试用 Azure 订阅。 如果没有 Azure 订阅,请先创建一个付费的 Azure 帐户

  • 一个 Azure AI Studio 中心

    重要

    对于 Meta Llama 3.1 模型,即用即付模型微调产品/服务仅适用于在美国西部 3 区域中创建的中心。

  • Azure AI Studio 中的 Azure AI Studio 项目

  • Azure 基于角色的访问控制 (Azure RBAC) 用于授予对 Azure AI Studio 中的操作的访问权限。 若要执行本文中的步骤,必须为用户帐户分配 Azure 订阅的“所有者”或“参与者”角色。 或者,可以为帐户分配具有以下权限的自定义角色:

    • Azure 订阅的以下权限,以便为 AI Studio 项目订阅 Azure 市场的产品/服务(每个项目针对每个产品/服务订阅一次):

      • Microsoft.MarketplaceOrdering/agreements/offers/plans/read
      • Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
      • Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
      • Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
      • Microsoft.SaaS/register/action
    • 在资源组上,创建和使用 SaaS 资源的权限:

      • Microsoft.SaaS/resources/read
      • Microsoft.SaaS/resources/write
    • AI Studio 项目的以下权限,以便部署终结点(Azure AI 开发人员角色已包含以下权限):

      • Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
      • Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*

    有关权限详细信息,请参阅 Azure AI Studio 中基于角色的访问控制

订阅提供程序注册

验证订阅是否已注册到 Microsoft.Network 资源提供程序。

  1. 登录 Azure 门户

  2. 在左侧菜单中选择“订阅”

  3. 选择要使用的订阅。

  4. 在左侧菜单中选择“设置”>“资源提供程序”

  5. 确认“Microsoft.Network”位于资源提供程序列表中。 否则,请添加它。

    Azure 门户中订阅资源提供程序的屏幕截图。

数据准备

准备训练和验证数据以微调模型。 训练数据和验证数据集由输入和输出示例组成,这些示例表示你希望模型如何执行。

确保所有训练示例遵循预期格式以进行推理。 要有效地微调模型,请确保拥有平衡且多样化的数据集。

这涉及到保持数据平衡(包括各种方案)和定期优化训练数据以符合实际预期,最终生成更准确和均衡的模型响应。

不同的模型类型需要不同格式的训练数据。

你使用的训练和验证数据必须格式化为 JSON 行 (JSONL) 文档。 对于Meta-Llama-3.1-70B-Instruct,必须以聊天补全 API 使用的对话格式来设置微调数据集的格式。

示例文件格式

    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

受支持的文件类型为 JSON 行。 文件将上传到默认数据存储,并在项目中可用。

微调 Meta Llama 模型

若要微调 LLama 3.1 模型,请执行以下操作:

  1. 登录到 Azure AI Studio

  2. 从 Azure AI Studio 模型目录中选择要微调的模型。

  3. 在模型的“详细信息”页上,选择“微调”

  4. 选择要在其中微调模型的项目。 要使用即用即付模型微调产品/服务,工作区必须属于美国西部 3区域。

  5. 在微调向导中,选择“Azure 市场条款”的链接,了解有关使用条款的详细信息。 还可以选择“市场产品/服务详细信息”选项卡,了解所选模型的定价。

  6. 如果这是你第一次在项目中微调模型,则必须为项目订阅 Azure 市场中的特定产品/服务(例如 Meta-Llama-3.1-70B-Instruct)。 此步骤要求帐户具有先决条件中列出的 Azure 订阅权限和资源组权限。 每个项目都订阅有特定 Azure 市场产品/服务,可用于控制和监视支出。 选择“订阅和微调”

    注意

    若要为项目订阅特定的 Azure 市场产品/服务(本例中为 Meta-Llama-3.1-70B-Instruct),你的帐户必须在创建该项目的订阅级别具有“参与者”或“所有者”访问权限。 或者,可以为用户帐户分配一个自定义角色,该角色具有先决条件中列出的 Azure 订阅权限和资源组权限。

  7. 注册特定 Azure 市场产品/服务的项目后,同一项目中同一产品/服务的后续微调不需要再次订阅。 因此,无需具有后续微调作业的订阅级权限。 如果此方案适合你,请选择“继续微调”

  8. 输入已微调模型的名称以及可选标记和说明。

  9. 选择训练数据以微调模型。 有关详细信息,请参阅数据准备

    注意

    如果你将它们的训练/验证文件存储在无凭据的数据存储中,你将需要允许工作区托管标识访问它们的数据存储,才能使用无凭据的存储进行 MaaS 微调。 在“数据存储”页上,单击“更新身份验证”后,>选择以下选项:

    在 Azure 机器学习工作室中使用工作区托管标识进行数据预览和分析。

    确保所有训练示例遵循预期格式以进行推理。 要有效地微调模型,请确保拥有平衡且多样化的数据集。 这涉及到保持数据平衡(包括各种方案)和定期优化训练数据以符合实际预期,最终生成更准确和均衡的模型响应。

    • 要用于训练的批大小。 设置为 -1 时,batch_size 按训练集中 0.2% 的示例计算,最大值为 256。
    • 微调学习速率是用于预训练的原始学习速率乘以此乘数后的结果。 建议使用介于 0.5 和 2 之间的值进行试验。 根据经验,我们发现,较大的学习率通常在较大的批大小中表现更好。 必须介于 0.0 和 5.0 之间。
    • 训练循环数。 纪元是指通过数据集的一个完整周期。
  10. 任务参数是一个可选步骤和高级选项 - 优化超参数对于优化实际应用程序中的大语言模型 (LLM) 至关重要。 它可以实现性能改善和资源使用效率的提升。 可以使用默认设置,或者高级用户可以自定义诸如纪元或学习速率等参数。

  11. 查看你的选择并继续操作以训练模型。

优化模型后,可以部署模型,并在自己的应用程序、操场或提示流中使用它。 有关详细信息,请参阅如何使用 Azure AI Studio 部署 Llama 3.1 系列大语言模型

清理已微调模型

可以从 Azure AI Studio 中的微调模型列表或模型详细信息页中删除已微调模型。 选择要从“微调”页中删除的微调模型,然后选择“删除”按钮以删除已微调模型。

注意

如果自定义模型具有现有部署,则无法删除它。 必须先删除模型部署,然后才能删除自定义模型。

成本和配额

微调为服务的 Meta Llama 模型的成本和配额注意事项

微调为服务的 Meta Llama 模型由 Meta 通过 Azure 市场提供,并与 Azure AI Studio 集成以供使用。 部署或微调模型时,会看到 Azure 市场定价。

每次项目从 Azure 市场订阅给定产品/服务时,都会创建一个新资源来跟踪与其消耗相关的成本。 同一资源用于跟踪与推理和微调相关的成本。但是,可以使用多个计量器来独立跟踪每个方案。

有关如何跟踪成本的详细信息,请参阅监视通过 Azure 市场提供的模型的成本

示例笔记本

可以使用此示例笔记本创建独立的微调作业,以增强模型使用 Samsum 数据集汇总两个人之间的对话的能力。 使用的训练数据是 ultrachat_200k 数据集,它分为四个拆分,适合监督微调 (sft) 和生成排名 (gen)。 笔记本为聊天完成任务使用可用的 Azure AI 模型(如果要使用与笔记本中使用的模型不同的模型,可以替换模型名称)。 笔记本包括设置先决条件、选择要微调的模型、创建训练和验证数据集、配置和提交微调作业,最后,使用微调模型创建无服务器部署,以便进行示例推理。

内容筛选

部署为即用即付计费服务的模型受 Azure AI 内容安全的保护。 部署到实时终结点时,可以选择退出此功能。 启用 Azure AI 内容安全后,提示和补全会经过一系列分类模型,旨在检测和防止输出有害内容。 内容筛选(预览版)系统会在输入提示和输出补全中检测特定类别的潜在有害内容并对其采取措施。 详细了解 Azure AI 内容安全

后续步骤