1. 从零开始的AI运维工程师转型日记
那天早上9点,我坐在全新的工位上,面前是刚分配的公司MacBook Pro。屏幕左上角钉钉消息不断闪烁,第一条来自算法组王博士:"我们的训练环境什么时候能准备好?今天下午3点前要跑第一批实验数据"。我盯着这条消息,手指悬在键盘上方却不知如何回复——这是我作为AI运维工程师的第一天,而我对AWS控制台的认识还停留在注册账号阶段。
2. AWS运维环境快速搭建指南
2.1 基础架构设计思路
面对算法团队"今天就要用"的需求,我决定采用分层架构设计:
- 计算层:EC2 g4dn.xlarge实例(性价比较高的GPU实例)
- 存储层:EFS弹性文件系统(便于多实例共享数据集)
- 网络层:默认VPC+安全组放行22/8888端口(SSH和Jupyter Notebook)
关键提示:生产环境务必使用专用VPC,本次因时间紧急暂用默认配置
2.2 实例配置实操记录
- 登录AWS控制台创建IAM用户
# 创建运维专用用户并附加策略 aws iam create-user --user-name ai-ops aws iam attach-user-policy --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --user-name ai-ops- GPU实例启动参数(以g4dn.xlarge为例):
- AMI:Deep Learning AMI GPU PyTorch 1.13.0 (Ubuntu 20.04)
- 存储:根卷100GB GP3,额外挂载500GB GP3
- 安全组:允许来源IP访问22和8888端口
- Jupyter Notebook快速配置
# 在EC2上执行 jupyter notebook --generate-config echo "c.NotebookApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_notebook_config.py nohup jupyter notebook --no-browser --port=8888 &3. 算法团队协作避坑指南
3.1 资源分配常见问题
当天下午就遇到了经典矛盾:
- 算法组需要p3.2xlarge(更强大的GPU)
- 财务审批只通过g4dn系列预算
解决方案:
- 用Spot Instance节省70%成本
- 设置CloudWatch警报监控中断通知
- 训练脚本添加检查点功能
3.2 数据管道搭建技巧
为处理算法组提供的200GB医学影像数据:
- 使用AWS DataSync将本地NAS同步至S3
- 创建Lambda函数自动触发转存EFS
- 配置S3生命周期策略自动归档原始数据
# 示例Lambda处理函数 import boto3 def lambda_handler(event, context): s3 = boto3.client('s3') for record in event['Records']: bucket = record['s3']['bucket']['name'] key = record['s3']['object']['key'] # 添加自定义处理逻辑4. 成本优化实战记录
4.1 监控仪表板配置
在CloudWatch创建包含以下指标的看板:
- GPU利用率(通过CloudWatch Agent采集)
- EFS存储容量
- 网络吞吐量
- Spot实例中断次数
4.2 自动化运维脚本
凌晨2点被叫醒处理实例中断后,我写了这些自动化脚本:
- 实例健康检查自愈
#!/bin/bash INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) STATUS=$(aws ec2 describe-instance-status --instance-ids $INSTANCE_ID --query 'InstanceStatuses[0].InstanceStatus.Status' --output text) if [ "$STATUS" != "ok" ]; then systemctl restart docker aws cloudwatch put-metric-data --metric-name InstanceRestart --namespace Custom --value 1 fi- 训练任务排队系统 使用SQS实现简单的任务调度:
import boto3 sqs = boto3.client('sqs') def submit_job(job_config): response = sqs.send_message( QueueUrl="https://queue.amazonaws.com/1234/train-queue", MessageBody=json.dumps(job_config) )5. 第一周工作总结
5.1 关键指标达成
- 部署完成3套独立训练环境
- 平均GPU利用率从38%提升至72%
- 月度预算节省$2,400(主要来自Spot实例)
5.2 血泪教训
- 永远先配置账单警报
aws budgets create-budget \ --account-id 123456789012 \ --budget file://budget.jsonbudget.json模板:
{ "BudgetLimit": { "Amount": "1000", "Unit": "USD" }, "Notifications": [ { "NotificationType": "ACTUAL", "ComparisonOperator": "GREATER_THAN", "Threshold": 80 } ] }- 镜像管理规范
- 每周自动创建AMI备份
- 使用Systems Manager维护补丁基线
- 禁止直接修改生产环境镜像
那天下午5:47分,当王博士的模型终于开始训练时,我瘫在椅子上看着AWS控制台里跳动的监控图表。转身从包里掏出那本《AWS Certified Solutions Architect》——我知道,这只是一个开始。