PAI-DLC menjalankan pekerjaan pelatihan single-node atau terdistribusi di Kubernetes, sehingga menghilangkan kebutuhan untuk menyediakan instans atau mengonfigurasi lingkungan. Layanan ini mendukung berbagai framework pembelajaran mendalam dan menawarkan konfigurasi sumber daya yang fleksibel.
Panduan cepat
Untuk panduan langkah demi langkah berbasis MNIST mengenai pelatihan terdistribusi single-GPU atau multi-node multi-GPU, lihat Panduan Cepat Pelatihan Terdistribusi DLC.
Parameter Konsol
Informasi dasar
Konfigurasikan Job Name dan Tag.
Informasi lingkungan
|
Parameter |
Deskripsi |
|
Image Configuration |
Selain memilih Alibaba Cloud Image, Anda dapat menggunakan jenis gambar berikut:
|
|
Mount dataset |
Dataset menyediakan file data yang diperlukan untuk pelatihan model. PAI mendukung dua jenis dataset:
Mount Path: Jalur dalam kontainer DLC tempat dataset dimount, misalnya Penting
Jika Anda mengonfigurasi dataset CPFS, Anda harus mengonfigurasi VPC untuk DLC dan memastikan bahwa VPC tersebut sama dengan VPC sistem file CPFS. Jika tidak, pekerjaan yang dikirimkan mungkin tetap berada dalam status "Preparing" dalam waktu lama. |
|
Mount storage |
Anda juga dapat memount jalur sumber data untuk membaca data atau menyimpan file antara dan hasil.
|
|
Startup Command |
Tetapkan perintah startup untuk pekerjaan. Perintah shell didukung. DLC secara otomatis menyisipkan variabel lingkungan umum untuk PyTorch dan TensorFlow, seperti
|
Informasi sumber daya
|
Parameter |
Deskripsi |
|
Resource Type |
Nilai default adalah General Computing. Lingjun Intelligence Resources tersedia di wilayah berikut: Tiongkok (Ulanqab), Singapura, Tiongkok (Shenzhen), Tiongkok (Beijing), Tiongkok (Shanghai), Tiongkok (Hangzhou), Tiongkok (Guangzhou), Tiongkok (Hong Kong), Malaysia (Kuala Lumpur), Jerman (Frankfurt), dan Atlanta. |
|
Source |
|
|
Framework |
Framework dan alat pelatihan pembelajaran mendalam yang didukung: TensorFlow, PyTorch, ElasticBatch, XGBoost, OneFlow, MPIJob, Ray, Custom, DataJuicer, dan MPI. Catatan
Saat Anda memilih Resource Quota dan menggunakan sumber daya komputasi AI Lingjun, Anda hanya dapat mengirimkan pekerjaan TensorFlow, PyTorch, ElasticBatch, MPIJob, dan Ray. |
|
Job Resource |
Berdasarkan Framework yang dipilih, Anda dapat mengonfigurasi sumber daya untuk tipe node Worker, PS, Chief, Evaluator, dan GraphLearn. Jika Anda memilih framework Ray, Anda dapat mengklik Add Role untuk menyesuaikan peran Worker dan menjalankan pekerjaan pada sumber daya heterogen.
|
Konfigurasi VPC
-
Tanpa VPC, pekerjaan menggunakan Public Gateway dengan bandwidth terbatas, yang dapat memperlambat atau menyebabkan kegagalan pekerjaan.
-
Konfigurasikan VPC dengan vSwitch dan security group untuk meningkatkan bandwidth, stabilitas, dan keamanan. Kluster pekerjaan dapat langsung mengakses layanan dalam VPC.
Penting-
Jika Anda menggunakan VPC, pastikan instans kelompok sumber daya pekerjaan dan penyimpanan dataset (OSS) berada di VPC yang sama di wilayah yang sama, serta VPC tersebut terhubung ke jaringan repositori kode.
-
Jika Anda menggunakan dataset CPFS, Anda harus mengonfigurasi VPC dan memastikan VPC yang dipilih sama dengan VPC sistem file CPFS. Jika tidak, pekerjaan pelatihan DLC yang dikirimkan mungkin tetap berada dalam status "Preparing" dalam waktu lama.
-
Anda harus mengonfigurasi VPC saat mengirimkan pekerjaan DLC yang menggunakan sumber daya komputasi AI Lingjun preemptible.
Anda juga dapat mengonfigurasi Internet Access Gateway dengan salah satu metode berikut:
-
Public Gateway: Memiliki bandwidth terbatas yang mungkin tidak mencukupi selama akses konkurensi tinggi atau unduhan file besar.
-
Private Gateway: Untuk mengatasi batasan bandwidth Public Gateway, buat Internet NAT Gateway di VPC DLC, ikat EIP, dan konfigurasi entri SNAT. Tingkatkan kecepatan akses jaringan publik menggunakan private gateway.
-
Toleransi kesalahan dan diagnosis
|
Parameter |
Deskripsi |
|
Automatic Fault Tolerance |
Aktifkan Automatic Fault Tolerance dan konfigurasikan parameter yang diperlukan untuk mendeteksi dan mengurangi kesalahan tingkat algoritma, meningkatkan pemanfaatan GPU. AIMaster: Mesin toleransi kesalahan otomatis elastis. Catatan
Saat Anda mengaktifkan toleransi kesalahan otomatis, sebuah instans AIMaster dimulai dan berjalan bersama instans pekerjaan. Hal ini mengonsumsi sejumlah sumber daya komputasi tertentu. Instans AIMaster menggunakan sumber daya berikut:
|
|
Sanity Check |
Aktifkan Sanity Check untuk memeriksa secara komprehensif sumber daya pelatihan, mengisolasi node yang rusak, dan memicu proses O&M otomatis backend. Mengurangi kegagalan tahap awal dan meningkatkan tingkat keberhasilan. SanityCheck: Pemeriksaan kesehatan sumber daya komputasi. Catatan
Fitur pemeriksaan kesehatan hanya didukung untuk pekerjaan pelatihan PyTorch yang dikirimkan menggunakan kuota sumber daya komputasi AI Lingjun dan memiliki jumlah GPU lebih dari 0. |
Peran dan izin
Konfigurasi peran RAM instans. Konfigurasi peran RAM DLC.
|
Instance RAM role |
Deskripsi |
|
Default Role of PAI |
Peran default PAI memberikan izin berikut melalui kredensial sementara STS:
|
|
Custom Role |
Pilih atau masukkan peran RAM kustom. Instans mengasumsikan izin peran ini saat mengakses layanan cloud melalui kredensial sementara STS. |
|
Does Not Associate Role |
Tidak ada peran RAM yang dikaitkan dengan pekerjaan DLC. Ini adalah opsi default. |
Topik terkait
-
Detail pekerjaan, penggunaan sumber daya, dan log operasi: Lihat detail pelatihan.
-
Detail penagihan: Detail tagihan.
-
Isu umum dan solusi: FAQ DLC.
-
Kasus penggunaan: Kasus penggunaan DLC.
Lampiran
Buat pekerjaan melalui SDK atau CLI
Python SDK
Langkah 1: Instal alat Credentials
Instal alat Credentials untuk autentikasi SDK. Persyaratan:
-
Python 3.7 atau lebih baru.
-
Alibaba Cloud SDK seri 2.0.
pip install alibabacloud_credentials
Langkah 2: Dapatkan AccessKey
Contoh ini menggunakan pasangan AccessKey. Simpan nilai AccessKey sebagai variabel lingkungan untuk mencegah risiko keamanan. Variabel lingkungan untuk ID AccessKey adalah ALIBABA_CLOUD_ACCESS_KEY_ID, dan variabel lingkungan untuk Rahasia AccessKey adalah ALIBABA_CLOUD_ACCESS_KEY_SECRET.
-
Dapatkan pasangan AccessKey: Buat AccessKey.
-
Atur variabel lingkungan: Konfigurasi variabel lingkungan.
-
Metode kredensial lainnya: Instal alat Credentials.
Langkah 3: Instal SDK Python
-
Instal SDK workspace.
pip install alibabacloud_aiworkspace20210204==3.0.1 -
Instal SDK DLC.
pip install alibabacloud_pai_dlc20201203==1.4.17
Langkah 4: Kirim pekerjaan
Sumber daya publik
Kode contoh berikut membuat dan mengirimkan pekerjaan.
Kuota sumber daya langganan
-
Masuk ke Konsol PAI.
-
Untuk melihat ID ruang kerja Anda: Di panel navigasi kiri, klik Workspaces. Temukan ruang kerja target, klik ikon ⓘ di samping namanya, lalu lihat dan salin Workspace ID dari kartu informasi yang muncul.
-
Untuk melihat ID kuota sumber daya Anda untuk kelompok sumber daya khusus: Di panel navigasi kiri, pilih AI Computing Resources > Resource Quotas. Klik tab General-purpose Computing Resources dan dapatkan ID Kuota dari kolom Name/ID dalam daftar kuota sumber daya.
-
Gunakan kode berikut untuk membuat dan mengirimkan pekerjaan. Untuk daftar gambar publik yang tersedia, lihat Langkah 2: Siapkan gambar.
from alibabacloud_pai_dlc20201203.client import Client from alibabacloud_credentials.client import Client as CredClient from alibabacloud_tea_openapi.models import Config from alibabacloud_pai_dlc20201203.models import ( CreateJobRequest, JobSpec, ResourceConfig, GetJobRequest ) # Initialize a client to access the DLC API. region = 'cn-hangzhou' # An AccessKey pair provides full API access. For security purposes, we recommend that you use a RAM user for API access and daily O&M. # Do not hard-code your AccessKey ID and AccessKey secret in your code. This may lead to AccessKey leakage and compromise the security of all resources in your account. # This example shows how to use the Credentials SDK to read the AccessKey from environment variables for authentication. cred = CredClient() client = Client( config=Config( credential=cred, region_id=region, endpoint=f'pai-dlc.{region}.aliyuncs.com', ) ) # Declare the resource configuration for the job. For image selection, you can refer to the public image list in the documentation or provide your own image URL. spec = JobSpec( type='Worker', image=f'registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04', pod_count=1, resource_config=ResourceConfig(cpu='1', memory='2Gi') ) # Declare the job's execution details. req = CreateJobRequest( resource_id='<Replace with the ID of your resource quota>', workspace_id='<Replace with your WorkspaceID>', display_name='sample-dlc-job', job_type='TFJob', job_specs=[spec], user_command='echo "Hello World"', ) # Submit the job. response = client.create_job(req) # Get the job ID. job_id = response.body.job_id # Query the job status. job = client.get_job(job_id, GetJobRequest()).body print('job status:', job.status) # View the command executed by the job. job.user_command
Instans spot
-
SpotDiscountLimit (diskon spot)
#!/usr/bin/env python3 from alibabacloud_tea_openapi.models import Config from alibabacloud_credentials.client import Client as CredClient from alibabacloud_pai_dlc20201203.client import Client as DLCClient from alibabacloud_pai_dlc20201203.models import CreateJobRequest region_id = '<region-id>' # The ID of the region in which the DLC job resides, such as cn-hangzhou. cred = CredClient() workspace_id = '12****' # The ID of the workspace to which the DLC job belongs. dlc_client = DLCClient( Config(credential=cred, region_id=region_id, endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id), protocol='http')) create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({ 'WorkspaceId': workspace_id, 'DisplayName': 'sample-spot-job', 'JobType': 'PyTorchJob', 'JobSpecs': [ { "Type": "Worker", "Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04", "PodCount": 1, "EcsSpec": 'ecs.g7.xlarge', "SpotSpec": { "SpotStrategy": "SpotWithPriceLimit", "SpotDiscountLimit": 0.4, } }, ], 'UserVpc': { "VpcId": "vpc-0jlq8l7qech3m2ta2****", "SwitchId": "vsw-0jlc46eg4k3pivwpz8****", "SecurityGroupId": "sg-0jl4bd9wwh5auei9****", }, "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'", })) job_id = create_job_resp.body.job_id print(f'jobId is {job_id}') -
SpotPriceLimit (harga spot)
#!/usr/bin/env python3 from alibabacloud_tea_openapi.models import Config from alibabacloud_credentials.client import Client as CredClient from alibabacloud_pai_dlc20201203.client import Client as DLCClient from alibabacloud_pai_dlc20201203.models import CreateJobRequest region_id = '<region-id>' cred = CredClient() workspace_id = '12****' dlc_client = DLCClient( Config(credential=cred, region_id=region_id, endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id), protocol='http')) create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({ 'WorkspaceId': workspace_id, 'DisplayName': 'sample-spot-job', 'JobType': 'PyTorchJob', 'JobSpecs': [ { "Type": "Worker", "Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04", "PodCount": 1, "EcsSpec": 'ecs.g7.xlarge', "SpotSpec": { "SpotStrategy": "SpotWithPriceLimit", "SpotPriceLimit": 0.011, } }, ], 'UserVpc': { "VpcId": "vpc-0jlq8l7qech3m2ta2****", "SwitchId": "vsw-0jlc46eg4k3pivwpz8****", "SecurityGroupId": "sg-0jl4bd9wwh5auei9****", }, "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'", })) job_id = create_job_resp.body.job_id print(f'jobId is {job_id}')
Tabel berikut menjelaskan parameter utama.
|
Parameter |
Deskripsi |
|
SpotStrategy |
Kebijakan penawaran. Parameter tipe penawaran hanya berlaku jika Anda mengatur parameter ini ke SpotWithPriceLimit. |
|
SpotDiscountLimit |
Tipe penawaran diskon spot. Catatan
|
|
SpotPriceLimit |
Tipe penawaran harga spot. |
|
UserVpc |
Parameter ini wajib saat Anda menggunakan sumber daya Lingjun untuk mengirimkan pekerjaan. Konfigurasikan VPC, vSwitch, dan ID security group untuk wilayah tempat pekerjaan berada. |
CLI
Langkah 1: Unduh klien dan autentikasi
Unduh alat klien untuk Linux (64-bit) atau macOS dan selesaikan autentikasi. Persiapan.
Langkah 2: Kirim pekerjaan
-
Masuk ke Konsol PAI.
-
Untuk melihat ID ruang kerja Anda:
Di panel navigasi kiri, klik Workspaces. Temukan ruang kerja target, klik ikon ⓘ di samping namanya dan lihat Workspace ID di kartu informasi yang muncul.
-
Untuk melihat ID kuota sumber daya Anda:
Di panel navigasi kiri, pilih AI Computing Resources > Resource Quotas. Pilih tab tipe sumber daya target, seperti General-purpose Computing Resources, dan dapatkan ID kuota sumber daya dari kolom Name/ID.
-
Buat file parameter bernama
tfjob.paramsdengan konten berikut. Detail file parameter: Perintah pengiriman.name=test_cli_tfjob_001 workers=1 worker_cpu=4 worker_gpu=0 worker_memory=4Gi worker_shared_memory=4Gi worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 command=echo good && sleep 120 resource_id=<Replace with your resource quota ID> workspace_id=<Replace with your WorkspaceID> -
Jalankan perintah berikut untuk mengirimkan pekerjaan DLC ke ruang kerja dan kuota sumber daya tertentu dengan menggunakan parameter '--job_file' untuk menentukan jalur ke file parameter Anda.
./dlc submit tfjob --job_file ./tfjob.params -
Jalankan perintah berikut untuk melihat pekerjaan DLC yang telah Anda kirimkan.
./dlc get job <jobID>
Parameter lanjutan
|
Parameter |
Framework yang didukung |
Deskripsi |
Nilai |
|
|
ALL |
Secara default, semua sumber daya pod dilepaskan setelah pekerjaan selesai. Satu-satunya nilai lain yang didukung adalah 'pod-exit', yang melepaskan sumber daya pod segera setelah pod keluar. |
pod-exit |
|
|
ALL |
Menentukan apakah akan mengaktifkan fitur IBGDA saat driver GPU dimuat. |
|
|
|
ALL |
Menentukan apakah akan menginstal modul kernel GDRCopy. (Versi: 2.4.4) |
|
|
|
ALL |
Menentukan apakah akan mengaktifkan pengikatan core NUMA. |
|
|
|
ALL |
Menentukan apakah akan memeriksa apakah total sumber daya (spesifikasi node) dalam kuota dapat memenuhi spesifikasi semua peran dalam pekerjaan saat pengiriman. |
|
|
|
PyTorch |
Menentukan apakah akan mengizinkan komunikasi jaringan antar worker.
Setelah fitur ini diaktifkan, nama domain setiap worker sama dengan nama workernya, seperti |
|
|
|
PyTorch |
Memungkinkan Anda menentukan port jaringan yang akan dibuka pada setiap worker, yang dapat digunakan bersama Jika parameter ini tidak dikonfigurasi, hanya port 23456 pada worker master yang dibuka secara default. Oleh karena itu, pastikan port 23456 tidak termasuk dalam daftar port kustom ini. Penting
Parameter ini dan |
Sekumpulan string yang dipisahkan titik koma, di mana setiap string adalah nomor port atau rentang port yang dihubungkan dengan tanda hubung, seperti |
|
|
PyTorch |
Hal ini memungkinkan Anda meminta beberapa port jaringan untuk setiap worker dan dapat digunakan bersama Jika pengaturan ini tidak dikonfigurasi, hanya port 23456 yang dibuka pada node master secara default. DLC secara acak menetapkan port ke node worker berdasarkan jumlah port yang Anda tentukan. Nomor port yang ditetapkan diteruskan ke node worker melalui variabel lingkungan Penting
|
Bilangan bulat hingga 65536. |
|
|
Ray |
Saat framework adalah Ray, Anda dapat mengonfigurasi RayRuntimeEnv secara manual untuk menentukan lingkungan runtime. Penting
Konfigurasi ini menimpa pengaturan variabel lingkungan dan pustaka pihak ketiga lainnya. |
Konfigurasikan variabel lingkungan dan pustaka pihak ketiga ( |
|
|
Ray |
Alamat server Redis GCS eksternal. |
String |
|
|
Ray |
Username untuk server Redis GCS eksternal. |
String |
|
|
Ray |
Password untuk server Redis GCS eksternal. |
String |
|
|
Ray |
Jumlah percobaan ulang submitter. |
Bilangan bulat positif (int) |
|
|
Ray |
Mengonfigurasi memori bersama untuk sebuah node. Misalnya, untuk mengonfigurasi 1 GiB memori bersama untuk setiap node, gunakan konfigurasi berikut:
|
Bilangan bulat positif (int) |
untuk memilih metode penawaran: