All Products
Search
Document Center

Platform For AI:Buat pekerjaan pelatihan

Last Updated:Apr 08, 2026

Buat pekerjaan pelatihan single-node atau terdistribusi di DLC menggunakan Konsol, Python SDK, atau CLI.

Quick start

Untuk panduan langkah demi langkah berbasis MNIST mengenai pelatihan single-GPU atau multi-node multi-GPU, lihat Quick start pelatihan terdistribusi DLC.

Parameter Konsol

Informasi dasar

Konfigurasikan Job Name dan Tag.

Informasi lingkungan

Parameter

Description

Image Configuration

Selain Alibaba Cloud Image, jenis gambar berikut juga tersedia:

  • Custom Image: Gunakan gambar kustom yang telah ditambahkan ke PAI. Gambar tersebut harus disimpan di Container Registry (ACR) atau di repository yang mengizinkan pull publik. Untuk informasi lebih lanjut, lihat Custom images.

    Catatan

    Jika Anda menggunakan gambar kustom dengan sumber daya komputasi AI Lingjun, instal RDMA secara manual untuk menggunakan jaringan RDMA berkinerja tinggi. Untuk informasi lebih lanjut, lihat RDMA: Gunakan jaringan berkinerja tinggi untuk pelatihan terdistribusi.

  • Image Address: Tentukan URL gambar kustom atau gambar Alibaba Cloud.

    • Untuk alamat gambar privat, klik Input username and password untuk memberikan kredensial repository gambar.

    • Untuk mempercepat proses pulling gambar, lihat Accelerate image pulling.

Mount dataset

Pasang file data untuk pelatihan model. Jenis dataset yang didukung:

  • Custom Dataset: Buat dataset kustom untuk menyimpan file data pelatihan. Atur dataset sebagai read-only dan pilih versi dataset dari daftar versi.

  • Public Dataset: PAI menyediakan dataset publik. Dataset publik bersifat read-only.

Mount Path: Jalur mount dalam kontainer DLC, misalnya /mnt/data. Akses dataset dari jalur ini dalam kode Anda. Untuk informasi lebih lanjut, lihat Gunakan penyimpanan cloud dalam pekerjaan pelatihan DLC.

Penting

Jika Anda menggunakan dataset CPFS, konfigurasikan VPC untuk pekerjaan DLC Anda. VPC tersebut harus sesuai dengan VPC sistem file CPFS. Jika tidak, pekerjaan mungkin tetap berada dalam status Preparing.

Mount storage

Pasang jalur sumber data untuk membaca data atau menyimpan file output.

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

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

    • OSS: Dalam pengaturan lanjutan, tentukan {"mountType":"ossfs"} untuk memasang penyimpanan OSS menggunakan ossfs.

    • General-purpose NAS dan CPFS: Dalam 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 OS Linux?. Contoh: {"nconnect":"<example_value>"}. Ganti <example_value> dengan bilangan bulat positif.

Untuk informasi lebih lanjut, lihat Gunakan penyimpanan cloud dalam pekerjaan pelatihan DLC.

Startup Command

Perintah startup untuk pekerjaan (mendukung perintah shell). DLC secara otomatis menyuntikkan variabel lingkungan umum untuk PyTorch dan TensorFlow, seperti MASTER_ADDR dan WORLD_SIZE. Akses variabel tersebut dengan format $variable_name. Contoh perintah startup umum:

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

  • pelatihan terdistribusi torch multi-node, multi-GPU: 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

Lingkungan, pustaka, dan kode

Environment Variable

Selain variabel lingkungan umum untuk PyTorch dan TensorFlow yang disuntikkan secara otomatis, definisikan variabel lingkungan kustom dalam format Key:Value. Maksimal: 20 variabel lingkungan.

Third-party Libraries

Jika gambar kontainer tidak memiliki pustaka yang diperlukan, tambahkan melalui Third-party Libraries. Dua metode:

  • 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 konfigurasi kode, dataset, atau mount langsung, lalu tentukan jalur file tersebut dalam kontainer.

