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

如何使用 Azure AI Studio 部署 Meta Llama 3.1 模型

重要

本文介绍的某些功能可能仅在预览版中提供。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

本文介绍 Meta Llama 模型系列。 此外,你还将了解如何使用 Azure AI Studio 将此集中的模型部署为即用即付计费型无服务器 API 或部署为托管计算。

重要

详细了解现已在 Azure AI 模型目录中推出的 Meta Llama 3.1 405B Instruct 和 其他 Llama 3.1 模型:Microsoft 技术社区博客Meta 公告博客

现在可在 Azure AI 模型即服务上使用:

  • Meta-Llama-3.1-405B-Instruct
  • Meta-Llama-3.1-70B-Instruct
  • Meta-Llama-3.1-8B-Instruct

Meta Llama 3.1 系列多语言大型语言模型 (LLM) 是经过预先训练和指令优化的生成式模型集合,其大小为 8B、70B 和 405B(文本输入/文本输出)。 所有模型都支持长上下文长度 (128k),并已针对推理进行优化,支持分组查询注意力 (GQA)。 Llama 3.1 指令优化的纯文本模型(8B、70B、405B)针对多语言对话用例进行了优化,在常见的行业基准上优于许多可用的开源聊天模型。

请参阅以下 GitHub 示例,了解与 LangChainLiteLLMOpenAIAzure API 的集成。

将 Meta Llama 3.1 405B Instruct 部署为无服务器 API

Meta Llama 3.1 模型(例如 Meta Llama 3.1 405B Instruct)可以部署为即用即付型无服务器 API,提供一种将它们作为 API 使用的方法,你无需将它们托管在自己的订阅上,但又能保持组织所需的企业安全性和合规性。 此部署选项不需要来自订阅的配额。 Meta Llama 3.1 模型通过 Microsoft Azure 市场部署为即用即付计费型无服务器 API,可能会添加更多使用条款和定价。

Azure 市场模型产品/服务

部署为即用即付服务时,Llama 3.1 和 Llama 3 在 Azure 市场中可提供以下模型:

如果需要部署其他模型,请改为将其部署到托管计算

先决条件

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

  • AI Studio 中心。 Meta Llama 3.1 和 Llama 3 的无服务器 API 模型部署产品/服务仅适用于在以下区域创建的中心:

    • 美国东部
    • 美国东部 2
    • 美国中北部
    • 美国中南部
    • 美国西部
    • 美国西部 3
    • 瑞典中部

    有关支持无服务器 API 终结点部署的每个模型可用的区域列表,请参阅无服务器 API 终结点中模型的区域可用性

  • Azure AI Studio 中的 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 中基于角色的访问控制

创建新部署

若要创建部署:

  1. 登录到 Azure AI Studio

  2. 从 Azure AI Studio 模型目录中选择 Meta-Llama-3.1-405B-Instruct 部署。

    也可从 AI Studio 中的项目开始启动部署。 选择项目,然后选择“部署”>“+ 创建”

  3. Meta-Llama-3.1-405B-Instruct 的“详细信息”页面上选择“部署”,然后选择“Azure AI 内容安全的无服务器 API”

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

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

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

    注意

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

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

  8. 为部署命名。 此名称将成为部署 API URL 的一部分。 此 URL 必须在每个 Azure 区域中唯一。

  9. 选择“部署”。 部署准备就绪后,你将被重定向到“部署”页面。

  10. 选择“在操场中打开”,开始与模型交互

  11. 可以返回到“部署”页,选择部署,然后记下终结点的目标 URL 和密钥,调用部署并生成完成时将用到它们

  12. 始终可以通过导航到项目页面,并从左侧菜单选择“部署”来查找终结点的详细信息、URL 和访问密钥

若要了解部署了即用即付的 Meta Llama 模型的计费,请参阅部署为服务的 Llama 3 模型的成本和配额注意事项

使用 Meta Llama 模型作为服务

