日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建訓練任務

完成準備工作后,您可以通過控制臺、Python SDK或命令行提交DLC任務。本文為您介紹提交DLC任務的具體操作步驟。

前提條件

通過控制臺創建

  1. 進入新建任務頁面。

    1. 登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入DLC

    2. 在分布式訓練(DLC)頁面,單擊新建任務

  2. 分別在以下幾個區域,配置訓練任務相關參數。

    基本信息

    基本信息區域,配置任務名稱標簽

    環境信息

    環境信息區域,完成以下關鍵參數的配置:

    參數

    描述

    節點鏡像

    工作節點的鏡像。當前支持選擇使用不同類型的鏡像:

    • 官方鏡像:由阿里云PAI產品提供的多種官方鏡像,支持不同的Python版本及深度學習框架(包括TensorFlow、PyTorch等)。鏡像列表及詳情,請參見準備工作

    • 自定義鏡像:可選擇使用您添加到PAI的自定義鏡像,選擇前,您需要先將自定義鏡像添加到PAI中,操作詳情請參見自定義鏡像

      說明
      • 當資源配額選擇靈駿智算資源時,為了充分利用靈駿智算資源的高性能RDMA網絡,當使用自定義鏡像時,需手動安裝RDMA,操作詳情請參見RDMA:使用高性能網絡進行分布式訓練

      • 目前,您需要將鏡像倉庫設置為公開拉取狀態,或選擇將鏡像存儲在阿里云ACR(容器鏡像服務)中,以便能夠直接使用。

    • 鏡像地址:支持配置您的自定義鏡像或官方鏡像地址。您需要在配置框中配置公網環境下可訪問的Docker Registry Image URL。

      如果您配置的是私有鏡像地址,您需要單擊輸入,并配置鏡像倉庫用戶名鏡像倉庫密碼,為私有鏡像倉庫授權。

      您也可以使用加速鏡像,來提升模型訓練速度。詳情請參見鏡像加速

    數據集

    支持掛載以下兩種類型數據集:

    • 自定義數據集:需配置為前期已準備好的數據集,如果數據集存在多個版本,您可以在目標數據集操作列下的版本列表中進行選擇。關于如何準備數據集,請參見準備工作

    • 公共數據集:配置為PAI預置的公共數據集,只支持只讀掛載模式。

    兩種類型數據集均需配置掛載路徑,表示將數據集掛載到DLC容器的指定路徑,例如/mnt/data。運行代碼時,DLC會按照該路徑檢索所需文件。關于掛載配置更詳細的內容介紹,請參見DLC訓練任務中使用云存儲

    重要
    • 如果添加OSSNAS類型的數據集,則需要授權PAI訪問相關云產品OSSNAS的權限,否則讀取或寫入數據失敗。詳情請參見PAI訪問云產品授權:OSSNAS

    • 如果配置了CPFS類型的數據集,則需要配置專有網絡,且選擇的專有網絡需要與CPFS一致。否則,提交的DLC訓練任務可能長時間處于環境準備中狀態。

    直接掛載

    單擊OSS,可直接掛載OSS路徑至DLC容器的指定路徑。

    啟動命令

    本任務需要執行的命令。支持Shell命令。例如,使用python -c "print('Hello World')"運行Python。

    提交訓練任務時,PAI會自動注入多個通用環境變量,您可以通過配置$環境變量名,來獲取指定環境變量的值。關于DLC默認提供的環境變量列表,請參見通用環境變量列表

    說明
    • 如果配置了數據集,則訓練結果可以輸出到數據集掛載目錄。

    • 如果您在執行命令時通過配置啟動參數來指定了輸出路徑,則訓練結果將會輸出到指定的路徑中。

    環境變量

    提供額外的配置信息或參數。格式為Key:Value。最多支持配置20個環境變量。

    三方庫配置

    支持以下兩種配置方式:

    • 三方庫列表:直接在下方文本框中輸入三方庫。

    • requirements.txt文件目錄:將第三方庫寫入requirements.txt文件中,在下方文本框中指定該requirements.txt文件的路徑。

    代碼配置

    支持以下兩種配置方式:

    • 在線配置

      指定任務代碼文件的存儲位置(代碼倉庫信息)。此處需配置為此前已準備好的代碼配置。關于如何準備代碼集,請參見步驟四:準備代碼集

      說明

      由于DLC會將代碼下載至指定工作路徑,所以您需要有代碼倉庫的訪問權限。

    • 本地上傳

      單擊image.png按鈕后,按照界面操作指引上傳代碼配置。上傳成功后,將掛載路徑配置為容器內部的指定路徑,例如/mnt/data

    資源信息

    資源信息區域,完成以下關鍵參數的配置:

    參數

    描述

    資源類型

    僅當工作空間同時支持使用靈駿智算資源和通用計算資源提交DLC任務時,才支持選擇資源類型,取值如下:

    • 靈駿智算

      說明

      僅華北6(烏蘭察布)地域支持使用靈駿智算資源。

    • 通用計算

    資源來源

    您可以選擇使用公共資源資源配額(包括通用計算資源或靈駿智算資源)或競價資源

    說明
    • 目前公共資源支持運行的資源上限為GPU 2卡、CPU 8核。如果您在訓練任務時使用的公共資源超出上限,請聯系您的商務經理來提升資源上限。

    • 關于競價資源的使用限制和使用詳情介紹,請參見使用競價任務

    資源配額

    資源來源選擇資源配額時,需要配置該參數。選擇已準備好的資源配額,關于如何準備資源配額,請參見資源配額(Quota)功能介紹

    優先級

    資源來源選擇資源配額時,支持配置該參數。

    表示同時運行的任務執行的優先級,取值范圍為[1,9],其中1表示優先級最低。

    框架

    支持使用以下幾種深度學習訓練框架和訓練工具,它們提供了豐富的功能和接口,方便您進行構建、訓練和優化深度學習模型。

    • Tensorflow

    • PyTorch

    • ElasticBatch

    • XGBoost

    • OneFlow

    • MPIJob

    • Slurm

    • Ray

    說明

    資源配額選擇靈駿智算資源時,僅支持提交Tensorflow、PyTorch、ElasticBatch、MPIJob、SlurmRay類型的任務。

    任務資源

    根據您選擇的框架,支持配置Worker、PS、Chief、EvaluatorGraphLearn節點。

    • 使用公共資源

      支持配置以下參數:

      • 節點數量:運行DLC任務的節點數量。

      • 資源規格:您可以單擊image.png按鈕來選擇資源規格。您可以在資源規格頁面,查看相應規格的價格。更多關于資源規格的費用詳情介紹,請參見分布式訓練(DLC)計費說明

    • 使用資源配額

      各類節點支持配置的參數項一致,均包含節點數量CPU(核數)GPU(卡數)內存(GiB)共享內存(GiB)等配置項。

    • 使用競價資源

      支持配置以下參數:

      • 節點數量:運行DLC任務的節點數量。

      • 資源規格:您可以單擊image.png按鈕來選擇資源規格。

      • 最高出價:您可以通過設置最高出價來申請使用競價資源。該出價是基于實例的原價,從1折到9折的離散選項,表示參與競價的上限。當競價資源的最高出價≥市場價格且庫存充足時,可申請到競價資源。

    指定節點調度

    打開開關,在調度指定節點頁面,選擇要用于任務調度的節點。

    說明

    僅使用資源配額提交任務時,支持配置該參數。

    框架高級配置

    框架PyTorch類型時,支持通過高級配置提高訓練靈活性,或滿足一些特定的訓練場景。

    • 配置要求:

      • 需配置為使用半角逗號(,)分隔的一組字符串形式,其中每個字符串都符合key=value的形式。

      • 其中key為當前支持的高級參數,value需配置為對應參數的取值。

      • 當前支持的高級參數列表和取值說明請參見附錄:高級參數列表

        重要

        由于靈駿智算資源未提供自定義端口能力,因此當使用靈駿智算資源提交DLC任務時,不支持配置customPortNumPerWorker參數。

    • 典型場景與配置示例:

      • 場景:

        通過使用高級配置參數,可以實現Worker之間的網絡互通,從而實現更靈活的訓練方法。例如,可以利用額外開放的端口,在DLC容器中啟動像Ray這樣的框架,并與PyTorch配合進行更高級的分布式訓練。

      • 配置示例:

        createSvcForAllWorkers=true,customPortNumPerWorker=100

        后續,您可以在啟動命令中,通過配置$JOB_NAME$CUSTOM_PORTS環境變量獲取到域名和可用端口號,即可拉起并連接到像Ray之類的框架。

    閑時資源

    使用資源配額提交DLC訓練任務時,您可以合理利用并配置閑時資源。關于閑時資源的更多使用說明,請參見使用閑時資源

    CPU親和性

    啟用CPU親和性,能夠將容器或Pod中的進程綁定到特定的CPU核心上執行。通過這種方式,可以減少CPU緩存未命中、上下文切換等現象,從而提高CPU使用率,提升應用性能,適用于對性能敏感和實時性要求高的場景。

    最長運行時長

    您可以設置任務運行的最長時長,在完成配置后,超過該時長的任務將停止運行。默認為30小時。

    保留時長

    配置執行成功或失敗的任務的保留時長,開啟任務保留會一直占用資源。超過該時長的任務將被刪除。

    重要

    DLC任務刪除后無法恢復,請謹慎操作。

    專有網絡

    資源來源選擇公共資源時,支持配置該參數。

    • 不配置專有網絡,將使用公網連接。由于公網連接的帶寬有限,可能導致任務執行過程中出現卡頓或無法正常進行的情況。

    • 配置專有網絡,以確保充足的網絡帶寬和更穩定的性能。

      選擇當前地域可用的專有網絡,并選擇對應的交換機與安全組。配置完成后,任務運行的集群將能夠直接訪問此專有網絡內的服務,并使用此處選擇的安全組進行安全訪問限制。

      此外,您在配置專有網絡時還可以配置公網訪問網關,支持以下兩種配置方法:

      • 專有網關:獨享帶寬,您可以根據需求選擇不同的帶寬。選擇該方式后,您需要為DLC任務關聯的專有網絡創建公網NAT網關、綁定EIP并配置SNAT條目。配置方法,請參考DSW通過專有公網網關訪問公網

      • 公有網關:使用共享的公網帶寬,在用戶高并發時下載速度會比較慢。

    重要
    • 當前運行DLC任務時,需保障任務資源組實例、數據集存儲(OSS)在同一地域的VPC網絡環境中,且與代碼倉庫的網絡是連通狀態。

    • 如果數據集配置選擇CPFS類型的數據集,需要配置專有網絡,且選擇的專有網絡需要與CPFS一致。否則,提交的DLC訓練任務可能長時間處于環境準備中狀態。

    • 當使用靈駿智算競價資源提交DLC任務時,需要配置專有網絡。

    容錯與診斷

    容錯與診斷區域,完成以下關鍵參數的配置:

    參數

    描述

    自動容錯

    打開自動容錯開關并配置相應參數后,系統將提供作業檢測和控制能力,能夠及時檢測訓練任務算法層面的報錯,并規避錯誤,從而提升GPU的利用率。更詳細的配置說明,請參見AIMaster:彈性自動容錯引擎

    說明

    啟用自動容錯功能后,系統將啟動一個AIMaster實例與任務實例一起運行,這會占用一定的計算資源。關于AIMaster實例資源使用詳情如下:

    • 資源配額:1CPU核和1 GiB內存。

    • 公共資源:使用ecs.c6.large規格。

    健康檢測

    打開健康檢測開關,健康檢測會對參與訓練的資源進行全面檢測,自動隔離故障節點,并觸發后臺自動化運維流程,有效減少任務訓練初期遇到問題的可能性,提升訓練成功率。詳情請參見SanityCheck:算力健康檢測

    說明

    僅基于靈駿智算資源配額提交的Pytorch類型的訓練任務且GPU(卡數)大于0時,支持開啟健康檢測功能。

    角色與權限

    角色信息區域,配置實例RAM角色。關于該功能更詳細的內容介紹,請參見配置DLC RAM角色

    實例RAM角色

    描述

    PAI默認角色

    基于服務角色AliyunPAIDLCDefaultRole運作,它僅擁有訪問ODPS、OSS的權限,且權限更加精細。基于PAI默認角色簽發的臨時訪問憑證:

    • 在訪問MaxCompute表時,將擁有等同于DLC實例所有者的權限。

    • 在訪問OSS時,僅能訪問當前工作空間配置的默認OSS存儲空間(Bucket)。

    自定義角色

    選擇或填寫一個自定義的RAM角色。在實例內基于STS臨時憑證訪問云產品時,擁有的權限將與該自定義角色的權限保持一致。

    不關聯角色

    不為DLC任務關聯RAM角色,默認選擇該方式。

  3. 參數配置完成后,單擊確定

