利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第1张图片

Amazon DeepRacer 是一款 1:18 赛车,它提供了一种用强化学习 (RL) 解决自动驾驶技术的平台。强化学习 (RL) 是一种先进的机器学习 (ML) 技术,它采用了与其他机器学习方法不同的方法来训练模型。它的强大之处在于,它不需要任何标记的训练数据就可以学习非常复杂的行为,并且可以在优化长期目标的同时做出短期决策。有了 Amazon DeepRacer,现在可通过自动驾驶亲身体验强化学习 (RL)、实验和学习。通过基于云的 3D 赛车模拟器开始使用虚拟汽车和赛道,并获得真实体验,可以将训练有素的模型部署到 Amazon DeepRacer 中与好友比赛,或参与全球 Amazon DeepRacer 联盟。

Amazon DeepRacer的训练成本约为3.5美元/小时,本文提供了一种基于开源Amazon DeepRacer在Amazon EC2主机上训练模型的方案,可以将 Amazon DeepRacer的训练成本降低92%以上 (以ca-central-1 g4dn.2xlarge机型为例)。本文的方案支持多种机型,使用者可以根据自己的需求选择。

1 相关服务介绍

outside_default.png

1.1 Amazon DeepRacer

使用 Amazon DeepRacer,您可以创建自己的机器学习模型(“训练”流程),并驾驶这些模型比赛(“评估”流程)。您需要支付训练、评估和存储机器学习模型的费用。费用基于您训练和评估新模型的时间和该模型的存储大小。此外,您还可以购买一款全自动 1/18 比例 Amazon DeepRacer 赛车,从而在真正的赛道上试验您的模型。进入 Amazon DeepRacer League 无需购买。

1.2 Amazon SageMaker

Amazon SageMaker 通过整合专门为机器学习(ML) 构建的广泛功能集,帮助数据科学家和开发人员快速准备、构建、训练和部署高质量的机器学习 (ML) 模型。利用 Amazon SageMaker,可以在云上以无服务器的方式训练 Amazon DeepRacer 模型。

1.3 Amazon RoboMaker

Amazon RoboMaker是用于运行在云上模拟和部署机器人应用程序,利用Gazebo模拟器在训练Amazon DeepRacer时模拟真实实际。Amazon RoboMaker 是最全面的云解决方案,可供机器人开发者大规模模拟、测试和安全部署机器人应用程序。Amazon RoboMaker 提供完全托管的可扩展模拟基础设施,客户可用它进行多机器人模拟并在模拟中与回归测试进行 CI/CD 集成。此外,Amazon RoboMaker 提供 IDE、应用程序部署功能、ROS 扩展工具以及与各种 Amazon 服务的无缝集成,使客户能够创新并提供一流的机器人解决方案。Amazon RoboMaker 的托管 ROS 和 Gazebo 软件堆栈释放了很多工程资源,使您能够快速开始构建。

1.4 Amazon EC2

Amazon Elastic Compute Cloud(Amazon EC2 云服务器)是一种 Web 云服务,能在云中提供安全且可调整大小的计算能力。该服务旨在让开发人员能够更轻松地进行 Web 规模的云计算。Amazon EC2 云服务器的 Web 云服务接口非常简单,您可以最小的阻力轻松获取容量,随之配置容量。使用该服务,您将能完全控制您的计算资源,并能在亚马逊成熟且行之有效的计算环境中运行。

2 配置 Amazon EC2 训练环境

outside_default.png

2.1 Amazon S3 Bucket创建

创建用于存放 Amazon DeepRacer 模型及训练记录的 Amazon S3 Bucket。

2.2 创建 Amazon IAM

1. 在 Amazon console 进入 Amazon IAM 服务;

2. 进入 Policies界面,点击 Create Policy 按钮;

3. 在 Service选项下,选择 Amazon S3,并添加之前创建的 Amazon S3 Bucket 的全部权限;

4. 进入Role界面,点击Create Role按钮;

5. 在 Choose a use case 选项下, 选择 Amazon EC2;

6. 在Attach permissions policies 选项下,为Amazon DeepRacer赋予以下权限:之前创建的Policy,AmazonKinesisVideoStreamsFullAccess 与 CloudWatchFullAccess

2.3 启动 Amazon EC2服务器

1. 从 Amazon EC2 界面启动 Amazon EC2 服务器,选择 Amazon Deep Learning AMI (Ubuntu 18.04);

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第2张图片

2. 在 Choose Instance Type页面,根据自身需求选择对应机型,本文推荐选项:

  • g4dn.2xlarge:性价比较高的训练方式,基于GPU 加速,训练速度稍快于 Amazon DeepRacer console 训练

  • p3.2xlarge:训练速度远快于Amazon DeepRacer console 训练,快速迭代模型,取得训练成果

3. 在 3. Configure Instance页面,在 Amazon IAM Role 选项中,选择 2.1 中创建的 Amazon IAM Role;

4. 在 4. Add Storage页面,为 Root Volume 选择高于150GiB 的存储空间;

2.4 配置 Amazon DeepRacer 运行环境

1. 进入3创建的 Amazon EC2实例,并执行以下命令,从GitHub拉取代码:

git clone https://github.com/aws-deepracer-community/deepracer-for-cloud.git

2. 执行第一阶段的环境预配置代码,这会安装 Amazon DeepRacer本地训练所需的基础组件,之后重启  Amazon EC2实例:

cd deepracer-for-cloud && ./bin/prepare.sh
sudo reboot

*左滑查看更多

3.重新连接  Amazon EC2 实例,并执行第二阶段的环境初始化代码:

cd deepracer-for-cloud/ && bin/init.sh -c aws -a gpu

3 启动训练

outside_default.png

1. 执行source bin/activate.sh加载训练  Amazon DeepRacer 所需的脚本;

2. 在custom_files/reward_function.py文件中编辑奖励函数,例如:

def reward_function(params):
    '''
    Example of penalize steering, which helps mitigate zig-zag behaviors
    '''

    # Read input parameters
    distance_from_center = params['distance_from_center']
    track_width = params['track_width']
    steering = abs(params['steering_angle']) # Only need the absolute steering angle

    # Calculate 3 marks that are farther and father away from the center line
    marker_1 = 0.1 * track_width
    marker_2 = 0.25 * track_width
    marker_3 = 0.5 * track_width

    # Give higher reward if the car is closer to center line and vice versa
    if distance_from_center <= marker_1:
        reward = 1
    elif distance_from_center <= marker_2:
        reward = 0.5
    elif distance_from_center <= marker_3:
        reward = 0.1
    else:
        reward = 1e-3  # likely crashed/ close to off track

    # Steering penality threshold, change the number based on your action space setting
    ABS_STEERING_THRESHOLD = 15

    # Penalize reward if the car is steering too much
    if steering > ABS_STEERING_THRESHOLD:
        reward *= 0.8

    return float(reward)

*左滑查看更多

3. 在custom_files/hyperparameters.json文件中编辑训练信息,例如

{
    "batch_size": 64,
    "beta_entropy": 0.01,
    "discount_factor": 0.995,
    "e_greedy_value": 0.05,
    "epsilon_steps": 10000,
    "exploration_type": "categorical",
    "loss_type": "huber",
    "lr": 0.0003,
    "num_episodes_between_training": 20,
    "num_epochs": 10,
    "stack_size": 1,
    "term_cond_avg_score": 350.0,
    "term_cond_max_episodes": 1000,
    "sac_alpha": 0.2
  }

*左滑查看更多

4. 在custom_files/model_metadata.json文件中编辑车辆信息,包括action space、传感器以及神经网络类型等,例如:

{
    "action_space": [
        {
            "steering_angle": -30,
            "speed": 0.6
        },
        {
            "steering_angle": -15,
            "speed": 0.6
        },
        {
            "steering_angle": 0,
            "speed": 0.6
        },
        {
            "steering_angle": 15,
            "speed": 0.6
        },
        {
            "steering_angle": 30,
            "speed": 0.6
        }
    ],
    "sensor": ["FRONT_FACING_CAMERA"],
    "neural_network": "DEEP_CONVOLUTIONAL_NETWORK_SHALLOW",
    "training_algorithm": "clipped_ppo",
    "action_space_type": "discrete",
    "version": "3"
}

*左滑查看更多

5. 编辑env文件,需要配置的内容包括:

DR_LOCAL_S3_BUCKET=<2.1中创建的bucket名字>
DR_UPLOAD_S3_BUCKET=<2.1中创建的bucket名字>

1.此外,可以在env配置训练的信息,例如:

  • DR_WORLD_NAME:地图名称,例如reInvent2019_track

  • DR_RACE_TYPE:比赛类型,例如TIME_TRIAL或HEAD_TO_MODEL

  • DR_EVAL_OPP_S3_MODEL_PREFIX=:模型在S3中的文件夹名

  • DR_CAR_COLOR=Red:小车颜色

除了常见  Amazon console中的配置,也可以配置  Amazon console中无法定义的环境变量,例如:

  • DR_EVAL_OFF_TRACK_PENALTY:出界惩罚分数

  • DR_EVAL_COLLISION_PENALT:碰撞惩罚分数

2. 更新后,执行 dr-update 使此次配置生效;

3. 执行 dr-upload-custom-files, 将自定义文件上传至 Amazon s3,此时 bucket 中的 custom_files 包括:

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第3张图片

4. 执行dr-start-training开始训练;

5. 训练完成后,可以执行scripts/upload/upload-model.sh,该脚本会将模型上传至  Amazon S3 (训练中途停止,也可以上传checkpoint模型);

6. 如需将模型导入 Amazon DeepRacer物理小车中,可以执行scripts/upload/upload-car.sh,该脚本会将选出最优模型,并打包为适合小车读取的格式,并上传至 Amazon S3 bucket,文件名为tar.gz

4 常见问题

启动训练时报错信息:Sagemaker is not running”

解决建议

Docker 容器可能由于某些错误自动停止,执行 docker -ps a查看容器是否已停止。如果已停止,可以执行 docker logs -f查看具体错误信息

启动训练时报错信息:Selected path s3://xxx exists. Delete it, or use -w option. Exiting.

解决建议

改为执行 dr-start-training -w,强制覆盖

本篇作者

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第4张图片

刘明

亚马逊云科技专业服务团队数据科学家

在机器学习、深度学习、数据挖掘及模型部署开发拥有扎实经验。深度参与过能源、医疗、教育、媒体等行业的机器学习应用搭建及数据平台建设。

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第5张图片

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第6张图片

听说,点完下面4个按钮

就不会碰到bug了!

利用 Amazon EC2 进一步降低 Amazon DeepRacer 训练成本_第7张图片

你可能感兴趣的:(大数据,人工智能,java,python,机器学习)