Code Builds

Unggah file kode pelatihan ke kontainer DLC. Dua metode:

  • Online configuration: Buat sumber kode untuk mengaitkan repositori Git. DLC menarik kode untuk pekerjaan tersebut.

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

Informasi sumber daya

Parameter

Description

Resource Type

Nilai default adalah General Computing. Anda hanya dapat memilih Lingjun Intelligence Resources di wilayah China (Ulanqab), Singapura, China (Shenzhen), China (Beijing), China (Shanghai), dan China (Hangzhou).

Source

  • Public Resources:

    • Metode penagihan: pay-as-you-go.

    • Kasus penggunaan: Sumber daya publik mungkin mengalami penundaan antrian. Cocok untuk pekerjaan dengan volume rendah dan tidak sensitif terhadap waktu.

    • Batasan: Kuota sumber daya default adalah 2 GPU dan 8 vCPU per pekerjaan. Untuk menambah kuota ini, hubungi manajer bisnis Anda.

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

    • Metode penagihan: subscription.

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

    • Parameter spesifik:

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

      • Priority: Prioritas eksekusi untuk pekerjaan konkuren. Nilainya dapat berupa bilangan bulat dari 1 hingga 9. Nilai yang lebih kecil menunjukkan prioritas yang lebih rendah.

  • Preemptible Resources:

    • Metode penagihan: pay-as-you-go.

    • Kasus penggunaan: Gunakan sumber daya preemptible untuk mengurangi biaya.

    • Batasan: Ketersediaan tidak dijamin. Sumber daya mungkin tidak tersedia segera atau dapat ditarik kembali. Untuk informasi lebih lanjut, lihat Gunakan pekerjaan preemptible.

Framework

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

Catatan

Jika 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, konfigurasikan sumber daya untuk node Worker, PS, Chief, Evaluator, dan GraphLearn. Untuk framework Ray, klik Add Role untuk menyesuaikan peran Worker dan menjalankan pekerjaan pada sumber daya heterogen.

  • Gunakan sumber daya publik: Konfigurasikan parameter berikut:

    • Number of Nodes: Jumlah node untuk pekerjaan DLC.

    • Resource Type: Pilih spesifikasi sumber daya. Konsol menampilkan harga yang sesuai. Untuk detail penagihan, lihat Penagihan DLC.

  • Gunakan kuota sumber daya: Konfigurasikan jumlah node, CPU (core), GPU (kartu), Memori (GiB), dan Shared Memory (GiB) untuk setiap jenis node. Parameter tambahan:

    • Node-Specific Scheduling: Jalankan pekerjaan pada node komputasi tertentu.

    • Idle Resources: Menjalankan pekerjaan pada sumber daya idle dari kuota lain untuk meningkatkan pemanfaatan. Jika kuota asli menarik kembali sumber daya, pekerjaan akan dipreempt dan dihentikan. Untuk informasi lebih lanjut, lihat Gunakan sumber daya idle.

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

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

    • By discount: Harga tawaran maksimum berdasarkan harga pasar, dengan opsi diskon 10% hingga 90%. Sumber daya dialokasikan ketika tawaran Anda memenuhi atau melebihi harga spot saat ini, tergantung ketersediaan.

    • By price: Tetapkan harga maksimum spesifik untuk sumber daya tersebut.

Pengaturan pekerjaan lanjutan

Maximum Duration

Tetapkan durasi maksimum eksekusi pekerjaan. Sistem akan menghentikan pekerjaan yang melebihi durasi ini. Default: 30 hari.

Retention Period

Periode retensi untuk pekerjaan yang telah selesai (berhasil atau gagal). Pekerjaan yang disimpan akan mengonsumsi ruang penyimpanan untuk metadata dan log. Pekerjaan akan dihapus secara otomatis setelah periode ini berakhir.

Penting

Pekerjaan DLC yang dihapus tidak dapat dipulihkan. Harap berhati-hati.

Advanced Framework Configuration

