View a markdown version of this page

Pemulihan dalam proses dan pelatihan tanpa pemeriksaan - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pemulihan dalam proses dan pelatihan tanpa pemeriksaan

HyperPod pelatihan checkpointless menggunakan redundansi model untuk memungkinkan pelatihan toleran kesalahan. Prinsip intinya adalah bahwa status model dan pengoptimal sepenuhnya direplikasi di beberapa grup node, dengan pembaruan bobot dan perubahan status pengoptimal direplikasi secara sinkron dalam setiap grup. Ketika kegagalan terjadi, replika yang sehat menyelesaikan langkah pengoptimalnya dan mengirimkan model/optimizer status yang diperbarui ke replika pemulihan.

Pendekatan berbasis redundansi model ini memungkinkan beberapa mekanisme penanganan kesalahan:

  • Pemulihan dalam proses: proses tetap aktif meskipun ada kesalahan, menjaga semua status model dan pengoptimal dalam memori GPU dengan nilai terbaru

  • Penanganan aborsi yang anggun: pengguguran terkontrol dan pembersihan sumber daya untuk operasi yang terpengaruh

  • Eksekusi ulang blok kode: menjalankan kembali hanya segmen kode yang terpengaruh dalam Blok Kode yang Dapat Dieksekusi Ulang (RCB)

  • Pemulihan tanpa pos pemeriksaan tanpa kemajuan pelatihan yang hilang: karena proses tetap ada dan status tetap dalam memori, tidak ada kemajuan pelatihan yang hilang; ketika kesalahan terjadi pelatihan dilanjutkan dari langkah sebelumnya, sebagai lawan dari melanjutkan dari pos pemeriksaan terakhir yang disimpan

Konfigurasi Checkpointless

Berikut adalah cuplikan inti dari pelatihan checkpointless.

from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank wait_rank() def main(): @HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, checkpoint_manager=PEFTCheckpointManager(enable_offload=True), abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), finalize=CheckpointlessFinalizeCleanup(), ) def run_main(cfg, caller: Optional[HPCallWrapper] = None): ... trainer = Trainer( strategy=CheckpointlessMegatronStrategy(..., num_distributed_optimizer_instances=2), callbacks=[..., CheckpointlessCallback(...)], ) trainer.fresume = resume trainer._checkpoint_connector = CheckpointlessCompatibleConnector(trainer) trainer.wrapper = caller
  • wait_rank: Semua peringkat akan menunggu informasi peringkat dari HyperpodTrainingOperator infrastruktur.

  • HPWrapper: Pembungkus fungsi Python yang memungkinkan kemampuan restart untuk Blok Kode yang Dapat Dieksekusi Ulang (RCB). Implementasinya menggunakan manajer konteks daripada dekorator Python karena dekorator tidak dapat menentukan jumlah monitor saat runtime RCBs .

  • CudaHealthCheck: Memastikan konteks CUDA untuk proses saat ini dalam keadaan sehat dengan menyinkronkan dengan GPU. Menggunakan perangkat yang ditentukan oleh variabel lingkungan LOCAL_RANK, atau default ke perangkat CUDA thread utama jika LOCAL_RANK tidak disetel.

  • HPAgentK8sAPIFactory: API ini memungkinkan pelatihan checkpointless untuk menanyakan status pelatihan pod lain di klaster pelatihan Kubernetes. Ini juga menyediakan penghalang tingkat infrastruktur yang memastikan semua peringkat berhasil menyelesaikan aborsi dan memulai kembali operasi sebelum melanjutkan.

  • CheckpointManager: Mengelola pos pemeriksaan dalam memori dan peer-to-peer pemulihan untuk toleransi kesalahan tanpa pemeriksaan. Ini memiliki tanggung jawab inti berikut:

    • Manajemen Pos Pemeriksaan Dalam Memori: Menyimpan dan mengelola pos pemeriksaan NeMo model dalam memori untuk pemulihan cepat tanpa disk I/O selama skenario pemulihan tanpa pemeriksaan.

    • Validasi Kelayakan Pemulihan: Menentukan apakah pemulihan tanpa pemeriksaan dimungkinkan dengan memvalidasi konsistensi langkah global, kesehatan peringkat, dan integritas status model.

    • Peer-to-Peer Orkestrasi Pemulihan: Mengkoordinasikan transfer pos pemeriksaan antara peringkat sehat dan gagal menggunakan komunikasi terdistribusi untuk pemulihan cepat.

    • Manajemen Negara RNG: Mempertahankan dan mengembalikan status generator angka acak di seluruh Python,, NumPy PyTorch, dan Megatron untuk pemulihan deterministik.

    • [Opsional] Checkpoint Offload: Bongkar pos pemeriksaan memori ke CPU jika GPU tidak memiliki kapasitas memori yang cukup.

  • PEFTCheckpointManager: Ini meluas CheckpointManager dengan menjaga bobot model dasar untuk finetuning PEFT.

  • CheckpointlessAbortManager: Mengelola operasi abort di utas latar belakang saat terjadi kesalahan. Secara default, itu dibatalkan, Checkpointing TransformerEngine,, TorchDistributed dan. DataLoader Pengguna dapat mendaftarkan penangan aborsi kustom sesuai kebutuhan. Setelah pembatalan selesai, semua komunikasi harus dihentikan dan semua proses dan utas harus dihentikan untuk mencegah kebocoran sumber daya.

  • CheckpointlessFinalizeCleanup: Menangani operasi pembersihan akhir di utas utama untuk komponen yang tidak dapat dibatalkan atau dibersihkan dengan aman di utas latar belakang.

  • CheckpointlessMegatronStrategy: Ini mewarisi dari MegatronStrategy dari di Nemo. Perhatikan bahwa pelatihan tanpa pemeriksaan membutuhkan num_distributed_optimizer_instances minimal 2 sehingga akan ada replikasi pengoptimal. Strategi ini juga menangani pendaftaran atribut penting dan inisialisasi grup proses, misalnya tanpa akar.

  • CheckpointlessCallback: Panggilan balik kilat yang mengintegrasikan NeMo pelatihan dengan sistem toleransi kesalahan pelatihan tanpa pemeriksaan. Ini memiliki tanggung jawab inti berikut:

    • Manajemen Siklus Hidup Langkah Pelatihan: Melacak kemajuan pelatihan dan berkoordinasi dengan ParameterUpdateLock pemulihan enable/disable tanpa pemeriksaan berdasarkan status pelatihan (langkah pertama vs langkah selanjutnya).

    • Koordinasi Status Pos Pemeriksaan: Mengelola penyimpanan/pemulihan pos pemeriksaan model dasar PEFT dalam memori.

  • CheckpointlessCompatibleConnector: PTL CheckpointConnector yang mencoba memuat file pos pemeriksaan ke memori, dengan jalur sumber ditentukan dalam prioritas ini:

    • coba pemulihan tanpa pemeriksaan

    • jika checkpointless mengembalikan None, mundur ke parent.resume_start ()

