Topik ini menjelaskan cara menggunakan fitur pemantauan toleransi kesalahan berbasis AIMaster yang disediakan oleh DLC.
Informasi latar belakang
Pembelajaran mendalam (deep learning) banyak digunakan. Seiring meningkatnya skala model dan data, pelatihan terdistribusi menjadi praktik umum. Ketika jumlah instans pekerjaan meningkat, pengecualian pada tumpukan perangkat lunak dan lingkungan perangkat keras dapat menyebabkan pekerjaan gagal.
Untuk memastikan operasi yang stabil bagi pekerjaan pembelajaran mendalam terdistribusi berskala besar, DLC menyediakan pemantauan toleransi kesalahan berbasis AIMaster. AIMaster adalah komponen tingkat pekerjaan. Saat Anda mengaktifkan pemantauan ini, sebuah instans AIMaster dijalankan bersama instans lain dari pekerjaan Anda untuk menyediakan pemantauan pekerjaan, penilaian toleransi kesalahan, dan pengendalian sumber daya.
Batasan
AIMaster saat ini mendukung framework berikut: PyTorch, MPI, TensorFlow, dan ElasticBatch.
Langkah 1: Konfigurasikan parameter pemantauan toleransi kesalahan
Bagian ini menjelaskan semua parameter untuk pemantauan toleransi kesalahan. Anda dapat merujuk ke contoh konfigurasi umum untuk merencanakan pengaturan Anda. Saat mengaktifkan fitur ini, Anda dapat mengonfigurasi parameter tersebut di bagian Other Configuration sesuai kebutuhan.
Deskripsi parameter
Kategori | Fitur | Parameter | Deskripsi | Nilai default |
Konfigurasi umum | Job execution type | --job-execution-mode | Mengatur jenis eksekusi pekerjaan. Nilai yang valid:
Perilaku toleransi kesalahan untuk error yang dapat dicoba ulang berbeda berdasarkan jenis pekerjaan:
| Sync |
Job restart settings | --enable-job-restart | Menentukan apakah pekerjaan dapat dimulai ulang ketika kondisi toleransi kesalahan terpenuhi atau terdeteksi pengecualian waktu proses (runtime exception). Nilai yang valid:
| False | |
--max-num-of-job-restart | Jumlah maksimum kali pekerjaan dapat dimulai ulang. Jika jumlah ini terlampaui, AIMaster menandai pekerjaan sebagai gagal. | 3 | ||
Konfigurasi runtime Catatan Berlaku untuk skenario di mana tidak ada instans yang gagal berjalan. | Anomaly detection for hung tasks | --enable-job-hang-detection | Menentukan apakah akan mengaktifkan pendeteksian hang untuk pekerjaan yang sedang berjalan. Fitur ini hanya mendukung pekerjaan Sinkron. Nilai yang valid:
| False |
--job-hang-interval | Durasi dalam detik yang boleh dihentikan sementara oleh pekerjaan sebelum AIMaster menganggapnya hang. Harus berupa bilangan bulat positif. Jika jeda melebihi nilai ini, AIMaster menandai pekerjaan sebagai abnormal dan memulainya ulang. | 1800 | ||
--enable-c4d-hang-detection | Menentukan apakah akan mengaktifkan deteksi Calibrating Collective Communication over Converged ethernet - Diagnosis (C4D) untuk mendiagnosis dan melokalisasi node lambat atau rusak yang menyebabkan pekerjaan hang secara cepat. Catatan Parameter ini hanya berlaku jika --enable-job-hang-detection juga diaktifkan. | False | ||
Hang detection for exiting jobs | --enable-job-exit-hang-detection | Menentukan apakah akan mengaktifkan pendeteksian hang saat pekerjaan akan keluar. Fitur ini hanya mendukung pekerjaan sinkron. Nilai yang valid:
| False | |
--job-exit-hang-interval | Durasi dalam detik yang boleh dihentikan sementara oleh pekerjaan selama proses keluar. Harus berupa bilangan bulat positif. Jika jeda melebihi nilai ini, pekerjaan ditandai sebagai abnormal dan dimulai ulang. | 600 | ||
Konfigurasi toleransi kesalahan Catatan Berlaku untuk skenario di mana suatu instans gagal berjalan. | Fault tolerance policy | --fault-tolerant-policy | Kebijakan toleransi kesalahan. Nilai yang valid:
| ExitCodeAndErrorMsg |
Maximum occurrences of the same error | --max-num-of-same-error | Jumlah maksimum kemunculan error yang sama pada satu instans. Jika jumlah error melebihi nilai ini, AIMaster menandai pekerjaan sebagai gagal. | 10 | |
Maximum fault tolerance rate | --max-tolerated-failure-rate | Tingkat kegagalan maksimum yang dapat ditoleransi. Jika proporsi instans yang gagal melebihi nilai ini, AIMaster menandai pekerjaan sebagai gagal. Nilai default -1 menonaktifkan fitur ini. Misalnya, nilai 0,3 berarti pekerjaan ditandai gagal jika lebih dari 30% worker mengalami error. | -1 |
Contoh konfigurasi
Contoh berikut menunjukkan konfigurasi parameter umum untuk berbagai jenis pekerjaan pelatihan.
Pekerjaan pelatihan sinkron (umum untuk PyTorch)
Mulai ulang pekerjaan saat suatu instans gagal dan memenuhi kondisi toleransi kesalahan.
--job-execution-mode=Sync --enable-job-restart=True --max-num-of-job-restart=3 --fault-tolerant-policy=ExitCodeAndErrorMsgPekerjaan pelatihan asinkron (umum untuk pekerjaan TensorFlow)
Untuk error yang dapat dicoba ulang, hanya instans worker yang gagal yang dimulai ulang. Secara default, pekerjaan tidak dimulai ulang jika instans PS atau Chief gagal. Untuk mengaktifkan restart pekerjaan, atur --enable-job-restart ke True.
--job-execution-mode=Async --fault-tolerant-policy=OnFailurePekerjaan inferensi offline (umum untuk pekerjaan ElasticBatch)
Instans bersifat independen, mirip dengan pekerjaan asinkron. Saat suatu instans gagal, AIMaster hanya memulai ulang instans tersebut.
--job-execution-mode=Async --fault-tolerant-policy=OnFailure
Langkah 2: Aktifkan pemantauan toleransi kesalahan
Anda dapat mengaktifkan pemantauan toleransi kesalahan di konsol atau menggunakan SDK saat mengirimkan pekerjaan DLC.
Aktifkan pemantauan toleransi kesalahan di konsol
Saat mengirimkan pekerjaan pelatihan DLC di konsol, buka bagian Fault Tolerance and Diagnosis, aktifkan Automatic Fault Tolerance, dan konfigurasikan parameter tambahan. Untuk informasi lebih lanjut, lihat Create a training job. DLC kemudian akan memulai peran AIMaster untuk memantau pekerjaan secara end-to-end dan menangani error.