Parameter dan deskripsi yang didukung: Daftar parameter lanjutan.

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

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

    Penting

    Sumber daya komputasi AI Lingjun tidak mendukung port kustom, sehingga parameter customPortNumPerWorker tidak tersedia untuk pekerjaan yang menggunakan sumber daya ini.

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

Format konfigurasi yang didukung:

  • Plaintext: Masukkan daftar string yang dipisahkan koma, dengan setiap string dalam format key=value.

  • JSON

Skenario konfigurasi khas:

  • Skenario 1: Konfigurasi lanjutan PyTorch

    Gunakan parameter konfigurasi lanjutan untuk mengaktifkan komunikasi jaringan antar Worker guna metode pelatihan fleksibel. Misalnya, gunakan port terbuka tambahan untuk menjalankan framework seperti Ray dalam kontainer DLC dan mengoordinasikannya dengan PyTorch untuk pelatihan terdistribusi lanjutan. Contoh konfigurasi:

    createSvcForAllWorkers=true,customPortNumPerWorker=100

    Kemudian, dalam Startup Command, Anda dapat menggunakan variabel lingkungan $JOB_NAME dan $CUSTOM_PORTS untuk mendapatkan nama domain dan nomor port yang tersedia guna menjalankan 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 ketika pod pekerjaan keluar. Contoh konfigurasi:

    {
      "ReleaseResourcePolicy": "pod-exit"
    }

Konfigurasi VPC

  • Tanpa VPC, pekerjaan menggunakan gateway publik dengan bandwidth terbatas, yang dapat memperlambat atau menyebabkan kegagalan eksekusi pekerjaan.

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

    Penting
    • Saat menggunakan VPC, instans kelompok sumber daya, penyimpanan dataset (OSS), dan repositori kode harus berada dalam VPC yang sama.

    • Untuk dataset CPFS, konfigurasikan pekerjaan agar menggunakan VPC yang sama dengan sistem file CPFS. Jika tidak, pekerjaan pelatihan DLC mungkin tetap berada dalam status Preparing.

    • Pekerjaan DLC yang menggunakan sumber daya komputasi AI Lingjun preemptible memerlukan VPC.

    Konfigurasikan Internet Access Gateway. Dua metode didukung:

    • Public Gateway: Bandwidth terbatas yang mungkin tidak mencukupi selama akses konkurensi tinggi atau unduhan file besar.

    • Private Gateway: Untuk mengatasi keterbatasan bandwidth gateway publik, Anda dapat membuat Internet NAT Gateway di VPC pekerjaan DLC, mengikat Elastic IP Address (EIP), dan mengonfigurasi entri SNAT. Untuk informasi lebih lanjut, lihat Tingkatkan kecepatan akses jaringan publik menggunakan private gateway.

Toleransi kesalahan dan diagnosis

Parameter

Description

Automatic Fault Tolerance

Aktifkan Automatic Fault Tolerance untuk mendeteksi dan menangani kesalahan tingkat algoritma serta meningkatkan pemanfaatan GPU. Untuk informasi lebih lanjut, lihat AIMaster: Mesin toleransi kesalahan otomatis elastis.

Catatan

Mengaktifkan toleransi kesalahan otomatis akan menjalankan instans AIMaster yang berjalan bersama pekerjaan dan mengonsumsi 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 kesehatan sumber daya pelatihan. Secara otomatis mengisolasi node yang rusak dan memicu O&M backend untuk mencegah kegagalan tahap awal. Untuk informasi lebih lanjut, lihat SanityCheck: Pemeriksaan kesehatan sumber daya komputasi.

Catatan

Pemeriksaan kesehatan hanya didukung untuk pekerjaan PyTorch yang diajukan dengan kuota sumber daya komputasi AI Lingjun yang memiliki jumlah GPU lebih dari 0.

Peran dan izin

Konfigurasikan instance RAM role. Untuk informasi lebih lanjut, lihat Konfigurasi peran RAM DLC.

Instance RAM role

Description

Default Role of PAI