Lihat contoh untuk menambahkan fitur pelatihan checkpointless ke kode.

Konsep

Bagian ini memperkenalkan konsep pelatihan tanpa pemeriksaan. Pelatihan tanpa pos pemeriksaan di Amazon SageMaker HyperPod mendukung pemulihan dalam proses. Antarmuka API ini mengikuti format yang mirip dengan format NVRx APIs.

Konsep - Blok Kode yang Dapat Dieksekusi Ulang (RCB)

Ketika kegagalan terjadi, proses yang sehat tetap hidup, tetapi sebagian dari kode harus dieksekusi ulang untuk memulihkan status pelatihan dan tumpukan python. Re-executable Code Block (RCB) adalah segmen kode tertentu yang berjalan kembali selama pemulihan kegagalan. Dalam contoh berikut, RCB mencakup seluruh skrip pelatihan (yaitu, semua yang ada di bawah main ()), yang berarti bahwa setiap pemulihan kegagalan memulai ulang skrip pelatihan sambil mempertahankan model dalam memori dan status pengoptimal.

Konsep - Kontrol kesalahan

Modul pengontrol kesalahan menerima pemberitahuan ketika kegagalan terjadi selama pelatihan tanpa pemeriksaan. Pengontrol kesalahan ini mencakup komponen-komponen berikut:

  • Modul deteksi kesalahan: Menerima pemberitahuan kesalahan infrastruktur

  • Definisi RCB APIs: Memungkinkan pengguna untuk menentukan blok kode yang dapat dieksekusi ulang (RCB) dalam kode mereka

  • Restart modul: Mengakhiri RCB, membersihkan sumber daya, dan memulai ulang RCB

Gambar ini menggambarkan bagaimana modul pengontrol kesalahan menerima pemberitahuan ketika kegagalan terjadi selama pelatihan tanpa pemeriksaan.

Konsep - Redundansi model

Pelatihan model besar biasanya membutuhkan ukuran paralel data yang cukup besar untuk melatih model secara efisien. Dalam paralelisme data tradisional seperti PyTorch DDP dan Horovod, model ini sepenuhnya direplikasi. Teknik paralelisme data sharded yang lebih canggih seperti DeepSpeed Zero optimizer dan FSDP juga mendukung mode sharding hybrid, yang memungkinkan sharding model/optimizer status dalam grup sharding dan sepenuhnya mereplikasi di seluruh grup replikasi. NeMo juga memiliki fitur sharding hybrid ini melalui argumen num_distributed_optimizer_instances, yang memungkinkan redundansi.

Namun, menambahkan redundansi menunjukkan bahwa model tidak akan sepenuhnya dibagi di seluruh cluster, menghasilkan penggunaan memori perangkat yang lebih tinggi. Jumlah memori redundan akan bervariasi tergantung pada teknik sharding model spesifik yang diterapkan oleh pengguna. Bobot model presisi rendah, gradien, dan memori aktivasi tidak akan terpengaruh, karena mereka dipecah melalui paralelisme model. Model master presisi tinggi weights/gradients dan status pengoptimal akan terpengaruh. Menambahkan satu replika model redundan meningkatkan penggunaan memori perangkat kira-kira setara dengan satu ukuran pos pemeriksaan DCP.

Sharding hibrida memecah kolektif di seluruh kelompok DP menjadi kolektif yang relatif lebih kecil. Sebelumnya ada reduce-scatter dan all-gathering di seluruh kelompok DP. Setelah sharding hybrid, reduce-scatter hanya berjalan di dalam setiap replika model, dan akan ada all-reduce di seluruh grup replika model. All-gathering juga berjalan di dalam setiap replika model. Akibatnya, seluruh volume komunikasi tetap tidak berubah, tetapi kolektif berjalan dengan kelompok yang lebih kecil, jadi kami mengharapkan latensi yang lebih baik.

Konsep - Jenis Kegagalan dan Mulai Ulang

Tabel berikut mencatat berbagai jenis kegagalan dan mekanisme pemulihan terkait. Pelatihan tanpa pemeriksaan pertama kali mencoba pemulihan kegagalan melalui pemulihan dalam proses, diikuti dengan restart tingkat proses. Ini kembali ke restart tingkat pekerjaan hanya jika terjadi kegagalan besar (misalnya, beberapa node gagal pada saat yang sama).

Jenis Kegagalan Penyebab Jenis Pemulihan Mekanisme Pemulihan
Kegagalan dalam proses Kesalahan tingkat kode, pengecualian Pemulihan Dalam Proses (HKI) Jalankan kembali RCB dalam proses yang ada; proses sehat tetap aktif
Kegagalan proses restart Konteks CUDA yang rusak, proses yang dihentikan Tingkat Proses Mulai Ulang (PLR) SageMaker HyperPod operator pelatihan memulai ulang proses; melewatkan restart pod K8s
Kegagalan penggantian simpul Kegagalan node/GPU perangkat keras permanen Tingkat Pekerjaan Mulai Ulang (JLR) Ganti node yang gagal; mulai ulang seluruh pekerjaan pelatihan

Konsep - Perlindungan kunci atom untuk langkah pengoptimal

Eksekusi model dibagi menjadi tiga fase: propagasi maju, propagasi mundur, dan langkah pengoptimal. Perilaku pemulihan bervariasi berdasarkan waktu kegagalan:

  • Propagasi maju/mundur: Gulung kembali ke awal langkah pelatihan saat ini dan siarkan status model ke node pengganti

  • Langkah pengoptimal: Izinkan replika sehat untuk menyelesaikan langkah di bawah perlindungan kunci, lalu siarkan status model yang diperbarui ke node pengganti

Strategi ini memastikan pembaruan pengoptimal yang telah selesai tidak pernah dibuang, membantu mengurangi waktu pemulihan kesalahan.

Gambar ini menggambarkan bagaimana kegagalan ditangani tergantung pada apakah itu terjadi sebelum atau sesudah kegagalan.

Diagram Alur Pelatihan Tanpa Pemeriksaan

Diagram ini menggambarkan alur pelatihan tanpa pemeriksaan.

