设置开发和生产环境
设置开发和生产环境
在机器学习项目中,环境管理是实现持续交付和MLOps的关键环节。本文将详细介绍如何在Azure DevOps和GitHub Actions中设置开发和生产环境,包括具体的配置步骤和YAML文件示例。
在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机器学习工作区。
提示:详细了解如何使用Azure DevOps创建和确定环境。
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机器学习工作区的连接信息。
提示:详细了解如何通过GitHub Actions创建和使用环境。