Menggunakan peran terkait layanan AliyunPAIDLCDefaultRole dengan izin MaxCompute dan OSS detail halus. Kredensial sementara memberikan:

  • Akses tabel MaxCompute menggunakan izin yang sama dengan DLC instance owner.

  • Akses OSS dibatasi hanya pada 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 Alibaba Cloud melalui kredensial sementara STS.

Does Not Associate Role

Tidak ada peran RAM yang dikaitkan dengan pekerjaan DLC. Opsi default.

Referensi

Lampiran

Buat pekerjaan menggunakan SDK atau CLI

Python SDK

Langkah 1: Instal alat Credentials Alibaba Cloud

Instal alat Credentials untuk mengonfigurasi kredensial Anda untuk panggilan API SDK Alibaba Cloud. Prasyarat:

  • Python 3.7 atau lebih baru.

  • Alibaba Cloud SDK 2.0 atau lebih baru.

pip install alibabacloud_credentials

Langkah 2: Dapatkan AccessKey

Contoh ini menggunakan pasangan AccessKey untuk mengonfigurasi kredensial akses. Untuk mengurangi risiko keamanan, kami menyarankan Anda menetapkan ID AccessKey dan Rahasia AccessKey di variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Langkah 3: Instal Python SDK

  • 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

Menggunakan 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 provides full API access. For better security, we recommend using a RAM user for API access and daily O&M.
    # Do not hard-code your AccessKey ID and AccessKey secret in your code. This can leak your credentials and compromise the security of your resources.
    # This example authenticates by reading the AccessKey from environment variables using the Credentials SDK.
    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 workspace list. You can also enter the name of the workspace that you created 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 ------------')
    # Get the image list.
    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 ----------')
    # Get 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',
            # NAS file system ID.
            # 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 ----------')
    # Get the code source list.
    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 ----------')
    # Get 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 ----------')
    # Get the DLC job list.
    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()

Menggunakan kuota langganan

  1. Masuk ke Konsol PAI.

  2. Temukan ID ruang kerja Anda di halaman Workspaces, seperti yang ditunjukkan di bawah.image.png

  3. Temukan ID kuota sumber daya grup sumber daya khusus Anda, seperti yang ditunjukkan di bawah.image

  4. Gunakan kode contoh 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 provides full API access. For better security, we recommend using a RAM user for API access and daily O&M.
    # Do not hard-code your AccessKey ID and AccessKey secret in your code. This can leak your credentials and compromise the security of your resources.
    # This example authenticates by reading the AccessKey from environment variables using the Credentials SDK.
    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')
    )
    
    # Define the job.
    req = CreateJobRequest(
            resource_id='<Replace with your resource quota ID>',
            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 job's command.
    job.user_command

Menggunakan instans preemptible

  • 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}')
    

Parameter utama untuk instans preemptible.

Parameter

Description

SpotStrategy

Kebijakan penawaran. Parameter jenis penawaran hanya berlaku jika Anda menetapkan parameter ini ke SpotWithPriceLimit.

SpotDiscountLimit

Jenis penawaran diskon spot.

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

  • Parameter SpotDiscountLimit hanya berlaku untuk sumber daya Lingjun.

SpotPriceLimit

Jenis 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 klien untuk Linux (64-bit) atau macOS dan lengkapi autentikasi pengguna. Untuk detailnya, lihat Persiapan.

Langkah 2: Kirim pekerjaan

  1. Masuk ke Konsol PAI.

  2. Temukan ID ruang kerja Anda di halaman Workspaces, seperti yang ditunjukkan di bawah.

    image.png

  3. Temukan ID kuota sumber daya Anda, seperti yang ditunjukkan di bawah.

    image

  4. Siapkan file parameter bernama tfjob.params seperti pada contoh berikut. Untuk informasi lebih lanjut tentang cara mengonfigurasi file parameter, lihat Perintah submit.

    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 yang ditentukan menggunakan file parameter.

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

    ./dlc get job <jobID>

Parameter lanjutan

Parameter (key)

Framework yang didukung

Description

Value

ReleaseResourcePolicy

