三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

手把手教你用阿里云服务器本地部署AWS DeepRacer训练环境(避坑指南)

手把手教你用阿里云服务器本地部署AWS DeepRacer训练环境(避坑指南)

阿里云ECS实战:零成本搭建AWS DeepRacer训练环境的完整避坑手册

当我在凌晨三点第七次尝试启动训练容器时,终端突然跳出的"S3连接超时"错误提示让我意识到——这份避坑指南可能比官方文档更有存在价值。本文将分享如何在阿里云Ubuntu服务器上搭建完整的DeepRacer训练环境,特别针对中国开发者常见的网络配置、权限管理等问题提供经过验证的解决方案。不同于AWS官方云端训练每小时$3.5的成本,本地化部署可实现零额外费用(仅需基础云服务器成本),且训练时长不受限制。

1. 环境准备:阿里云ECS选型与系统配置

1.1 云服务器规格选择

在阿里云控制台创建ECS实例时,建议选择以下配置组合:

配置项最低要求推荐配置说明
实例规格ecs.g6.largeecs.g6.2xlargeGPU机型可加速但非必需
操作系统Ubuntu 20.04Ubuntu 22.04需64位系统
系统盘40GB100GB训练日志会占用大量空间
安全组开放8000-9000端口范围自定义端口策略需包含8080/9000/8100等关键端口

实测数据:在2vCPU/8GB内存配置下,单个训练进程内存占用峰值可达6GB,建议选择8GB及以上内存配置避免OOM崩溃。

1.2 基础依赖安装

通过SSH连接服务器后,首先执行系统级更新:

sudo apt update && sudo apt upgrade -y sudo apt install -y git curl python3-pip docker.io docker-compose

配置Docker免sudo权限(需重新登录生效):

sudo usermod -aG docker $USER newgrp docker # 立即生效

验证Docker安装:

docker run hello-world # 应看到欢迎信息

2. DeepRacer环境部署实战

2.1 项目初始化与配置调整

克隆社区版仓库并初始化:

git clone https://github.com/aws-deepracer-community/deepracer-for-cloud.git cd deepracer-for-cloud ./bin/init.sh -c local -a cpu

关键配置修改(针对阿里云环境):

  1. 修改bin/activate.sh中的S3端点配置:
DR_LOCAL_S3_ENDPOINT="http://<你的ECS公网IP>:9000"
  1. 调整run.env训练参数示例:
DR_TRAIN_ENABLE_TENSORBOARD=true DR_TRAIN_MIN_EVAL_TRIALS=3 DR_EVAL_OFF_TRACK_PENALTY=5.0

2.2 常见初始化问题解决

  • 问题1init.sh执行时报错"docker swarm初始化失败"

    • 解决方案:
      docker swarm leave --force docker swarm init --advertise-addr 127.0.0.1
  • 问题2:MinIO服务无法通过公网IP访问

    • 检查步骤:
      1. 确认安全组已放行9000端口
      2. 验证MinIO容器状态:
      docker ps | grep minio
      1. 测试本地连接:
      curl http://localhost:9000/minio/health/live

3. 训练流程全链路操作

3.1 启动训练任务

上传自定义配置文件到本地S3:

source bin/activate.sh dr-upload-custom-files

启动训练(带实时可视化):

dr-start-training -v

监控训练状态的实用命令:

dr-logs-robomaker -f # 实时训练日志 docker stats # 资源监控

3.2 行动空间配置技巧

离散空间配置示例(适合新手):

{ "steering_angle": [-30, -15, 0, 15, 30], "speed": [1.0, 1.5, 2.0] }

连续空间配置示例(需更高性能):

{ "steering_angle": {"low": -30.0, "high": 30.0}, "speed": {"low": 1.0, "high": 3.0} }

避坑提示:若使用连续空间时卡在"DoorMan"阶段,尝试先使用离散空间完成首次训练后再切换。

4. 训练优化与结果分析

4.1 超参数调优策略

基于50次训练迭代的优化建议:

参数名默认值优化范围影响说明
batch_size6432-128值越小样本多样性越高
beta_entropy0.010.001-0.1控制策略随机性
discount_factor0.9990.99-0.9999影响长期奖励权重
loss_typehuberhuber/mse损失函数类型

4.2 日志分析实战

启动分析服务:

dr-start-loganalysis

通过浏览器访问http://<ECS_IP>:8888后,关键分析步骤:

  1. 修改S3连接配置:
endpoint_url = 'http://<ECS_IP>:9000' prefix = 'rl-deepracer-sagemaker'
  1. 生成训练曲线图:
plt.figure(figsize=(12,6)) sns.lineplot(data=df, x='episode', y='reward', hue='phase') plt.title('Training Progress')

5. 高级技巧与性能优化

5.1 模型迭代方法

增量训练的正确姿势:

dr-increment-training \ --source-model <前一模型前缀> \ --target-model <新模型名称>

5.2 资源监控脚本

创建monitor.sh实时监控:

#!/bin/bash while true; do clear echo "===== GPU Usage =====" nvidia-smi 2>/dev/null || echo "No GPU detected" echo -e "\n===== Memory Usage =====" free -h echo -e "\n===== Docker Status =====" docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" sleep 5 done

训练过程中发现一个有趣现象:当设置beta_entropy=0.1时,车辆在弯道会表现出更激进的转向策略,但容易导致出界;而降到0.01后稳定性提升,但圈速会慢0.5秒左右。这需要根据具体赛道特性进行权衡——技术型赛道适合较低熵值,而高速直道居多的赛道则可适当提高。

← 返回列表