Langkah-langkah berikut menguraikan deteksi kegagalan dan proses pemulihan tanpa pemeriksaan:

  1. Loop pelatihan dimulai

  2. Terjadi kesalahan

  3. Evaluasi kelayakan resume checkpointless

  4. Periksa apakah layak untuk melakukan resume tanpa pemeriksaan

    • Jika memungkinkan, Coba checkpointless reusme

      • Jika resume gagal, mundur ke pemuatan pos pemeriksaan dari penyimpanan

      • Jika resume berhasil, pelatihan berlanjut dari keadaan pulih

    • Jika tidak memungkinkan, kembalilah ke pos pemeriksaan pemuatan dari penyimpanan

  5. Bersihkan sumber daya - batalkan semua grup proses dan backend dan sumber daya gratis sebagai persiapan untuk memulai ulang.

  6. Lanjutkan loop pelatihan - loop pelatihan baru dimulai, dan proses kembali ke langkah 1.

Referensi API

wait_rank

hyperpod_checkpointless_training.inprocess.train_utils.wait_rank()

Menunggu dan mengambil informasi peringkat dari HyperPod, kemudian memperbarui lingkungan proses saat ini dengan variabel pelatihan terdistribusi.

Fungsi ini memperoleh penugasan peringkat dan variabel lingkungan yang benar untuk pelatihan terdistribusi. Ini memastikan bahwa setiap proses mendapatkan konfigurasi yang sesuai untuk perannya dalam pekerjaan pelatihan terdistribusi.

Parameter

Tidak ada

Pengembalian

Tidak ada

Perilaku

  • Pemeriksaan Proses: Melewatkan eksekusi jika dipanggil dari subproses (hanya berjalan di) MainProcess

  • Pengambilan Lingkungan: Mendapat variabel arus RANK dan WORLD_SIZE dari lingkungan

  • HyperPod Komunikasi: Panggilan hyperpod_wait_rank_info() untuk mengambil informasi peringkat dari HyperPod

  • Pembaruan Lingkungan: Memperbarui lingkungan proses saat ini dengan variabel lingkungan khusus pekerja yang diterima dari HyperPod

Variabel Lingkungan

Fungsi membaca variabel lingkungan berikut:

  • RANK (int) - Peringkat proses saat ini (default: -1 jika tidak disetel)

  • WORLD_SIZE (int) - Jumlah total proses dalam pekerjaan terdistribusi (default: 0 jika tidak disetel)

Menaikkan

  • AssertionError— Jika respons dari HyperPod tidak dalam format yang diharapkan atau jika bidang yang diperlukan tidak ada

Contoh

from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank # Call before initializing distributed training wait_rank() # Now environment variables are properly set for this rank import torch.distributed as dist dist.init_process_group(backend='nccl')

Catatan

  • Hanya mengeksekusi dalam proses utama; panggilan subproses secara otomatis dilewati

  • Fungsi memblokir sampai HyperPod memberikan informasi peringkat

HPWrapper

class hyperpod_checkpointless_training.inprocess.wrap.HPWrapper( *, abort=Compose(HPAbortTorchDistributed()), finalize=None, health_check=None, hp_api_factory=None, abort_timeout=None, enabled=True, trace_file_path=None, async_raise_before_abort=True, early_abort_communicator=False, checkpoint_manager=None, check_memory_status=True)

Pembungkus fungsi Python yang memungkinkan kemampuan restart untuk Blok Kode yang Dapat Dieksekusi Ulang (RCB) dalam pelatihan tanpa pemeriksaan. HyperPod

Pembungkus ini memberikan toleransi kesalahan dan kemampuan pemulihan otomatis dengan memantau eksekusi pelatihan dan mengoordinasikan restart di seluruh proses terdistribusi ketika kegagalan terjadi. Ini menggunakan pendekatan manajer konteks daripada dekorator untuk mempertahankan sumber daya global sepanjang siklus hidup pelatihan.

Parameter

  • batalkan (Batalkan, opsional) — Menggugurkan eksekusi secara asinkron saat kegagalan terdeteksi. Default: Compose(HPAbortTorchDistributed())

  • finalisasi (Finalisasi, opsional) - Handler finalisasi peringkat lokal dieksekusi saat restart. Default: None

  • health_check (HealthCheck, opsional) - Pemeriksaan kesehatan peringkat-lokal dijalankan saat restart. Default: None

  • hp_api_factory (Dapat dipanggil, opsional) - Fungsi pabrik untuk membuat API untuk berinteraksi. HyperPod HyperPod Default: None

  • abort_timeout (float, opsional) - Batas waktu untuk membatalkan panggilan di thread pengendali kesalahan. Default: None

  • diaktifkan (bool, opsional) - Mengaktifkan fungsionalitas pembungkus. KapanFalse, pembungkus menjadi pass-through. Default: True

  • trace_file_path (str, opsional) - Jalur ke file jejak untuk pembuatan profil. VizTracer Default: None

  • async_raise_before_abort (bool, opsional) - Aktifkan kenaikan sebelum membatalkan di utas pengendali kesalahan. Default: True

  • early_abort_communicator (bool, opsional) - Batalkan komunikator (NCCL/Gloo) sebelum membatalkan dataloader. Default: False

  • checkpoint_manager (Apa saja, opsional) - Manajer untuk menangani pos pemeriksaan selama pemulihan. Default: None

  • check_memory_status (bool, opsional) - Aktifkan pemeriksaan status memori dan logging. Default: True

Metode

def __call__(self, fn)

Membungkus fungsi untuk mengaktifkan kemampuan restart.

Parameter:

  • fn (Callable) - Fungsi untuk membungkus dengan kemampuan restart

Pengembalian:

  • Callable - Fungsi dibungkus dengan kemampuan restart, atau fungsi asli jika dinonaktifkan

Contoh

from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager from hyperpod_checkpointless_training.nemo_plugins.patches import patch_megatron_optimizer from hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector import CheckpointlessCompatibleConnector from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager @HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, checkpoint_manager=CheckpointManager(enable_offload=False), abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), finalize=CheckpointlessFinalizeCleanup(), )def training_function(): # Your training code here pass

Catatan

  • Pembungkus torch.distributed harus tersedia

  • Kapanenabled=False, pembungkus menjadi pass-through dan mengembalikan fungsi asli tidak berubah

  • Pembungkus memelihara sumber daya global seperti memantau utas di seluruh siklus hidup pelatihan

  • Mendukung VizTracer pembuatan profil saat trace_file_path disediakan

  • Terintegrasi dengan HyperPod untuk penanganan kesalahan terkoordinasi di seluruh pelatihan terdistribusi

HPCallPembungkus

class hyperpod_checkpointless_training.inprocess.wrap.HPCallWrapper(wrapper)

Memantau dan mengelola status Restart Code Block (RCB) selama eksekusi.

