全部產品
Search
文件中心

Elastic GPU Service:命令列使用說明

更新時間:Jun 30, 2024

您可以通過FastGPU的命令列,快速地部署雲上GPU叢集,管理資源的生命週期。還可以便捷地為叢集安裝深度學習環境,在叢集運行代碼,查看作業記錄以及釋放資源。

前提條件

  • 用戶端已安裝Python 3.6或以上版本。

    說明

    您的ECS執行個體、本地機器、阿里雲Cloud Shell工具等均可以作為用戶端安裝FastGPU來構建人工智慧計算任務。

  • 已擷取阿里雲存取金鑰(AccessKey)。更多資訊,請參見建立AccessKey

環境準備

  1. 執行以下命令,安裝FastGPU軟體包。

    pip3 install --force-reinstall https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/fastgpu/fastgpu-1.1.5-py3-none-any.whl
  2. 執行以下命令,配置環境變數。

    配置環境變數時,需要您提前在您的ECS執行個體、本地機器或阿里雲Cloud Shell工具上,擷取阿里雲帳號AccessKey(AccessKey ID和AccessKey Secret)、預設地區或預設可用性區域等資訊。

    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}可以表示單個執行個體名稱,例如{instance_name}="task0.my_job",該命令僅對單個執行個體執行。您也可以使用{instance_name}="{my_job}",大括弧{}表示以my_job為尾碼的GPU叢集。

命令

命令說明

命令樣本

fastgpu [help,-h,--help]

查看所有FastGPU命令的協助說明。

fastgpu --help

fastgpu -h

fastgpu {command} --help

查看指定的FastGPU命令的協助說明。

fastgpu ls --help

fastgpu ls

列出FastGPU使用者建立的執行個體。包括以下資訊:

  • instance name:執行個體名稱。

  • age(hours):執行個體建立至今的時間,以小時為單位。

  • public_ip:執行個體的公網IP。

  • private_ip:執行個體的內網IP。

  • GPU:GPU規格和數量。

  • instance_type:執行個體規格。

參數說明:

-a:列出您當前阿里雲賬戶下所有執行個體。會提供Key-Owner(金鑰組)和instance_id(執行個體id)兩個額外的資訊。

  • 查詢當前Linux賬戶下的執行個體:

    fastgpu ls

  • 查詢同一個阿里雲帳號不同Linux賬戶下的所有執行個體:

    fastgpu ls -a

fastgpu create --config create.cfg
fastgpu create --name {instance_name} --machine {count} --instance_type {ins_type}

建立一個執行個體或一個叢集。

參數說明:

  • -f, -c, --config:使用指定設定檔建立執行個體。

  • -n, --name:指定執行個體名稱。

  • --image, --image_name:指定安裝鏡像。安裝鏡像可通過queryimage命令查到。

  • --image_type:指定鏡像類型。如果未指定image_name,可以通過指定image_type實現,包括Aliyun、Ubuntu、CentOS。

  • -np, --machines:指定建立執行個體數量。

  • -i, --instance_type:指定執行個體規格(包括執行個體CPU,記憶體,顯卡型號等),您可以通過querygpu命令查詢所有執行個體規格。

  • --system_disk_size:指定系統硬碟大小,單位:GB。

  • --data_disk_size:指定資料盤大小,單位:GB。

  • --skip_setup:跳過執行個體初始化。

  • -nas, --nas, --enable-nas:允許執行個體掛載NAS。更多資訊,請參見什麼是Apsara File Storage NAS

  • --zone_id:指定地區id,預設為自動指定。可通過querygpu命令查詢執行個體支援的地區id。

  • --spot:指定建立的執行個體為搶佔式執行個體。更多資訊,請參見什麼是搶佔式執行個體

  • --confirm_cost:忽略消費確認項。

  • --install_script:指定執行個體安裝完成後需要執行的命令。

  • -vpc, --vpc, --vpc_name:指定私人網路名稱。

  • -cuda, --install_cuda, --cuda_install:自動化安裝CUDA。

  • 建立一個Ubuntu系統的執行個體,並指定執行個體名稱和規格,同時自動安裝CUDA:

    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}

使用SSH串連並登入到指定執行個體。

說明

您需要將本地的公網IP添加到安全性群組才可以通過SSH訪問。建議您使用fastgpu addip -a命令快速添加。

使用SSH串連到task0.my_job執行個體:

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/

  • 將本地檔案拷貝到my_job叢集中所有執行個體的/root目錄中:

    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}

查詢阿里雲支援的GPU執行個體規格。

參數說明:

  • -gpu:查詢指定的GPU類型規格。

    支援查詢的類型:V100、 P100、A10、T4、P4、M40等。

  • -np:查詢包含指定GPU個數的執行個體類型。支援1、2、4、8四種規格。

  • 查詢所有執行個體類型:

    fastgpu querygpu

    fastgpu query

  • 查詢V100 GPU包含的所有執行個體類型:

    fastgpu query -gpu "V100"

  • 查詢4個GPU的執行個體類型:

    fastgpu query -np 4

