Skip to main content

ClearML AWS 自动扩展服务

ClearML 的 AWS 自动扩展示例 展示了如何使用 clearml.automation.auto_scaler 模块来实现一个服务,该服务根据定义的实例预算优化 AWS EC2 实例的扩展。

自动扩展器定期轮询您的AWS集群,并根据定义的最大空闲时间自动停止空闲实例,或者在执行待处理任务时没有足够的实例时启动新实例。

运行 ClearML AWS 自动扩展器

以以下方式之一运行ClearML AWS自动扩展器:

AMIs

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'

运行脚本

Self deployed ClearML server

DevOps Services项目中,有一个模板AWS Auto-Scaler任务可用。 您可以克隆它,根据您的需求调整其配置,并直接从ClearML UI中将其加入队列执行。

通过执行以下命令在本地启动自动扩展器:

python aws_autoscaler.py --run

当脚本运行时,配置向导会提示输入实例详细信息和预算配置。

  1. 输入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]:
  2. 输入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=***********
  3. 输入要使用的默认Docker镜像和参数。

    Enter default docker image/parameters to use [nvidia/cuda:10.1-runtime-ubuntu18.04]:
  4. 对于预算中将使用的每种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]:
  5. 在启动ClearML代理之前,输入任何要在新创建的实例上运行的bash脚本。

    Enter any pre-execution bash script to be executed on the newly created instances []:
  6. 配置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) :
  7. 如果需要,向同一队列添加另一个实例类型。重复上一步。

    Do you wish to add another instance type to queue? [y/N]:         
  8. 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代理)。

控制台

所有其他控制台输出显示在实验的控制台中。

自动扩展器控制台