All Products
Search
Document Center

Platform For AI:Buat pekerjaan pelatihan

Last Updated:Jun 04, 2026

PAI-DLC menjalankan pekerjaan pelatihan single-node atau terdistribusi di Kubernetes, sehingga menghilangkan kebutuhan untuk menyediakan instans atau mengonfigurasi lingkungan. Layanan ini mendukung berbagai framework pembelajaran mendalam dan menawarkan konfigurasi sumber daya yang fleksibel.

Panduan cepat

Untuk panduan langkah demi langkah berbasis MNIST mengenai pelatihan terdistribusi single-GPU atau multi-node multi-GPU, lihat Panduan Cepat Pelatihan Terdistribusi DLC.

Parameter Konsol

Informasi dasar

Konfigurasikan Job Name dan Tag.

Informasi lingkungan

Parameter

Deskripsi

Image Configuration

Selain memilih Alibaba Cloud Image, Anda dapat menggunakan jenis gambar berikut:

  • Custom Image: Anda dapat menggunakan gambar kustom yang telah ditambahkan ke PAI. Gambar tersebut harus disimpan di Container Registry (ACR) atau repositori yang dapat diakses publik. Gambar kustom.

    Catatan

    Jika Anda menggunakan gambar kustom dengan sumber daya komputasi AI Lingjun, Anda harus menginstal RDMA secara manual untuk memanfaatkan jaringan RDMA berkinerja tinggi secara optimal. RDMA: Gunakan jaringan berkinerja tinggi untuk pelatihan terdistribusi.

  • Image Address: Tentukan URL gambar kustom atau resmi yang dapat diakses melalui internet.

    • Untuk URL gambar privat, klik Input Username and Password lalu masukkan username dan password repositori.

    • Untuk mempercepat pengambilan gambar, lihat Akselerasi gambar.

Mount dataset

Dataset menyediakan file data yang diperlukan untuk pelatihan model. PAI mendukung dua jenis dataset:

  • Custom Dataset: Anda dapat membuat dataset kustom untuk menyimpan data pelatihan Anda. Anda dapat mengatur dataset sebagai Read-only dan memilih versi dataset dari daftar versi.

  • Public Dataset: PAI menyediakan dataset publik. Hanya mode mount read-only yang didukung.

Mount Path: Jalur dalam kontainer DLC tempat dataset dimount, misalnya /mnt/data. Anda dapat mengakses dataset dari jalur ini dalam kode Anda. Detail konfigurasi mount: Gunakan penyimpanan cloud.

Penting

Jika Anda mengonfigurasi dataset CPFS, Anda harus mengonfigurasi VPC untuk DLC dan memastikan bahwa VPC tersebut sama dengan VPC sistem file CPFS. Jika tidak, pekerjaan yang dikirimkan mungkin tetap berada dalam status "Preparing" dalam waktu lama.

Mount storage

Anda juga dapat memount jalur sumber data untuk membaca data atau menyimpan file antara dan hasil.

  • Jenis sumber data yang didukung: Object Storage Service (OSS), NAS tujuan umum, Extreme NAS, CPFS, dan BMCPFS (hanya tersedia untuk sumber daya komputasi AI Lingjun).

  • Advanced Settings: Anda dapat menggunakan pengaturan lanjutan untuk mengaktifkan fitur tertentu untuk berbagai jenis sumber data. Contoh:

    • OSS: Di pengaturan lanjutan, atur {"mountType":"ossfs"} untuk memount penyimpanan OSS menggunakan ossfs.

    • NAS tujuan umum dan CPFS: Di pengaturan lanjutan, atur parameter nconnect untuk meningkatkan throughput saat kontainer DLC mengakses NAS. Untuk informasi lebih lanjut, lihat Bagaimana cara mengatasi performa buruk saat mengakses NAS dari sistem operasi Linux?. Contoh: {"nconnect":"<example_value>"}. Ganti <example_value> dengan bilangan bulat positif.

Gunakan penyimpanan cloud.

Startup Command