Kelas ini menangani siklus hidup eksekusi RCB, termasuk deteksi kegagalan, koordinasi dengan peringkat lain untuk memulai ulang, dan operasi pembersihan. Ini mengelola sinkronisasi terdistribusi dan memastikan pemulihan yang konsisten di semua proses pelatihan.

Parameter

  • wrapper (HPWrapper) - Pembungkus induk yang berisi pengaturan pemulihan dalam proses global

Atribut

  • step_upon_restart (int) - Penghitung yang melacak langkah-langkah sejak restart terakhir, digunakan untuk menentukan strategi restart

Metode

def initialize_barrier()

Tunggu sinkronisasi HyperPod penghalang setelah menemukan pengecualian dari RCB.

def start_hp_fault_handling_thread()

Mulai utas penanganan kesalahan untuk memantau dan mengoordinasikan kegagalan.

def handle_fn_exception(call_ex)

Proses pengecualian dari fungsi eksekusi atau RCB.

Parameter:

  • call_ex (Exception) - Pengecualian dari fungsi pemantauan

def restart(term_ex)

Jalankan restart handler termasuk finalisasi, pengumpulan sampah, dan pemeriksaan kesehatan.

Parameter:

  • term_ex (RankShouldRestart) - Pengecualian penghentian memicu restart

def launch(fn, *a, **kw)

Jalankan RCB dengan penanganan pengecualian yang tepat.

Parameter:

  • fn (Callable) - Fungsi yang akan dieksekusi

  • a - Argumen fungsi

  • kw — Fungsi argumen kata kunci

def run(fn, a, kw)

Loop eksekusi utama yang menangani restart dan sinkronisasi penghalang.

Parameter:

  • fn (Callable) - Fungsi yang akan dieksekusi

  • a - Argumen fungsi

  • kw — Fungsi argumen kata kunci

def shutdown()

Shutdown penanganan kesalahan dan pemantauan thread.

Catatan

  • Secara otomatis menangani RankShouldRestart pengecualian untuk pemulihan terkoordinasi

  • Mengelola pelacakan dan membatalkan memori, pengumpulan sampah selama restart

  • Mendukung pemulihan dalam proses dan strategi PLR (Process-Level Restart) berdasarkan waktu kegagalan

CudaHealthCheck

class hyperpod_checkpointless_training.inprocess.health_check.CudaHealthCheck(timeout=datetime.timedelta(seconds=30))

Memastikan bahwa konteks CUDA untuk proses saat ini dalam keadaan sehat selama pemulihan pelatihan tanpa pemeriksaan.

Pemeriksaan kesehatan ini disinkronkan dengan GPU untuk memverifikasi bahwa konteks CUDA tidak rusak setelah kegagalan pelatihan. Ini melakukan operasi sinkronisasi GPU untuk mendeteksi masalah apa pun yang mungkin mencegah dimulainya kembali pelatihan yang berhasil. Pemeriksaan kesehatan dilakukan setelah kelompok yang didistribusikan dihancurkan dan finalisasi selesai.

Parameter

  • batas waktu (datetime.timedelta, opsional) - Durasi batas waktu untuk operasi sinkronisasi GPU. Default: datetime.timedelta(seconds=30)

Metode

__call__(state, train_ex=None)

Jalankan pemeriksaan kesehatan CUDA untuk memverifikasi integritas konteks GPU.

Parameter:

  • state (HPState) - HyperPod Status saat ini yang berisi peringkat dan informasi terdistribusi

  • train_ex (Pengecualian, opsional) - Pengecualian pelatihan asli yang memicu restart. Default: None

Pengembalian:

  • Tupel — Tupel yang mengandung (state, train_ex) tidak berubah jika pemeriksaan kesehatan lolos

Menaikkan:

  • TimeoutError— Jika waktu sinkronisasi GPU habis, menunjukkan konteks CUDA yang berpotensi rusak

Pelestarian Negara: Mengembalikan status asli dan pengecualian tidak berubah jika semua pemeriksaan lulus

Contoh

import datetime from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # Create CUDA health check with custom timeout cuda_health_check = CudaHealthCheck( timeout=datetime.timedelta(seconds=60) ) # Use with HPWrapper for fault-tolerant training @HPWrapper( health_check=cuda_health_check, enabled=True ) def training_function(): # Your training code here pass

Catatan

  • Menggunakan threading untuk menerapkan perlindungan batas waktu untuk sinkronisasi GPU

  • Dirancang untuk mendeteksi konteks CUDA yang rusak yang dapat mencegah dimulainya kembali pelatihan yang berhasil

  • Harus digunakan sebagai bagian dari pipa toleransi kesalahan dalam skenario pelatihan terdistribusi

HPAgentK8s APIFactory

class hyperpod_checkpointless_training.inprocess.train_utils.HPAgentK8sAPIFactory()

Kelas pabrik untuk membuat instance HPAgent K8SAPI yang berkomunikasi dengan HyperPod infrastruktur untuk koordinasi pelatihan terdistribusi.

Pabrik ini menyediakan cara standar untuk membuat dan mengkonfigurasi objek HPAgent K8SAPI yang menangani komunikasi antara proses pelatihan dan bidang kontrol. HyperPod Ini merangkum pembuatan klien soket yang mendasari dan instance API, memastikan konfigurasi yang konsisten di berbagai bagian sistem pelatihan.

Metode

__call__()

Buat dan kembalikan instance HPAgent K8SAPI yang dikonfigurasi untuk HyperPod komunikasi.

Pengembalian:

  • HPAgentK8SAPI — Instans API yang dikonfigurasi untuk berkomunikasi dengan infrastruktur HyperPod

Contoh

from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck # Create the factory hp_api_factory = HPAgentK8sAPIFactory() # Use with HPWrapper for fault-tolerant training hp_wrapper = HPWrapper( hp_api_factory=hp_api_factory, health_check=CudaHealthCheck(), abort_timeout=60.0, enabled=True ) @hp_wrapper def training_function(): # Your distributed training code here pass

Catatan

  • Dirancang untuk bekerja secara mulus dengan infrastruktur berbasis HyperPod Kubernetes. Hal ini penting untuk penanganan kesalahan terkoordinasi dan pemulihan dalam skenario pelatihan terdistribusi

CheckpointManager

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.CheckpointManager( enable_checksum=False, enable_offload=False)

Mengelola pos pemeriksaan dalam memori dan peer-to-peer pemulihan untuk toleransi kesalahan tanpa pemeriksaan dalam pelatihan terdistribusi.

