1. Bedakan empat keadaan yang sering tercampur di layar
Koneksi yang terbuka hanya membuktikan bahwa Anda masih dapat berkomunikasi dengan mesin. Terminal yang terlihat bisa menampung shell yang komputasinya sudah selesai. Sebaliknya, kehilangan koneksi tidak berarti prosesnya berhenti. Jadi, mulailah dengan memberi nama pada eksekusi dan pada tempat untuk menemukan jejaknya.
Pantau secara terpisah keberadaan proses, progres bisnisnya, dan penerimaan hasilnya. Jumlah baris dalam log bukan penghitung data yang berhasil: sebuah program dapat mengulang peringatan yang sama. Output parsial bisa terbaca namun tidak lengkap.
Metode ini mengandaikan Anda telah menerima dan memverifikasi sarana akses yang diperlukan. Metode ini tidak menjanjikan protokol akses tertentu maupun penyimpanan file secara otomatis. Alat dan tujuan yang tersedia harus diperiksa pada environment yang benar-benar disediakan.
Geser tabel untuk membaca semua kolom.| Pengamatan | Apa yang ditunjukkannya | Apa yang tidak dibuktikannya |
|---|---|---|
| Koneksi aktif | Kanalnya merespons. | Komputasinya berjalan. |
| Proses ada | Sebuah eksekusi masih ada. | Ia memproses elemen yang benar. |
| Penghitung tervalidasi naik | Sejumlah unit yang direncanakan telah selesai. | Seluruh korpus telah selesai. |
| Kode keluar sama dengan nol | Program mengumumkan terminasi normal. | Hasilnya sesuai kontrak Anda. |
| Output terkendali dan telah diambil | Kriteria yang dipilih telah diverifikasi. | Kualitas di luar kriteria tersebut. |
2. Siapkan eksekusi yang dapat diidentifikasi sebelum melepaskannya
Periksa data, konfigurasi yang berlaku, dan satu kali jalan singkat aplikasi. Diagnostik GPU menjawab pertanyaan lain: apakah backend dapat menjalankan komputasi? Diagnostik itu tidak memvalidasi pemuatan korpus secara penuh maupun logika program Anda. Lakukan pemeriksaan ini sebelum meluncurkan durasi yang panjang.
Pilih pengenal eksekusi dan folder baru. Simpan perintah tanpa secret, versi kode, identitas input, dan hasil yang diharapkan. Tentukan tempat menulis log dan tempat mengambil file. Dua peluncuran tidak boleh menulis secara bersamaan ke folder yang sama.
Untuk pekerjaan yang terbagi menjadi partisi independen, tentukan kapan sebuah partisi dianggap selesai: komputasi tuntas, file ditutup, konten diperiksa, dan status tercatat. File yang sedang ditulis tidak boleh memiliki makna yang sama dengan hasil yang diterima. Periksa juga ruang yang benar-benar dapat digunakan sebelum mulai.
3. Jaga terminal tetap dapat ditemukan bila konteksnya memungkinkan
Jika lingkungan menyediakan shell Unix dan tmux, multiplexer ini memungkinkan Anda melepaskan terminal dan menemukannya kembali setelah terhubung ulang. Ini melindungi alur tersebut dari hilangnya klien koneksi; ini bukan mekanisme pemulihan setelah mesin dinyalakan ulang atau proses dihancurkan.
Perintah-perintah di bawah ini bersifat edukatif dan tidak dijalankan. Perintah ini mengasumsikan Bash, tmux, dan program Anda sendiri traitement.py, dengan opsi yang ditunjukkan; berkas ini bukan sumber daya yang disediakan. Periksa dulu perintah singkatnya dan gunakan nama sesi yang berbeda agar tidak tertukar antara dua komputasi.
Buat sesi, lalu jalankan blok kedua di dalamnya. Pembuatan folder gagal jika sudah ada, sehingga menghindari penggunaan ulang log-nya secara diam-diam. Kode keluar dipertahankan jika shell mencapai tahap penulisan; penghentian mendadak dapat mencegah pembuatan berkas tersebut. Jadi, tidak adanya kode bukan berarti sukses secara implisit.
Dengan pintasan default, lepaskan dengan Ctrl-b lalu d. Setelah terhubung ulang, daftarkan sesi lalu sambungkan kembali ke sesi yang tepat. Shell bisa tetap terlihat padahal program sudah selesai: periksa log dan kode yang tersimpan. Jangan langsung memulai salinan kedua hanya karena terminal lama Anda hilang.
tmux new -s campagne-amkdir -p runs
mkdir runs/campagne-a && (
code_retour=0
python -u traitement.py --config config.toml --output runs/campagne-a \
> runs/campagne-a/execution.log 2>&1 || code_retour=$?
printf '%s\n' "$code_retour" > runs/campagne-a/exit-code.txt
exit "$code_retour"
)tmux ls
tmux attach -t campagne-a4. Menghitung pekerjaan yang diterima, bukan hanya aktivitas
Opsi Python -u menghilangkan buffering pada keluaran standar dan keluaran errornya. Ini membantu Anda melihat pesan yang dikirim, tetapi tidak menciptakan peristiwa kemajuan di dalam aplikasi. Pustaka atau tahap yang senyap masih bisa memerlukan pemantauan tersendiri.
Tentukan fase-fase yang mudah dipahami: pembacaan, persiapan, komputasi, penulisan, verifikasi. Tambahkan penghitung yang satuannya konsisten, serta total jika diketahui. Jika Anda menghitung partisi yang diterima, jangan beralih ke penghitung baris yang dibaca di tengah log tanpa mengubah namanya.
Contoh edukatif berikut mencakup delapan partisi berisi lima ratus elemen, yaitu empat ribu elemen. Pada momen yang diilustrasikan, hanya lima partisi yang diterima. Partisi keenam bersifat parsial dan tidak boleh menambah total. Angka-angka ini menunjukkan aturan penghitungan; angka-angka ini tidak menggambarkan eksekusi Kernodeck mana pun.
Geser tabel untuk membaca semua kolom.| Partisi | Status | Elemen yang dihitung sebagai diterima | Keputusan |
|---|---|---|---|
| 1 hingga 5 | Terverifikasi | 2 500 | Pertahankan identitas dan hasilnya. |
| 6 | Penulisan parsial | 0 | Jangan nyatakan partisi ini selesai. |
| 7 dan 8 | Akan diproses | 0 | Tetap dalam daftar kerja. |
| Keseluruhan | Tidak lengkap | 2.500 dari 4.000 | Jangan terima folder akhir. |
5. Memeriksa kesenyapan atau gangguan tanpa membuat duplikat
Ketika tidak ada penghitung yang bergerak, identifikasi fase terakhir yang diketahui dan unit terakhir yang selesai. Periksa apakah prosesnya masih ada, apakah muncul pesan kesalahan, dan apakah tujuan masih dapat digunakan. Pemuatan model yang lambat dan loop yang macet bisa menghasilkan layar diam yang sama; kontekslah yang menentukan pemeriksaan berikutnya.
Siapkan penghentian sukarela di aplikasi Anda: permintaan berhenti, penyelesaian unit yang aman, penyimpanan status, lalu keluar. Sinyal dan gangguan bergantung pada sistem. Python tidak dapat menangkap SIGKILL, dan pengendali Python dapat menunggu selesainya panggilan native yang panjang sebelum dijalankan. Jadi, pencadangan saat berhenti tidak menggantikan pencadangan berkala.
Setelah kehilangan koneksi, temukan kembali sesi dan eksekusi yang sudah ada terlebih dahulu. Setelah penghentian yang terkonfirmasi, tentukan apa yang lengkap dan apa yang parsial. Untuk pelatihan, pemulihan memerlukan status rinci model dan optimisasi; panduan khusus memverifikasi kasus ini dalam proses baru.
6. Melanjutkan hanya apa yang diizinkan kontrak
Dalam contoh kami, pemulihan per partisi mengasumsikan setiap partisi independen dan masukan, kode, serta konfigurasi tetap identik. Ia dapat mempertahankan lima hasil yang telah divalidasi dan menghitung ulang partisi keenam sepenuhnya sebelum melanjutkan dua partisi berikutnya. Jika asumsi tersebut tidak terpenuhi, jalan pintas ini tidak dapat dibenarkan.
Jangan sekadar menambahkan baris baru ke berkas parsial. Anda berisiko menghasilkan duplikat atau mencampur dua konfigurasi. Gunakan pengenal yang diharapkan untuk membedakan lengkap, tidak lengkap, dan tidak ada. Simpan status lama sebagai bahan penjelasan, dengan tujuan terpisah untuk upaya baru.
Uji strategi Anda pada gangguan yang terkendali sebelum bergantung padanya untuk pemrosesan besar. Kriterianya adalah kesetaraan keluaran yang berguna sesuai kontrak Anda, bukan kesamaan pesan progres. Pelatihan, komputasi dengan efek eksternal, dan pemrosesan terdistribusi memerlukan jaminan lain selain contoh partisi independen ini.
7. Terima dan ambil hasil sebelum menutup pekerjaan
Mulailah dari kode keluar, lalu cocokkan keluaran dengan manifes masukan. Untuk contoh kami, tunggu delapan partisi dan empat ribu pengenal yang direncanakan, tanpa kekurangan maupun duplikat. Periksa format, dimensi, dan nilai yang relevan; membaca sebuah berkas tidak membuktikan bahwa isinya adalah hasil yang benar.
Ambil keluaran yang diterima, konfigurasi yang diizinkan, versi, dan laporan pemeriksaan. Bandingkan ukuran dan, jika perlu, sidik jari antara asal dan salinan. Sidik jari yang identik membantu memverifikasi transfer bita; ia tidak membuktikan kualitas model maupun asal-usul berkas yang sah.
Terakhir, buka sebuah hasil dari tujuan penyimpanannya, dengan alat yang akan menggunakannya. Rencanakan langkah ini sebelum akses Anda ke komputasi berakhir. Pekerjaan selesai ketika hasil yang telah diperiksa dapat diambil dan diinterpretasikan, bukan ketika persentase terakhir mencapai seratus.