二、云环境准备:从零搭建你的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 知识体系总览
下面这张图,帮你把这一章的核心逻辑串起来:
嗯,到这里,云环境的基础设施就搭好了。你想想看,有了账号、权限、存储和网络,你的ML工作流就有了一个安全、可控的运行环境。下一步,就是往这个环境里放数据、跑训练了。