ClearML AWS 自动扩展服务
ClearML 的 AWS 自动扩展示例
展示了如何使用 clearml.automation.auto_scaler
模块来实现一个服务,该服务根据定义的实例预算优化 AWS EC2 实例的扩展。
自动扩展器定期轮询您的AWS集群,并根据定义的最大空闲时间自动停止空闲实例,或者在执行待处理任务时没有足够的实例时启动新实例。
运行 ClearML AWS 自动扩展器
以以下方式之一运行ClearML AWS自动扩展器:
- 在本地运行aws_autoscaler.py脚本
- 通过您的
services
队列启动
AWS自动扩展器可以使用您的AWS账户中可用的任何AMI(例如NVIDIA Deep Learning AMI v20.11.0-46a68101-e56b-41cd-8e32-631ac6e5d02b
)。请注意,AWS经常更新其可用的AMI。
最近的NVIDIA AMI仅在初始用户登录时安装所需的驱动程序。为了使用此类AMI,自动缩放器需要模拟初始用户登录。这可以通过添加以下预执行bash脚本来实现(参见步骤5):
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
su -l ubuntu -c '/usr/bin/bash /home/ubuntu/.profile'
运行脚本
在DevOps Services
项目中,有一个模板AWS Auto-Scaler
任务可用。
您可以克隆它,根据您的需求调整其配置,并直接从ClearML UI中将其加入队列执行。
通过执行以下命令在本地启动自动扩展器:
python aws_autoscaler.py --run
当脚本运行时,配置向导会提示输入实例详细信息和预算配置。
-
输入AWS凭证和AWS区域名称。
AWS Autoscaler setup wizard
---------------------------
Follow the wizard to configure your AWS auto-scaler service.
Once completed, you will be able to view and change the configuration in the clearml-server web UI.
It means there is no need to worry about typos or mistakes :)
Enter AWS Access Key ID :
Enter AWS Secret Access Key :
Enter AWS region name [us-east-1b]: -
输入Git凭据。这些是ClearML代理在AWS EC2实例中设置任务执行环境所必需的。
GIT credentials:
Enter GIT username for repository cloning (leave blank for SSH key authentication): []
Enter password for user '<username>':向导报告它将使用的Git凭据。
Git repository cloning will be using user=*************** password=***********
-
输入要使用的默认Docker镜像和参数。
Enter default docker image/parameters to use [nvidia/cuda:10.1-runtime-ubuntu18.04]:
-
对于预算中将使用的每种AWS EC2实例类型,请执行以下操作:
Configure the machine types for the auto-scaler:
------------------------------------------------
Select Amazon instance type ['g4dn.4xlarge']:
Use spot instances? [y/N]: y
Select availability zone ['us-east-1b']:
Select the Amazon Machine Image id ['ami-07c95cafbb788face']:
Enter the Amazon EBS device ['/dev/sda1']:
Enter the Amazon EBS volume size (in GiB) [100]:
Enter the Amazon EBS volume type ['gp3']:命名配置的实例类型。在配置的后面部分,使用此名称来创建预算。
Select a name for this instance type (used in the budget section) For example 'aws4gpu':
向导提示是否选择另一个实例类型。
Define another instance type? [y/N]:
-
在启动ClearML代理之前,输入任何要在新创建的实例上运行的bash脚本。
Enter any pre-execution bash script to be executed on the newly created instances []:
-
配置AWS自动扩展预算。对于预算中将使用的每个队列,输入可以同时启动的所选类型的最大实例数。
Define the machines budget:
-----------------------------
Select a queue name (for example: 'aws_4gpu_machines') :
Select a instance type to attach to the queue ['aws-g4dn.xlarge', 'aws-g4dn.8xlarge', 'aws-g4dn.16xlarge']:
Enter maximum number of 'aws-g4dn.xlarge' instances to spin simultaneously (example: 3) : -
如果需要,向同一队列添加另一个实例类型。重复上一步。
Do you wish to add another instance type to queue? [y/N]:
-
ClearML AWS 自动扩展器会轮询实例,如果实例在指定的最大空闲时间内一直处于空闲状态,自动扩展器会将它们关闭。
Enter maximum idle time for the auto-scaler to spin down an instance (in minutes) [15]:
Enter instances polling interval for the auto-scaler (in minutes) [5]:
配置已完成,并在DevOps
项目中创建了一个名为AWS Auto-Scaler
的新任务。服务开始运行,脚本打印出任务日志的超链接。
CLEARML Task: created new task id=d0ee5309a9a3471d8802f2561da60dfa
CLEARML Monitor: GPU monitoring failed getting GPU reading, switching off GPU monitoring
CLEARML results page: https://app.clear.ml/projects/142a598b5d234bebb37a57d692f5689f/experiments/d0ee5309a9a3471d8802f2561da60dfa/output/log
Running AWS auto-scaler as a service
Execution log https://app.clear.ml/projects/142a598b5d234bebb37a57d692f5689f/experiments/d0ee5309a9a3471d8802f2561da60dfa/output/log
远程执行
使用--remote
命令行选项将在配置向导完成后将自动缩放器加入您的services
队列:
python aws_autoscaler.py --remote
确保为该队列分配了一个clearml-agent
。
WebApp
配置
通过向导配置的值分别使用Task.connect()
和Task.set_configuration_object()
方法存储在任务的高级参数和配置对象中。它们可以在WebApp中查看,位于任务的配置页面下的高级参数和配置对象 > 常规部分。
ClearML 自动记录使用 argparse 定义的命令行参数。在实验的 配置 页面下的 超参数 > 常规 中查看它们。
该任务可以重复使用以启动另一个自动扩展器实例:克隆任务,然后编辑其实例类型和预算配置的参数,并将任务排队执行(对于此类服务任务,您通常希望使用在服务模式下运行的ClearML代理)。
控制台
所有其他控制台输出显示在实验的控制台中。