二、云环境准备:从零搭建你的ML工作台

说实话,很多初学者觉得云环境准备就是点几个按钮的事。嗯,我当年也是这么想的。直到有一次,我在AWS上误删了一个生产环境的存储桶,整个团队的数据差点回不来……从那以后,我对云环境准备这件事,再也不敢马虎了。

这一章,我带你一步步把云环境搭好。说白了,就是给你的ML工作流找个靠谱的“家”。

2.1 云账号注册:你的第一把钥匙

选哪家云?我个人习惯看团队已有的技术栈。AWS、GCP、Azure三家各有千秋。如果你刚开始,我建议选AWS,文档最全,社区最活跃。

注册流程其实都差不多:

  • 邮箱验证:别用临时邮箱,后面收账单会出问题
  • 绑定支付方式:信用卡或借记卡,注意有些云厂商会扣1美元验证
  • 开启MFA:这一步千万别省!我见过有人账号被盗,一夜之间被开了几百台GPU实例
⚠️ 我曾经踩过的坑: 注册时用了个人邮箱,后来团队扩张,账号权限交接变得极其麻烦。建议从一开始就用公司域名邮箱,或者创建组织账号。

2.2 IAM权限配置:最小权限原则

IAM(Identity and Access Management)说白了就是“谁可以干什么”。你想想看,如果所有人都能删存储桶、关虚拟机,那不乱套了?

我一般这样设计权限:

角色 权限范围 典型策略
管理员 全部资源 AdministratorAccess
数据工程师 存储桶读写、计算实例管理 AmazonS3FullAccess + AmazonEC2FullAccess
算法工程师 存储桶只读、Notebook实例 AmazonS3ReadOnlyAccess + SageMakerFullAccess
审计员 只读日志和账单 ReadOnlyAccess

这里有个小技巧:用组来管理权限,而不是直接给用户授权。这样人员变动时,只需要调整组成员关系就行。

💡 我的经验: 创建IAM用户时,一定要下载CSV凭证文件。我见过太多人忘记这一步,结果要重新生成密钥。

2.3 存储桶创建:你的数据仓库

存储桶(S3/GCS/Blob)是ML工作流的核心。模型文件、训练数据、日志,全放这里。

创建时注意这几点:

  • 命名规则:全局唯一,建议用项目名+环境+用途,比如 ml-project-prod-data
  • 区域选择:和你的计算资源在同一区域,否则跨区域流量费很贵
  • 版本控制:开启!我靠这个功能救回过被误删的模型文件

来看一个AWS CLI创建存储桶的例子:

# 创建存储桶
aws s3api create-bucket \
    --bucket ml-project-dev-data \
    --region us-east-1

# 开启版本控制
aws s3api put-bucket-versioning \
    --bucket ml-project-dev-data \
    --versioning-configuration Status=Enabled

# 设置生命周期策略(自动清理旧版本)
aws s3api put-bucket-lifecycle-configuration \
    --bucket ml-project-dev-data \
    --lifecycle-configuration file://lifecycle.json

生命周期策略的JSON文件长这样:

{
  "Rules": [
    {
      "Id": "CleanOldVersions",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 30
      }
    }
  ]
}
⚠️ 注意: 存储桶默认是私有的。如果你需要公开访问(比如放模型下载链接),一定要配置Bucket Policy,并且不要把整个桶公开,只公开特定前缀。

2.4 网络与安全组设置:你的防火墙

安全组(Security Group)就是云上的防火墙。说白了,就是控制哪些IP可以访问你的资源。

我一般这样配置:

  • SSH访问:只允许公司VPN的IP段,比如 203.0.113.0/24
  • 内部通信:允许VPC内所有流量,用安全组ID互相引用
  • 对外服务:只开放必要的端口,比如80和443

来看一个AWS CLI创建安全组的例子:

# 创建安全组
aws ec2 create-security-group \
    --group-name ml-workflow-sg \
    --description "Security group for ML workflow"

# 允许SSH(仅限公司VPN)
aws ec2 authorize-security-group-ingress \
    --group-name ml-workflow-sg \
    --protocol tcp \
    --port 22 \
    --cidr 203.0.113.0/24

# 允许内部VPC通信
aws ec2 authorize-security-group-ingress \
    --group-name ml-workflow-sg \
    --protocol all \
    --source-group ml-workflow-sg
💡 避坑指南: 我曾经把安全组规则配反了,导致训练节点之间无法通信,分布式训练一直报错。排查了半天才发现是安全组没放行内部流量。记住:安全组是有状态的,出站规则默认允许所有流量,但入站规则要显式配置。

2.5 知识体系总览

下面这张图,帮你把这一章的核心逻辑串起来:

云环境准备知识体系 云环境准备 账号注册 IAM权限配置 存储桶创建 网络与安全组 MFA开启 支付绑定 最小权限原则 用户组管理 版本控制 生命周期策略 安全组规则 VPC内部通信 核心原则:最小权限 + 版本控制 + 安全隔离 所有配置都应通过IaC(基础设施即代码)管理

嗯,到这里,云环境的基础设施就搭好了。你想想看,有了账号、权限、存储和网络,你的ML工作流就有了一个安全、可控的运行环境。下一步,就是往这个环境里放数据、跑训练了。

专注资料整理