fastgpu queryimage
fastgpu queryimage {os_type}

查詢阿里雲支援的執行個體鏡像。

參數說明:

os_type:阿里雲支援的os類型。包括CentOS、Ubuntu、Debian、SUSE、Aliyun等。

  • 查詢所有鏡像:

    fastgpu queryimage

  • 查詢CentOS系統的所有鏡像版本:

    fastgpu queryimage centos

fastgpu describe {instance_name}
fastgpu describe

查詢執行個體的所有屬性。屬性包括CPU核心數、GPU、鏡像、記憶體大小、建立時間、金鑰組、狀態等資訊。

  • 查詢所有執行個體的所有屬性:

    fastgpu describe

  • 查詢task0.my_job執行個體屬性:

    fastgpu describe task0.my_job

  • 查詢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}

釋放指定的執行個體。

參數說明:

  • -f:強制釋放執行個體。

  • -y:跳過確認。

  • 釋放停止狀態的task0.my_job執行個體:

    fastgpu kill task0.my_job

  • 強制釋放task0.my_job執行個體,無論執行個體是什麼狀態:

    fastgpu kill -f task0.my_job

  • 強制停止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}

停止指定的執行個體。若執行個體為叢集執行個體,可以通過指定該執行個體名的取值,即將{叢集名字}作為該執行個體值的尾碼來大量停止叢集下的所有執行個體。

參數說明:

  • -f:強制停止執行個體。

  • -k:執行個體停止後,仍進行計費操作。

  • -y:跳過確認。

  • 停止運行中的task0.my_job執行個體:

    fastgpu stop task0.my_job

  • 強制停止task0.my_job執行個體:

    fastgpu stop -f task0.my_job

  • 強制停止my_job下所有執行個體:

    fastgpu stop -f {my_job}

fastgpu start {instance_name}

啟動指定的執行個體。

參數說明:

-y:跳過確認。

  • 啟動task0.my_job執行個體:

    fastgpu start task0.my_job

  • 啟動my_job叢集:

    fastgpu start {my_job}

fastgpu mount {instance_name}
fastgpu mount {instance_name} {mount_target_domain}

為指定的執行個體掛載NAS檔案系統到/ncluster目錄。

參數說明:

mount_target_domain:指定NAS的掛載點。如果不指定,則會自動建立掛載點並掛載。

  • 為task0.my_job執行個體自動建立一個掛載點,並掛載NAS檔案系統到執行個體中:

    fastgpu mount task0.my_job

  • 手動建立並擷取掛載點,並將掛載點掛載到task0.my_job執行個體中:

    fastgpu mount task0.my_job example.cn-hangzhou.nas.aliyuncs.com

  • 為叢集所有執行個體掛載NAS檔案系統:

    fastgpu mount {my_job}

fastgpu run {instance_name} {cmd}

在指定執行個體中執行shell命令。

參數說明:

cmd:需要執行的命令。

  • 查詢task0.my_job執行個體的IP:

    fastgpu run task0.my_job ifconfig

  • 查詢my_job叢集下所有執行個體的IP:

    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}

為指定執行個體的安全性群組添加可訪問的公網IP。

參數說明:

  • your_public_ip:將要訪問執行個體機器的公網IP。

  • port_range:連接埠範圍。以/分隔。

  • description:對添加的公網IP進行說明。

  • -a:預設安全性群組。

  • 將本機公網IP的22連接埠添加到預設安全性群組中:

    fastgpu addip -a

  • 將本機公網IP的22連接埠添加到task0.my_job執行個體中的安全性群組中:

    fastgpu addip task0.my_job

  • 允許IP地址為203.0.113.0的機器訪問task0.my_job執行個體的2000-3000連接埠:

    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"

  • 允許IP地址為203.0.113.0的機器訪問my_job叢集中的所有機器的2000~3000連接埠:

    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

將IP從某一執行個體安全性群組中移除。

參數說明:

  • your_public_ip:已經添加到安全性群組的公網IP。

  • port_range:連接埠範圍,以/分割。

  • -a:刪除22連接埠下的所有公網IP。

  • 將本機公網IP從task0.my_job執行個體安全性群組中移除:

    fastgpu deleteip task0.my_job

  • 將IP地址為203.0.113.0的機器從執行個體安全性群組移除:

    fastgpu deleteip task0.my_job 203.0.113.0

  • 移除IP地址為203.0.113.0的機器訪問2000-3000連接埠的許可權:

    fastgpu deleteip task0.my_job 203.0.113.0 2000/3000

  • 將task0.my_job執行個體22連接埠下所有IP從安全性群組中移除:

    fastgpu deleteip -a task0.my_job

  • 將IP地址為203.0.113.0的機器從my_job叢集下的所有執行個體中刪除:

    fastgpu deleteip {my_job} 203.0.113.0

