全部产品
Search
文档中心

Platform For AI:Buat pekerjaan pelatihan

更新时间:Nov 28, 2025

Platform for AI Deep Learning Containers (PAI-DLC) memungkinkan Anda membuat pekerjaan pelatihan single-node atau terdistribusi secara cepat. Dengan menggunakan Kubernetes untuk meluncurkan node komputasi, PAI-DLC menghilangkan kebutuhan membeli mesin dan mengonfigurasi runtime secara manual, sekaligus mempertahankan alur kerja pengembangan yang sudah ada. Layanan ini mendukung berbagai framework pembelajaran mendalam dan menyediakan opsi konfigurasi sumber daya yang fleksibel, sehingga ideal bagi pengguna yang perlu memulai pekerjaan pelatihan dengan cepat.

Prasyarat

  1. Aktifkan PAI dan buat Workspace. Masuk ke Konsol PAI, pilih wilayah di bagian atas halaman, lalu ikuti petunjuk untuk memberikan otorisasi dan mengaktifkan layanan. Untuk informasi selengkapnya, lihat Aktifkan PAI dan buat workspace.

  2. Berikan izin ke akun Anda. Langkah ini dapat dilewati jika Anda menggunakan Akun Alibaba Cloud. Jika menggunakan Pengguna RAM, pengguna tersebut harus diberi salah satu peran berikut: Algorithm Developer, Algorithm O&M, atau Workspace Administrator. Untuk informasi selengkapnya, lihat bagian Configure Member and Role dalam Kelola workspace.

Buat pekerjaan di konsol