通過SDK或命令行創建

使用Python SDK

步驟一:安裝Python SDK

  • 安裝工作空間SDK。

    pip install alibabacloud_aiworkspace20210204==3.0.1
  • 安裝DLC SDK。

    pip install alibabacloud_pai_dlc20201203==1.4.17

步驟二:提交任務

  • 如果您希望采用按量計費方式提交訓練任務,可以使用公共資源。使用公共資源提交的訓練任務可能會遇到排隊延時,建議在任務量相對較少,對任務時效性要求不高的場景下使用。

  • 如果您希望采用包年包月方式提交訓練任務,可以使用專有資源(包括通用計算資源和靈駿智算資源)。在任務量相對較多時,通過專有資源來保障訓練任務能正常執行。

使用公共資源提交任務

創建并提交任務的具體調用代碼如下所示。

#!/usr/bin/env python3

from __future__ import print_function

import json
import time

from alibabacloud_tea_openapi.models import Config
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import (
    ListJobsRequest,
    ListEcsSpecsRequest,
    CreateJobRequest,
    GetJobRequest,
)

from alibabacloud_aiworkspace20210204.client import Client as AIWorkspaceClient
from alibabacloud_aiworkspace20210204.models import (
    ListWorkspacesRequest,
    CreateDatasetRequest,
    ListDatasetsRequest,
    ListImagesRequest,
    ListCodeSourcesRequest
)