Kelas ini menyediakan fungsionalitas inti untuk pelatihan HyperPod checkpointless dengan mengelola pos pemeriksaan NeMo model dalam memori, memvalidasi kelayakan pemulihan, dan mengatur transfer pos pemeriksaan antara peringkat sehat dan gagal peer-to-peer. Ini menghilangkan kebutuhan akan disk I/O selama pemulihan, secara signifikan mengurangi waktu rata-rata untuk pemulihan (MTTR).

Parameter

  • enable_checksum (bool, opsional) - Aktifkan validasi checksum status model untuk pemeriksaan integritas selama pemulihan. Default: False

  • enable_offload (bool, opsional) - Aktifkan pembongkaran pos pemeriksaan dari GPU ke memori CPU untuk mengurangi penggunaan memori GPU. Default: False

Atribut

  • global_step (int atau None) - Langkah pelatihan saat ini terkait dengan pos pemeriksaan yang disimpan

  • rng_states (daftar atau Tidak Ada) - Status generator nomor acak yang disimpan untuk pemulihan deterministik

  • checksum_manager (MemoryChecksumManager) - Manajer untuk validasi checksum status model

  • parameter_update_lock (ParameterUpdateLock) - Kunci untuk mengoordinasikan pembaruan parameter selama pemulihan

Metode

save_checkpoint(trainer)

Simpan pos pemeriksaan NeMo model dalam memori untuk potensi pemulihan tanpa pos pemeriksaan.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Catatan:

  • Dipanggil oleh CheckpointlessCallback pada akhir batch atau selama penanganan pengecualian

  • Menciptakan titik pemulihan tanpa I/O overhead disk

  • Menyimpan status model, pengoptimal, dan penjadwal lengkap

delete_checkpoint()

Hapus pos pemeriksaan dalam memori dan lakukan operasi pembersihan.

Catatan:

  • Menghapus data pos pemeriksaan, status RNG, dan tensor yang di-cache

  • Melakukan pengumpulan sampah dan pembersihan cache CUDA

  • Dipanggil setelah pemulihan berhasil atau ketika pos pemeriksaan tidak lagi diperlukan

try_checkpointless_load(trainer)

Mencoba pemulihan checkpointless dengan memuat status dari peringkat rekan.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Pengembalian:

  • dict atau None - Pos pemeriksaan yang dipulihkan jika berhasil, Tidak ada jika mundur ke disk diperlukan

Catatan:

  • Titik masuk utama untuk pemulihan tanpa pemeriksaan

  • Memvalidasi kelayakan pemulihan sebelum mencoba transfer P2P

  • Selalu membersihkan pos pemeriksaan dalam memori setelah upaya pemulihan

checkpointless_recovery_feasible(trainer, include_checksum_verification=True)

Tentukan apakah pemulihan checkpointless dimungkinkan untuk skenario kegagalan saat ini.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

  • include_checksum_verification (bool, opsional) - Apakah akan menyertakan validasi checksum. Default: True

Pengembalian:

  • bool - Benar jika pemulihan checkpointless layak, False sebaliknya

Kriteria Validasi:

  • Konsistensi langkah global di seluruh jajaran sehat

  • Replika sehat yang cukup tersedia untuk pemulihan

  • Integritas checksum status model (jika diaktifkan)

store_rng_states()

Simpan semua status generator angka acak untuk pemulihan deterministik.

Catatan:

  • Menangkap status Python NumPy,, CPU/GPU PyTorch , dan Megatron RNG

  • Penting untuk mempertahankan determinisme pelatihan setelah pemulihan

load_rng_states()

Kembalikan semua status RNG untuk kelanjutan pemulihan deterministik.

Catatan:

  • Mengembalikan semua status RNG yang disimpan sebelumnya

  • Memastikan pelatihan berlanjut dengan urutan acak yang identik

maybe_offload_checkpoint()

Bongkar pos pemeriksaan dari GPU ke memori CPU jika offload diaktifkan.

Catatan:

  • Mengurangi penggunaan memori GPU untuk model besar

  • Hanya mengeksekusi jika enable_offload=True

  • Mempertahankan aksesibilitas pos pemeriksaan untuk pemulihan

Contoh

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager # Use with HPWrapper for complete fault tolerance @HPWrapper( checkpoint_manager=CheckpointManager(), enabled=True ) def training_function(): # Training code with automatic checkpointless recovery pass

Validasi: Memverifikasi integritas pos pemeriksaan menggunakan checksum (jika diaktifkan)

Catatan

  • Menggunakan primitif komunikasi terdistribusi untuk transfer P2P yang efisien

  • Secara otomatis menangani konversi tensor dtype dan penempatan perangkat

  • MemoryChecksumManager— Menangani validasi integritas status model

PEFTCheckpointManajer

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.PEFTCheckpointManager( *args, **kwargs)

Mengelola pos pemeriksaan untuk PEFT (Parameter-Efficient Fine-Tuning) dengan penanganan basis dan adaptor terpisah untuk pemulihan checkpointless yang dioptimalkan.

Manajer pos pemeriksaan khusus ini memperluas CheckpointManager untuk mengoptimalkan alur kerja PEFT dengan memisahkan bobot model dasar dari parameter adaptor.

Parameter

Mewarisi semua parameter dari CheckpointManager:

  • enable_checksum (bool, opsional) - Aktifkan validasi checksum status model. Default: False

  • enable_offload (bool, opsional) - Aktifkan pembongkaran pos pemeriksaan ke memori CPU. Default: False

Atribut Tambahan

  • params_to_save (set) - Set nama parameter yang harus disimpan sebagai parameter adaptor

  • base_model_weights (dict atau None) - Bobot model dasar cache, disimpan sekali dan digunakan kembali

  • base_model_keys_to_extract (list atau None) - Kunci untuk mengekstrak tensor model dasar selama transfer P2P

Metode

maybe_save_base_model(trainer)

Simpan bobot model dasar sekali, saring parameter adaptor.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Catatan:

  • Hanya menyimpan bobot model dasar pada panggilan pertama; panggilan berikutnya adalah no-ops

  • Menyaring parameter adaptor untuk menyimpan hanya bobot model dasar beku

  • Bobot model dasar dipertahankan di beberapa sesi pelatihan

save_checkpoint(trainer)

Simpan pos pemeriksaan model adaptor NeMo PEFT di memori untuk potensi pemulihan tanpa pos pemeriksaan.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Catatan:

  • Secara otomatis memanggil maybe_save_base_model() jika model dasar belum disimpan

  • Filter pos pemeriksaan untuk menyertakan hanya parameter adaptor dan status pelatihan

  • Secara signifikan mengurangi ukuran pos pemeriksaan dibandingkan dengan pos pemeriksaan model penuh