Jika Anda baru mengenal PAI-DLC, kami menyarankan membuat pekerjaan melalui konsol. PAI-DLC juga menyediakan opsi untuk membuat pekerjaan menggunakan SDK atau command line.

  1. Buka halaman Create Job.

    1. Masuk ke Konsol PAI. Pilih wilayah dan workspace yang dituju di bagian atas halaman, lalu klik Deep Learning Containers (DLC).

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

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

    • Informasi Dasar

      Konfigurasikan Job Name dan Tag.

    • Informasi Lingkungan

      Parameter

      Deskripsi

      Image config

      Selain Alibaba Cloud Image, jenis citra berikut juga didukung:

      • Custom Image: Anda dapat menggunakan citra kustom yang telah ditambahkan ke PAI. Repository image harus diatur agar memungkinkan pull publik, atau citra tersebut harus disimpan di Container Registry (ACR). Untuk informasi selengkapnya, lihat Citra kustom.

        Catatan

        Jika Anda memilih sumber daya Lingjun untuk kuota sumber daya dan menggunakan citra kustom, Anda harus menginstal RDMA secara manual agar dapat memanfaatkan jaringan RDMA berkinerja tinggi dari Lingjun secara optimal. Untuk informasi selengkapnya, lihat RDMA: Gunakan jaringan berkinerja tinggi untuk pelatihan terdistribusi.

      • Image Address: Anda dapat mengonfigurasi URL citra kustom atau citra resmi yang dapat diakses melalui Internet.

        • Jika URL citra bersifat privat, klik enter the username and password dan masukkan username serta password untuk repository image tersebut.

        • Untuk meningkatkan kecepatan pull citra, lihat Percepat pull citra.

      Mount dataset

      Dataset menyediakan file data yang diperlukan untuk pelatihan model. Dua jenis berikut didukung:

      • Custom Dataset: Buat dataset kustom untuk menyimpan data pelatihan Anda. Anda dapat mengaturnya sebagai Read-only dan memilih versi dataset tertentu dari Version List.

      • Public Dataset: PAI menyediakan dataset publik yang telah dibuat sebelumnya dan hanya dapat dimount dalam mode read-only.

      Mount Path: Menentukan path tempat dataset dimount di dalam kontainer PAI-DLC, misalnya /mnt/data. Akses dataset dari kode Anda menggunakan path ini. Untuk informasi lebih lanjut tentang konfigurasi mount, lihat Gunakan cloud storage dalam pekerjaan pelatihan DLC.

      Penting

      Jika Anda mengonfigurasi dataset CPFS, pekerjaan PAI-DLC harus dikonfigurasi dengan Virtual Private Cloud (VPC) yang sama dengan VPC CPFS. Jika tidak, pekerjaan mungkin tidak dapat melewati tahap "Environment Preparation".

      Mount storage

      Mount langsung path sumber data untuk membaca data atau menyimpan file hasil antara dan akhir.

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

      • Advanced Settings: Gunakan konfigurasi lanjutan untuk mengaktifkan fitur spesifik sesuai jenis sumber data. Contohnya:

        • OSS: Atur {"mountType":"ossfs"} dalam konfigurasi lanjutan untuk mount penyimpanan OSS menggunakan ossfs.

        • General-purpose NAS dan CPFS: Atur parameter nconnect dalam konfigurasi lanjutan untuk meningkatkan throughput saat kontainer PAI-DLC mengakses NAS. Untuk informasi selengkapnya, lihat Bagaimana cara mengatasi performa buruk saat mengakses NAS pada sistem operasi Linux?. Contohnya, {"nconnect":"<example_value>"}. Ganti <example_value> dengan bilangan bulat positif.

      Untuk informasi selengkapnya, lihat Gunakan cloud storage dalam pekerjaan pelatihan DLC.

      Startup Command

      Atur perintah startup untuk pekerjaan. Perintah shell didukung. PAI-DLC secara otomatis menyuntikkan variabel lingkungan umum untuk PyTorch dan TensorFlow, seperti MASTER_ADDR dan WORLD_SIZE. Akses variabel tersebut menggunakan format $variable_name. Contoh perintah startup:

      • 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

      • Atur path file shell sebagai perintah startup: /ml/input/config/launch.sh

      Show more configurations

      Environment Variable

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

      Third-party Libraries

      Jika citra kontainer tidak memiliki library pihak ketiga, tambahkan di sini. Dua metode berikut didukung:

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

      • Directory of requirements.txt: Tulis library pihak ketiga ke dalam file requirements.txt, unggah file tersebut ke kontainer PAI-DLC, lalu tentukan path file tersebut di dalam kontainer pada kotak teks.

      Code Builds

      Unggah file kode yang diperlukan untuk pelatihan ke dalam kontainer PAI-DLC. Dua metode berikut didukung:

      • Online configuration: Jika Anda memiliki repositori kode Git dan izin akses, buat sumber kode agar PAI-DLC dapat mengakses kode pekerjaan.

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

    • Informasi Sumber Daya

      Parameter

      Deskripsi

      Resource Type

      Nilai default adalah General Computing. Hanya wilayah China (Ulanqab), Singapura, China (Shenzhen), China (Beijing), China (Shanghai), dan China (Hangzhou) yang mendukung pemilihan Lingjun AI Computing Service.

      Source

      • Public Resources:

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

        • Kasus penggunaan: Sumber daya publik mungkin mengalami antrian. Direkomendasikan untuk skenario dengan jumlah pekerjaan sedikit dan tanpa batasan waktu ketat.

        • Batasan: Sumber daya maksimum yang didukung adalah 2 kartu GPU dan 8 core CPU. Untuk melebihi batas ini, hubungi manajer bisnis Anda.

      • Resource Quota: Termasuk sumber daya General Computing atau Lingjun AI Computing Service.

        • Metode penagihan: Subscription.

        • Kasus penggunaan: Cocok untuk skenario dengan banyak pekerjaan yang memerlukan eksekusi sangat andal.

        • Parameter khusus:

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

          • Priority: Menentukan prioritas eksekusi untuk pekerjaan konkuren. Nilainya berkisar dari 1 hingga 9, dengan 1 sebagai prioritas terendah.

      • Preemptible Resources:

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

        • Skenario: Jika ingin mengurangi biaya sumber daya, Anda dapat menggunakan sumber daya preemptible yang biasanya menawarkan diskon tertentu.

        • Batasan: Ketersediaan stabil tidak dijamin. Sumber daya mungkin tidak langsung dipreempt atau dapat ditarik kembali. Untuk informasi selengkapnya, lihat Gunakan pekerjaan preemptible.

      Framework

      Mendukung framework dan alat pelatihan pembelajaran mendalam berikut: TensorFlow, PyTorch, ElasticBatch, XGBoost, OneFlow, MPIJob, dan Ray.

      Catatan

      Jika Anda memilih Lingjun AI Computing Service untuk Resource Quota, hanya pekerjaan TensorFlow, PyTorch, ElasticBatch, MPIJob, dan Ray yang didukung.

      Job Resources

      Berdasarkan Framework yang dipilih, konfigurasikan sumber daya untuk node Worker, PS, Chief, Evaluator, dan GraphLearn. Saat memilih framework Ray, klik Add Role untuk menyesuaikan peran Worker, memungkinkan eksekusi campuran sumber daya heterogen.

      • Gunakan sumber daya publik: Parameter berikut dapat dikonfigurasi:

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

        • Resource Specifications: Pilih spesifikasi sumber daya. Konsol akan menampilkan harga yang sesuai. Untuk informasi penagihan selengkapnya, lihat Penagihan DLC.

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

        • Schedule On Specified Nodes: Jalankan pekerjaan pada node komputasi tertentu.

        • Idle Resources: Saat menggunakan sumber daya idle, pekerjaan dapat berjalan pada sumber daya idle dari kuota lain, sehingga meningkatkan pemanfaatan sumber daya secara efektif. Namun, ketika sumber daya tersebut dibutuhkan oleh pekerjaan kuota asal, pekerjaan yang berjalan pada sumber daya idle akan dipreempt dan dihentikan, lalu sumber daya dikembalikan ke kuota asal. Untuk informasi selengkapnya, lihat: Gunakan sumber daya idle.

        • CPU Affinity: Mengaktifkan afinitas CPU mengikat proses dalam kontainer atau Pod ke core CPU tertentu. Ini mengurangi cache miss dan context switch CPU, sehingga meningkatkan pemanfaatan CPU dan performa aplikasi. Cocok untuk skenario sensitif terhadap performa dan real-time.

      • Gunakan sumber daya preemptible: Selain jumlah node dan spesifikasi sumber daya, konfigurasikan parameter Bid. Ini memungkinkan Anda meminta instans preemptible dengan menetapkan bid maksimum. Klik tombol image untuk memilih metode bidding:

        • By discount: Harga maksimum didasarkan pada harga pasar spesifikasi sumber daya, dengan opsi diskrit mulai dari diskon 10% hingga 90%, yang merepresentasikan batas atas untuk bidding. Saat bid maksimum untuk instans preemptible lebih besar dari atau sama dengan harga pasar dan stok tersedia, instans dapat diminta.

        • By price: Bid maksimum berada dalam rentang harga pasar.

      Expand for more configurations: Maximum runtime, Retention period, Advanced framework configuration

      Maximum Runtime

      Atur durasi maksimum pekerjaan berjalan. Pekerjaan yang melebihi durasi ini akan dihentikan. Nilai default adalah 30 hari.

      Retention Period

      Konfigurasikan periode retensi untuk pekerjaan yang berhasil diselesaikan atau gagal. Mengaktifkan retensi pekerjaan terus-menerus menghabiskan sumber daya. Pekerjaan yang melebihi durasi ini akan dihapus.

      Penting

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

      Advanced Framework Configuration

      Untuk daftar parameter yang dapat dikonfigurasi beserta deskripsi nilainya, lihat Daftar parameter lanjutan.

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

      • Saat Framework adalah PyTorch, parameter berikut dapat dikonfigurasi: createSvcForAllWorkers, customPortList, dan customPortNumPerWorker.

        Penting

        Karena Lingjun AI Computing Service tidak menyediakan kemampuan port kustom, parameter customPortNumPerWorker tidak didukung saat Anda mengirimkan pekerjaan DLC dengan sumber daya Lingjun AI Computing Service.

      • Saat Framework adalah Ray, parameter berikut dapat dikonfigurasi: RayRuntimeEnv, RayRedisAddress, RayRedisUsername, RayRedisPassword, RaySubmitterBackoffLimit, dan RayObjectStoreMemoryBytes. Perhatikan bahwa konfigurasi Environment variable dan Third-party libraries configuration akan ditimpa oleh konfigurasi RayRuntimeEnv.

      Format konfigurasi berikut didukung:

      • Plaintext: Harus dikonfigurasi sebagai string pasangan key=value yang dipisahkan koma. Key adalah parameter lanjutan yang didukung, dan value adalah pengaturan yang sesuai.

      • JSON

      Skenario konfigurasi khas:

      • Skenario 1: Konfigurasi lanjutan PyTorch

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

        createSvcForAllWorkers=true,customPortNumPerWorker=100

        Anda kemudian dapat memperoleh nama domain dan nomor port yang tersedia di Startup Command melalui variabel lingkungan $JOB_NAME dan $CUSTOM_PORTS untuk meluncurkan dan menghubungkan ke framework seperti Ray.

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

        Contoh konfigurasi:

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

        Saat ini, kebijakan rilis yang didukung hanyalah pod-exit, yang secara otomatis melepaskan sumber daya saat Pod Anda keluar. Contoh konfigurasi: json { "ReleaseResourcePolicy": "pod-exit" }

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

      • Jika Anda tidak mengonfigurasi VPC, jaringan publik dan gateway publik akan digunakan. Bandwidth terbatas dari gateway publik dapat menyebabkan perlambatan atau gangguan selama eksekusi pekerjaan.

      • Mengonfigurasi VPC serta memilih vSwitch dan security group yang sesuai meningkatkan bandwidth jaringan, stabilitas, dan keamanan. Selain itu, kluster tempat pekerjaan berjalan dapat langsung mengakses layanan di dalam VPC tersebut.

        Penting
        • Saat menggunakan VPC, pastikan kelompok sumber daya pekerjaan, penyimpanan dataset (OSS), dan repositori kode berada di wilayah yang sama, serta VPC masing-masing dapat saling berkomunikasi.

        • Saat menggunakan dataset CPFS, Anda harus mengonfigurasi VPC, dan VPC yang dipilih harus sama dengan VPC yang digunakan oleh CPFS. Jika tidak, pekerjaan pelatihan DLC yang dikirimkan akan gagal melakukan mount dataset dan tetap berada dalam status Preparing hingga timeout.

        • Saat mengirimkan pekerjaan DLC dengan instans preemptible Lingjun AI Computing Service, Anda harus mengonfigurasi VPC.

        Anda juga dapat mengonfigurasi Public Network Access Gateway dengan dua cara berikut:

        • Public Gateway: Bandwidth jaringannya terbatas, dan kecepatan jaringan mungkin tidak memenuhi kebutuhan Anda saat akses konkuren tinggi atau saat mengunduh file besar.

        • Private Gateway: Untuk mengatasi keterbatasan bandwidth gateway publik, buat Internet NAT Gateway di VPC DLC, bind Elastic IP (EIP), dan konfigurasi entri SNAT. Untuk informasi selengkapnya, lihat Tingkatkan kecepatan akses jaringan publik melalui private gateway.

    • Toleransi kesalahan dan diagnosis

      Parameter

      Deskripsi

      Automatic Fault Tolerance

      Nyalakan sakelar Automatic Fault Tolerance dan konfigurasikan parameternya. Sistem akan menyediakan kemampuan deteksi dan kontrol pekerjaan untuk mendeteksi serta menghindari kesalahan pada lapisan algoritma pekerjaan secara tepat waktu, sehingga meningkatkan pemanfaatan GPU. Untuk informasi selengkapnya, lihat AIMaster: Mesin toleransi kesalahan elastis dan otomatis.

      Catatan

      Saat Anda mengaktifkan toleransi kesalahan otomatis, sistem akan menjalankan instans AIMaster yang berjalan bersama instans pekerjaan, yang mengonsumsi sumber daya komputasi. Penggunaan sumber daya instans AIMaster adalah sebagai berikut:

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

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

      Health Check

      Saat Anda mengaktifkan Health Check, pemeriksaan komprehensif dilakukan pada sumber daya yang terlibat dalam pelatihan. Sistem secara otomatis mengisolasi node yang rusak dan memicu proses O&M backend otomatis, sehingga mengurangi kemungkinan mengalami masalah pada tahap awal pelatihan dan meningkatkan tingkat keberhasilan pelatihan. Untuk informasi selengkapnya, lihat SanityCheck: Pemeriksaan kesehatan daya komputasi.

      Catatan

      Pemeriksaan kesehatan hanya didukung untuk pekerjaan pelatihan PyTorch yang dikirimkan dengan kuota sumber daya Lingjun AI Computing Service dan jumlah GPU lebih dari 0.

    • Peran dan izin

      Berikut ini menjelaskan cara mengonfigurasi peran RAM instans. Untuk informasi selengkapnya tentang fitur ini, lihat Konfigurasi peran RAM DLC.

      Instance RAM role

      Deskripsi

      Default Role of PAI

      Menggunakan peran terkait layanan AliyunPAIDLCDefaultRole, yang hanya memiliki izin detail halus untuk mengakses ODPS dan OSS. Kredensial akses temporary yang dikeluarkan berdasarkan peran default PAI memiliki izin sebagai berikut:

      • Saat mengakses tabel MaxCompute, memiliki izin setara dengan pemilik instans DLC.

      • Saat mengakses OSS, hanya dapat mengakses bucket OSS default yang dikonfigurasi untuk workspace saat ini.

      Custom Role

      Pilih atau masukkan peran RAM kustom. Saat mengakses produk cloud di dalam instans menggunakan kredensial temporary STS, izinnya konsisten dengan peran kustom ini.

      Does Not Associate Role

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

