全部产品
Search
文档中心

Platform For AI:Buat Pekerjaan Pelatihan

更新时间:Feb 11, 2026

PAI-DLC memungkinkan Anda membuat pekerjaan pelatihan single-machine atau terdistribusi dengan cepat menggunakan Kubernetes untuk meluncurkan node komputasi. Fitur ini menghilangkan kebutuhan untuk menyediakan mesin secara manual atau mengonfigurasi lingkungan runtime, sehingga Anda dapat mempertahankan alur kerja yang sudah ada. PAI-DLC ideal bagi pengguna yang perlu memulai pekerjaan pelatihan dengan cepat dan mendukung berbagai framework pembelajaran mendalam dengan opsi konfigurasi sumber daya yang fleksibel.

Prasyarat

  1. Gunakan akun root Anda untuk mengaktifkan PAI dan membuat ruang kerja. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu klik otorisasi satu-klik untuk mengaktifkan layanan. Untuk informasi lebih lanjut, lihat Aktifkan PAI dan Buat Ruang Kerja.

  2. Berikan izin kepada Pengguna RAM Anda. Lewati langkah ini jika Anda menggunakan akun root. Jika Anda menggunakan Pengguna RAM, tetapkan salah satu peran berikut: developer algoritma, engineer O&M algoritma, atau administrator ruang kerja. Untuk petunjuknya, lihat Kelola Ruang Kerja > Konfigurasi Peran Anggota.

Buat Pekerjaan di Konsol