ALL

Kebijakan rilis sumber daya kustom. Default: semua sumber daya pod dilepaskan setelah pekerjaan selesai. Atur ke pod-exit untuk segera melepaskan sumber daya pod ketika pod tersebut keluar.

pod-exit

EnableNvidiaIBGDA

ALL

Aktifkan atau nonaktifkan IBGDA saat driver GPU dimuat.

true atau false

EnableNvidiaGDRCopy

ALL

Jika diatur ke true, menginstal modul kernel GDRCopy (versi 2.4.4).

true atau false

EnablePaiNUMACoreBinding

ALL

Aktifkan atau nonaktifkan binding NUMA.

true atau false

EnableResourcePreCheck

ALL

Memeriksa apakah kuota memiliki total sumber daya yang cukup (spesifikasi node) untuk semua peran dalam pekerjaan pada saat pengiriman.

true atau false

createSvcForAllWorkers

PyTorch

Aktifkan atau nonaktifkan komunikasi jaringan antar worker.

  • Jika parameter ini diatur ke true, semua worker PyTorch dapat saling berkomunikasi.

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

Jika diaktifkan, nama domain setiap worker adalah nama workernya, seperti dlcxxxxx-master-0. Nama pekerjaan (dlcxxxxx) diteruskan ke worker dalam variabel lingkungan JOB_NAME. Anda kemudian dapat menurunkan nama domain worker tertentu yang ingin Anda akses.

true atau false

customPortList

PyTorch

Menentukan port jaringan yang akan dibuka pada setiap worker. Parameter ini dapat digunakan dengan createSvcForAllWorkers untuk mengaktifkan komunikasi jaringan antar worker.

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

Penting

Parameter ini saling eksklusif dengan customPortNumPerWorker. Jangan mengonfigurasi kedua parameter secara bersamaan.

Sekumpulan string yang dipisahkan titik koma (;). Setiap string dapat berupa nomor port atau rentang port yang ditentukan dengan tanda hubung (-). Contoh: 10000;10001-10010, yang merepresentasikan 11 nomor port berurutan dari 10000 hingga 10010.

customPortNumPerWorker

PyTorch

Jumlah port jaringan yang akan dibuka untuk setiap worker. Parameter ini dapat digunakan dengan createSvcForAllWorkers untuk mengaktifkan komunikasi jaringan antar worker.

Jika parameter ini tidak dikonfigurasi, hanya port 23456 yang dibuka pada master secara default. DLC secara acak menetapkan jumlah port yang ditentukan ke setiap worker. Port yang ditetapkan, dalam format yang dipisahkan titik koma, diteruskan ke worker dalam variabel lingkungan CUSTOM_PORTS.

Penting
  • Parameter ini saling eksklusif dengan customPortList. Jangan mengonfigurasi kedua parameter secara bersamaan.

  • Parameter customPortNumPerWorker tidak didukung untuk pekerjaan DLC yang menggunakan sumber daya Layanan Komputasi AI Lingjun karena layanan ini tidak menyediakan kemampuan port kustom.

Bilangan bulat (maksimal 65536)

RayRuntimeEnv

Ray

Untuk Ray, definisikan lingkungan runtime dengan mengonfigurasi RayRuntimeEnv.

Penting

Konfigurasi variabel lingkungan dan pustaka pihak ketiga akan ditimpa oleh konfigurasi ini.

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

RayRedisAddress

Ray

Alamat Redis GCS eksternal.

String

RayRedisUsername

Ray

Username Redis GCS eksternal.

String

RayRedisPassword

Ray

Password Redis GCS eksternal.

String

RaySubmitterBackoffLimit

Ray

Jumlah percobaan ulang untuk submitter.

Bilangan bulat positif (int)

RayObjectStoreMemoryBytes

Ray

Mengatur memori bersama untuk sebuah node. Misalnya, untuk mengonfigurasi 1 GiB memori bersama per node:

{
  "RayObjectStoreMemoryBytes": "1073741824"
}

Bilangan bulat positif (int)