def create_nas_dataset(client, region, workspace_id, name,
                       nas_id, nas_path, mount_path):
    '''創建NAS的數據集。
    '''
    response = client.create_dataset(CreateDatasetRequest(
        workspace_id=workspace_id,
        name=name,
        data_type='COMMON',
        data_source_type='NAS',
        property='DIRECTORY',
        uri=f'nas://{nas_id}.{region}{nas_path}',
        accessibility='PRIVATE',
        source_type='USER',
        options=json.dumps({
            'mountPath': mount_path
        })
    ))
    return response.body.dataset_id


def create_oss_dataset(client, region, workspace_id, name,
                       oss_bucket, oss_endpoint, oss_path, mount_path):
    '''創建OSS數據集。
    '''
    response = client.create_dataset(CreateDatasetRequest(
        workspace_id=workspace_id,
        name=name,
        data_type='COMMON',
        data_source_type='OSS',
        property='DIRECTORY',
        uri=f'oss://{oss_bucket}.{oss_endpoint}{oss_path}',
        accessibility='PRIVATE',
        source_type='USER',
        options=json.dumps({
            'mountPath': mount_path
        })
    ))
    return response.body.dataset_id



def wait_for_job_to_terminate(client, job_id):
    while True:
        job = client.get_job(job_id, GetJobRequest()).body
        print('job({}) is {}'.format(job_id, job.status))
        if job.status in ('Succeeded', 'Failed', 'Stopped'):
            return job.status
        time.sleep(5)
    return None