Jika Anda baru mengenal DLC, gunakan konsol untuk membuat pekerjaan. DLC juga mendukung pembuatan pekerjaan menggunakan SDK atau command line.

  1. Buka halaman Create Job.

    1. Masuk ke Konsol PAI. Di bagian atas halaman, pilih wilayah tujuan dan ruang kerja target Anda, lalu klik Enter DLC.

    2. Pada halaman Deep Learning Containers (DLC), klik Create Job.

  2. Konfigurasikan parameter pekerjaan pelatihan pada bagian-bagian berikut.

    • Informasi Dasar

      Tetapkan Job Name dan Tag.

    • Informasi Lingkungan

      Parameter

      Deskripsi

      Image Configuration

      Selain Alibaba Cloud Image, jenis gambar berikut juga didukung:

      • Custom Image: Gunakan gambar kustom yang telah ditambahkan ke PAI. Atur repository image ke mode pull publik, atau simpan gambar di Container Registry (ACR). Untuk informasi lebih lanjut, lihat Custom Image.

        Catatan

        Jika Anda memilih sumber daya Lingjun dan menggunakan custom image, instal RDMA secara manual untuk memanfaatkan jaringan RDMA berkinerja tinggi milik Lingjun sepenuhnya. Untuk informasi lebih lanjut, lihat RDMA: Gunakan Jaringan Berkinerja Tinggi untuk Pelatihan Terdistribusi.

      • Image Address: Masukkan alamat registri yang dapat diakses melalui Internet. Anda dapat menggunakan custom image atau Alibaba Cloud Image.

        • Jika alamat registri bersifat privat, klik Enter Username and Password dan masukkan username serta password untuk registri tersebut.

        • Untuk mempercepat proses pull image, lihat Image Acceleration.

      Mount dataset

      Dataset menyediakan file data yang dibutuhkan untuk pelatihan model. Jenis dataset berikut didukung:

      • Custom Dataset: Buat custom dataset untuk menyimpan file data pelatihan Anda. Anda dapat mengatur apakah dataset tersebut read-only dan memilih versi dari daftar versi.

      • Public Dataset: PAI menyediakan dataset publik bawaan. Dataset ini hanya mendukung pemasangan read-only.

      Mount Path: Jalur tempat dataset dipasang ke dalam kontainer DLC. Contohnya, /mnt/data. Dalam kode Anda, ambil jalur ini untuk mengakses dataset. Untuk detail konfigurasi pemasangan lebih lanjut, lihat Gunakan Cloud Storage dalam Pekerjaan Pelatihan DLC.

      Penting

      Jika Anda mengonfigurasi dataset CPFS, Anda harus mengonfigurasi virtual private cloud (VPC) untuk DLC. VPC ini harus sesuai dengan VPC yang digunakan oleh CPFS. Jika tidak, pekerjaan mungkin tetap berada dalam status Environment Preparation dalam waktu lama.

      Mount storage

      Anda dapat langsung memasang jalur sumber data untuk membaca data yang diperlukan atau menyimpan hasil antara dan file output.

      • Jenis sumber data yang didukung: OSS, sistem file NAS tujuan umum, sistem file NAS Ekstrem, dan BMCPFS (hanya tersedia dengan sumber daya Lingjun).

      • Advanced Settings: Gunakan konfigurasi lanjutan untuk mengaktifkan fitur-fitur untuk berbagai sumber data. Contohnya sebagai berikut:

        • OSS: Tetapkan {"mountType":"ossfs"} di Advanced Configuration untuk memasang OSS menggunakan ossfs.

        • NAS tujuan umum dan CPFS: Tetapkan parameter nconnect di Advanced Configuration untuk meningkatkan performa throughput saat mengakses NAS dari kontainer DLC. Untuk informasi lebih lanjut, lihat Bagaimana cara mengatasi performa NAS yang buruk di Linux?. Contohnya, {"nconnect":"<example value>"}. Ganti <example value> dengan bilangan bulat positif.

      Untuk informasi lebih lanjut, lihat Gunakan Cloud Storage dalam Pekerjaan Pelatihan DLC.

      Startup Command

      Tetapkan perintah mulai tugas. Perintah shell didukung, dan DLC secara otomatis menyuntikkan variabel lingkungan umum PyTorch dan TensorFlow, seperti MASTER_ADDR dan WORLD_SIZE. Anda dapat mengambil variabel-variabel ini menggunakan $ENV_VAR_NAME. Contoh perintah mulai adalah sebagai berikut:

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

      • Pelatihan PyTorch terdistribusi di beberapa GPU dan server: 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

      • Gunakan jalur skrip shell sebagai perintah mulai: /ml/input/config/launch.sh

      Perluas untuk opsi konfigurasi lainnya: Environment Variables, Third-Party Library Configuration, Code Configuration

      Environment Variable

      Selain variabel lingkungan umum PyTorch dan TensorFlow yang disuntikkan secara otomatis, Anda dapat memberikan hingga 20 variabel lingkungan kustom dalam format Key:Value.

      Third-party Libraries

      Jika gambar kontainer Anda tidak memiliki beberapa library pihak ketiga, tambahkan menggunakan Third-party Libraries. Dua metode didukung:

      • Select from List: Masukkan nama library langsung di kotak teks di bawah.

      • Directory of requirements.txt: Tuliskan library pihak ketiga ke dalam file requirements.txt. Unggah file ini ke kontainer DLC menggunakan konfigurasi kode, dataset, atau pemasangan langsung. Lalu tentukan jalur file di dalam kontainer di kotak teks.

      Code Builds

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

      • Online configuration: Jika Anda memiliki repositori kode Git dan izin akses, asosiasikan dengan DLC menggunakan Create Code Build. Hal ini memungkinkan DLC mengambil kode pekerjaan Anda.

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

    • Informasi Sumber Daya

      Parameter

      Deskripsi

      Resource Type

      Default-nya adalah General Computing, dan 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. Gunakan hanya jika Anda memiliki jumlah pekerjaan yang relatif sedikit dan persyaratan latensi rendah.

        • Batasan: Sumber daya maksimum yang didukung adalah 2 GPU dan 8 core CPU. Hubungi manajer akun Anda untuk menaikkan batasan ini.

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

        • Metode penagihan: subscription.

        • Kasus penggunaan: Gunakan ketika Anda memiliki banyak pekerjaan dan memerlukan keandalan tinggi.

        • Parameter khusus:

          • Resource Quota: Tetapkan jumlah sumber daya GPU dan CPU. Untuk petunjuknya, lihat Tambah Resource Quota.

          • Priority: Menetapkan prioritas untuk pekerjaan yang berjalan secara konkuren. Nilai yang valid: 1 hingga 9. Nilai 1 berarti prioritas terendah.

      • Preemptible Resources:

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

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

        • Batasan: Ketersediaan tidak dijamin. Anda mungkin tidak dapat segera mendapatkannya atau sumber daya tersebut mungkin ditarik kembali. Untuk informasi lebih lanjut, lihat Gunakan Pekerjaan Preemptible.

      Framework

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

      Catatan

      Jika Anda memilih sumber daya komputasi cerdas Lingjun untuk Resource Quota, hanya pekerjaan TensorFlow, PyTorch, ElasticBatch, MPIJob, dan Ray yang didukung.

      Job Resource

      Berdasarkan Framework yang Anda pilih, konfigurasikan sumber daya untuk node Worker, PS, Chief, Evaluator, dan GraphLearn. Jika Anda memilih Ray, klik Add Role untuk menentukan peran Worker kustom guna mencampur sumber daya heterogen.

      • Use Public Resources: Konfigurasikan parameter berikut:

        • Number of Nodes: Jumlah node untuk menjalankan pekerjaan DLC.

        • Resource Type: Pilih spesifikasi. Konsol akan menampilkan harga yang sesuai. Untuk detail penagihan lebih lanjut, lihat Detail Penagihan DLC.

      • Use Resource Quota: Konfigurasikan jumlah node, core CPU, kartu GPU, memori (GiB), dan memori bersama (GiB) untuk setiap jenis node. Anda juga dapat mengonfigurasi parameter khusus berikut:

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

        • Idle Resources: Gunakan sumber daya idle dari kuota lain untuk meningkatkan pemanfaatan sumber daya. Ketika kuota asli membutuhkan sumber daya tersebut, pekerjaan idle akan berhenti dan melepaskan sumber daya secara otomatis. Untuk informasi lebih lanjut, lihat Gunakan Idle Resources.

        • CPU Affinity: Aktifkan afinitas CPU untuk mengikat proses dalam kontainer atau pod ke core CPU tertentu. Ini mengurangi cache miss CPU dan context switch, meningkatkan penggunaan CPU dan performa aplikasi. Gunakan ini untuk aplikasi yang sensitif terhadap performa dan real-time.

      • Use Preemptible Resources: Selain jumlah node dan spesifikasi sumber daya, konfigurasikan parameter Bid Price. Tetapkan harga bid maksimum untuk meminta sumber daya preemptible. Klik tombol image untuk memilih metode penawaran:

        • By Discount: Harga maksimum adalah diskon dari harga pasar untuk spesifikasi sumber daya. Opsi berkisar dari 10% hingga 90%. Ini menetapkan batas atas untuk penawaran. Anda mendapatkan sumber daya preemptible ketika harga bid maksimum Anda lebih besar dari atau sama dengan harga pasar dan inventaris tersedia.

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

      Perluas untuk opsi konfigurasi lainnya: Maximum Runtime, Retention Duration, Framework Advanced Configuration

      Maximum Duration

      Tetapkan durasi maksimum untuk pekerjaan. Pekerjaan akan berhenti secara otomatis setelah waktu ini. Default-nya adalah 30 hari.

      Retention Period

      Tetapkan berapa lama pekerjaan dipertahankan setelah eksekusi berhasil atau gagal. Mengaktifkan retensi membuat sumber daya tetap terpakai. Pekerjaan akan dihapus setelah durasi ini.

      Penting

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

      Advanced Framework Configuration

      Untuk daftar parameter yang didukung beserta deskripsinya, lihat Daftar Parameter Lanjutan.

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

      • Ketika Framework adalah PyTorch, parameter berikut didukung: createSvcForAllWorkers, customPortList, dan customPortNumPerWorker.

        Penting

        Sumber daya komputasi cerdas Lingjun tidak mendukung port kustom. Jangan konfigurasi customPortNumPerWorker saat mengirimkan pekerjaan DLC menggunakan sumber daya Lingjun.

      • Ketika Framework adalah Ray, parameter berikut didukung: RayRuntimeEnv, RayRedisAddress, RayRedisUsername, RayRedisPassword, RaySubmitterBackoffLimit, dan RayObjectStoreMemoryBytes. Perhatikan bahwa konfigurasi variabel lingkungan dan library pihak ketiga akan ditimpa oleh konfigurasi RayRuntimeEnv.

      Format konfigurasi yang didukung:

      • Plaintext: Format sebagai string yang dipisahkan koma di mana setiap item mengikuti key=value. Key harus merupakan parameter lanjutan yang didukung. Value harus sesuai dengan nilai valid parameter tersebut.

      • JSON

      Contoh skenario konfigurasi:

      • Skenario 1: Konfigurasi Lanjutan PyTorch

        Gunakan parameter konfigurasi lanjutan untuk mengaktifkan komunikasi jaringan antar worker. Hal ini memungkinkan metode pelatihan yang lebih fleksibel. Misalnya, buka port tambahan untuk meluncurkan framework seperti Ray dalam kontainer DLC dan menggabungkannya dengan PyTorch untuk pelatihan terdistribusi lanjutan. Contoh konfigurasi:

        createSvcForAllWorkers=true,customPortNumPerWorker=100

        Kemudian, di Startup Command, ambil nama domain dan nomor port yang tersedia menggunakan variabel lingkungan $JOB_NAME dan $CUSTOM_PORTS. Hal ini memungkinkan Anda meluncurkan dan menghubungkan ke framework seperti Ray.

      • Skenario 2: Konfigurasi Manual RayRuntimeEnv untuk Framework Ray (Termasuk Dependensi dan Variabel Lingkungan)

        Contoh konfigurasi:

        {"RayRuntimeEnv": "{pip: requirements.txt, env_vars: {key: value}}"}
      • Skenario 3: Aturan Rilis Sumber Daya Kustom

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

        {
          "ReleaseResourcePolicy": "pod-exit"
        }
    • Konfigurasi VPC

      • Jika Anda tidak mengonfigurasi VPC, pekerjaan akan menggunakan Internet dan gateway publik. Gateway publik memiliki bandwidth terbatas, yang dapat menyebabkan tersendat atau kegagalan selama eksekusi pekerjaan.

      • Mengonfigurasi VPC serta memilih vSwitch dan grup keamanan yang sesuai meningkatkan bandwidth jaringan, stabilitas, dan keamanan. Kluster yang menjalankan pekerjaan dapat langsung mengakses layanan di dalam VPC.

        Penting
        • Saat menggunakan VPC, pastikan instans kelompok sumber daya tugas Anda dan penyimpanan dataset (OSS) berada di jaringan VPC wilayah yang sama. Pastikan juga konektivitas jaringan dengan repositori kode Anda.

        • Saat menggunakan dataset CPFS, konfigurasikan VPC. VPC yang dipilih harus sesuai dengan VPC CPFS. Jika tidak, pekerjaan pelatihan DLC mungkin tetap berada dalam status Environment Preparation dalam waktu lama.

        • Saat mengirimkan pekerjaan DLC menggunakan sumber daya preemptible komputasi cerdas Lingjun, konfigurasikan VPC.

        Anda juga dapat mengonfigurasi Internet Access Gateway. Dua opsi tersedia:

        • Public Gateway: Bandwidth jaringan terbatas. Selama konkurensi tinggi atau unduhan file besar, kecepatan jaringan mungkin tidak memenuhi persyaratan.

        • Private Gateway: Untuk mengatasi keterbatasan bandwidth gateway publik, buat Internet NAT gateway di VPC DLC Anda, sambungkan alamat IP elastis (EIP), dan konfigurasikan entri SNAT. Untuk informasi lebih lanjut, lihat Tingkatkan Kecepatan Akses Internet Menggunakan Gateway Khusus.

    • Toleransi Kesalahan dan Diagnostik

      Parameter

      Deskripsi

      Automatic Fault Tolerance

      Aktifkan Automatic Fault Tolerance dan konfigurasikan parameter terkait. Ini memberi Anda kemampuan pemantauan dan kontrol pekerjaan. Ini mendeteksi dan menghindari kesalahan di tingkat algoritma, meningkatkan pemanfaatan GPU. Untuk informasi lebih lanjut, lihat AIMaster: Mesin Toleransi Kesalahan Otomatis Elastis.

      Catatan

      Saat toleransi kesalahan otomatis diaktifkan, sistem meluncurkan instans AIMaster bersama instans pekerjaan Anda. Hal ini mengonsumsi sumber daya komputasi. Penggunaan sumber daya AIMaster adalah sebagai berikut:

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

      • Sumber daya publik: tipe instans ecs.c6.large.

      Sanity Check

      Aktifkan Sanity Check. Pemeriksaan kesehatan melakukan pemeriksaan komprehensif pada sumber daya pelatihan. Ini secara otomatis mengisolasi node yang rusak dan memicu proses O&M otomatis. Hal ini mengurangi masalah di awal pelatihan dan meningkatkan tingkat keberhasilan. Untuk informasi lebih lanjut, lihat SanityCheck: Pemeriksaan Kesehatan Daya Komputasi.

      Catatan

      Pemeriksaan kesehatan hanya didukung untuk pekerjaan pelatihan PyTorch yang dikirimkan menggunakan kuota sumber daya komputasi cerdas Lingjun dengan GPU lebih dari nol.

    • Peran dan Izin

      Konfigurasi peran RAM instans dijelaskan di bawah ini. Untuk detail lebih lanjut, lihat Konfigurasi Peran RAM DLC.

      Instance RAM Role

      Deskripsi

      Default Role of PAI

      Peran ini beroperasi berdasarkan peran layanan AliyunPAIDLCDefaultRole. Peran ini memiliki izin detail halus untuk mengakses MaxCompute dan OSS saja.

      • Saat mengakses tabel MaxCompute, peran ini memberikan izin yang setara dengan pemilik instans DLC.

      • Saat mengakses OSS, peran ini hanya mengizinkan akses ke bucket OSS default yang dikonfigurasi untuk ruang kerja saat ini.

      Custom Role

      Pilih atau masukkan peran RAM kustom. Saat mengakses layanan cloud menggunakan kredensial sementara STS di dalam instans, izinnya sesuai dengan peran kustom tersebut.

      Does Not Associate Role

      Jangan mengasosiasikan peran RAM dengan pekerjaan DLC. Ini adalah opsi default.