部署为服务的模型可以通过聊天 API 或完成 API 使用,具体取决于部署的模型类型。

  1. 选择项目或中心,然后从左侧菜单中选择“部署”

  2. 查找并选择你创建的 Meta-Llama-3.1-405B-Instruct 部署。

  3. 选择“在操场中打开”。

  4. 选择“查看代码”,并复制“终结点”URL 和“密钥”值

  5. 根据部署的模型类型发出 API 请求。

    • 对于完成模型(例如 Meta-Llama-3-8B),请使用 /completions API。
    • 对于聊天模型(例如 Meta-Llama-3.1-405B-Instruct),请使用 /chat/completions API。

    有关使用 API 的详细信息,请参阅参考部分。

部署为服务的 Meta Llama 3.1 模型参考

Llama 模型接受路由 /chat/completions 上的 Azure AI 模型推理 API,或 /v1/chat/completions 上的 Llama 聊天 API。 同样,可以使用路由 /completions 上的 Azure AI 模型推理 API/v1/completions 上的 Llama 补全 API 生成文本补全项

可以在聊天补全参考一文和可以从终结点本身获取 OpenAPI 规范中找到 Azure AI 模型推理 API 架构。

完成 API

使用方法 POST 将请求发送到 /v1/completions 路由:

请求

POST /v1/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json

请求架构

有效负载是一个 JSON 格式的字符串,其中包含以下参数:

密钥 类型 默认 说明
prompt string 无默认设置。 必须指定此值。 发送到模型的提示。
stream boolean False 流式处理允许生成的令牌在可用时以仅数据服务器发送事件的形式发送。
max_tokens integer 16 在完成中生成的最大令牌数。 提示加上 max_tokens 的令牌计数不能超过模型的上下文长度。
top_p float 1 温度采样的替代方法,称为核心采样,其中模型将考虑具有 top_p 概率质量的令牌的结果。 所以 0.1 意味着只考虑包含前 10% 概率质量的令牌。 我们通常建议更改 top_ptemperature,但不要同时更改两者。
temperature float 1 要使用的采样温度,介于 0 到 2 之间。 较高的值意味着模型样本的分布范围更广。 零表示贪婪采样。 建议更改此它或 top_p,但不要同时更改两者。
n integer 1 要为每个提示生成的完成数。
注意:由于此参数会生成许多完成,因此可能会快速消耗你的令牌配额。
stop array null 字符串或字符串列表,其中包含 API 停止生成其他令牌的单词。 返回的文本不包含停止序列。
best_of integer 1 在服务器端生成 best_of 完成并返回“最佳”(每个令牌的日志概率最低的参数)。 无法流式传输结果。 与 n 一起使用时,best_of 控制候选完成数,n 指定返回的完成数,best_of 的值必须大于 n
注意:由于此参数会生成许多完成,因此可能会快速消耗你的令牌配额。
logprobs integer null 一个数字,指示包含有关 logprobs 最有可能的令牌和已选择的令牌的日志概率。 例如,如果 logprobs 为 10,则 API 会返回包含 10 个最有可能的令牌的列表。 API 会始终返回采样令牌的 logprob,因此响应中可能最多有 logprobs+1 个元素。
presence_penalty float null 介于 -2.0 和 2.0 之间的数字。 正值会根据它们到目前为止是否在文本中出现来惩罚新令牌,从而增加模型谈论新话题的可能性。
ignore_eos boolean True 是否忽略 EOS 令牌,并在生成 EOS 令牌后继续生成令牌。
use_beam_search boolean False 是否使用书搜索而不是采样。 在这种情况下,best_of 必须大于 1,且 temperature 必须为 0
stop_token_ids array null 令牌的 ID 列表,这些令牌生成时会停止继续生成令牌。 返回的输出包含停止令牌,除非停止标记是特殊令牌。
skip_special_tokens boolean null 是否跳过输出中的特殊令牌。

示例

正文

{
    "prompt": "What's the distance to the moon?",
    "temperature": 0.8,
    "max_tokens": 512
}

响应架构