def main():

    # 請確認您的主賬號已授權DLC,且擁有足夠的權限。
    region_id = 'cn-hangzhou'
    # 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    # 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    # 本示例通過Credentials SDK默認從環境變量中讀取AccessKey,來實現身份驗證為例。
    cred = CredClient()

    # 1. create client;
    workspace_client = AIWorkspaceClient(
        config=Config(
            credential=cred,
            region_id=region_id,
            endpoint="aiworkspace.{}.aliyuncs.com".format(region_id),
        )
    )

    dlc_client = DLCClient(
         config=Config(
            credential=cred,
            region_id=region_id,
            endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
         )
    )

    print('------- Workspaces -----------')
    # 獲取工作空間列表。您也可以在參數workspace_name中填入您創建的工作空間名。
    workspaces = workspace_client.list_workspaces(ListWorkspacesRequest(
        page_number=1, page_size=1, workspace_name='',
        module_list='PAI'
    ))
    for workspace in workspaces.body.workspaces:
        print(workspace.workspace_name, workspace.workspace_id,
              workspace.status, workspace.creator)

    if len(workspaces.body.workspaces) == 0:
        raise RuntimeError('found no workspaces')

    workspace_id = workspaces.body.workspaces[0].workspace_id

    print('------- Images ------------')
    # 獲取鏡像列表。
    images = workspace_client.list_images(ListImagesRequest(
        labels=','.join(['system.supported.dlc=true',
                         'system.framework=Tensorflow 1.15',
                         'system.pythonVersion=3.6',
                         'system.chipType=CPU'])))
    for image in images.body.images:
        print(json.dumps(image.to_map(), indent=2))

    image_uri = images.body.images[0].image_uri

    print('------- Datasets ----------')
    # 獲取數據集。
    datasets = workspace_client.list_datasets(ListDatasetsRequest(
        workspace_id=workspace_id,
        name='example-nas-data', properties='DIRECTORY'))
    for dataset in datasets.body.datasets:
        print(dataset.name, dataset.dataset_id, dataset.uri, dataset.options)

    if len(datasets.body.datasets) == 0:
        # 當前數據集不存在時,創建數據集。
        dataset_id = create_nas_dataset(
            client=workspace_client,
            region=region_id,
            workspace_id=workspace_id,
            name='example-nas-data',
            # Nas文件系統ID。
            # 通用型NAS:31a8e4****。
            # 極速型NAS:必須以extreme-開頭,例如extreme-0015****。
            # CPFS:必須以cpfs-開頭,例如cpfs-125487****。
            nas_id='***',
            nas_path='/',
            mount_path='/mnt/data/nas')
        print('create dataset with id: {}'.format(dataset_id))
    else:
        dataset_id = datasets.body.datasets[0].dataset_id

    print('------- Code Sources ----------')
    # 獲取代碼集列表。
    code_sources = workspace_client.list_code_sources(ListCodeSourcesRequest(
        workspace_id=workspace_id))
    for code_source in code_sources.body.code_sources:
        print(code_source.display_name, code_source.code_source_id, code_source.code_repo)

    print('-------- ECS SPECS ----------')
    # 獲取DLC的節點規格列表。
    ecs_specs = dlc_client.list_ecs_specs(ListEcsSpecsRequest(page_size=100, sort_by='Memory', order='asc'))
    for spec in ecs_specs.body.ecs_specs:
        print(spec.instance_type, spec.cpu, spec.memory, spec.memory, spec.gpu_type)

    print('-------- Create Job ----------')
    # 創建DLC作業。
    create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
        'WorkspaceId': workspace_id,
        'DisplayName': 'sample-dlc-job',
        'JobType': 'TFJob',
        'JobSpecs': [
            {
                "Type": "Worker",
                "Image": image_uri,
                "PodCount": 1,
                "EcsSpec": ecs_specs.body.ecs_specs[0].instance_type,
            },
        ],
        "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
        'DataSources': [
            {
                "DataSourceId": dataset_id,
            },
        ],
    }))
    job_id = create_job_resp.body.job_id

    wait_for_job_to_terminate(dlc_client, job_id)

    print('-------- List Jobs ----------')
    # 獲取DLC的作業列表。
    jobs = dlc_client.list_jobs(ListJobsRequest(
        workspace_id=workspace_id,
        page_number=1,
        page_size=10,
    ))
    for job in jobs.body.jobs:
        print(job.display_name, job.job_id, job.workspace_name,
              job.status, job.job_type)
    pass