Tetapkan perintah startup untuk pekerjaan. Perintah shell didukung. DLC secara otomatis menyisipkan variabel lingkungan umum untuk PyTorch dan TensorFlow, seperti MASTER_ADDR dan WORLD_SIZE. Anda dapat mengaksesnya menggunakan format $variable_name. Berikut contoh perintah startup umum:

  • Run Python: python -c "print('Hello World')"

  • Pelatihan terdistribusi multi-node, multi-GPU PyTorch: python -m torch.distributed.launch \ --nproc_per_node=2 \ --master_addr=${MASTER_ADDR} \ --master_port=${MASTER_PORT} \ --nnodes=${WORLD_SIZE} \ --node_rank=${RANK} \ train.py --epochs=100

  • Tetapkan jalur file shell sebagai perintah startup: /ml/input/config/launch.sh

Konfigurasi Lanjutan

Environment Variable

Selain variabel lingkungan umum untuk PyTorch dan TensorFlow yang disisipkan secara otomatis, Anda dapat menyediakan variabel lingkungan kustom dalam format Key:Value. Maksimal 20 variabel lingkungan didukung.

Third-party Libraries

Jika gambar kontainer yang dikonfigurasi tidak memiliki pustaka pihak ketiga, tambahkan di bagian Third-party Libraries. Dua metode didukung:

  • Select from List: Masukkan nama pustaka pihak ketiga di kotak teks.

  • Directory of requirements.txt: Tambahkan pustaka pihak ketiga ke file requirements.txt, unggah file tersebut ke kontainer DLC melalui Code Builds, dataset, atau mount langsung, lalu tentukan jalur file tersebut dalam kontainer.

Code Builds

Unggah kode pelatihan Anda ke kontainer DLC. Dua metode didukung:

  • Online configuration: Jika Anda memiliki akses ke repositori Git, Anda dapat mengaitkan repositori tersebut dengan membuat sumber kode. Hal ini memungkinkan DLC memperoleh kode pekerjaan.

  • Local Upload: Klik tombol image.png untuk mengunggah file kode lokal. Setelah pengunggahan selesai, atur Mount path ke jalur tertentu dalam kontainer, misalnya /mnt/data.

Informasi sumber daya

Parameter

Deskripsi

Resource Type

Nilai default adalah General Computing. Lingjun Intelligence Resources tersedia di wilayah berikut: Tiongkok (Ulanqab), Singapura, Tiongkok (Shenzhen), Tiongkok (Beijing), Tiongkok (Shanghai), Tiongkok (Hangzhou), Tiongkok (Guangzhou), Tiongkok (Hong Kong), Malaysia (Kuala Lumpur), Jerman (Frankfurt), dan Atlanta.

Source

  • Public Resources:

    • Metode penagihan: bayar sesuai penggunaan.

    • Skenario: Paling cocok untuk pekerjaan dengan volume rendah dan tidak sensitif terhadap waktu. Penundaan antrian mungkin terjadi.

    • Batasan: 2 GPU dan 8 core CPU. Hubungi manajer bisnis Anda untuk menaikkan batas.

  • Resource Quota: Termasuk sumber daya komputasi tujuan umum atau sumber daya komputasi AI Lingjun.

    • Metode penagihan: langganan.

    • Skenario: Direkomendasikan untuk pekerjaan volume tinggi yang memerlukan eksekusi andal.

    • Parameter spesifik:

      • Resource Quota: Anda dapat mengatur jumlah sumber daya, seperti GPU dan CPU. Untuk membuat kuota sumber daya, lihat Tambahkan kuota sumber daya.

      • Priority: Prioritas eksekusi untuk pekerjaan konkuren. Nilainya dapat berupa bilangan bulat dari 1 hingga 9, dengan 1 sebagai prioritas terendah.

    • Pemeriksaan awal: Memverifikasi kompatibilitas antara sumber daya dan gambar resmi sebelum pekerjaan dimulai, mencegah kegagalan akibat kesalahan konfigurasi.

  • Preemptible Resources:

    • Metode penagihan: bayar sesuai penggunaan.

    • Skenario: Mengurangi biaya dengan sumber daya diskon.

    • Batasan: Ketersediaan tidak dijamin — sumber daya mungkin tidak segera tersedia atau dapat ditarik kembali. Gunakan pekerjaan preemptible.

Framework

Framework dan alat pelatihan pembelajaran mendalam yang didukung: TensorFlow, PyTorch, ElasticBatch, XGBoost, OneFlow, MPIJob, Ray, Custom, DataJuicer, dan MPI.

Catatan

Saat Anda memilih Resource Quota dan menggunakan sumber daya komputasi AI Lingjun, Anda hanya dapat mengirimkan pekerjaan TensorFlow, PyTorch, ElasticBatch, MPIJob, dan Ray.