Setelah mengonfigurasi semua parameter, klik OK.

Referensi

Setelah mengirimkan pekerjaan pelatihan, lakukan tugas-tugas berikut:

  • Lihat informasi dasar pekerjaan, tampilan sumber daya, dan log operasi. Untuk informasi lebih lanjut, lihat Lihat Detail Pelatihan.

  • Kelola pekerjaan, termasuk mengkloning, menghentikan, dan menghapus pekerjaan. Untuk informasi lebih lanjut, lihat Kelola Pekerjaan Pelatihan.

  • Lihat laporan analisis menggunakan TensorBoard. Untuk informasi lebih lanjut, lihat Alat Visualisasi TensorBoard.

  • Konfigurasikan pemantauan dan peringatan untuk pekerjaan. Untuk informasi lebih lanjut, lihat Pemantauan dan Peringatan Pelatihan.

  • Lihat detail penagihan untuk eksekusi pekerjaan. Untuk informasi lebih lanjut, lihat Detail Penagihan.

  • Teruskan log pekerjaan DLC dari ruang kerja Anda saat ini ke Logstore Simple Log Service (SLS) yang ditentukan untuk analisis kustom. Untuk informasi lebih lanjut, lihat Berlangganan Log Pekerjaan.

  • Buat aturan notifikasi pesan di tab events ruang kerja PAI Anda untuk melacak dan memantau status pekerjaan DLC. Untuk informasi lebih lanjut, lihat Notifikasi Pesan.

  • Untuk masalah umum dan solusi selama eksekusi pekerjaan DLC, lihat FAQ DLC.

  • Untuk studi kasus penggunaan DLC, lihat Ringkasan Studi Kasus Penggunaan DLC.