Setelah mengonfigurasi parameter, klik OK.

Referensi

Setelah mengirimkan pekerjaan pelatihan, Anda dapat melakukan operasi berikut:

  • Lihat informasi dasar, tampilan sumber daya, dan log operasi untuk pekerjaan tersebut. Untuk informasi selengkapnya, lihat Lihat detail pelatihan.

  • Kelola pekerjaan, termasuk mengkloning, menghentikan, dan menghapusnya. Untuk informasi selengkapnya, lihat Kelola pekerjaan pelatihan.

  • Lihat laporan analisis melalui TensorBoard. Untuk informasi selengkapnya, lihat Alat visualisasi Tensorboard.

  • Atur pemantauan dan peringatan untuk pekerjaan. Untuk informasi selengkapnya, lihat Pemantauan dan peringatan pelatihan.

  • Lihat tagihan untuk eksekusi pekerjaan. Untuk informasi selengkapnya, lihat Detail tagihan.

  • Teruskan log pekerjaan DLC dari workspace saat ini ke Logstore SLS yang ditentukan untuk analisis kustom. Untuk informasi selengkapnya, lihat Langganan log tugas.

  • Buat aturan notifikasi di pusat event workspace PAI untuk melacak dan memantau status pekerjaan DLC. Untuk informasi selengkapnya, lihat Notifikasi.

  • Untuk potensi masalah dan solusinya selama eksekusi pekerjaan DLC, lihat FAQ DLC.

  • Untuk kasus penggunaan DLC, lihat Kasus penggunaan DLC.