Job Resource

Berdasarkan Framework yang dipilih, Anda dapat mengonfigurasi sumber daya untuk tipe node Worker, PS, Chief, Evaluator, dan GraphLearn. Jika Anda memilih framework Ray, Anda dapat mengklik Add Role untuk menyesuaikan peran Worker dan menjalankan pekerjaan pada sumber daya heterogen.

  • Gunakan sumber daya publik: Anda dapat mengonfigurasi parameter berikut:

    • Number of Nodes: Jumlah node untuk pekerjaan DLC.

    • Resource Type: Pilih spesifikasi sumber daya. Konsol menampilkan harga yang sesuai. Detail penagihan: Penagihan DLC.

  • Gunakan kuota sumber daya: Anda dapat mengonfigurasi jumlah node, CPU (core), GPU (kartu), Memori (GiB), dan Memori Bersama (GiB) untuk setiap tipe node. Anda juga dapat mengonfigurasi parameter berikut:

    • Node-Specific Scheduling: Anda dapat menjalankan pekerjaan pada node komputasi tertentu.

    • Idle Resources: Memungkinkan pekerjaan berjalan pada sumber daya idle dari kuota lain untuk meningkatkan pemanfaatan. Jika kuota asli memerlukan sumber daya tersebut, pekerjaan akan dihentikan dan sumber daya secara otomatis dikembalikan. Gunakan sumber daya idle.

    • CPU Affinity: Mengikat proses dalam kontainer atau pod ke core CPU tertentu, mengurangi cache miss dan context switch. Cocok untuk beban kerja yang sensitif terhadap performa dan real-time.

  • Gunakan sumber daya preemptible: Selain jumlah node dan spesifikasi sumber daya, Anda dapat mengonfigurasi parameter Bid Price, yang menetapkan harga maksimum untuk meminta sumber daya preemptible. Klik tombol image untuk memilih metode penawaran:

    • By Discount: Penawaran maksimum didasarkan pada harga pasar spesifikasi sumber daya, dengan opsi diskon diskrit mulai dari 10% hingga 90%. Ini menunjukkan batas atas untuk penawaran. Anda dapat meminta sumber daya preemptible jika penawaran maksimum Anda sama dengan atau di atas harga pasar dan stok mencukupi.

    • By Price: Penawaran maksimum berada dalam kisaran harga pasar.

Konfigurasi Lanjutan

Maximum Duration

Durasi maksimum eksekusi pekerjaan. Pekerjaan yang melebihi durasi ini akan dihentikan. Default: 30 hari.

Retention Period

Periode retensi untuk pekerjaan yang telah selesai. Pekerjaan yang disimpan tetap mengonsumsi sumber daya dan dihapus setelah masa berlaku habis.

Penting

Pekerjaan DLC yang dihapus tidak dapat dipulihkan. Lakukan dengan hati-hati.

Start Developer Machine

Jika sumber sumber daya adalah kuota sumber daya, Anda dapat memulai Developer Machine (DSW) untuk debugging online. Di halaman ikhtisar pekerjaan, buka daftar instans dan klik Developer Machine (DSW) di kolom Tindakan.

Advanced Framework Configuration

Untuk daftar parameter yang didukung dan deskripsinya, lihat Daftar parameter lanjutan.

  • Parameter ReleaseResourcePolicy, EnableNvidiaIBGDA, EnableNvidiaGDRCopy, EnablePaiNUMACoreBinding, dan EnableResourcePreCheck didukung oleh semua framework.

  • Jika Framework adalah PyTorch, parameter berikut tersedia: createSvcForAllWorkers, customPortList, dan customPortNumPerWorker.

    Penting

    Sumber daya komputasi AI Lingjun tidak menyediakan kemampuan port kustom. Oleh karena itu, Anda tidak dapat mengonfigurasi parameter customPortNumPerWorker saat mengirimkan pekerjaan DLC yang menggunakan sumber daya komputasi AI Lingjun.

  • Jika Framework adalah Ray, parameter berikut tersedia: RayRuntimeEnv, RayRedisAddress, RayRedisUsername, RayRedisPassword, RaySubmitterBackoffLimit, dan RayObjectStoreMemoryBytes. Catatan: Konfigurasi variabel lingkungan dan pustaka pihak ketiga akan ditimpa oleh konfigurasi RayRuntimeEnv.

