您可以通过FastGPU的命令行,快速地部署云上GPU集群,管理资源的生命周期。还可以便捷地为集群安装深度学习环境,在集群运行代码,查看运行日志以及释放资源。
客户端已安装Python 3.6或以上版本。 说明 您的ECS实例、本地机器、阿里云Cloud Shell工具等均可以作为客户端安装FastGPU来构建人工智能计算任务。 已获取阿里云访问密钥(AccessKey)。更多信息,请参见创建AccessKey。 执行以下命令,安装FastGPU软件包。 执行以下命令,配置环境变量。 配置环境变量时,需要您提前在您的ECS实例、本地机器或阿里云Cloud Shell工具上,获取阿里云账号AccessKey(AccessKey ID和AccessKey Secret)、默认地域或默认可用区等信息。 下表所有命令中的{instance_name}可以表示单个实例名称,例如 命令 命令说明 命令示例 查看所有FastGPU命令的帮助说明。 查看指定的FastGPU命令的帮助说明。 列出FastGPU用户创建的实例。包括以下信息: instance name:实例名称。 age(hours):实例创建至今的时间,以小时为单位。 public_ip:实例的公网IP。 private_ip:实例的内网IP。 GPU:GPU规格和数量。 instance_type:实例规格。 参数说明: -a:列出您当前阿里云账户下所有实例。会提供Key-Owner(密钥对)和instance_id(实例id)两个额外的信息。 查询当前Linux账户下的实例: 查询同一个阿里云账号不同Linux账户下的所有实例: 创建一个实例或一个集群。 参数说明: -f, -c, --config:使用指定配置文件创建实例。 -n, --name:指定实例名称。 --image, --image_name:指定安装镜像。安装镜像可通过 --image_type:指定镜像类型。如果未指定image_name,可以通过指定image_type实现,包括Aliyun、Ubuntu、CentOS。 -np, --machines:指定创建实例数量。 -i, --instance_type:指定实例规格(包括实例CPU,内存,显卡型号等),您可以通过 --system_disk_size:指定系统盘大小,单位:GB。 --data_disk_size:指定数据盘大小,单位:GB。 --skip_setup:跳过实例初始化。 -nas, --nas, --enable-nas:允许实例挂载NAS。更多信息,请参见什么是文件存储NAS。 --zone_id:指定区域id,默认为自动指定。可通过 --spot:指定创建的实例为抢占式实例。更多信息,请参见抢占式实例概述。 --confirm_cost:忽略消费确认项。 --install_script:指定实例安装完成后需要执行的命令。 -vpc, --vpc, --vpc_name:指定私有网络名称。 -cuda, --install_cuda, --cuda_install:自动化安装CUDA。 创建一个Ubuntu系统的实例,并指定实例名称和规格,同时自动安装CUDA: 按照配置文件创建实例: 使用SSH连接并登录到指定实例。 说明 您需要将本地的公网IP添加到安全组才可以通过SSH访问。建议您使用 使用SSH连接到task0.my_job实例: 将本地文件拷贝到实例中,或者是从实例中拷贝到本地。 将本地文件拷贝到实例中: 将实例中的文件拷贝到本地: 将本地文件拷贝到my_job集群中所有实例的/root目录中: 查询阿里云支持的GPU实例规格。 参数说明: -gpu:查询指定的GPU类型规格。 支持查询的类型:V100、 P100、A10、T4、P4、M40等。 -np:查询包含指定GPU个数的实例类型。支持1、2、4、8四种规格。 查询所有实例类型: 查询V100 GPU包含的所有实例类型: 查询4个GPU的实例类型: 查询阿里云支持的实例镜像。 参数说明: os_type:阿里云支持的os类型。包括CentOS、Ubuntu、Debian、SUSE、Aliyun等。 查询所有镜像: 查询CentOS系统的所有镜像版本: 查询实例的所有属性。属性包括CPU核数、GPU、镜像、内存大小、创建时间、密钥对、状态等信息。 查询所有实例的所有属性: 查询task0.my_job实例属性: 查询my_job集群下的所有实例属性: 释放指定的实例。 参数说明: -f:强制释放实例。 -y:跳过确认。 释放停止状态的task0.my_job实例: 强制释放task0.my_job实例,无论实例是什么状态: 强制停止my_job集群的所有实例: 停止指定的实例。若实例为集群实例,可以通过指定该实例名的取值,即将{集群名字}作为该实例值的后缀来批量停止集群下的所有实例。 参数说明: -f:强制停止实例。 -k:实例停止后,仍进行计费操作。 -y:跳过确认。 停止运行中的task0.my_job实例: 强制停止task0.my_job实例: 强制停止my_job下所有实例: 启动指定的实例。 参数说明: -y:跳过确认。 启动task0.my_job实例: 启动my_job集群: 为指定的实例挂载NAS文件系统到/ncluster目录。 参数说明: mount_target_domain:指定NAS的挂载点。如果不指定,则会自动创建挂载点并挂载。 为task0.my_job实例自动创建一个挂载点,并挂载NAS文件系统到实例中: 手动创建并获取挂载点,并将挂载点挂载到task0.my_job实例中: 为集群所有实例挂载NAS文件系统: 在指定实例中执行 参数说明: cmd:需要执行的命令。 查询task0.my_job实例的IP: 查询my_job集群下所有实例的IP: 为指定实例的安全组添加可访问的公网IP。 参数说明: your_public_ip:将要访问实例机器的公网IP。 port_range:端口范围。以/分隔。 description:对添加的公网IP进行说明。 -a:默认安全组。 将本机公网IP的22端口添加到默认安全组中: 将本机公网IP的22端口添加到task0.my_job实例中的安全组中: 允许IP地址为203.0.113.0的机器访问task0.my_job实例的2000-3000端口: 允许IP地址为203.0.113.0的机器访问my_job集群中的所有机器的2000~3000端口: 将IP从某一实例安全组中移除。 参数说明: your_public_ip:已经添加到安全组的公网IP。 port_range:端口范围,以 -a:删除22端口下的所有公网IP。 将本机公网IP从task0.my_job实例安全组中移除: 将IP地址为203.0.113.0的机器从实例安全组移除: 移除IP地址为203.0.113.0的机器访问2000-3000端口的权限: 将task0.my_job实例22端口下所有IP从安全组中移除: 将IP地址为203.0.113.0的机器从my_job集群下的所有实例中删除: 查询实例的安全组IP,默认只查询22端口对应的IP。 参数说明: -a:查询所有端口的IP。 查询所有实例的22端口安全组IP: 查询task0.my_job实例的22端口安全组IP: 查询task0.my_job实例所有端口对应的安全组IP: 将本机公钥添加进指定实例。 参数说明: string of id_rsa.pub:公钥路径。 将~/.ssh/id_rsa.pub内容添加到实例中: 重命名实例。 参数说明: instance_new_name:实例的新名称。 instance_id:实例ID,可用 将task0.my_job实例重命名为my_new_ins: 使用SSH连接到实例,并使用默认的tmux进程。 登录task0.my_job实例,并创建一个tmux进程: 删除本机的密钥对。 说明 如果有实例正在使用此密钥对,删除该密钥对后,实例将会无法正常被连接和查询,但您可以通过 删除~/.fastgpu/下对应的密钥对: 在本机创建一个密钥对,后续实例的创建以及连接都会使用此次创建的密钥对。 在本机~/.fastgpu/下创建一个密钥对: 将密钥对绑定到实例中。 将~/.fastgpu/下的密钥对绑定至task0.my_job实例: 将~/.ncluster/下的密钥对绑定至my_job集群: 从实例中分离密钥对。 说明 分离后将无法正常连接和查询该实例,建议您使用 分离task0.my_job实例密钥对: 分离my_job集群下所有实例的密钥对: 在指定实例中创建部署jupyter notebook项目示例。 默认密码:AIACC。 项目实例:tensorflow-1.14-python36。 参数说明: passwd_of_login:指定jupyter-notebook服务器密码。 在task0.my_job实例中创建并部署项目示例: 为指定实例安装驱动,CUDA和cuDNN组件。默认值为: gpu_driver_version:460.91.03。 cuda-version:11.2.2。 cudnn-version:8.1.1。 参数说明: gpu_driver_version:需要安装的GPU驱动版本号。 cuda_version:需要安装的CUDA版本号。 cudnn_version:需要安装的cuDNN版本号。 在task0.my_job实例中安装CUDA的默认版本: 在task0.my_job实例中安装GPU驱动,CUDA和cuDNN,GPU驱动版本为460.91.03,CUDA版本号为11.2.2,cuDNN版本号为8.1.1: 为指定实例安装Conda,并创建出指定的Python、CUDA版本的虚拟环境。 参数说明: -h:查看帮助。 -f或--yaml:按照指定的YAML文件安装Conda。 -cu或--cuda:指定CUDA版本。支持:{11.0,10.2,10.1,10.0} -py或--python:指定使用Python版本。支持:{3.5,3.6,3.7,3.8} -tf或--tensorflow:指定使用TensorFlow为主框架。 -pt或--pytorch:指定使用PyTorch为主框架。 -mx或--mxnet:指定使用MXNet为主框架。 -v、--vers或--framework_version:指定主框架版本。 说明 TensorFlow、PyTorch以及MXNet三个指定框架参数不支持同时存在。 为task0.my_job实例安装Conda,不安装任何虚拟环境: 为my_job集群中所有实例安装Conda: 为task0.my_job实例安装Conda,并配置Python 3.6,CUDA 11.0以及PyTorch 1.7.0虚拟环境: 在指定实例中安装所有支持的Conda环境。 说明 安装过程耗时较长。 为task0.my_job安装所有的conda环境: 为my_job集群安装所有的conda环境: 替换指定实例的镜像。 参数说明: image_id:需要替换的镜像名称或镜像ID。 将task0.my_job实例的镜像替换为CentOS: 将my_job下所有实例替换为CentOS: 示例文件create.cfg内容如下,参数请参考 前提条件
环境准备
pip3 install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/fastgpu/fastgpu-1.1.5-py3-none-any.whl
export ALIYUN_ACCESS_KEY_ID=**** # 填入您的AccessKey ID
export ALIYUN_ACCESS_KEY_SECRET=**** # 填入您的AccessKey Secret
export ALIYUN_DEFAULT_REGION=cn-hangzhou # 填入您希望使用的地域(Region)
export ALIYUN_DEFAULT_ZONE=cn-hangzhou-i # (选填)填入您希望使用的地域的可用区
命令行说明
{instance_name}="task0.my_job"
,该命令仅对单个实例执行。您也可以使用{instance_name}="{my_job}"
,大括号{}表示以my_job为后缀的GPU集群。fastgpu [help,-h,--help]
fastgpu --help
fastgpu -h
fastgpu {command} --help
fastgpu ls --help
fastgpu ls
fastgpu ls
fastgpu ls -a
fastgpu create --config create.cfg
fastgpu create --name {instance_name} --machine {count} --instance_type {ins_type}
queryimage
命令查到。querygpu
命令查询所有实例规格。querygpu
命令查询实例支持的区域id。fastgpu create --name fastgpu_vm -np 1 --instance_type ecs.gn6v-c8g1.16xlarge --image_type ubuntu --install_cuda
fastgpu create -c config.cfg
fastgpu ssh {instance_name}
fastgpu addip -a
命令快速添加。fastgpu ssh task0.my_job
fastgpu scp /local/path/to/upload {instance_name}:/remote/path/to/save
fastgpu scp {instance_name}:/remote/path/to/copy /local/path/to/save
fastgpu scp /root/test.txt task0.my_job:/root/
fastgpu scp task0.my_job:/home/cuda/ ~/cuda/
fastgpu scp /root/test.txt {my_job}:/root/
fastgpu querygpu
fastgpu query
fastgpu query -gpu {gpu_type}
fastgpu query -np {number of gpus per node}
fastgpu query -gpu {gpu_type} -np {number of gpus per node}
fastgpu querygpu
fastgpu query
fastgpu query -gpu "V100"
fastgpu query -np 4
fastgpu queryimage
fastgpu queryimage {os_type}
fastgpu queryimage
fastgpu queryimage centos
fastgpu describe {instance_name}
fastgpu describe
fastgpu describe
fastgpu describe task0.my_job
fastgpu describe {my_job}
fastgpu kill {instance_name}
fastgpu kill -y {instance_name}
fastgpu kill {instance_a_name} {instance_b_name} {instance_c_name}
fastgpu kill -f {instance_name}
fastgpu kill task0.my_job
fastgpu kill -f task0.my_job
fastgpu kill -f {my_job}
fastgpu stop {instance_name}
fastgpu stop {instance_a_name} {instance_b_name} {instance_c_name}
fastgpu stop -f {instance_name}
fastgpu stop -k {instance_name}
fastgpu stop task0.my_job
fastgpu stop -f task0.my_job
fastgpu stop -f {my_job}
fastgpu start {instance_name}
fastgpu start task0.my_job
fastgpu start {my_job}
fastgpu mount {instance_name}
fastgpu mount {instance_name} {mount_target_domain}
fastgpu mount task0.my_job
fastgpu mount task0.my_job example.cn-hangzhou.nas.aliyuncs.com
fastgpu mount {my_job}
fastgpu run {instance_name} {cmd}
shell
命令。fastgpu run task0.my_job ifconfig
fastgpu run {my_job} ifconfig
fastgpu addip {instance_name}
fastgpu addip {instance_name} {your_public_ip}
fastgpu addip {instance_name} {your_public_ip} {port_range}
fastgpu addip {instance_name} {your_public_ip} {port_range} {description}
fastgpu addip -a {your_public_ip} {port_range} {description}
fastgpu addip -a
fastgpu addip task0.my_job
fastgpu addip task0.my_job 203.0.113.0 2000/3000
fastgpu addip task0.my_job 203.0.113.0 2000/3000 "open 2000-3000 port"
fastgpu addip {my_job} 203.0.113.0 2000/3000
fastgpu deleteip {instance_name}
fastgpu deleteip {instance_name} {your_public_ip}
fastgpu deleteip {instance_name} {your_public_ip} {port_range}
fastgpu deleteip -a
/
分割。fastgpu deleteip task0.my_job
fastgpu deleteip task0.my_job 203.0.113.0
fastgpu deleteip task0.my_job 203.0.113.0 2000/3000
fastgpu deleteip -a task0.my_job
fastgpu deleteip {my_job} 203.0.113.0
fastgpu queryip
fastgpu queryip -a
fastgpu queryip {instance_name}
fastgpu queryip
fastgpu queryip task0.my_job
fastgpu queryip -a task0.my_job
fastgpu addpub {string of id_rsa.pub}
fastgpu addpub
fastgpu rename {instance_name} {instance_new_name}
fastgpu rename {instance_id} {instance_new_name}
describe
命令进行查询。fastgpu rename task0.my_job task0.my_new_ins
fastgpu tmux {instance_name}
fastgpu tmux task0.my_job
fastgpu deletekeypair
fastgpu ls -a
命令查询到。fastgpu deletekeypair
fastgpu createkeypair
fastgpu createkeypair
fastgpu attachkeypair {instance_name}
fastgpu attachkeypair task0.my_job
fastgpu attachkeypair {my_job}
fastgpu detachkeypair {instance_name}
attachkeypair
命令重新绑定后,即可恢复正常连接和查询。fastgpu detachkeypair task0.my_job
fastgpu detachkeypair {my_job}
fastgpu notebooksample {instance_name} {passwd_of_login}
fastgpu notebooksample task0.my_job
fastgpu cuda {instance_name} {gpu_driver_version} {cuda_version} {cudnn_version}
fastgpu cuda task0.my_job
fastgpu cuda task0.my_job 460.91.03 11.2.2 8.1.1
fastgpu conda {instance_name}
fastgpu conda {instance_name} -f {conda_yaml_file}
fastgpu conda {instance_name} -h
fastgpu conda {instance_name} --cuda 10.0 -tf -v 1.15.0
fastgpu conda task0.my_job
fastgpu conda {my_job}
fastgpu conda -py 3.6 -cu 11.0 -pt -v 1.7.0
fastgpu allconda {instance_name}
fastgpu allconda task0.my_job
fastgpu allconda {my_job}
fastgpu replaceimage {instance_name} {image_id}
fastgpu replaceimage task0.my_job centos_8_2_x64_20G_alibase_20210712.vhd
fastgpu replaceimage {my_job} centos_8_2_x64_20G_alibase_20210712.vhd
配置文件示例
fastgpu create
命令的相关说明。[fastgpu]
name=fastgpu-v100
machines=1
system_disk_size=500
data_disk_size=0
image_name=
image_type=ubuntu_18_04
instance_type=ecs.gn6v-c8g1.2xlarge
spot=False
confirm_cost=False
mount_nas=True
vpc_name=fastgpu-vpc
install_cuda=True
[cmd]
install_script=pwd