Lampiran

Buat pekerjaan menggunakan SDK atau command line

Python SDK

Langkah 1: Instal alat Credentials Alibaba Cloud

Saat menggunakan SDK Alibaba Cloud untuk memanggil OpenAPI guna mengelola sumber daya, Anda harus menginstal alat Credentials untuk mengonfigurasi kredensial Anda. Persyaratan:

  • Python 3.7 atau lebih baru.

  • Alibaba Cloud SDK V2.0.

pip install alibabacloud_credentials

Langkah 2: Dapatkan AccessKey

Contoh ini menggunakan pasangan AccessKey untuk mengonfigurasi kredensial. Untuk mencegah kebocoran informasi AccessKey Anda, konfigurasikan ID AccessKey dan Rahasia AccessKey sebagai variabel lingkungan. Nama variabel lingkungan harus 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

Kirim pekerjaan menggunakan sumber daya publik

Kode berikut menunjukkan cara membuat dan mengirim pekerjaan.

Kode contoh untuk membuat dan mengirim 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 has granted permissions to DLC and has sufficient permissions.
    region_id = 'cn-hangzhou'
    # The AccessKey of an Alibaba Cloud account has permissions to access all APIs. We recommend that you use a RAM user for API access or daily O&M.
    # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey leak and threaten 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 identity verification.
    cred = CredClient()

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

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

    print('------- Workspaces -----------')
    # Get the list of workspaces. You can also enter the name of the workspace 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 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 ----------')
    # Get the 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:
        # If the current dataset does not exist, create a dataset.
        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 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 ----------')
    # Get the list of node specifications for 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 ----------')
    # 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 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()