Format konfigurasi berikut didukung:

  • Teks biasa: Masukkan daftar string yang dipisahkan koma, dengan setiap string dalam format key=value. Key adalah parameter lanjutan yang didukung, dan value adalah nilai parameter tersebut.

  • JSON

Skenario konfigurasi khas:

  • Skenario 1: Konfigurasi lanjutan PyTorch

    Gunakan parameter konfigurasi lanjutan untuk mengaktifkan komunikasi jaringan antar Worker. Misalnya, buka port tambahan untuk meluncurkan framework seperti Ray dalam kontainer DLC dan berkoordinasi dengan PyTorch untuk pelatihan terdistribusi lanjutan. Contoh konfigurasi:

    createSvcForAllWorkers=true,customPortNumPerWorker=100

    Kemudian, di Startup Command, Anda dapat menggunakan variabel lingkungan $JOB_NAME dan $CUSTOM_PORTS untuk mendapatkan nama domain dan nomor port yang tersedia guna meluncurkan dan menghubungkan ke framework seperti Ray.

  • Skenario 2: Konfigurasi manual RayRuntimeEnv untuk framework Ray (termasuk pustaka dependensi dan variabel lingkungan)

    Contoh konfigurasi:

    {"RayRuntimeEnv": "{pip: requirements.txt, env_vars: {key: value}}"}
  • Skenario 3: Aturan rilis sumber daya kustom

    Saat ini, hanya kebijakan rilis pod-exit yang didukung, yang secara otomatis melepaskan sumber daya saat pod Anda keluar. Contoh konfigurasi:

    {
      "ReleaseResourcePolicy": "pod-exit"
    }

Konfigurasi VPC

  • Tanpa VPC, pekerjaan menggunakan Public Gateway dengan bandwidth terbatas, yang dapat memperlambat atau menyebabkan kegagalan pekerjaan.

  • Konfigurasikan VPC dengan vSwitch dan security group untuk meningkatkan bandwidth, stabilitas, dan keamanan. Kluster pekerjaan dapat langsung mengakses layanan dalam VPC.

    Penting
    • Jika Anda menggunakan VPC, pastikan instans kelompok sumber daya pekerjaan dan penyimpanan dataset (OSS) berada di VPC yang sama di wilayah yang sama, serta VPC tersebut terhubung ke jaringan repositori kode.

    • Jika Anda menggunakan dataset CPFS, Anda harus mengonfigurasi VPC dan memastikan VPC yang dipilih sama dengan VPC sistem file CPFS. Jika tidak, pekerjaan pelatihan DLC yang dikirimkan mungkin tetap berada dalam status "Preparing" dalam waktu lama.

    • Anda harus mengonfigurasi VPC saat mengirimkan pekerjaan DLC yang menggunakan sumber daya komputasi AI Lingjun preemptible.

    Anda juga dapat mengonfigurasi Internet Access Gateway dengan salah satu metode berikut:

Toleransi kesalahan dan diagnosis

Parameter

Deskripsi

Automatic Fault Tolerance

Aktifkan Automatic Fault Tolerance dan konfigurasikan parameter yang diperlukan untuk mendeteksi dan mengurangi kesalahan tingkat algoritma, meningkatkan pemanfaatan GPU. AIMaster: Mesin toleransi kesalahan otomatis elastis.

Catatan

Saat Anda mengaktifkan toleransi kesalahan otomatis, sebuah instans AIMaster dimulai dan berjalan bersama instans pekerjaan. Hal ini mengonsumsi sejumlah sumber daya komputasi tertentu. Instans AIMaster menggunakan sumber daya berikut:

  • Kuota sumber daya: 1 core CPU dan 1 GiB memori.

  • Sumber daya publik: Menggunakan spesifikasi ecs.c6.large.

Sanity Check

Aktifkan Sanity Check untuk memeriksa secara komprehensif sumber daya pelatihan, mengisolasi node yang rusak, dan memicu proses O&M otomatis backend. Mengurangi kegagalan tahap awal dan meningkatkan tingkat keberhasilan. SanityCheck: Pemeriksaan kesehatan sumber daya komputasi.

Catatan

Fitur pemeriksaan kesehatan hanya didukung untuk pekerjaan pelatihan PyTorch yang dikirimkan menggunakan kuota sumber daya komputasi AI Lingjun dan memiliki jumlah GPU lebih dari 0.

Peran dan izin