Lampiran

Buat Pekerjaan Menggunakan SDK atau Command Line

Python SDK

Langkah 1: Instal Alat Kredensial Alibaba Cloud

Saat Anda memanggil operasi OpenAPI menggunakan SDK Alibaba Cloud, instal alat Credentials untuk mengonfigurasi kredensial akses. Persyaratan:

  • Versi Python >= 3.7.

  • Gunakan SDK Alibaba Cloud V2.0.

pip install alibabacloud_credentials

Langkah 2: Dapatkan AccessKey Akun Anda

Contoh ini menggunakan informasi AK untuk mengonfigurasi kredensial akses. Untuk mencegah kebocoran kredensial, atur AccessKey sebagai variabel lingkungan. Gunakan ALIBABA_CLOUD_ACCESS_KEY_ID untuk ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk rahasia.

Langkah 3: Instal Python SDK

  • Instal SDK ruang kerja.

    pip install alibabacloud_aiworkspace20210204==3.0.1
  • Instal SDK DLC.

    pip install alibabacloud_pai_dlc20201203==1.4.17

Langkah 4: Kirim Pekerjaan

Kirim Pekerjaan Menggunakan Sumber Daya Publik

Kode berikut menunjukkan cara 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):
    '''Buat dataset 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):
    '''Buat dataset 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():

    # Pastikan akun root Anda memiliki izin DLC dan hak istimewa yang cukup.
    region_id = 'cn-hangzhou'
    # AccessKey akun root memiliki akses API penuh. Kami merekomendasikan menggunakan Pengguna RAM untuk akses API atau O&M harian.
    # Jangan pernah menyimpan ID AccessKey dan rahasia AccessKey dalam kode. Hal ini dapat menyebabkan kebocoran kredensial dan membahayakan semua sumber daya di akun Anda.
    # Contoh ini menggunakan SDK Credentials untuk membaca kredensial dari variabel lingkungan.
    cred = CredClient()

    # 1. Buat klien;
    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 -----------')
    # Daftar ruang kerja. Anda juga dapat menentukan nama ruang kerja Anda di parameter 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('tidak ditemukan ruang kerja')

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

    print('------- Images ------------')
    # Daftar gambar.
    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 ----------')
    # Daftar dataset.
    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:
        # Buat dataset jika belum ada.
        dataset_id = create_nas_dataset(
            client=workspace_client,
            region=region_id,
            workspace_id=workspace_id,
            name='example-nas-data',
            # ID sistem file NAS.
            # NAS tujuan umum: 31a8e4****.
            # NAS Ekstrem: Harus diawali dengan extreme-, misalnya extreme-0015****.
            # CPFS: Harus diawali dengan cpfs-, misalnya cpfs-125487****.
            nas_id='***',
            nas_path='/',
            mount_path='/mnt/data/nas')
        print('buat dataset dengan id: {}'.format(dataset_id))
    else:
        dataset_id = datasets.body.datasets[0].dataset_id

    print('------- Code Sources ----------')
    # Daftar build kode.
    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 ----------')
    # Daftar spesifikasi ECS untuk 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 ----------')
    # Buat pekerjaan 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 ----------')
    # Daftar pekerjaan 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()