if __name__ == '__main__':
    main()

使用預付費資源配額提交任務

  1. 登錄PAI控制臺

  2. 按照下圖操作指引,在工作空間列表頁面查看您所在的工作空間ID。image.png

  3. 按照下圖操作指引,查看您的專有資源組的資源配額ID。image

  4. 使用以下代碼創建并提交任務。可使用的公共鏡像列表,詳情請參見步驟二:準備鏡像

    from alibabacloud_pai_dlc20201203.client import Client
    from alibabacloud_credentials.client import Client as CredClient
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_pai_dlc20201203.models import (
        CreateJobRequest,
        JobSpec,
        ResourceConfig, GetJobRequest
    )
    
    # 初始化一個Client,用來訪問DLCAPI。
    region = 'cn-hangzhou'
    # 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    # 強烈建議不要把AccessKey IDAccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    # 本示例通過Credentials SDK默認從環境變量中讀取AccessKey,來實現身份驗證為例。
    cred = CredClient()
    client = Client(
        config=Config(
            credential=cred,
            region_id=region,
            endpoint=f'pai-dlc.{region}.aliyuncs.com',
        )
    )
    
    # 聲明任務的資源配置,關于鏡像選擇可以參考文檔中公共鏡像列表,也可以傳入自己的鏡像地址。
    spec = JobSpec(
        type='Worker',
        image=f'registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04',
        pod_count=1,
        resource_config=ResourceConfig(cpu='1', memory='2Gi')
    )
    
    # 聲明任務的執行內容。
    req = CreateJobRequest(
            resource_id='<替換成您自己的資源配額ID>',
            workspace_id='<替換成您自己的WorkspaceID>',
            display_name='sample-dlc-job',
            job_type='TFJob',
            job_specs=[spec],
            user_command='echo "Hello World"',
    )
    
    # 提交任務。
    response = client.create_job(req)
    # 獲取任務ID。
    job_id = response.body.job_id
    
    # 查詢任務狀態。
    job = client.get_job(job_id, GetJobRequest()).body
    print('job status:', job.status)
    
    # 查看任務執行的命令。
    job.user_command