Detailnya sebagai berikut:
Anda dapat mengonfigurasi parameter tambahan di kotak teks Other Configuration. Untuk detail parameter, lihat Langkah 1: Konfigurasikan parameter pemantauan toleransi kesalahan.
Setelah Anda mengaktifkan Hanging Detection, Anda dapat mengaktifkan fitur C4D Detection. C4D adalah alat diagnostik dari Alibaba Cloud untuk mengidentifikasi node lambat atau hang dalam pelatihan LLM. Untuk informasi lebih lanjut, lihat Use C4D.
CatatanC4D bergantung pada ACCL (Alibaba Cloud high-performance collective communication library). Pastikan ACCL telah diinstal. Untuk informasi lebih lanjut, lihat ACCL: Alibaba Cloud high-performance collective communication library.
Deteksi C4D saat ini hanya tersedia untuk pekerjaan DLC yang menggunakan sumber daya Lingjun AI Computing Service.
Aktifkan pemantauan toleransi kesalahan menggunakan DLC SDK
Gunakan Go SDK
Aktifkan pemantauan toleransi kesalahan saat mengirimkan pekerjaan menggunakan Go SDK.
createJobRequest := &client.CreateJobRequest{} settings := &client.JobSettings{ EnableErrorMonitoringInAIMaster: tea.Bool(true), ErrorMonitoringArgs: tea.String("--job-execution-mode=Sync --enable-job-restart=True --enable-job-hang-detection=True --job-hang-interval=3600"), } createJobRequest.SetSettings(settings)Parameter:
EnableErrorMonitoringInAIMaster: Menentukan apakah akan mengaktifkan fitur pemantauan toleransi kesalahan.
ErrorMonitoringArgs: Parameter tambahan untuk pemantauan toleransi kesalahan.
Gunakan Python SDK
Aktifkan pemantauan toleransi kesalahan saat mengirimkan pekerjaan menggunakan Python SDK.
from alibabacloud_pai_dlc20201203.models import CreateJobRequest, JobSettings settings = JobSettings( enable_error_monitoring_in_aimaster = True, error_monitoring_args = "--job-execution-mode=Sync --enable-job-restart=True --enable-job-hang-detection=True --job-hang-interval=30" ) create_job_req = CreateJobRequest( ... settings = settings, )dengan:
enable_error_monitoring_in_aimaster: Menentukan apakah akan mengaktifkan fitur pemantauan toleransi kesalahan.
error_monitoring_args: Parameter tambahan untuk pemantauan toleransi kesalahan.
Langkah 3: Konfigurasikan fitur pemantauan toleransi kesalahan lanjutan
Gunakan fitur lanjutan ini untuk menyesuaikan pemantauan toleransi kesalahan sesuai pekerjaan Anda.
Konfigurasikan notifikasi toleransi kesalahan
Setelah mengaktifkan pemantauan toleransi kesalahan untuk suatu pekerjaan, untuk menerima notifikasi event toleransi kesalahan, buka halaman Workspace Details. Pilih . Kemudian, klik Create Event Rule dan atur tipe event ke DLC Jobs > Automatic Fault Tolerance. Untuk informasi lebih lanjut, lihat Event Center for a workspace.
Saat pekerjaan pelatihan mengalami pengecualian, seperti loss NaN, Anda dapat menggunakan AIMaster SDK dalam kode Anda untuk mengirim pesan notifikasi kustom:
Untuk menggunakan fitur ini, instal paket wheel AIMaster. Untuk informasi lebih lanjut, lihat FAQ.
from aimaster import job_monitor as jm
job_monitor_client = jm.Monitor(config=jm.PyTorchConfig())
...
if loss == Nan and rank == 0:
st = job_monitor_client.send_custom_message(content="The training loss of the job is NaN.")
if not st.ok():
print('failed to send message, error %s' % st.to_string())Konfigurasikan kata kunci toleransi kesalahan kustom
Pemantauan toleransi kesalahan memiliki deteksi bawaan untuk error retriable umum. Anda juga dapat menentukan kata kunci kustom. Jika log instans yang gagal berisi salah satu kata kunci ini, AIMaster memperlakukan error tersebut sebagai retriable. Modul pemantauan memindai bagian akhir log instans yang gagal untuk menemukan kata kunci ini.
Atur Fault tolerance policy ke ExitCodeAndErrorMsg.
Contoh konfigurasi kata kunci toleransi kesalahan kustom untuk pekerjaan PyTorch
from aimaster import job_monitor as jm jm_config_params = {} jm_config = jm.PyTorchConfig(**jm_config_params) monitor = jm.Monitor(config=jm_config) monitor.set_retryable_errors(["connect timeout", "error_yyy", "error_zzz"])Parameter yang dikonfigurasi di monitor.set_retryable_errors adalah kata kunci toleransi kesalahan kustom.
Contoh konfigurasi kata kunci toleransi kesalahan kustom untuk pekerjaan TensorFlow
from aimaster import job_monitor as jm jm_config_params = {} jm_config = jm.TFConfig(**jm_config_params) monitor = jm.Monitor(config=jm_config) monitor.set_retryable_errors(["connect timeout", "error_yyy", "error_zzz"])
Konfigurasikan pendeteksian hang pekerjaan bertahap
Secara default, pengaturan pendeteksian hang berlaku untuk seluruh pekerjaan. Namun, pekerjaan berjalan dalam tahapan. Misalnya, selama inisialisasi, node mungkin memerlukan waktu lebih lama untuk membangun komunikasi, sedangkan selama pelatihan, log diperbarui lebih sering. Untuk mendeteksi hang lebih cepat selama proses pelatihan, DLC menyediakan pendeteksian hang bertahap, yang memungkinkan Anda mengonfigurasi interval deteksi berbeda untuk tahapan berbeda.
monitor.reset_config(jm_config_params)
# Contoh:
# monitor.reset_config(job_hang_interval=10)
# atau
# config_params = {"job_hang_interval": 10, }
# monitor.reset_config(**config_params)Berikut adalah contoh pendeteksian hang bertahap untuk pekerjaan PyTorch.
import torch
import torch.distributed as dist
from aimaster import job_monitor as jm
jm_config_params = {
"job_hang_interval": 1800 # Deteksi global 30 menit.
}
jm_config = jm.PyTorchConfig(**jm_config_params)
monitor = jm.Monitor(config=jm_config)
dist.init_process_group('nccl')
...
# impl these two funcs in aimaster sdk
# user just need to add annotations to their func
def reset_hang_detect(hang_seconds):
jm_config_params = {
"job_hang_interval": hang_seconds
}
monitor.reset_config(**jm_config_params)
def hang_detect(interval):
reset_hang_detect(interval)
...
@hang_detect(180) # reset hang detect ke 3 menit, hanya untuk cakupan fungsi
def train():
...
@hang_detect(-1) # nonaktifkan sementara pendeteksian hang, hanya untuk cakupan fungsi
def test():
...
for epoch in range(0, 100):
train(epoch)
test(epoch)
self.scheduler.step()
Use C4D
C4D adalah alat eksklusif dari Alibaba Cloud untuk mendiagnosis node lambat atau hang dalam pelatihan model besar. C4D bergantung pada ACCL. Pastikan ACCL telah diinstal. Untuk informasi lebih lanjut, lihat ACCL: Alibaba Cloud high-performance collective communication library. Saat ini, Anda dapat menggunakan fitur deteksi C4D saat memilih sumber daya Lingjun untuk pekerjaan DLC.
Ikhtisar fitur
C4D mengumpulkan informasi status dari semua node untuk menentukan apakah suatu node memiliki masalah di lapisan komunikasi atau di tempat lain. Diagram berikut menunjukkan arsitektur sistem.
Deskripsi parameter
Setelah mengaktifkan fitur deteksi C4D, Anda dapat mengonfigurasi parameter berikut di kotak teks Other Configuration:
Parameter | Deskripsi | Contoh nilai |
--c4d-log-level | Mengatur tingkat log output C4D. Nilai yang valid:
Nilai default adalah Warning, yang menghasilkan log pada level Warning dan Error. Kami merekomendasikan menggunakan nilai default untuk operasi normal. Untuk memecahkan masalah performa, Anda dapat mengaturnya ke Info. |
|
--c4d-common-envs | Mengatur variabel lingkungan untuk eksekusi C4D. Gunakan format
|
|
Untuk log tingkat Error, AIMaster secara otomatis mengisolasi node yang sesuai dan memulai ulang pekerjaan. Logika penanganan untuk setiap tingkat log adalah sebagai berikut:
Tingkat error | Deskripsi error | Aksi |
Error | Secara default, hang pekerjaan di lapisan komunikasi yang melebihi tiga menit akan menyebabkan pekerjaan gagal. Anda dapat mengubah default ini dengan mengonfigurasi parameter C4D_HANG_TIMEOUT dan C4D_HANG_TIMES. | AIMaster langsung mengisolasi node yang dilaporkan dalam log. |
Warn | Secara default, hang pekerjaan di lapisan komunikasi yang melebihi 10 detik akan memengaruhi performa tetapi tidak menyebabkan pekerjaan gagal. Anda dapat mengubah default ini dengan mengonfigurasi parameter C4D_HANG_TIMEOUT. | Node dalam log tidak diisolasi secara otomatis dan memerlukan konfirmasi manual. |
Hang pekerjaan di luar lapisan komunikasi yang melebihi 10 detik dapat menyebabkan pekerjaan gagal. | Node dalam log tidak diisolasi secara otomatis dan memerlukan konfirmasi manual. | |
Info | Kelambatan di lapisan komunikasi dan kelambatan di luar lapisan komunikasi. | Log diagnostik ini terutama untuk masalah performa dan memerlukan konfirmasi manual. |
Jika Anda menemukan bahwa pekerjaan DLC berjalan lambat atau hang, buka daftar pekerjaan DLC, lalu klik nama pekerjaan untuk menuju ke halaman detail pekerjaan. Di bagian Instance di bawah, lihat log node AIMaster untuk melihat hasil diagnosis C4D. Untuk informasi lebih lanjut tentang hasil diagnosis, lihat Diagnostic result examples.
Contoh hasil diagnosis
RankCommHang: Menunjukkan hang di lapisan komunikasi suatu node.

RankNonCommHang: Menunjukkan hang pada node di luar lapisan komunikasi (misalnya, di proses komputasi).

RankCommSlow: Menunjukkan kelambatan di lapisan komunikasi suatu node.

RankNonCommSlow: Menunjukkan kelambatan pada node di luar lapisan komunikasi.

FAQ
Bagaimana cara menginstal AIMaster SDK untuk versi Python tertentu (3.6, 3.8, atau 3.10)?
Instal AIMaster SDK menggunakan pip dengan URL langsung untuk file wheel (.whl) yang sesuai dengan lingkungan Python Anda. Pilih perintah yang sesuai dengan versi Python Anda:
# Python 3.6
pip install -U http://odps-release.cn-hangzhou.oss.aliyun-inc.com/aimaster/pai_aimaster-1.2.1-cp36-cp36m-linux_x86_64.whl
# Python 3.8
pip install -U http://odps-release.cn-hangzhou.oss.aliyun-inc.com/aimaster/pai_aimaster-1.2.1-cp38-cp38-linux_x86_64.whl
# Python 3.10
pip install -U http://odps-release.cn-hangzhou.oss.aliyun-inc.com/aimaster/pai_aimaster-1.2.1-cp310-cp310-linux_x86_64.whl