try_base_model_checkpointless_load(trainer)

Mencoba pemulihan tanpa pemeriksaan bobot model dasar PEFT dengan memuat status dari peringkat sejawat.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Pengembalian:

  • dict atau None - Pos pemeriksaan model dasar yang dipulihkan jika berhasil, Tidak ada jika fallback diperlukan

Catatan:

  • Digunakan selama inisialisasi model untuk memulihkan bobot model dasar

  • Tidak membersihkan bobot model dasar setelah pemulihan (diawetkan untuk digunakan kembali)

  • Dioptimalkan untuk skenario model-weights-only pemulihan

try_checkpointless_load(trainer)

Mencoba pemberat adaptor PEFT checkpointless recovery dengan memuat status dari peringkat rekan.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Pengembalian:

  • dict atau None - Pos pemeriksaan adaptor yang dipulihkan jika berhasil, Tidak ada jika fallback diperlukan

Catatan:

  • Memulihkan hanya parameter adaptor, status pengoptimal, dan penjadwal

  • Secara otomatis memuat status pengoptimal dan penjadwal setelah pemulihan berhasil

  • Membersihkan pos pemeriksaan adaptor setelah upaya pemulihan

is_adapter_key(key)

Periksa apakah kunci dict status milik parameter adaptor.

Parameter:

  • kunci (str atau tuple) — Kunci dict negara untuk memeriksa

Pengembalian:

  • bool - Benar jika kunci adalah parameter adaptor, Salah jika parameter model dasar

Logika Deteksi:

  • Memeriksa apakah kunci sudah params_to_save diatur

  • Mengidentifikasi kunci yang berisi “.adapter.” substring

  • Mengidentifikasi kunci yang diakhiri dengan “.adapters”

  • Untuk tombol Tuple, periksa apakah parameter membutuhkan gradien

maybe_offload_checkpoint()

Bongkar bobot model dasar dari GPU ke memori CPU.

Catatan:

  • Memperluas metode induk untuk menangani pembongkaran bobot model dasar

  • Bobot adaptor biasanya kecil dan tidak memerlukan pembongkaran

  • Menetapkan bendera internal untuk melacak status pembongkaran

Catatan

  • Dirancang khusus untuk skenario Fine-Tuning Efisien Parameter (LoRa, Adaptor, dll.)

  • Secara otomatis menangani pemisahan model dasar dan parameter adaptor

Contoh

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import PEFTCheckpointManager # Use with HPWrapper for complete fault tolerance @HPWrapper( checkpoint_manager=PEFTCheckpointManager(), enabled=True ) def training_function(): # Training code with automatic checkpointless recovery pass

CheckpointlessAbortManager

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessAbortManager()

Kelas pabrik untuk membuat dan mengelola komposisi komponen abort untuk toleransi kesalahan tanpa pemeriksaan.

Kelas utilitas ini menyediakan metode statis untuk membuat, menyesuaikan, dan mengelola komposisi komponen abort yang digunakan selama penanganan kesalahan dalam pelatihan HyperPod checkpointless. Ini menyederhanakan konfigurasi urutan abort yang menangani pembersihan komponen pelatihan terdistribusi, pemuat data, dan sumber daya khusus kerangka kerja selama pemulihan kegagalan.

Parameter

Tidak ada (semua metode statis)

Metode Statis

get_default_checkpointless_abort()

Dapatkan instance compose abort default yang berisi semua komponen abort standar.

Pengembalian:

  • Compose - Instance abort tersusun default dengan semua komponen abort

Komponen Default:

  • AbortTransformerEngine() — Membersihkan sumber daya TransformerEngine

  • HPCheckpointingBatalkan () - Menangani pembersihan sistem pos pemeriksaan

  • HPAbortTorchDistributed() — Menggagalkan operasi PyTorch terdistribusi

  • HPDataLoaderAbort() - Menghentikan dan membersihkan pemuat data

create_custom_abort(abort_instances)

Buat penulisan abort khusus hanya dengan instance abort yang ditentukan.

Parameter:

  • abort_instances (Abort) — Jumlah variabel instance abort yang akan disertakan dalam penulisan

Pengembalian:

  • Compose - Instance abort tersusun baru yang hanya berisi komponen tertentu

Menaikkan:

  • ValueError— Jika tidak ada instance abort yang disediakan

override_abort(abort_compose, abort_type, new_abort)

Ganti komponen abort tertentu dalam instance Compose dengan komponen baru.

Parameter:

  • abort_compose (Compose) — Instance Compose asli yang akan dimodifikasi

  • abort_type (type) — Jenis komponen abort yang akan diganti (misalnya,) HPCheckpointingAbort

  • new_abort (Abort) - Instance abort baru untuk digunakan sebagai pengganti

Pengembalian:

  • Compose — Instance Compose baru dengan komponen yang ditentukan diganti

Menaikkan:

  • ValueError— Jika abort_compose tidak memiliki atribut 'instance'

Contoh

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager # The strategy automatically integrates with HPWrapper @HPWrapper( abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), health_check=CudaHealthCheck(), finalize=CheckpointlessFinalizeCleanup(), enabled=True ) def training_function(): trainer.fit(...)

Catatan

  • Konfigurasi khusus memungkinkan kontrol yang disetel dengan baik atas perilaku pembersihan

  • Operasi batal sangat penting untuk pembersihan sumber daya yang tepat selama pemulihan kesalahan

CheckpointlessFinalizeCleanup

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessFinalizeCleanup()

Melakukan pembersihan menyeluruh setelah deteksi kesalahan untuk mempersiapkan pemulihan dalam proses selama pelatihan tanpa pemeriksaan.

Handler finalisasi ini menjalankan operasi pembersihan khusus kerangka kerja termasuk Megatron/TransformerEngine abort, pembersihan DDP, pemuatan ulang modul, dan pembersihan memori dengan menghancurkan referensi komponen pelatihan. Ini memastikan bahwa lingkungan pelatihan diatur ulang dengan benar untuk pemulihan dalam proses yang berhasil tanpa memerlukan penghentian proses penuh.

Parameter

Tidak ada

Atribut

  • pelatih (Pytorch_Lightning.trainer atau None) - Referensi ke instance pelatih Lightning PyTorch

Metode

__call__(*a, **kw)

Jalankan operasi pembersihan komprehensif untuk persiapan pemulihan dalam proses.

Parameter:

  • a — Argumen posisi variabel (diwarisi dari antarmuka Finalize)

  • kw - Argumen kata kunci variabel (diwarisi dari antarmuka Finalize)