Kirim Pekerjaan Menggunakan Kuota Sumber Daya Langganan

  1. Masuk ke Konsol PAI.

  2. Ikuti langkah-langkah pada gambar di bawah untuk melihat ID ruang kerja Anda di halaman daftar ruang kerja.image.png

  3. Ikuti langkah-langkah pada gambar di bawah untuk melihat ID kuota sumber daya kelompok sumber daya khusus Anda.image

  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
    )
    
    # Inisialisasi klien untuk mengakses API DLC.
    region = 'cn-hangzhou'
    # AccessKey akun root memiliki akses API penuh. Kami merekomendasikan menggunakan Pengguna RAM untuk akses API atau O&M harian.
    # Jangan pernah menyimpan ID AccessKey dan rahasia AccessKey dalam kode. Hal ini dapat menyebabkan kebocoran kredensial dan membahayakan semua sumber daya di akun Anda.
    # Contoh ini menggunakan SDK Credentials untuk membaca kredensial dari variabel lingkungan.
    cred = CredClient()
    client = Client(
        config=Config(
            credential=cred,
            region_id=region,
            endpoint=f'pai-dlc.{region}.aliyuncs.com',
        )
    )
    
    # Definisikan konfigurasi sumber daya pekerjaan. Untuk pemilihan gambar, rujuk daftar gambar publik di dokumentasi atau berikan alamat registri Anda sendiri.
    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')
    )
    
    # Definisikan konten eksekusi pekerjaan.
    req = CreateJobRequest(
            resource_id='<ganti dengan ID kuota sumber daya Anda>',
            workspace_id='<ganti dengan WorkspaceID Anda>',
            display_name='sample-dlc-job',
            job_type='TFJob',
            job_specs=[spec],
            user_command='echo "Hello World"',
    )
    
    # Kirim pekerjaan.
    response = client.create_job(req)
    # Dapatkan ID pekerjaan.
    job_id = response.body.job_id
    
    # Kueri status pekerjaan.
    job = client.get_job(job_id, GetJobRequest()).body
    print('status pekerjaan:', job.status)
    
    # Lihat perintah eksekusi pekerjaan.
    job.user_command