Konfigurasi peran RAM instans. Konfigurasi peran RAM DLC.

Instance RAM role

Deskripsi

Default Role of PAI

Peran default PAI memberikan izin berikut melalui kredensial sementara STS:

  • Saat mengakses tabel MaxCompute, Anda memiliki izin yang sama dengan pemilik instans DLC.

  • Saat mengakses OSS, Anda hanya dapat mengakses bucket OSS default yang dikonfigurasi untuk ruang kerja saat ini.

Custom Role

Pilih atau masukkan peran RAM kustom. Instans mengasumsikan izin peran ini saat mengakses layanan cloud melalui kredensial sementara STS.

Does Not Associate Role

Tidak ada peran RAM yang dikaitkan dengan pekerjaan DLC. Ini adalah opsi default.

Topik terkait

Lampiran

Buat pekerjaan melalui SDK atau CLI

Python SDK

Langkah 1: Instal alat Credentials

Instal alat Credentials untuk autentikasi SDK. Persyaratan:

  • Python 3.7 atau lebih baru.

  • Alibaba Cloud SDK seri 2.0.

pip install alibabacloud_credentials

Langkah 2: Dapatkan AccessKey

Contoh ini menggunakan pasangan AccessKey. Simpan nilai AccessKey sebagai variabel lingkungan untuk mencegah risiko keamanan. Variabel lingkungan untuk ID AccessKey adalah ALIBABA_CLOUD_ACCESS_KEY_ID, dan variabel lingkungan untuk Rahasia AccessKey adalah ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Langkah 3: Instal SDK Python

  • Instal SDK workspace.

    pip install alibabacloud_aiworkspace20210204==3.0.1
  • Instal SDK DLC.

    pip install alibabacloud_pai_dlc20201203==1.4.17

Langkah 4: Kirim pekerjaan

Sumber daya publik

Kode contoh berikut membuat dan mengirimkan pekerjaan.

Kode contoh untuk membuat dan mengirimkan pekerjaan

#!/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):
    '''Create a NAS dataset.
    '''
    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):
    '''Create an OSS dataset.
    '''
    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():

    # Make sure that your Alibaba Cloud account is authorized to use DLC and has sufficient permissions.
    region_id = 'cn-hangzhou'
    # An AccessKey pair provides full API access. For security purposes, we recommend that you use a RAM user for API access and daily O&M.
    # Do not hard-code your AccessKey ID and AccessKey secret in your code. This may lead to AccessKey leakage and compromise the security of all resources in your account.
    # This example shows how to use the Credentials SDK to read the AccessKey from environment variables for authentication.
    cred = CredClient()

    # 1. Create clients;
    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 -----------')
    # Obtain the list of workspaces. You can also specify your workspace name in the workspace_name parameter.
    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 ------------')
    # Obtain the list of 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 ----------')
    # Obtain the 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:
        # If the dataset does not exist, create one.
        dataset_id = create_nas_dataset(
            client=workspace_client,
            region=region_id,
            workspace_id=workspace_id,
            name='example-nas-data',
            # The ID of the NAS file system.
            # General-purpose NAS: 31a8e4****.
            # Extreme NAS: Must start with extreme-, for example, extreme-0015****.
            # CPFS: Must start with cpfs-, for example, 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 ----------')
    # Obtain the list of 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 ----------')
    # Obtain the list of DLC node specifications.
    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 ----------')
    # Create a DLC job.
    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 ----------')
    # Obtain the list of DLC jobs.
    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()

Kuota sumber daya langganan

  1. Masuk ke Konsol PAI.

  2. Untuk melihat ID ruang kerja Anda: Di panel navigasi kiri, klik Workspaces. Temukan ruang kerja target, klik ikon ⓘ di samping namanya, lalu lihat dan salin Workspace ID dari kartu informasi yang muncul.

  3. Untuk melihat ID kuota sumber daya Anda untuk kelompok sumber daya khusus: Di panel navigasi kiri, pilih AI Computing Resources > Resource Quotas. Klik tab General-purpose Computing Resources dan dapatkan ID Kuota dari kolom Name/ID dalam daftar kuota sumber daya.

  4. Gunakan kode berikut untuk membuat dan mengirimkan pekerjaan. Untuk daftar gambar publik yang tersedia, lihat Langkah 2: Siapkan gambar.

    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
    )
    
    # Initialize a client to access the DLC API.
    region = 'cn-hangzhou'
    # An AccessKey pair provides full API access. For security purposes, we recommend that you use a RAM user for API access and daily O&M.
    # Do not hard-code your AccessKey ID and AccessKey secret in your code. This may lead to AccessKey leakage and compromise the security of all resources in your account.
    # This example shows how to use the Credentials SDK to read the AccessKey from environment variables for authentication.
    cred = CredClient()
    client = Client(
        config=Config(
            credential=cred,
            region_id=region,
            endpoint=f'pai-dlc.{region}.aliyuncs.com',
        )
    )
    
    # Declare the resource configuration for the job. For image selection, you can refer to the public image list in the documentation or provide your own image URL.
    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')
    )
    
    # Declare the job's execution details.
    req = CreateJobRequest(
            resource_id='<Replace with the ID of your resource quota>',
            workspace_id='<Replace with your WorkspaceID>',
            display_name='sample-dlc-job',
            job_type='TFJob',
            job_specs=[spec],
            user_command='echo "Hello World"',
    )
    
    # Submit the job.
    response = client.create_job(req)
    # Get the job ID.
    job_id = response.body.job_id
    
    # Query the job status.
    job = client.get_job(job_id, GetJobRequest()).body
    print('job status:', job.status)
    
    # View the command executed by the job.
    job.user_command