Operasi Pembersihan:

  • Megatron Framework Cleanup - Panggilan abort_megatron() untuk membersihkan sumber daya khusus Megatron

  • TransformerEngine Pembersihan - Panggilan abort_te() untuk membersihkan sumber daya TransformerEngine

  • Rope Cleanup - Panggilan cleanup_rope() untuk membersihkan sumber daya penyematan posisi putar

  • DDP Cleanup — Panggilan cleanup_ddp() untuk membersihkan sumber daya DistributedDataParallel

  • Modul Reloading - Panggilan reload_megatron_and_te() untuk memuat ulang modul kerangka kerja

  • Lightning Module Cleanup - Secara opsional membersihkan modul Lightning untuk mengurangi memori GPU

  • Memory Cleanup — Menghancurkan referensi komponen pelatihan ke memori bebas

register_attributes(trainer)

Daftarkan instance pelatih untuk digunakan selama operasi pembersihan.

Parameter:

  • pelatih (PyTorch_Lightning.trainer) - Contoh pelatih petir untuk mendaftar PyTorch

Integrasi dengan CheckpointlessCallback

from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # The strategy automatically integrates with HPWrapper @HPWrapper( ... finalize=CheckpointlessFinalizeCleanup(), ) def training_function(): trainer.fit(...)

Catatan

  • Operasi pembersihan dijalankan dalam urutan tertentu untuk menghindari masalah ketergantungan

  • Pembersihan memori menggunakan introspeksi pengumpulan sampah untuk menemukan objek target

  • Semua operasi pembersihan dirancang agar idempoten dan aman untuk dicoba lagi

CheckpointlessMegatronStrategy

class hyperpod_checkpointless_training.nemo_plugins.megatron_strategy.CheckpointlessMegatronStrategy(*args, **kwargs)

NeMo Strategi Megatron dengan kemampuan pemulihan tanpa pemeriksaan terintegrasi untuk pelatihan terdistribusi yang toleran terhadap kesalahan.

Perhatikan bahwa pelatihan tanpa pemeriksaan membutuhkan num_distributed_optimizer_instances minimal 2 sehingga akan ada replikasi pengoptimal. Strategi ini juga menangani pendaftaran atribut penting dan inisialisasi grup proses.

Parameter

Mewarisi semua parameter dari MegatronStrategy:

  • Parameter NeMo MegatronStrategy inisialisasi standar

  • Opsi konfigurasi pelatihan terdistribusi

  • Pengaturan paralelisme model

Atribut

  • base_store (torch.distributed. TCPStoreatau Tidak Ada) - Penyimpanan terdistribusi untuk koordinasi kelompok proses

Metode

setup(trainer)

Inisialisasi strategi dan daftarkan komponen toleransi kesalahan dengan pelatih.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Operasi Pengaturan:

  • Pengaturan Induk - Memanggil MegatronStrategy pengaturan induk

  • Pendaftaran Injeksi Kesalahan - Mendaftarkan HPFault InjectionCallback kait jika ada

  • Selesaikan Pendaftaran — Mendaftarkan pelatih dengan menyelesaikan penangan pembersihan

  • Batalkan Pendaftaran — Mendaftarkan pelatih dengan penangan batal yang mendukungnya

setup_distributed()

Inisialisasi grup proses menggunakan awalan atau koneksi tanpa akar. TCPStore

load_model_state_dict(checkpoint, strict=True)

Muat dict status model dengan kompatibilitas pemulihan tanpa pemeriksaan.

Parameter:

  • pos pemeriksaan (Pemetaan [str, Apa Saja]) - Kamus pos pemeriksaan yang berisi status model

  • strict (bool, opsional) - Apakah akan secara ketat menegakkan pencocokan kunci dict status. Default: True

get_wrapper()

Dapatkan instance HPCall Wrapper untuk koordinasi toleransi kesalahan.

Pengembalian:

  • HPCallWrapper - Instance pembungkus yang melekat pada pelatih untuk toleransi kesalahan

is_peft()

Periksa apakah PEFT (Parameter-Efficient Fine-Tuning) diaktifkan dalam konfigurasi pelatihan dengan memeriksa callback PEFT

Pengembalian:

  • bool - Benar jika panggilan balik PEFT hadir, False sebaliknya

teardown()

Ganti PyTorch pembongkaran asli Lightning untuk mendelegasikan pembersihan untuk membatalkan penangan.

Contoh

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # The strategy automatically integrates with HPWrapper @HPWrapper( checkpoint_manager=checkpoint_manager, enabled=True ) def training_function(): trainer = pl.Trainer(strategy=CheckpointlessMegatronStrategy()) trainer.fit(model, datamodule)

CheckpointlessCallback

class hyperpod_checkpointless_training.nemo_plugins.callbacks.CheckpointlessCallback( enable_inprocess=False, enable_checkpointless=False, enable_checksum=False, clean_tensor_hook=False, clean_lightning_module=False)

Panggilan balik kilat yang mengintegrasikan NeMo pelatihan dengan sistem toleransi kesalahan pelatihan tanpa pemeriksaan.

Callback ini mengelola pelacakan langkah, penyimpanan pos pemeriksaan, dan koordinasi pembaruan parameter untuk kemampuan pemulihan dalam proses. Ini berfungsi sebagai titik integrasi utama antara loop pelatihan PyTorch Lightning dan mekanisme pelatihan HyperPod tanpa pemeriksaan, mengoordinasikan operasi toleransi kesalahan di seluruh siklus hidup pelatihan.

Parameter

  • enable_inprocess (bool, opsional) - Aktifkan kemampuan pemulihan dalam proses. Default: False

  • enable_checkpointless (bool, opsional) - Aktifkan pemulihan tanpa pemeriksaan (membutuhkan). enable_inprocess=True Default: False

  • enable_checksum (bool, opsional) - Aktifkan validasi checksum status model (membutuhkan). enable_checkpointless=True Default: False

  • clean_tensor_hook (bool, opsional) - Hapus kait tensor dari semua tensor GPU selama pembersihan (operasi mahal). Default: False

  • clean_lightning_module (bool, opsional) - Aktifkan pembersihan modul Lightning untuk membebaskan memori GPU setelah setiap restart. Default: False

Atribut

  • tried_adapter_checkpointless (bool) - Tandai untuk melacak apakah pemulihan checkpointless adaptor telah dicoba

Metode

get_wrapper_from_trainer(trainer)

Dapatkan instance HPCall Wrapper dari pelatih untuk koordinasi toleransi kesalahan.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Pengembalian:

  • HPCallWrapper - Contoh pembungkus untuk operasi toleransi kesalahan

on_train_batch_start(trainer, pl_module, batch, batch_idx, *args, **kwargs)

