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

在 Azure AI Foundry 门户中微调 Phi-3 模型

重要

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

Azure AI Foundry 可让你使用称作“微调”的过程为个人数据集定制大语言模型。 通过为特定任务和应用程序启用自定义和优化,微调提供了重要的价值。 这可以提高性能和成本效益、降低延迟和定制输出。

本文介绍如何在 Azure AI Foundry 门户中微调 Phi-3 系列小型语言模型 (SLM),以即用即付方式计费。

Phi-3 系列 SLM 是一系列经过指令调整的生成式文本模型。 Phi-3 模型是最有能力且经济高效的小型语言模型 (SLM),在各种语言、推理、编码和数学基准方面都优于相同规模和下一规模的模型。

重要

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

Phi-3 Mini 是一个 3.8B 参数、轻型、最先进的开放模型,基于用于 Phi-2 的数据集(合成数据和筛选网站)构建,专注于高质量、推理密集的数据。 该模型属于 Phi-3 模型系列,Mini 版本有两个变体:4K 和 128K,这是模型可以支持的上下文长度(以令牌为单位)。

该模型经历了严格的增强流程,包括监督的微调和直接首选项优化,以确保精确地遵循指令和实施可靠的安全措施。 参照测试常识、语言理解、数学、代码、长上下文和逻辑推理的基准执行了评估,Phi-3 Mini-4K-Instruct 和 Phi-3 Mini-128K-Instruct 在参数不足 130 亿的模型中展示了一种强大而先进的性能。

先决条件

  • Azure 订阅。 如果没有 Azure 订阅,请先创建一个付费的 Azure 帐户

  • 一个 Azure AI Foundry 中心

    重要

    对于 Phi-3 系列模型,即用即付模型微调产品/服务仅适用于在美国东部 2 区域中创建的中心。

  • 一个 Azure AI Foundry 项目

  • Azure 基于角色的访问控制 (Azure RBAC) 用于授予对 Azure AI Foundry 门户中的操作的访问权限。 若要执行本文中的步骤,必须为用户帐户分配资源组的“Azure AI 开发人员”角色

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

订阅提供程序注册

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

  1. 登录 Azure 门户
  2. 在左侧菜单中选择“订阅”
  3. 选择要使用的订阅。
  4. 在左侧菜单中选择“设置”>“资源提供程序”
  5. 确认“Microsoft.Network”位于资源提供程序列表中。 否则,请添加它。

数据准备

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

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

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

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

聊天补全

你使用的训练和验证数据必须格式化为 JSON 行 (JSONL) 文档。 对于Phi-3-mini-128k-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 行。 文件将上传到默认数据存储,并在项目中可用。

微调 Phi-3 模型

微调 Phi-3 模型:

  1. 登录到 Azure AI Foundry

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

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

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

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

  6. 如果这是你第一次在该项目中微调模型,则必须为该项目订阅 Azure AI Foundry 的特定产品/服务(例如 Phi-3-mini-128k-instruct)。 此步骤要求帐户具有先决条件中列出的 Azure 订阅权限和资源组权限。 每个项目都订阅有特定 Azure AI Foundry 产品/服务,这使你能够控制和监视支出。 选择“订阅和微调”

    注意

    若要将项目订阅到特定的 Azure AI Foundry 产品/服务(本例中为 Phi-3-mini-128k-instruct),帐户必须在创建该项目的订阅级别具有“参与者”或“所有者”访问权限。 或者,可以为用户帐户分配一个自定义角色,该角色具有先决条件中列出的 Azure 订阅权限和资源组权限。

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

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

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

    注意

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

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

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

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

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

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

清理已微调模型

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

注意

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

成本和配额

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

微调为服务的 Phi 模型由 Microsoft 提供,并与 Azure AI Foundry 集成以供使用。 部署或微调模型时,可以在部署向导的“定价和条款”选项卡上找到定价信息

示例笔记本

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

内容筛选

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

后续步骤