Instans spot

  • SpotDiscountLimit (diskon 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>'  # The ID of the region in which the DLC job resides, such as cn-hangzhou. 
    cred = CredClient()
    workspace_id = '12****'  # The ID of the workspace to which the DLC job belongs. 
    
    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 (harga 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}')
    

Tabel berikut menjelaskan parameter utama.

Parameter

Deskripsi

SpotStrategy

Kebijakan penawaran. Parameter tipe penawaran hanya berlaku jika Anda mengatur parameter ini ke SpotWithPriceLimit.

SpotDiscountLimit

Tipe penawaran diskon spot.

Catatan
  • Anda tidak dapat menentukan parameter SpotDiscountLimit dan SpotPriceLimit secara bersamaan.

  • Parameter SpotDiscountLimit hanya berlaku untuk sumber daya Lingjun.

SpotPriceLimit

Tipe penawaran harga spot.

UserVpc

Parameter ini wajib saat Anda menggunakan sumber daya Lingjun untuk mengirimkan pekerjaan. Konfigurasikan VPC, vSwitch, dan ID security group untuk wilayah tempat pekerjaan berada.

CLI

Langkah 1: Unduh klien dan autentikasi

Unduh alat klien untuk Linux (64-bit) atau macOS dan selesaikan autentikasi. Persiapan.

Langkah 2: Kirim pekerjaan

  1. Masuk ke Konsol PAI.

  2. Untuk melihat ID ruang kerja Anda:

    Di panel navigasi kiri, klik Workspaces. Temukan ruang kerja target, klik ikon ⓘ di samping namanya dan lihat Workspace ID di kartu informasi yang muncul.

  3. Untuk melihat ID kuota sumber daya Anda:

    Di panel navigasi kiri, pilih AI Computing Resources > Resource Quotas. Pilih tab tipe sumber daya target, seperti General-purpose Computing Resources, dan dapatkan ID kuota sumber daya dari kolom Name/ID.

  4. Buat file parameter bernama tfjob.params dengan konten berikut. Detail file parameter: Perintah pengiriman.

    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=<Replace with your resource quota ID> 
    workspace_id=<Replace with your WorkspaceID>
  5. Jalankan perintah berikut untuk mengirimkan pekerjaan DLC ke ruang kerja dan kuota sumber daya tertentu dengan menggunakan parameter '--job_file' untuk menentukan jalur ke file parameter Anda.

    ./dlc submit tfjob --job_file  ./tfjob.params
  6. Jalankan perintah berikut untuk melihat pekerjaan DLC yang telah Anda kirimkan.

    ./dlc get job <jobID>

Parameter lanjutan

Parameter

Framework yang didukung

Deskripsi

Nilai

ReleaseResourcePolicy

ALL

Secara default, semua sumber daya pod dilepaskan setelah pekerjaan selesai. Satu-satunya nilai lain yang didukung adalah 'pod-exit', yang melepaskan sumber daya pod segera setelah pod keluar.

pod-exit

EnableNvidiaIBGDA

ALL

Menentukan apakah akan mengaktifkan fitur IBGDA saat driver GPU dimuat.

true atau false

EnableNvidiaGDRCopy

ALL

Menentukan apakah akan menginstal modul kernel GDRCopy. (Versi: 2.4.4)

true atau false

EnablePaiNUMACoreBinding

ALL

Menentukan apakah akan mengaktifkan pengikatan core NUMA.

true atau false

EnableResourcePreCheck

ALL

Menentukan apakah akan memeriksa apakah total sumber daya (spesifikasi node) dalam kuota dapat memenuhi spesifikasi semua peran dalam pekerjaan saat pengiriman.

true atau false

createSvcForAllWorkers

PyTorch

Menentukan apakah akan mengizinkan komunikasi jaringan antar worker.

  • Jika diatur ke true, komunikasi jaringan diizinkan antara semua worker PyTorch.

  • Jika nilainya false atau tidak dikonfigurasi, hanya master yang dapat diakses secara default.

Setelah fitur ini diaktifkan, nama domain setiap worker sama dengan nama workernya, seperti dlcxxxxx-master-0. Nama pekerjaan, seperti dlcxxxxx, diteruskan ke worker melalui variabel lingkungan JOB_NAME. Anda kemudian dapat menentukan nama domain worker tertentu yang ingin Anda akses.

true atau false

customPortList

PyTorch

Memungkinkan Anda menentukan port jaringan yang akan dibuka pada setiap worker, yang dapat digunakan bersama createSvcForAllWorkers untuk mengaktifkan komunikasi jaringan antar worker.

Jika parameter ini tidak dikonfigurasi, hanya port 23456 pada worker master yang dibuka secara default. Oleh karena itu, pastikan port 23456 tidak termasuk dalam daftar port kustom ini.

Penting

Parameter ini dan customPortNumPerWorker saling eksklusif dan tidak boleh diatur secara bersamaan.

Sekumpulan string yang dipisahkan titik koma, di mana setiap string adalah nomor port atau rentang port yang dihubungkan dengan tanda hubung, seperti 10000;10001-10010 (yang merepresentasikan 11 nomor port berurutan dari 10000 hingga 10010).

customPortNumPerWorker

PyTorch

Hal ini memungkinkan Anda meminta beberapa port jaringan untuk setiap worker dan dapat digunakan bersama createSvcForAllWorkers untuk mengaktifkan komunikasi jaringan antar worker.

Jika pengaturan ini tidak dikonfigurasi, hanya port 23456 yang dibuka pada node master secara default. DLC secara acak menetapkan port ke node worker berdasarkan jumlah port yang Anda tentukan. Nomor port yang ditetapkan diteruskan ke node worker melalui variabel lingkungan CUSTOM_PORTS, yang dapat Anda kueri. Nilai variabel ini adalah daftar nomor port yang dipisahkan titik koma.

Penting
  • Parameter ini dan customPortList saling eksklusif. Jangan atur keduanya secara bersamaan.

  • Sumber daya Layanan Komputasi AI Lingjun tidak menyediakan fitur port kustom. Oleh karena itu, parameter customPortNumPerWorker tidak didukung saat Anda mengirimkan pekerjaan DLC yang menggunakan sumber daya Layanan Komputasi AI Lingjun.

Bilangan bulat hingga 65536.

RayRuntimeEnv

Ray

Saat framework adalah Ray, Anda dapat mengonfigurasi RayRuntimeEnv secara manual untuk menentukan lingkungan runtime.

Penting

Konfigurasi ini menimpa pengaturan variabel lingkungan dan pustaka pihak ketiga lainnya.

Konfigurasikan variabel lingkungan dan pustaka pihak ketiga ({pip: requirements.txt, env_vars: {key: value}})

RayRedisAddress

Ray

Alamat server Redis GCS eksternal.

String

RayRedisUsername

Ray

Username untuk server Redis GCS eksternal.

String

RayRedisPassword

Ray

Password untuk server Redis GCS eksternal.

String

RaySubmitterBackoffLimit

Ray

Jumlah percobaan ulang submitter.

Bilangan bulat positif (int)

RayObjectStoreMemoryBytes

Ray

Mengonfigurasi memori bersama untuk sebuah node. Misalnya, untuk mengonfigurasi 1 GiB memori bersama untuk setiap node, gunakan konfigurasi berikut:

{
  "RayObjectStoreMemoryBytes": "1073741824"
}

Bilangan bulat positif (int)