ZenML项目AWS云栈部署完全指南

ZenML项目AWS云栈部署完全指南

zenml ZenML 🙏: Build portable, production-ready MLOps pipelines. https://zenml.io. zenml 项目地址: https://gitcode.com/gh_mirrors/ze/zenml

前言

在现代机器学习工程实践中,构建可扩展、可复现的ML工作流至关重要。本文将详细介绍如何利用ZenML框架在AWS云平台上搭建完整的机器学习基础设施栈。通过本指南,您将掌握从零开始配置AWS IAM权限、服务连接器到最终部署可运行管道的全过程。

环境准备

基础要求

在开始部署前,请确保满足以下条件:

  • 有效的AWS账户(建议使用具有管理员权限的账户进行首次配置)
  • 本地已安装ZenML核心框架
  • AWS CLI工具已完成安装和配置

验证AWS CLI配置是否正确:

aws sts get-caller-identity

区域选择策略

AWS全球基础设施由多个区域(Region)组成,选择区域时需考虑:

  1. 业务需求(如数据合规要求)
  2. 服务可用性(某些服务可能不在所有区域提供)
  3. 延迟优化(选择靠近用户的区域)

建议记录所选区域代码(如ap-northeast-1),后续步骤将频繁使用。

IAM角色配置

账户ID获取

执行以下命令获取AWS账户ID:

aws sts get-caller-identity --query Account --output text

信任策略配置

创建assume-role-policy.json文件,内容如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<ACCOUNT_ID>:root",
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

角色创建与策略附加

  1. 创建基础角色:
aws iam create-role \
  --role-name zenml-role \
  --assume-role-policy-document file://assume-role-policy.json
  1. 附加必要策略:
POLICIES=(
  "AmazonS3FullAccess"
  "AmazonEC2ContainerRegistryFullAccess"
  "AmazonSageMakerFullAccess"
)

for policy in "${POLICIES[@]}"; do
  aws iam attach-role-policy \
    --role-name zenml-role \
    --policy-arn "arn:aws:iam::aws:policy/${policy}"
done

ZenML服务连接器配置

安装AWS相关集成:

zenml integration install aws s3 -y

注册服务连接器:

zenml service-connector register aws_connector \
  --type aws \
  --auth-method iam-role \
  --role_arn=<ROLE_ARN> \
  --region=<REGION> \
  --aws_access_key_id=<ACCESS_KEY> \
  --aws_secret_access_key=<SECRET_KEY>

核心组件部署

1. 构件存储(S3)

创建专用S3存储桶:

aws s3api create-bucket \
  --bucket unique-bucket-name \
  --region <REGION> \
  --create-bucket-configuration LocationConstraint=<REGION>

注册构件存储:

zenml artifact-store register cloud_artifact_store \
  -f s3 \
  --path=s3://bucket-name \
  --connector aws_connector

2. 编排器(SageMaker)

SageMaker域创建注意事项:

  • 每个区域只需创建一个域
  • 域包含用户配置文件和共享资源
  • 建议启用VPC配置增强安全性

注册编排器:

zenml orchestrator register sagemaker-orchestrator \
  --flavor=sagemaker \
  --region=<REGION> \
  --execution_role=<ROLE_ARN>

3. 容器注册表(ECR)

创建镜像仓库:

aws ecr create-repository \
  --repository-name zenml \
  --region <REGION> \
  --image-scanning-configuration scanOnPush=true

注册容器注册表:

zenml container-registry register ecr-registry \
  --flavor=aws \
  --uri=<ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com \
  --connector aws-connector

完整栈部署

组合所有组件创建执行栈:

zenml stack register aws_stack \
  -o sagemaker-orchestrator \
  -a cloud_artifact_store \
  -c ecr-registry \
  --set

验证栈配置:

zenml stack describe

示例管道运行

创建测试管道run.py

from zenml import pipeline, step
from zenml.config import DockerSettings

docker_settings = DockerSettings(
    requirements=["pandas", "scikit-learn"]
)

@step
def data_loader() -> str:
    return "AWS Stack is working!"

@pipeline(settings={"docker": docker_settings})
def aws_pipeline():
    data_loader()

if __name__ == "__main__":
    aws_pipeline()

执行管道:

python run.py

资源清理指南

为避免产生不必要费用,建议按以下顺序清理资源:

  1. 删除S3存储桶内容
  2. 移除SageMaker域
  3. 删除ECR仓库
  4. 分离IAM策略
  5. 删除IAM角色

完整清理命令示例:

# S3清理
aws s3 rb s3://bucket-name --force

# SageMaker清理
aws sagemaker delete-domain --domain-id <DOMAIN_ID>

# ECR清理  
aws ecr delete-repository --repository-name zenml --force

# IAM清理
aws iam delete-role --role-name zenml-role

生产环境最佳实践

安全增强建议

  1. 启用S3版本控制和加密:
aws s3api put-bucket-versioning \
  --bucket bucket-name \
  --versioning-configuration Status=Enabled

aws s3api put-bucket-encryption \
  --bucket bucket-name \
  --server-side-encryption-configuration '{
    "Rules": [{
      "ApplyServerSideEncryptionByDefault": {
        "SSEAlgorithm": "AES256"
      }
    }]
  }'
  1. 配置ECR镜像扫描:
aws ecr put-image-scanning-configuration \
  --repository-name zenml \
  --image-scanning-configuration scanOnPush=true

性能优化技巧

  1. 启用SageMaker Warm Pools:
from zenml.config import DockerSettings
from zenml.integrations.sagemaker.flavors.sagemaker_orchestrator_flavor import SagemakerOrchestratorSettings

sagemaker_settings = SagemakerOrchestratorSettings(
    keep_alive_period_in_seconds=600  # 保持10分钟活跃
)
  1. 使用S3传输加速:
aws s3api put-bucket-accelerate-configuration \
  --bucket bucket-name \
  --accelerate-configuration Status=Enabled

总结

通过本指南,您已完成以下关键步骤:

  1. 建立了安全的AWS IAM访问控制体系
  2. 配置了ZenML与AWS服务的无缝集成
  3. 部署了完整的机器学习基础设施栈
  4. 验证了管道执行能力

这种基于AWS的ZenML栈架构具有以下优势:

  • 弹性扩展:可根据负载自动调整资源
  • 完整追溯:所有构件和元数据版本化存储
  • 团队协作:共享基础设施确保环境一致性
  • 成本可控:按实际使用量计费

建议下一步探索:

  • 集成MLflow等实验跟踪工具
  • 配置自动伸缩策略优化资源使用
  • 实现跨区域灾备方案

zenml ZenML 🙏: Build portable, production-ready MLOps pipelines. https://zenml.io. zenml 项目地址: https://gitcode.com/gh_mirrors/ze/zenml

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏真权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值