使用競價資源提交任務

  • SpotDiscountLimit(Spot折扣)

    #!/usr/bin/env python3
    
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_credentials.client import Client as CredClient
    
    from alibabacloud_pai_dlc20201203.client import Client as DLCClient
    from alibabacloud_pai_dlc20201203.models import CreateJobRequest
    
    region_id = '<region-id>'  # DLC任務所在地域ID,例如華東1(杭州)為cn-hangzhou。
    cred = CredClient()
    workspace_id = '12****'  # DLC任務所在工作空間ID。
    
    dlc_client = DLCClient(
        Config(credential=cred,
               region_id=region_id,
               endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
               protocol='http'))
    
    create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
        'WorkspaceId': workspace_id,
        'DisplayName': 'sample-spot-job',
        'JobType': 'PyTorchJob',
        'JobSpecs': [
            {
                "Type": "Worker",
                "Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04",
                "PodCount": 1,
                "EcsSpec": 'ecs.g7.xlarge',
                "SpotSpec": {
                    "SpotStrategy": "SpotWithPriceLimit",
                    "SpotDiscountLimit": 0.4,
                }
            },
        ],
        'UserVpc': {
            "VpcId": "vpc-0jlq8l7qech3m2ta2****",
            "SwitchId": "vsw-0jlc46eg4k3pivwpz8****",
            "SecurityGroupId": "sg-0jl4bd9wwh5auei9****",
        },
        "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
    }))
    job_id = create_job_resp.body.job_id
    print(f'jobId is {job_id}')
    
  • SpotPriceLimit(Spot價格)

    #!/usr/bin/env python3
    
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_credentials.client import Client as CredClient
    
    from alibabacloud_pai_dlc20201203.client import Client as DLCClient
    from alibabacloud_pai_dlc20201203.models import CreateJobRequest
    
    region_id = '<region-id>'
    cred = CredClient()
    workspace_id = '12****'
    
    dlc_client = DLCClient(
        Config(credential=cred,
               region_id=region_id,
               endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
               protocol='http'))
    
    create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
        'WorkspaceId': workspace_id,
        'DisplayName': 'sample-spot-job',
        'JobType': 'PyTorchJob',
        'JobSpecs': [
            {
                "Type": "Worker",
                "Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04",
                "PodCount": 1,
                "EcsSpec": 'ecs.g7.xlarge',
                "SpotSpec": {
                    "SpotStrategy": "SpotWithPriceLimit",
                    "SpotPriceLimit": 0.011,
                }
            },
        ],
        'UserVpc': {
            "VpcId": "vpc-0jlq8l7qech3m2ta2****",
            "SwitchId": "vsw-0jlc46eg4k3pivwpz8****",
            "SecurityGroupId": "sg-0jl4bd9wwh5auei9****",
        },
        "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
    }))
    job_id = create_job_resp.body.job_id
    print(f'jobId is {job_id}')
    

其中關鍵配置說明如下:

參數

描述

SpotStrategy

競價策略。僅該參數設置為SpotWithPriceLimit時,出價類型才能生效。

SpotDiscountLimit

出價類型為Spot折扣。