Kirim pekerjaan menggunakan kuota sumber daya subscription

  1. Masuk ke Konsol PAI.

  2. Seperti yang ditunjukkan pada gambar berikut, temukan ID workspace Anda di halaman daftar workspace.image.png

  3. Seperti yang ditunjukkan pada gambar berikut, temukan ID kuota sumber daya grup sumber daya khusus Anda.image

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

    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'
    # The AccessKey of an Alibaba Cloud account has permissions to access all APIs. We recommend that you use a RAM user for API access or daily O&M.
    # We strongly recommend that you do not save your AccessKey ID and AccessKey secret in your project code. This can lead to an AccessKey leak and threaten 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 identity verification.
    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 execution content of 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 command executed by the job.
    job.user_command

Kirim pekerjaan menggunakan sumber daya preemptible

  • SpotDiscountLimit (Spot discount)

    #!/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 (Spot price)

    #!/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 bidding. Parameter tipe bidding hanya berlaku jika Anda mengatur parameter ini ke SpotWithPriceLimit.

SpotDiscountLimit

Tipe bidding diskon spot.

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

  • Parameter SpotDiscountLimit hanya berlaku untuk sumber daya Lingjun.

SpotPriceLimit

Tipe bidding harga spot.

UserVpc

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

Command line

Langkah 1: Unduh klien dan lakukan autentikasi pengguna