fastgpu queryip
fastgpu queryip -a
fastgpu queryip {instance_name}

查詢執行個體的安全性群組IP,預設只查詢22連接埠對應的IP。

參數說明:

-a:查詢所有連接埠的IP。

  • 查詢所有執行個體的22連接埠安全性群組IP:

    fastgpu queryip

  • 查詢task0.my_job執行個體的22連接埠安全性群組IP:

    fastgpu queryip task0.my_job

  • 查詢task0.my_job執行個體所有連接埠對應的安全性群組IP:

    fastgpu queryip -a task0.my_job

fastgpu addpub {string of id_rsa.pub}

將本機公開金鑰添加進指定執行個體。

參數說明:

string of id_rsa.pub:公開金鑰路徑。

~/.ssh/id_rsa.pub內容添加到執行個體中:

fastgpu addpub

fastgpu rename {instance_name} {instance_new_name}
fastgpu rename {instance_id} {instance_new_name}

重新命名執行個體。

參數說明:

  • instance_new_name:執行個體的新名稱。

  • instance_id:執行個體ID,可用describe命令進行查詢。

將task0.my_job執行個體重新命名為my_new_ins:

fastgpu rename task0.my_job task0.my_new_ins

fastgpu tmux {instance_name}

使用SSH串連到執行個體,並使用預設的tmux進程。

登入task0.my_job執行個體,並建立一個tmux進程:

fastgpu tmux task0.my_job

fastgpu deletekeypair

刪除原生金鑰組。

說明

如果有執行個體正在使用此金鑰組,刪除該金鑰組後,執行個體將會無法正常被串連和查詢,但您可以通過fastgpu ls -a命令查詢到。

刪除~/.fastgpu/下對應的金鑰組:

fastgpu deletekeypair

fastgpu createkeypair

在本機建立一個金鑰組,後續執行個體的建立以及串連都會使用此次建立的金鑰組。

在本機~/.fastgpu/下建立一個金鑰組:

fastgpu createkeypair

fastgpu attachkeypair {instance_name}

將金鑰組綁定到執行個體中。

  • ~/.fastgpu/下的金鑰組綁定至task0.my_job執行個體:

    fastgpu attachkeypair task0.my_job

  • ~/.ncluster/下的金鑰組綁定至my_job叢集:

    fastgpu attachkeypair {my_job}

fastgpu detachkeypair {instance_name}

從執行個體中分離金鑰組。

說明

分離後將無法正常串連和查詢該執行個體,建議您使用attachkeypair命令重新綁定後,即可恢複正常串連和查詢。

  • 分離task0.my_job執行個體金鑰組:

    fastgpu detachkeypair task0.my_job

  • 分離my_job叢集下所有執行個體的金鑰組:

    fastgpu detachkeypair {my_job}

fastgpu notebooksample {instance_name} {passwd_of_login}

在指定執行個體中建立部署jupyter notebook專案樣本。

  • 預設密碼:AIACC。

  • 專案執行個體:tensorflow-1.14-python36。

參數說明:

passwd_of_login:指定jupyter-notebook伺服器密碼。

在task0.my_job執行個體中建立並部署專案樣本:

fastgpu notebooksample task0.my_job

fastgpu cuda {instance_name} {gpu_driver_version} {cuda_version} {cudnn_version}

為指定執行個體安裝驅動,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的預設版本:

    fastgpu cuda task0.my_job

  • 在task0.my_job執行個體中安裝GPU驅動,CUDA和cuDNN,GPU驅動版本為460.91.03,CUDA版本號碼為11.2.2,cuDNN版本號碼為8.1.1:

    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

為指定執行個體安裝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,不安裝任何虛擬環境:

    fastgpu conda task0.my_job

  • 為my_job叢集中所有執行個體安裝Conda:

    fastgpu conda {my_job}

  • 為task0.my_job執行個體安裝Conda,並配置Python 3.6,CUDA 11.0以及PyTorch 1.7.0虛擬環境:

    fastgpu conda -py 3.6 -cu 11.0 -pt -v 1.7.0

fastgpu allconda {instance_name}

在指定執行個體中安裝所有支援的Conda環境。

說明

安裝過程耗時較長。

  • 為task0.my_job安裝所有的conda環境:

    fastgpu allconda task0.my_job

  • 為my_job叢集安裝所有的conda環境:

    fastgpu allconda {my_job}

fastgpu replaceimage {instance_name} {image_id}

替換指定執行個體的鏡像。

參數說明:

image_id:需要替換的鏡像名稱或鏡像ID。

  • 將task0.my_job執行個體的鏡像替換為CentOS:

    fastgpu replaceimage task0.my_job centos_8_2_x64_20G_alibase_20210712.vhd

  • 將my_job下所有執行個體替換為CentOS:

    fastgpu replaceimage {my_job} centos_8_2_x64_20G_alibase_20210712.vhd

設定檔樣本

樣本檔案create.cfg內容如下,參數請參考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