你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 机器学习工作室中管理提示流计算会话
提示流计算会话提供应用运行所需的计算资源,包括包含所有必要依赖项包的 Docker 映像。 这种可靠且可缩放的环境可让提示流有效地执行其任务和函数,可提供无缝的用户体验。
计算会话管理的权限和角色
如要分配角色,需要具有 owner
身份,或者对资源具有 Microsoft.Authorization/roleAssignments/write
权限。
对于计算会话的用户,在工作区中分配 AzureML Data Scientist
角色。 如要了解详细信息,请参阅“管理对 Azure 机器学习工作区的访问权限”。
角色分配可能需要几分钟时间才能生效。
在工作室中启动计算会话
在使用 Azure 机器学习工作室启动计算会话之前,请确保:
- 你在工作区中具有
AzureML Data Scientist
角色。 - 工作区中的默认数据存储(通常为
workspaceblobstore
)是 Blob 类型。 - 工作区中存在工作目录 (
workspaceworkingdirectory
)。 - 如果使用虚拟网络进行提示流,则可以参阅“提示流的网络隔离”中的注意事项。
在流页面上启动计算会话
一个流绑定到一个计算会话。 可以在流页面上启动计算会话。
选择开始。 通过使用流文件夹中
flow.dag.yaml
中定义的环境启动计算会话,它在无服务器计算的虚拟机 (VM) 大小上运行,在工作区中有足够的配额。选择“开始使用高级设置”。 在高级设置中,可以:
- 选择计算类型。 可以在无服务器计算和计算实例之间进行选择。
如果选择无服务器计算,可以指定以下设置:
- 自定义计算会话使用的 VM 大小。 选择 VM 系列 D 及以上。 有关更多信息,请参阅支持的 VM 系列和大小一节
- 自定义空闲时间,如果计算会话在一段时间内未使用,则会自动删除该会话。
- 设置用户分配的托管标识。 计算会话使用此标识来提取基础映像、使用连接进行身份验证并安装包。 请确保用户分配的托管标识具有足够的权限。 如果未设置此标识,则默认使用用户标识。
- 可以使用以下 CLI 命令将用户分配的托管标识分配给工作区。 详细了解如何为工作区创建并更新用户分配的标识。
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
其中 workspace_update_with_multiple_UAIs.yml 的内容如下所示:
identity: type: system_assigned, user_assigned user_assigned_identities: '/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uai_name>': {} '<UAI resource ID 2>': {}
提示
Azure 机器学习工作区的用户分配托管标识需要以下 Azure RBAC 角色分配,才能访问与工作区关联的资源中的数据。
资源 权限 Azure 机器学习工作区 参与者 Azure 存储 参与者(控制平面)+ 存储 Blob 数据参与者 + 存储文件数据特权参与者(数据平面,使用文件共享中的流草稿和 Blob 中的数据) Azure Key Vault(当使用访问策略权限模型时) 参与者 + 清除操作以外的任何访问策略权限,这是适用于链接的 Azure Key Vault 的默认模式。 Azure Key Vault(当使用 RBAC 权限模型时) 参与者(控制平面)+ Key Vault 管理员(数据平面) Azure 容器注册表 参与者 Azure Application Insights 参与者 注意
作业提交者需要对用户分配的托管标识具有
assign
权限,你可以分配Managed Identity Operator
角色,因为每次创建无服务器计算会话时,它都会将用户分配的托管标识分配给计算。如果选择计算实例作为计算类型,则只能设置空闲关闭时间。
由于它在现有的计算实例上运行,因此 VM 大小是固定的,在会话端不能更改。
用于此会话的标识也在计算实例中定义,默认情况下它使用用户标识。 详细了解如何为计算实例分配标识
对于用于定义计算会话生命周期的空闲关闭时间,如果会话在设置的时间内处于空闲状态,则会自动删除。 如果在计算实例上启用了空闲关闭,那么它将从计算级别生效。
了解有关如何创建和管理计算实例的更多信息
- 选择计算类型。 可以在无服务器计算和计算实例之间进行选择。
使用计算会话提交在 CLI/SDK 中运行的流
除了工作室,还可以在提交流运行时在 CLI/SDK 中指定计算会话。
还可以在资源部分下指定实例类型或计算实例名称。 如果未指定实例类型或计算实例名称,Azure 机器学习会根据配额、成本、性能和磁盘大小等因素选择实例类型(VM 大小)。 详细了解无服务器计算。
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
# specify identity used by serverless compute.
# default value
# identity:
# type: user_identity
# use workspace first UAI
# identity:
# type: managed
# use specified client_id's UAI
# identity:
# type: managed
# client_id: xxx
column_mapping:
url: ${data.url}
# define cloud resource
resources:
instance_type: <instance_type> # serverless compute type
# compute: <compute_instance_name> # use compute instance as compute type
通过 CLI 提交此运行:
pfazure run create --file run.yml
注意
如果使用 CLI/SDK 提交流运行,则空闲关闭时间为一小时。 你可以转到计算页面来发布计算。
流文件夹之外的引用文件
有时,你可能想要引用流文件夹外部的 requirements.txt
文件。 例如,你可能有包含多个流的复杂项目,并且它们共享同一个 requirements.txt
文件。 为此,可以将字段 additional_includes
添加到 flow.dag.yaml
。 此字段的值是流文件夹的相对文件/文件夹路径的列表。 例如,如果 requirements.txt 位于流文件夹的父文件夹中,则可以将 ../requirements.txt
添加到 additional_includes
字段。
inputs:
question:
type: string
outputs:
output:
type: string
reference: ${answer_the_question_with_context.output}
environment:
python_requirements_txt: requirements.txt
additional_includes:
- ../requirements.txt
...
requirements.txt
文件被复制到流文件夹中,并使用它来启动计算会话。
在工作室流页面上更新计算会话
在流页面上,可以使用以下选项来管理计算会话:
- 更改计算会话设置,可以更改无服务器计算的计算设置,如 VM 大小和用户分配的托管标识,如果使用的是计算实例,则可以更改为使用其他实例。 也可以更改
- 还可以为无服务器计算更改用户分配的托管标识。 如果更改 VM 大小,则会使用新的 VM 大小重置计算会话。 如果你
- 从 requirements.txt 安装包打开提示流 UI 中的
requirements.txt
,可以在其中添加包。 - 查看已安装的包显示在计算会话中安装的程序包。 它包括安装到基础映像的包和在流文件夹中的
requirements.txt
文件中指定的包。 - 重置计算会话会删除当前计算会话,并创建具有相同环境的新计算会话。 如果遇到包冲突问题,可以尝试此选项。
- 停止计算会话会删除当前计算会话。 如果基础计算上没有活动的计算会话,则无服务器计算资源也将被删除。
还可以通过在流文件夹中的 requirements.txt
文件中添加包来自定义用于运行此流的环境。 在此文件中添加更多包后,可以选择以下任一选项:
- 在流文件夹中保存并安装触发器
pip install -r requirements.txt
。 此过程可能需要几分钟时间,具体视安装的包而定。 - 仅保存
requirements.txt
文件。 稍后可以自行安装包。
注意
可以更改 requirements.txt
的位置以及文件名,但请务必在流文件夹中的 flow.dag.yaml
文件中进行更改。
不要将 promptflow
和 promptflow-tools
的版本固定在 requirements.txt
中,因为系统已经将它们包含在会话基础映像中。
requirements.txt
不支持本地 wheel文件。 在映像中构建它们,并在 flow.dag.yaml
中更新自定义的基础映像。 了解有关如何构建自定义基础映像的更多信息。
在 Azure DevOps 的专用源中添加包
要在 Azure DevOps 中使用专用源,需要执行以下步骤:
将托管标识分配给工作区或计算实例。
使用无服务器计算作为计算会话,需要将用户分配的托管标识分配给工作区。
创建用户分配的托管标识,并在 Azure DevOps 组织中添加此标识。 如要了解详细信息,请参阅“使用服务主体和托管标识”。
注意
如果“添加用户”按钮不可见,则你可能没有执行此操作所需的权限。
-
注意
请确保用户分配的托管标识在工作区链接的密钥保管库上具有
Microsoft.KeyVault/vaults/read
。
使用计算实例作为计算会话,需要为计算实例分配用户分配的托管标识。
将
{private}
添加到专用源 URL。 例如,如果要在 Azure DevOps 的test_feed
中安装test_package
,请将-i https://{private}@{test_feed_url_in_azure_devops}
添加到requirements.txt
:-i https://{private}@{test_feed_url_in_azure_devops} test_package
在计算会话配置中使用用户分配的托管标识进行指定。
注意
此方法主要侧重于在流开发阶段中快速测试。如果还需要将此流部署为终结点,请在映像中生成此专用源,并在 flow.dag.yaml
中更新自定义基础映像。 详细了解如何生成自定义基础映像
更改计算会话的基础映像
默认情况下,我们使用最新的提示流基础映像。 如果要使用不同的基础映像,可以构建自定义映像。
- 在工作室中,可以在“计算会话”设置下的“基础映像”设置中更改基础映像。
也可以在流文件夹的
flow.dag.yaml
文件中的environment
下指定新的基础映像。environment: image: <your-custom-image> python_requirements_txt: requirements.txt
要使用新的基础映像,需要重置计算会话。 此过程需要几分钟时间,因为它会拉取新的基础映像并重新安装包。
管理计算会话使用的无服务器实例
使用无服务器计算作为计算会话时,可以管理无服务器实例。 在计算页面的计算会话列表选项卡中查看无服务器实例。
还可以在“活动流和运行”选项卡下访问在计算上运行的流和运行。由于删除实例会影响流并在其上运行。
计算会话、计算资源、流和用户之间的关系
- 一个用户可以有多个计算资源(无服务器或计算实例)。 由于不同的需求,单个用户可以拥有多个计算资源。 例如,一个用户可以具有多个具有不同 VM 大小或不同用户分配的托管标识的计算资源。
- 一个计算资源只能由单个用户使用。 计算资源用作单一用户的私有开发箱。 多个用户不能共享相同的计算资源。
- 一个计算资源可以托管多个计算会话。 计算会话是在基础计算资源上运行的容器。 例如,提示流创作不需要太多计算资源,因此单一计算资源可以托管来自同一用户的多个计算会话。
- 一个计算会话一次只属于单一计算资源。 但是,可以删除或停止计算会话,并将其重新分配给另一个计算资源。
- 一个流只能有一个计算会话。 每个流都是独立的,并在流文件夹中为计算会话定义基础映像和所需的 python 包。
将运行时切换到计算会话
与计算实例运行时相比,计算会话具有以下优势:
- 自动管理会话和基础计算的生命周期。 不再需要手动创建和管理它们。
- 通过在流文件夹中的
requirements.txt
文件中添加包来轻松自定义包,而不是创建自定义环境。
使用以下步骤将计算实例运行时切换到计算会话:
- 在流文件夹中准备
requirements.txt
文件。 请确保不要在requirements.txt
中固定promptflow
和promptflow-tools
的版本,因为基础映像中已包含这些内容。 计算会话在启动时将包安装在requirements.txt
文件中。 - 如果创建自定义环境来创建计算实例运行时,则可以从环境详细信息页面获取映像,并在流文件夹中的
flow.dag.yaml
文件中指定它。 要了解更多信息,请参阅更改计算会话的基础映像。 请确保你或在工作区上分配了托管标识的相关用户具有映像的acr pull
权限。
- 对于计算资源,如果想手动管理生命周期,可以继续使用现有计算实例,或可以尝试由系统管理其生命周期的无服务器计算。