Unduh alat klien versi Linux 64-bit atau macOS sesuai sistem operasi Anda dan selesaikan autentikasi pengguna. Untuk informasi selengkapnya, lihat Persiapan.

Langkah 2: Kirim pekerjaan

  1. Masuk ke Konsol PAI.

  2. Pada halaman daftar workspace, ikuti petunjuk pada gambar di bawah untuk melihat ID workspace Anda.

    image.png

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

    image

  4. Siapkan file parameter tfjob.params dengan merujuk pada konten berikut. Untuk informasi selengkapnya 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. Gunakan contoh kode berikut untuk mengirimkan parameter params_file guna mengirim pekerjaan. Anda dapat mengirimkan pekerjaan DLC ke workspace 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

Mengonfigurasi aturan rilis sumber daya kustom. Parameter ini opsional. Jika tidak dikonfigurasi, semua sumber daya pod akan dilepas saat pekerjaan berakhir. Jika dikonfigurasi, satu-satunya nilai yang saat ini didukung adalah pod-exit, yang melepas sumber daya pod saat pod tersebut keluar.

pod-exit

EnableNvidiaIBGDA

ALL

Menentukan apakah akan mengaktifkan fitur IBGDA saat memuat driver GPU.

true atau false

EnableNvidiaGDRCopy

ALL

Menentukan apakah akan menginstal modul kernel GDRCopy. Versi 2.4.4 saat ini diinstal.

true atau false

EnablePaiNUMACoreBinding

ALL

Menentukan apakah akan mengaktifkan NUMA.

true atau false

EnableResourcePreCheck

ALL

Saat mengirim pekerjaan, ini memeriksa apakah total sumber daya (spesifikasi node) dalam kuota dapat memenuhi spesifikasi semua peran dalam pekerjaan.

true atau false

createSvcForAllWorkers

PyTorch

Menentukan apakah akan mengizinkan komunikasi jaringan antar worker.

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

  • 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. Nama pekerjaan (dlcxxxxx) diteruskan ke worker melalui variabel lingkungan JOB_NAME, memungkinkan Anda menentukan nama domain worker tertentu untuk diakses.

true atau false

customPortList

PyTorch

Menentukan port jaringan yang akan dibuka pada setiap worker. Ini dapat digunakan bersama createSvcForAllWorkers untuk mengaktifkan komunikasi jaringan antar worker.

Jika tidak dikonfigurasi, hanya port 23456 pada master yang dibuka secara default. Hindari menggunakan port 23456 dalam daftar port kustom ini.

Penting

Parameter ini saling eksklusif dengan customPortNumPerWorker. Jangan atur keduanya secara bersamaan.

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 akan dikonversi menjadi 11 nomor port berurutan dari 10000 hingga 10010)

customPortNumPerWorker

PyTorch

Meminta sejumlah port jaringan untuk dibuka untuk setiap worker. Ini dapat digunakan bersama createSvcForAllWorkers untuk mengaktifkan komunikasi jaringan antar worker.

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

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

  • Karena Lingjun AI Computing Service tidak menyediakan kemampuan port kustom, parameter customPortNumPerWorker tidak didukung saat Anda mengirimkan pekerjaan DLC dengan sumber daya Lingjun AI Computing Service.

Bilangan bulat (maksimum 65536)

RayRuntimeEnv

Ray

Saat framework adalah Ray, definisikan lingkungan runtime dengan mengonfigurasi RayRuntimeEnv secara manual.

Penting

Konfigurasi Environment variable dan Third-party library configuration akan ditimpa oleh konfigurasi 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 retry untuk 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)