全部产品
Search
文档中心

Platform For AI:AIMaster: Elastic automatic fault tolerance engine

更新时间:Dec 16, 2025

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:

  • Sync: Pekerjaan sinkron.

  • Async: Pekerjaan asinkron.

Perilaku toleransi kesalahan untuk error yang dapat dicoba ulang berbeda berdasarkan jenis pekerjaan:

  • Synchronous jobs: Seluruh pekerjaan dimulai ulang.

  • Asynchronous jobs: Instans worker saling independen, dan restart hanya dilakukan pada instans yang gagal.

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: Jangan mulai ulang pekerjaan.

  • True: Mulai ulang pekerjaan.

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: Menonaktifkan fitur.

  • True: Mengaktifkan fitur. Jika log stdout dan stderr semua instans tidak diperbarui dalam rentang waktu tertentu, pekerjaan akan dimulai ulang.

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: Menonaktifkan fitur.

  • True: Mengaktifkan fitur. Jika ada instans yang berhasil selesai tetapi pekerjaan tidak berhenti dalam waktu yang ditentukan, pekerjaan akan dimulai ulang.

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:

  • OnFailure: Saat terjadi pengecualian pekerjaan:

    • Untuk pekerjaan asinkron, AIMaster tanpa syarat memulai ulang instans yang gagal.

    • Untuk pekerjaan sinkron, AIMaster tanpa syarat memulai ulang pekerjaan.

  • ExitCodeAndErrorMsg: Saat terjadi pengecualian pekerjaan, sistem mengevaluasi kode keluar dan log error dari instans yang gagal. Untuk informasi lebih lanjut, lihat Langkah 3: Konfigurasikan fitur pemantauan toleransi kesalahan lanjutan. Jika kondisi percobaan ulang terpenuhi:

    • Untuk pekerjaan asinkron, instans yang gagal dimulai ulang.

    • Untuk pekerjaan sinkron, pekerjaan dimulai ulang.

  • Never: Tidak ada tindakan yang diambil. AIMaster menandai pekerjaan sebagai gagal.

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=ExitCodeAndErrorMsg
  • Pekerjaan 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=OnFailure
  • Pekerjaan 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.

image

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.

    Catatan

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 Configure Workspace > Configure Event Notification. 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:

Catatan

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.

Catatan

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.

image

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:

  • Info

  • Warning (default)

  • Error

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-log-level=Info

--c4d-common-envs

Mengatur variabel lingkungan untuk eksekusi C4D. Gunakan format k1=v1,k2=v2. Pisahkan beberapa variabel dengan koma (,). Nilainya kosong secara default. Variabel lingkungan yang tersedia meliputi:

  • C4D_HANG_TIMEOUT: Durasi hang pekerjaan dalam mikrodetik sebelum peringatan dipicu. Default: 10000000 (10 detik).

  • C4D_HANG_TIMES: Jumlah kemunculan hang pekerjaan sebelum log Error dicatat, yang kemudian memicu logika isolasi node otomatis. Digunakan bersama C4D_HANG_TIMEOUT. Default: 18 (Secara default, hang selama 3 menit memicu isolasi node otomatis).

  • C4D_CONN_BW_CHECK_PERIOD: Interval pemeriksaan bandwidth. Default: 10 detik.

  • C4D_RUNTIME_LOG_LEVEL: Tingkat log runtime C4D. Nilai yang valid:

    • TRACE

    • DEBUG

    • INFO (default)

    • WARNING

    • ERROR

    • FATAL

  • C4D_ENABLE_STATS_OUTPUT: Menentukan apakah akan mengeluarkan statistik terkait C4D. Nilai yang valid:

    • TRUE

    • FALSE (default)

--c4d-common-envs=C4D_HANG_TIMEOUT=1,C4D_HANG_TIMES=2

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.5bc5051b1abae830588522ab7a50b23f

Contoh hasil diagnosis

  • RankCommHang: Menunjukkan hang di lapisan komunikasi suatu node.image

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

  • RankCommSlow: Menunjukkan kelambatan di lapisan komunikasi suatu node.image

  • RankNonCommSlow: Menunjukkan kelambatan pada node di luar lapisan komunikasi.image

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