响应有效负载是具有以下字段的字典。

密钥 类型 描述
id string 完成的唯一标识符。
choices array 为输入提示生成的模型完成选项的列表。
created integer 创建完成时间的 Unix 时间戳(以秒为单位)。
model string 用于完成的 model_id。
object string 始终为 text_completion 的对象类型。
usage object 完成请求的使用情况统计信息。

提示

在流式处理模式下,对于每个响应区块,finish_reason 始终为 null,但最后一个由有效负载 [DONE] 终止的流式处理模式除外。

choices 对象是具有以下字段的字典。

密钥 类型 描述
index integer 选择索引。 当 best_of> 1 时,此数组中的索引可能不按顺序排列,并且可能不是 0 到 n-1。
text string 完成结果。
finish_reason string 模型停止生成令牌的原因:
- stop:模型到达了自然停止点或用户提供的停止序列。
- length:如果已达到最大令牌数。
- content_filter:RAI 审查和 CMP 强制审查时。
- content_filter_error:审查期间出错,无法就响应做出决定。
- null:API 回复仍在进行中或未完成。
logprobs object 输出文本中生成的标记的对数概率。

usage 对象是具有以下字段的字典。

密钥 类型
prompt_tokens integer 提示中的标记数。
completion_tokens integer 完成时生成的令牌数。
total_tokens integer 令牌总数。

logprobs 对象是具有以下字段的字典:

密钥 类型
text_offsets arrayintegers 完成输出中每个令牌的位置或索引。
token_logprobs arrayfloat top_logprobs 数组中的字典中选择 logprobs
tokens arraystring 所选令牌。
top_logprobs arraydictionary 字典数组。 在每个字典中,密钥是令牌,值为概率。

示例

