设置开发和生产环境
在 DevOps 中,环境是指资源的集合。 这些资源用于部署应用程序,或与机器学习项目一起用来部署模型。
使用环境进行持续交付
你使用的环境数取决于你的组织。 通常,至少有两个环境:开发和生产。此外,还可以在过渡或预生产环境之间添加环境。
通过持续交付,典型的方法是:
- 试用开发环境中的模型训练。
- 将最佳模型移动到过渡或预生产环境以部署和测试模型。
- 最后,将模型发布到生产环境以部署模型,以便最终用户能够使用它。
注意
在本模块中,我们将引用环境的 DevOps 解释。 请注意,Azure 机器学习还使用术语环境来描述运行脚本所需的 Python 包集合。 这两个环境概念彼此独立。 详细了解 Azure 机器学习环境。
组织 Azure 机器学习环境
实现 MLOps 并大规模使用机器学习模型时,最好在不同的阶段使用单独的环境。
假设你的团队使用开发、预生产和生产环境。 并非你的所有团队成员都应获取对所有环境的访问权限。 数据科学家只能在具有非生产数据的开发环境中工作,而机器学习工程师在具有生产数据的预生产和生产环境中部署模型。
使用单独的环境可以更轻松地控制对资源的访问。 然后,每个环境都可以与单独的 Azure 机器学习工作区相关联。
在 Azure 中,你将使用基于角色的访问控制 (RBAC) 为同事提供对他们需要处理的资源子集的适当访问权限级别。
或者,只能使用一个 Azure 机器学习工作区。 使用一个工作区进行开发和生产时,Azure 占用空间更小,管理开销更少。 但是,RBAC 将同时应用于开发环境和专业环境,这可能意味着你为用户提供对资源的访问权限太少或太多。
提示
详细了解组织 Azure 机器学习资源的最佳做法。
若要为模型开发的不同阶段使用环境,可以在使用 GitHub Actions 运行 Azure Pipeline 或工作流时确定环境。
Azure DevOps 环境
若要在 Azure DevOps 中使用环境,首先需要创建环境。 然后,可以指定要在 Azure Pipeline 中部署到的环境。
- 在 Azure DevOps 中,展开“管道”菜单。
- 选择“环境”。
- 创建新环境。
- 为环境命名。
- 为资源选择“无”。 在管道本身中确定特定的 Azure 机器学习工作区。
- 选择“创建”。
在 Azure DevOps 中创建环境并将不同的 Azure 机器学习工作区与每个环境关联后,可以指定要在 Azure Pipelines YAML 文件中部署到的环境:
trigger:
- main
stages:
- stage: deployDev
displayName: 'Deploy to development environment'
jobs:
- deployment: publishPipeline
displayName: 'Model Training'
pool:
vmImage: 'Ubuntu-18.04'
environment: dev
strategy:
runOnce:
deploy:
steps:
- template: aml-steps.yml
parameters:
serviceconnectionname: 'spn-aml-workspace-dev'
YAML 文件中 environment
的值是 dev
,指示模型是在开发环境中训练的。 通过服务连接,可以指定要用于模型训练的 Azure 机器学习工作区。
提示
GitHub 环境
若要将环境与 GitHub Actions 一起使用,首先需要创建环境。 然后,可以在工作流中使用环境。
若要在 GitHub 存储库中创建环境,请执行以下操作:
- 转到存储库中的“设置”选项卡。
- 选择“环境”。
- 创建新环境。
- 输入名称。
- 选择“配置环境”。
若要将环境与特定的 Azure 机器学习工作区相关联,可以创建一个环境机密,以仅授予该环境对 Azure 机器学习工作区的访问权限。
若要在工作流中使用环境,可以通过将其包含在 YAML 文件中来添加要部署到的环境:
name: Train model
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
environment:
name: dev
steps:
- name: check out repo
uses: actions/checkout@v2
- name: install az ml extension
run: az extension add -n ml -y
- name: azure login
uses: azure/login@v1
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: set current directory
run: cd src
- name: run pipeline
run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
在此示例中,AZURE_CREDENTIALS
机密包含用于此环境的 Azure 机器学习工作区的连接信息。
提示