Kirim Pekerjaan Menggunakan Sumber Daya 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>'  # ID wilayah tempat pekerjaan DLC berada, seperti cn-hangzhou. 
    cred = CredClient()
    workspace_id = '12****'  # ID ruang kerja tempat pekerjaan DLC berada. 
    
    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 adalah {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 adalah {job_id}')
    

Detail konfigurasi utama:

Parameter

Deskripsi

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 ID VPC, vSwitch, dan grup keamanan untuk wilayah tempat pekerjaan berada.

Command Line

Langkah 1: Unduh Klien dan Selesaikan Autentikasi Pengguna

Unduh klien Linux 64-bit atau Mac untuk sistem operasi Anda dan selesaikan autentikasi pengguna. Untuk informasi lebih lanjut, lihat Persiapan.

Langkah 2: Kirim Pekerjaan

  1. Masuk ke Konsol PAI.

  2. Ikuti langkah-langkah pada gambar di bawah untuk melihat ID ruang kerja Anda (WorkspaceID) di halaman daftar ruang kerja.

    image.png

  3. Ikuti langkah-langkah pada gambar di bawah untuk melihat ID kuota sumber daya Anda.

    image

  4. Siapkan file parameter bernama tfjob.params menggunakan konten di bawah. Untuk informasi lebih lanjut tentang konfigurasi 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=<ganti dengan ID kuota sumber daya Anda> 
    workspace_id=<ganti dengan WorkspaceID Anda>

  5. Anda dapat menggunakan contoh kode berikut untuk mengirimkan pekerjaan dengan parameter params_file, yang mengirimkan pekerjaan DLC ke ruang kerja dan kuota sumber daya yang ditentukan.

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

    ./dlc get job <jobID>

Daftar Parameter Lanjutan

Parameter (key)

Jenis Framework yang Didukung

Deskripsi Parameter

Nilai Parameter (value)

ReleaseResourcePolicy

ALL

Konfigurasikan aturan rilis sumber daya kustom. Anda dapat mengosongkannya. Jika dikosongkan, semua sumber daya pod akan dilepaskan saat pekerjaan berakhir. Jika dikonfigurasi, hanya pod-exit yang didukung. Ini melepaskan sumber daya untuk pod saat pod tersebut keluar.

pod-exit

EnableNvidiaIBGDA

ALL

Aktifkan IBGDA saat memuat driver GPU.

true atau false

EnableNvidiaGDRCopy

ALL

Instal modul kernel GDRCopy. Versi saat ini adalah 2.4.4.

true atau false

EnablePaiNUMACoreBinding

ALL

Aktifkan NUMA.

true atau false

EnableResourcePreCheck

ALL

Periksa apakah total sumber daya (spesifikasi node) dalam kuota memenuhi persyaratan untuk semua peran pekerjaan saat mengirimkan pekerjaan.

true atau false

createSvcForAllWorkers

PyTorch

Izinkan komunikasi jaringan antar worker.

  • Jika true, semua worker PyTorch dapat berkomunikasi satu sama lain.

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

Saat diaktifkan, nama domain setiap worker adalah namanya sendiri, seperti dlcxxxxx-master-0. Variabel lingkungan JOB_NAME meneruskan nama pekerjaan (dlcxxxxx) ke worker. Anda kemudian dapat menentukan nama domain pasti dari worker yang perlu Anda akses.

true atau false

customPortList

PyTorch

Definisikan port jaringan yang akan dibuka pada setiap worker. Gunakan dengan createSvcForAllWorkers untuk mengaktifkan komunikasi worker-to-worker.

Jika tidak dikonfigurasi, port 23456 hanya dibuka pada master. Hindari port 23456 dalam daftar port kustom Anda.

Penting

Parameter ini saling eksklusif dengan customPortNumPerWorker. Jangan atur keduanya.

String angka port atau rentang port yang dipisahkan titik koma, seperti 10000;10001-10010 (yang memperluas menjadi 11 port berurutan dari 10000 hingga 10010).

customPortNumPerWorker

PyTorch

Minta sejumlah port jaringan untuk dibuka pada setiap worker. Gunakan dengan createSvcForAllWorkers untuk mengaktifkan komunikasi worker-to-worker.

Jika parameter ini tidak dikonfigurasi, hanya port 23456 yang dibuka pada master secara default. DLC secara acak mengalokasikan port ke worker berdasarkan jumlah port yang ditentukan dalam parameter. Nomor port yang dialokasikan diteruskan ke worker melalui variabel lingkungan CUSTOM_PORTS untuk Anda kueri. Formatnya adalah daftar nomor port yang dipisahkan titik koma.

Penting
  • Parameter ini saling eksklusif dengan customPortList. Jangan atur keduanya.

  • Sumber daya komputasi cerdas Lingjun tidak mendukung port kustom. Jangan konfigurasi customPortNumPerWorker saat mengirimkan pekerjaan DLC menggunakan sumber daya Lingjun.

Bilangan bulat (maksimum 65536)

RayRuntimeEnv

Ray

Saat framework adalah Ray, konfigurasikan secara manual RayRuntimeEnv untuk menentukan lingkungan runtime.

Penting

Variabel lingkungan dan konfigurasi library pihak ketiga akan ditimpa oleh pengaturan ini.

Konfigurasikan variabel lingkungan dan library 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

Konfigurasikan memori bersama untuk node. Misalnya, konfigurasikan memori bersama 1 GiB per node. Contoh konfigurasi:

{
  "RayObjectStoreMemoryBytes": "1073741824"
}

Bilangan bulat positif (int)