{
    "id": "12345678-1234-1234-1234-abcdefghijkl",
    "object": "text_completion",
    "created": 217877,
    "choices": [
        {
            "index": 0,
            "text": "The Moon is an average of 238,855 miles away from Earth, which is about 30 Earths away.",
            "logprobs": null,
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 7,
        "total_tokens": 23,
        "completion_tokens": 16
    }
}

聊天 API

使用方法 POST 将请求发送到 /v1/chat/completions 路由:

请求

POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json

请求架构

有效负载是一个 JSON 格式的字符串,其中包含以下参数:

密钥 类型 默认 说明
messages string 无默认设置。 必须指定此值。 消息的消息或历史记录,用于提示模型。
stream boolean False 流式处理允许生成的令牌在可用时以仅数据服务器发送事件的形式发送。
max_tokens integer 16 在完成中生成的最大令牌数。 提示加上 max_tokens 的令牌计数不能超过模型的上下文长度。
top_p float 1 温度采样的替代方法,称为核心采样,其中模型将考虑具有 top_p 概率质量的令牌的结果。 所以 0.1 意味着只考虑包含前 10% 概率质量的令牌。 我们通常建议更改 top_ptemperature,但不要同时更改两者。
temperature float 1 要使用的采样温度,介于 0 到 2 之间。 较高的值意味着模型样本的分布范围更广。 零表示贪婪采样。 建议更改此它或 top_p,但不要同时更改两者。
n integer 1 要为每个提示生成的完成数。
注意:由于此参数会生成许多完成,因此可能会快速消耗你的令牌配额。
stop array null 字符串或字符串列表,其中包含 API 停止生成其他令牌的单词。 返回的文本不包含停止序列。
best_of integer 1 在服务器端生成 best_of 完成并返回“最佳”(每个令牌的日志概率最低的参数)。 无法流式传输结果。 与 n 一起使用时,best_of 控制候选完成数,n 指定返回的完成数,best_of 的值必须大于 n
注意:由于此参数会生成许多完成,因此可能会快速消耗你的令牌配额。
logprobs integer null 一个数字,指示包含有关 logprobs 最有可能的令牌和已选择的令牌的日志概率。 例如,如果 logprobs 为 10,则 API 会返回包含 10 个最有可能的令牌的列表。 API 将始终返回采样令牌的 logprob,因此响应中可能最多有 logprobs+1 个元素。
presence_penalty float null 介于 -2.0 和 2.0 之间的数字。 正值会根据它们到目前为止是否在文本中出现来惩罚新令牌,从而增加模型谈论新话题的可能性。
ignore_eos boolean True 是否忽略 EOS 令牌,并在生成 EOS 令牌后继续生成令牌。
use_beam_search boolean False 是否使用书搜索而不是采样。 在这种情况下,best_of 必须大于 1,且 temperature 必须为 0
stop_token_ids array null 令牌的 ID 列表,这些令牌生成时会停止继续生成令牌。 返回的输出包含停止令牌,除非停止标记是特殊令牌。
skip_special_tokens boolean null 是否跳过输出中的特殊令牌。

messages 对象具有以下字段:

密钥 类型
content string 消息的内容。 所有消息都需要内容。
role string 消息作者的角色。 systemuserassistant 之一。

示例

正文

{
    "messages":
    [
        { 
        "role": "system", 
        "content": "You are a helpful assistant that translates English to Italian."},
        {
        "role": "user", 
        "content": "Translate the following sentence from English to Italian: I love programming."
        }
    ],
    "temperature": 0.8,
    "max_tokens": 512,
}

响应架构

响应有效负载是具有以下字段的字典。

密钥 类型 描述
id string 完成的唯一标识符。
choices array 为输入消息生成的模型完成选项列表。
created integer 创建完成时间的 Unix 时间戳(以秒为单位)。
model string 用于完成的 model_id。
object string 始终为 chat.completion 的对象类型。
usage object 完成请求的使用情况统计信息。

提示

在流式处理模式下,对于每个响应区块,finish_reason 始终为 null,但最后一个由有效负载 [DONE] 终止的流式处理模式除外。 在每个 choices 对象中,messages 的键由 delta 更改。

choices 对象是具有以下字段的字典。

密钥 类型 描述
index integer 选择索引。 best_of> 1 时,此数组中的索引可能不按顺序排列,并且可能不是 0n-1
messagesdelta string 聊天完成结果为 messages 对象。 使用流式处理模式时,将使用 delta 键。
finish_reason string 模型停止生成令牌的原因:
- stop:模型到达了自然停止点或用户提供的停止序列。
- length:如果已达到最大令牌数。
- content_filter:RAI 审查和 CMP 强制审查时
- content_filter_error:审查期间出错,无法就响应做出决定
- null:API 回复仍在进行中或未完成。
logprobs object 输出文本中生成的标记的对数概率。

usage 对象是具有以下字段的字典。

密钥 类型
prompt_tokens integer 提示中的标记数。
completion_tokens integer 完成时生成的令牌数。
total_tokens integer 令牌总数。

logprobs 对象是具有以下字段的字典:

密钥 类型
text_offsets arrayintegers 完成输出中每个令牌的位置或索引。
token_logprobs arrayfloat top_logprobs 数组中的字典中选择 logprobs
tokens arraystring 所选令牌。
top_logprobs arraydictionary 字典数组。 在每个字典中,密钥是令牌,值为概率。

示例

下面是一个示例响应:

{
    "id": "12345678-1234-1234-1234-abcdefghijkl",
    "object": "chat.completion",
    "created": 2012359,
    "model": "",
    "choices": [
        {
            "index": 0,
            "finish_reason": "stop",
            "message": {
                "role": "assistant",
                "content": "Sure, I\'d be happy to help! The translation of ""I love programming"" from English to Italian is:\n\n""Amo la programmazione.""\n\nHere\'s a breakdown of the translation:\n\n* ""I love"" in English becomes ""Amo"" in Italian.\n* ""programming"" in English becomes ""la programmazione"" in Italian.\n\nI hope that helps! Let me know if you have any other sentences you\'d like me to translate."
            }
        }
    ],
    "usage": {
        "prompt_tokens": 10,
        "total_tokens": 40,
        "completion_tokens": 30
    }
}

将 Meta Llama 模型部署到托管计算

除使用即用即付托管服务进行部署外,还可以将 Meta Llama 3.1 模型部署到 AI Studio 中的托管计算。 部署到托管计算时,可以选择有关运行该模型的基础结构的所有详细信息,包括要使用的虚拟机和处理预期负载的实例数。 部署到托管计算的模型使用订阅中的配额。 可以在托管计算上使用 3.1 发行波次中的以下模型:

  • Meta-Llama-3.1-8B-Instruct(支持 FT)
  • Meta-Llama-3.1-70B-Instruct(支持 FT)
  • Meta-Llama-3.1-8B(支持 FT)
  • Meta-Llama-3.1-70B(支持 FT)
  • Llama Guard 3 8B
  • Prompt Guard

按照这些步骤在 Azure AI Studio 中将模型(例如 Meta-Llama-3.1-70B-Instruct )部署到托管计算。

  1. 从 Azure AI Studio 模型目录中选择要部署的模型。

    也可从 AI Studio 中的项目开始启动部署。 选择你的项目,然后选择“部署”>“+ 创建”

  2. 在模型的“详细信息”页上,选择“查看许可证”按钮旁边的“部署”

    显示如何使用托管计算选项部署模型的屏幕截图。

  3. 在“使用 Azure AI 内容安全(预览版)进行部署”页上,选择“跳过 Azure AI 内容安全”,以便继续使用 UI 部署模型。

    提示

    一般情况下,建议选择“启用 Azure AI 内容安全(建议)”以部署 Llama 模型。 此部署选项目前仅支持在笔记本中使用 Python SDK。

  4. 选择“继续”。

  5. 选择要在其中创建部署的项目。

    提示

    如果所选项目中没有足够的可用配额,可以使用选项我想使用共享配额,并且我确认将在 168 小时内删除此终结点

  6. 选择要分配给部署的虚拟机和实例计数。

  7. 选择要将此部署作为新终结点还是现有终结点的一部分创建。 终结点可以托管多个部署,同时保留每个部署的资源配置独占。 同一终结点下的部署共享终结点 URI 及其访问密钥。

  8. 指示是否要启用推理数据收集(预览版)

  9. 选择“部署”。 片刻之后,将打开终结点的“详细信息”页。

  10. 等待终结点创建和部署完成。 此步骤可能需要几分钟。

  11. 选择部署的“使用”选项卡,以获取可用于在应用程序中使用已部署模型的代码示例

使用部署到托管计算的 Llama 2 模型

有关如何调用部署到托管计算的 Llama 模型参考,请参阅 Azure AI Studio 模型目录中的模型卡片。 每个模型的卡片都有一个概述页,其中包含模型说明、基于代码的推理、微调和模型评估的示例。

更多推理示例
示例笔记本
使用 CURL 和 Python Web 请求的 CLI webrequests.ipynb
OpenAI SDK(实验性) openaisdk.ipynb
LangChain langchain.ipynb
LiteLLM SDK litellm.ipynb

成本和配额

部署为服务的 Meta Llama 3.1 模型的成本和配额注意事项

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

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

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

显示与不同模型产品/服务及其关联计量对应的不同资源的屏幕截图。

配额是按部署管理的。 每个部署的速率限制为每分钟 400,000 个令牌和每分钟 1,000 个 API 请求。 但是,我们目前的限制为每个项目每个模型一个部署。 如果当前速率限制不能满足你的方案,请联系 Microsoft Azure 支持部门。

部署为托管计算的 Meta Llama 3.1 模型的成本和配额注意事项

对于使用托管计算部署和推理 Meta Llama 3.1 模型,可以使用按区域分配给订阅的虚拟机 (VM) 核心配额。 注册 Azure AI Studio 时,你会收到所在区域中可用的多个 VM 系列的默认 VM 配额。 你可以继续创建部署,直到达到配额限制。 达到此限制后,可以请求增加配额。

内容筛选

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

后续步骤