說明
  • SpotDiscountLimitSpotPriceLimit不能同時設置。

  • 靈駿競價資源出價類型僅支持SpotDiscountLimit

SpotPriceLimit

出價類型為Spot價格。

UserVpc

使用靈駿競價資源提交任務時,該參數必填。配置任務所在地域的專有網絡、交換機和安全組ID。

使用命令行

步驟一:下載客戶端并執行用戶認證

根據您使用的操作系統下載Linux 64Mac版本的客戶端工具并完成用戶認證,詳情請參見準備工作

步驟二:提交任務

  1. 登錄PAI控制臺

  2. 按照下圖操作指引,在工作空間列表頁面查看您所在的工作空間ID(WorkspaceID)。

    image.png

  3. 按照下圖操作指引,查看您的資源配額ID。

    image

  4. 參考以下文件內容準備參數文件 tfjob.params。更多關于參數文件的配置方法,請參見提交命令

    name=test_cli_tfjob_001
    workers=1
    worker_cpu=4
    worker_gpu=0
    worker_memory=4Gi
    worker_shared_memory=4Gi
    worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04
    command=echo good && sleep 120
    resource_id=<替換成您的資源配額ID> 
    workspace_id=<替換成您的WorkspaceID>
  5. 使用以下代碼示例傳入params_file參數提交任務,可以將DLC任務提交到指定的工作空間和資源配額。

    ./dlc submit tfjob --job_file  ./tfjob.params
  6. 使用以下代碼查看您提交的DLC任務。

    ./dlc get job <jobID>

相關文檔

提交訓練任務后,您可以執行以下操作:

  • 查看任務基本信息、資源視圖和操作日志。詳情請參見查看訓練詳情

  • 管理任務,包括克隆、停止和刪除任務等。詳情請參見管理訓練任務

  • 通過Tensorboard查看結果分析報告。詳情請參見Tensorboard

  • 設置DLC或資源配額的監控與報警。詳情請參見訓練監控與報警

  • 查看任務運行的賬單明細。詳情請參見賬單明細

  • 您可以在工作空間中配置SLS日志轉發功能,將當前工作空間中的DLC任務日志轉發至指定的SLS日志庫,實現自定義分析。詳情請參見訂閱任務日志

  • 您可以在PAI工作空間的事件中心中創建消息通知規則,以便跟蹤和監控DLC任務的狀態。詳情請參見消息通知

  • 有關在執行DLC任務過程中可能出現的問題及其解決方法,請參考DLC常見問題

  • 關于DLC的使用案例,請參見DLC使用案例匯總

附錄:高級參數列表

參數(key)

參數說明

參數取值(value)

createSvcForAllWorkers

是否允許worker間網絡互通。

  • 若為true,則允許所有PyTorch worker之間網絡互通。

  • 若為false或未配置,則默認僅有master可以被訪問。

打開后,每個worker的域名即為worker名,如dlcxxxxx-master-0,后續會通過環境變量JOB_NAME將作業名稱(dlcxxxxx)傳到worker內部,之后您即可得出需要訪問的具體worker的域名。

truefalse

customPortList

允許用戶定義每個worker上開放的網絡端口,可與createSvcForAllWorkers配合使用實現worker間的網絡互通。

若未配置,則默認僅有master上開放23456號端口。因此也請注意在該自定義端口列表中避開23456號端口。

重要

該參數與customPortNumPerWorker互斥,請不要同時設置。

分號分隔的一組字符串,其中每個字符串為一個端口號,或由短橫線連接的一個端口范圍,如10000;10001-10010(將會轉化為從1000010010連續的11個端口號)

customPortNumPerWorker

允許用戶請求為每個worker開放若干個網絡端口,可與createSvcForAllWorkers配合使用實現worker間的網絡互通。

若未配置,則默認僅在master上開放23456號端口。DLC會根據參數定義的端口數目,為worker隨機分配端口,具體分配的端口號會通過環境變量CUSTOM_PORTS傳到worker內部供您查詢,格式為分號分隔的一組端口號。

重要
  • 該參數與customPortList互斥,請不要同時設置。

  • 由于靈駿智算資源未提供自定義端口能力,因此當使用靈駿智算資源提交DLC任務時,不支持配置customPortNumPerWorker參數。

整數(最大為65536)