你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何使用 Azure 机器学习工作室部署 Mistral 模型
本文介绍了如何使用 Azure 机器学习工作室将 Mistral 系列模型部署为采用基于即用即付令牌计费方式的无服务器 API。
Mistral AI 在 Azure 机器学习工作室中提供两类模型。 这些模型在模型目录中提供。
- 高级模型:Mistral Large (2402)、Mistral Large (2407)、Mistral Small 和 Ministral-3B。
- 开放式模型:Mistral Nemo、Mixtral-8x7B-Instruct-v01、Mixtral-8x7B-v01、Mistral-7B-Instruct-v01 和 Mistral-7B-v01。
所有高级模型和 Mistral Nemo(开放模型)都可以部署为无服务器 API,使用即用即付基于标记的计费。 可以将其他开放式模型部署到你自己的 Azure 订阅中的托管计算。
可以通过筛选 Mistral 集合来浏览模型目录中的 Mistral 系列模型。
Mistral 系列模型
Mistral Large 是 Mistral AI 最先进的大型语言模型 (LLM)。 由于其先进的推理和知识能力,它可以用于任何基于语言的任务。 Mistral Large 模型版本有两个变体:
- Mistral Large (2402)
- Mistral Large (2407)
此外,Mistral Large (2402) 的某些特性包括:
- 专用于 RAG。 重要信息不会在长上下文窗口(最多 32 K 个标记)中间丢失。
- 编码能力强。 代码生成、代码评审和注释。 支持所有主流编码语言。
- 多语言设计。 除英语外,在法语、德语、西班牙语和意大利语方面表现一流。 支持数十种语言。
- 符合负责任 AI 原则。 模型中内置了高效的防护措施,并提供具有
safe_mode
选项的额外安全层。
Mistral Large (2407) 的特性包括:
- 多语言设计。 支持数十种语言,包括英语、法语、德语、西班牙语和意大利语。
- 精通编码。 使用 80 多种编码语言(包括 Python、Java、C、C++、JavaScript 和 Bash)进行了训练。 还对更具体的语言进行了训练,如 Swift 和 Fortran。
- 以代理为中心。 拥有原生函数调用和 JSON 输出的代理功能。
- 高级的推理能力。 具有先进的数学和推理能力。
重要
此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
将 Mistral 系列模型部署为无服务器 API
模型目录中的某些模型可以部署为按即用即付计费的无服务器 API。 这种部署可以将模型作为 API 使用,而无需将它们托管在自己的订阅上,同时保持组织所需的企业安全性和合规性。 此部署选项不需要来自订阅的配额。
Mistral Large (2402)、Mistral Large (2407)、Mistral Small、Mistral Nemo 可部署为采用即用即付计费的无服务器 API,并由 Mistral AI 通过 Microsoft Azure 市场提供。 Mistral AI 可以更改或更新这些模型的使用条款和定价。
先决条件
具有有效付款方式的 Azure 订阅。 不能使用免费或试用 Azure 订阅。 如果没有 Azure 订阅,请先创建一个付费的 Azure 帐户。
一个 Azure 机器学习工作区。 如果没有工作区,请使用快速入门:创建工作区资源一文中的步骤创建一个。 Mistral 系列中合格模型的无服务器 API 模型部署产品/服务仅适用于在以下区域创建的工作区:
- 美国东部
- 美国东部 2
- 美国中北部
- 美国中南部
- 美国西部
- 美国西部 3
- 瑞典中部
有关支持无服务器 API 终结点部署的每个模型可用的区域列表,请参阅无服务器 API 终结点中模型的区域可用性
Azure 基于角色的访问控制 (Azure RBAC) 用于授予对 Azure 机器学习中的操作的访问权限。 若要执行本文中的步骤,必须为用户帐户分配资源组的“Azure AI 开发人员”角色。 有关权限的详细信息,请参阅管理对 Azure 机器学习工作区的访问权限。
创建新部署
以下步骤演示了 Mistral Large (2402) 的部署,但你可以通过替换模型名称来使用相同的步骤部署 Mistral Nemo 或任何高级 Mistral 模型。
若要创建部署:
转到 Azure 机器学习工作室。
选择要在其中部署模型的工作区。 若要使用无服务器 API 模型部署产品/服务,工作区必须属于“先决条件”中列出的区域之一。
从模型目录选择要部署的模型(例如 Mistral Large (2402) 模型)。
或者,可以通过转到工作区并选择“终结点”>“无服务器终结点”>“创建”来启动部署。
在模型目录中的模型概述页上,选择“部署”以打开模型的无服务器 API 部署窗口。
勾选复选框,表示接受 Microsoft 购买政策。
在部署向导中,选择“Azure 市场条款”的链接,了解有关使用条款的详细信息。
还可以选择“定价和条款”选项卡了解所选模型的定价。
如果这是你第一次在工作区中部署模型,则必须为工作区订阅特定产品/服务(例如 Mistral Large (2402))。 此步骤要求帐户具有先决条件中列出的资源组的 Azure AI 开发人员角色。 每个工作区都订阅特定 Azure 市场产品/服务,可用于控制和监视支出。 选择“订阅和部署”。 目前,工作区中每个模型只能有一个部署。
为工作区订阅特定 Azure 市场产品/服务后,同一工作区中同一产品/服务的后续部署不需要再次订阅。 如果此方案适用于你,你将看到一个可选择的“继续部署”选项。
为部署命名。 此名称将成为部署 API URL 的一部分。 此 URL 必须在每个 Azure 区域中唯一。
选择“部署”。 等待部署完成,然后将重定向到无服务器终结点页。
选择终结点以打开其详细信息页。
选择“测试”选项卡,开始与模型交互。
始终可以通过导航到“工作区”>“终结点”>“无服务器终结点”来查找终结点的详细信息、URL 和访问密钥。
若要了解部署为采用基于即用即付令牌计费方式的无服务器 API 的 Mistral AI 模型的计费方式,请参阅部署为服务的 Mistral 系列模型的成本和配额注意事项。
将 Mistral 系列模型作为服务使用
可以通过聊天 API 使用 Mistral 模型。
- 在工作区中,选择“终结点”>“无服务器终结点”。
- 查找并选择你创建的 部署。
- 复制“目标”URL 和“密钥”令牌值。
- 使用路由
/chat/completions
上的 Azure AI 模型推理 API 或路由/v1/chat/completions
上的 Mistral 聊天 API 发出 API 请求。
有关使用 API 的详细信息,请参阅参考部分。
部署为服务的 Meta 系列模型参考
Mistral 模型接受路由 /chat/completions
上的 Azure AI 模型推理 API 和 /v1/chat/completions
上的本地 Mistral 聊天 API。
Azure AI 模型推理 API
可以在聊天完成参考一文和可以从终结点本身获取 OpenAPI 规范中找到 Azure AI 模型推理 API 架构。
Mistral 聊天 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 |
8192 |
在完成中生成的最大令牌数。 提示加上 max_tokens 的令牌计数不能超过模型的上下文长度。 |
top_p |
float |
1 |
温度采样的替代方法,称为核心采样,其中模型将考虑具有 top_p 概率质量的令牌的结果。 所以 0.1 意味着只考虑包含前 10% 概率质量的令牌。 我们通常建议更改 top_p 或 temperature ,但不要同时更改两者。 |
temperature |
float |
1 |
要使用的采样温度,介于 0 到 2 之间。 较高的值意味着模型样本的分布范围更广。 零表示贪婪采样。 建议更改此参数或 top_p ,但不要同时更改两者。 |
ignore_eos |
boolean |
False |
是否忽略 EOS 令牌,并在生成 EOS 令牌后继续生成令牌。 |
safe_prompt |
boolean |
False |
是否在所有对话之前插入安全提示。 |
该 messages
对象具有以下字段:
密钥 | 类型 | 值 |
---|---|---|
content |
string |
消息的内容。 所有消息都需要内容。 |
role |
string |
消息作者的角色。 system 、user 或 assistant 之一。 |
请求示例
正文
{
"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 时,此数组中的索引可能不按顺序排列,并且可能不是 0 到 n-1 。 |
messages 或 delta |
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 |
array 的 integers |
完成输出中每个令牌的位置或索引。 |
token_logprobs |
array 的 float |
从 top_logprobs 数组中的字典中选择 logprobs 。 |
tokens |
array 的 string |
所选令牌。 |
top_logprobs |
array 的 dictionary |
字典数组。 在每个字典中,密钥是令牌,值为概率。 |
响应示例
以下 JSON 是一个示例响应:
{
"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
}
}
更多推理示例
示例类型 | 示例笔记本 |
---|---|
使用 CURL 和 Python Web 请求的 CLI | webrequests.ipynb |
OpenAI SDK(实验性) | openaisdk.ipynb |
LangChain | langchain.ipynb |
Mistral AI | mistralai.ipynb |
LiteLLM | litellm.ipynb |
成本和配额
部署为服务的 Meta 系列模型的成本和配额注意事项
部署为服务的 Mistral 模型由 Mistral AI 通过 Azure 市场提供,并与 Azure 机器学习工作室集成以供使用。 部署模型时,可以看到 Azure 市场定价。
每当工作区从 Azure 市场订阅给定产品/服务时,都会创建一个新资源来跟踪与其消耗相关的成本。 同一资源用于跟踪与推理相关的成本。但是,可以使用多个计量器来独立跟踪每个方案。
有关如何跟踪成本的详细信息,请参阅监视通过 Azure 市场提供的模型的成本。
配额是按部署管理的。 每个部署的速率限制为每分钟 200,000 个令牌和每分钟 1,000 个 API 请求。 但是,我们目前的限制为每个工作区每个模型一个部署。 如果当前速率限制不能满足你的方案,请联系 Microsoft Azure 支持部门。
内容筛选
部署为即用即付服务的模型受 Azure AI 内容安全保护。 启用 Azure AI 内容安全后,提示和补全会经过一系列分类模型,旨在检测和防止输出有害内容。 内容筛选(预览版)系统会在输入提示和输出补全中检测特定类别的潜在有害内容并对其采取措施。 详细了解 Azure AI 内容安全。