Dipanggil di awal setiap batch pelatihan untuk mengelola pelacakan dan pemulihan langkah.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

  • pl_module (pytorch_lightning. LightningModule) - Modul petir sedang dilatih

  • batch — Data batch pelatihan saat ini

  • batch_idx (int) — Indeks dari batch saat ini

  • args — Argumen posisi tambahan

  • kwargs - Argumen kata kunci tambahan

on_train_batch_end(trainer, pl_module, outputs, batch, batch_idx)

Lepaskan kunci pembaruan parameter di akhir setiap batch pelatihan.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

  • pl_module (pytorch_lightning. LightningModule) - Modul petir sedang dilatih

  • output (STEP_OUTPUT) - Keluaran langkah pelatihan

  • batch (Apa saja) - Data batch pelatihan saat ini

  • batch_idx (int) — Indeks dari batch saat ini

Catatan:

  • Waktu rilis kunci memastikan pemulihan tanpa pemeriksaan dapat dilanjutkan setelah pembaruan parameter selesai

  • Hanya mengeksekusi ketika keduanya enable_inprocess dan enable_checkpointless Benar

get_peft_callback(trainer)

Ambil callback PEFT dari daftar callback pelatih.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

Pengembalian:

  • PEFT atau None - contoh panggilan balik PEFT jika ditemukan, Tidak ada sebaliknya

_try_adapter_checkpointless_restore(trainer, params_to_save)

Mencoba pemulihan checkpointless untuk parameter adaptor PEFT.

Parameter:

  • pelatih (Pytorch_Lightning.trainer) - Contoh pelatih petir PyTorch

  • params_to_save (set) - Set nama parameter untuk disimpan sebagai parameter adaptor

Catatan:

  • Hanya mengeksekusi sekali per sesi pelatihan (dikendalikan oleh tried_adapter_checkpointless bendera)

  • Mengkonfigurasi manajer pos pemeriksaan dengan informasi parameter adaptor

Contoh

from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager import pytorch_lightning as pl # Create checkpoint manager checkpoint_manager = CheckpointManager( enable_checksum=True, enable_offload=True ) # Create checkpointless callback with full fault tolerance checkpointless_callback = CheckpointlessCallback( enable_inprocess=True, enable_checkpointless=True, enable_checksum=True, clean_tensor_hook=True, clean_lightning_module=True ) # Use with PyTorch Lightning trainer trainer = pl.Trainer( callbacks=[checkpointless_callback], strategy=CheckpointlessMegatronStrategy() ) # Training with fault tolerance trainer.fit(model, datamodule=data_module)

Manajemen Memori

  • clean_tensor_hook: Menghapus kait tensor selama pembersihan (mahal tapi menyeluruh)

  • clean_lightning_module: Membebaskan memori GPU modul Lightning selama restart

  • Kedua opsi membantu mengurangi jejak memori selama pemulihan kesalahan

  • Berkoordinasi dengan ParameterUpdateLock untuk pelacakan pembaruan parameter aman utas

CheckpointlessCompatibleConnector

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector.CheckpointlessCompatibleConnector()

PyTorch Konektor pos pemeriksaan petir yang mengintegrasikan pemulihan tanpa pemeriksaan dengan pemuatan pos pemeriksaan berbasis disk tradisional.

Konektor ini memperluas PyTorch Lightning _CheckpointConnector untuk memberikan integrasi yang mulus antara pemulihan tanpa pemeriksaan dan restorasi pos pemeriksaan standar. Ini mencoba pemulihan tanpa pemeriksaan terlebih dahulu, kemudian kembali ke pemuatan pos pemeriksaan berbasis disk jika pemulihan tanpa pemeriksaan tidak layak atau gagal.

Parameter

Mewarisi semua parameter dari _ CheckpointConnector

Metode

resume_start(checkpoint_path=None)

Cobalah untuk memuat pos pemeriksaan terlebih dahulu dengan prioritas pemulihan tanpa pemeriksaan.

Parameter:

  • checkpoint_path (str atau None, opsional) - Jalur ke pos pemeriksaan disk untuk fallback. Default: None

resume_end()

Selesaikan proses pemuatan pos pemeriksaan dan lakukan operasi pasca-beban.

Catatan

  • Memperluas _CheckpointConnector kelas internal PyTorch Lightning dengan dukungan pemulihan tanpa pemeriksaan

  • Mempertahankan kompatibilitas penuh dengan alur kerja pos pemeriksaan PyTorch Lightning standar

CheckpointlessAutoResume

class hyperpod_checkpointless_training.nemo_plugins.resume.CheckpointlessAutoResume()

Memperluas AutoResume dengan pengaturan NeMo yang tertunda untuk mengaktifkan validasi pemulihan tanpa pemeriksaan sebelum resolusi jalur pos pemeriksaan.

Kelas ini mengimplementasikan strategi inisialisasi dua fase yang memungkinkan validasi pemulihan tanpa pemeriksaan terjadi sebelum kembali ke pemuatan pos pemeriksaan berbasis disk tradisional. Ini menunda AutoResume pengaturan secara kondisional untuk mencegah resolusi jalur pos pemeriksaan prematur, memungkinkan CheckpointManager untuk memvalidasi terlebih dahulu apakah pemulihan tanpa pemeriksaan layak dilakukan. peer-to-peer

Parameter

Mewarisi semua parameter dari AutoResume

Metode

setup(trainer, model=None, force_setup=False)

Tunda AutoResume pengaturan secara kondisional untuk mengaktifkan validasi pemulihan tanpa pemeriksaan.

Parameter:

  • pelatih (Pytorch_Lightning.Trainer atau Lightning.Fabric.Fabric) - Pelatih petir atau contoh Fabric PyTorch

  • model (opsional) - Contoh model untuk pengaturan. Default: None

  • force_setup (bool, opsional) - Jika Benar, lewati penundaan dan jalankan penyiapan segera. AutoResume Default: False

Contoh

from hyperpod_checkpointless_training.nemo_plugins.resume import CheckpointlessAutoResume from hyperpod_checkpointless_training.nemo_plugins.megatron_strategy import CheckpointlessMegatronStrategy import pytorch_lightning as pl # Create trainer with checkpointless auto-resume trainer = pl.Trainer( strategy=CheckpointlessMegatronStrategy(), resume=CheckpointlessAutoResume() )

Catatan

  • Memperluas NeMo AutoResume kelas dengan mekanisme penundaan untuk mengaktifkan pemulihan tanpa pemeriksaan

  • Bekerja bersama dengan alur CheckpointlessCompatibleConnector kerja pemulihan lengkap