GPU untuk proyek Anda · pembayaran kripto tanpa KYC Cara menyewa
Bahasa Indonesia
Buka konsol
Panduan praktis / KERNODECK

Proses yang selesai belum berarti hasil yang diterima.

Sebelum pemrosesan yang lama, tetapkan input, tujuannya, peristiwa progresnya, dan kriteria keberhasilannya. Jika Anda memiliki shell jarak jauh, pisahkan sesi koneksi dari proses komputasi. Di akhir, periksa kode keluar lalu hasilnya sendiri: perintah tanpa kesalahan tidak membuktikan bahwa semua data telah diproses maupun bahwa outputnya dapat digunakan.

7 menit baca · Panduan untuk developer

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.
Setiap pengamatan menjawab pertanyaan yang berbeda.
PengamatanApa yang ditunjukkannyaApa yang tidak dibuktikannya
Koneksi aktifKanalnya merespons.Komputasinya berjalan.
Proses adaSebuah eksekusi masih ada.Ia memproses elemen yang benar.
Penghitung tervalidasi naikSejumlah unit yang direncanakan telah selesai.Seluruh korpus telah selesai.
Kode keluar sama dengan nolProgram mengumumkan terminasi normal.Hasilnya sesuai kontrak Anda.
Output terkendali dan telah diambilKriteria 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.

Membuat sesi — perintah edukatif
tmux new -s campagne-a
Di dalam sesi — contoh untuk disesuaikan, tidak dijalankan
mkdir -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"
)
Setelah terhubung ulang — menemukan kembali sesi
tmux ls
tmux attach -t campagne-a

4. 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.
Cuplikan edukatif yang tidak dijalankan: lima dari delapan partisi diterima.
PartisiStatusElemen yang dihitung sebagai diterimaKeputusan
1 hingga 5Terverifikasi2 500Pertahankan identitas dan hasilnya.
6Penulisan parsial0Jangan nyatakan partisi ini selesai.
7 dan 8Akan diproses0Tetap dalam daftar kerja.
KeseluruhanTidak lengkap2.500 dari 4.000Jangan 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.

Pertanyaan Anda

Apakah menutup koneksi jarak jauh selalu menghentikan komputasi?

Tidak: itu bergantung pada cara proses diluncurkan. Sesi tmux memungkinkan untuk melepaskannya dari terminal klien, jika alat itu tersedia. Setelah menyambung kembali, cari dulu eksekusi yang sudah ada sebelum meluncurkan yang lain.

Apakah kode keluar sama dengan nol cukup untuk memvalidasi hasil saya?

Tidak. Itu menunjukkan bahwa program menyatakan terminasi normal. Periksa juga kelengkapan pengenal, format, dan kriteria bisnis yang direncanakan. Sebuah program dapat berakhir normal setelah memproses subset yang salah.

Apakah log yang tidak bergerak berarti GPU macet?

Tidak selalu. Program mungkin sedang menyiapkan data, menunggu penulisan, atau tidak mengeluarkan progres. Identifikasi fase dan status proses sebelum memutuskan penghentian. Penghitung bisnis yang eksplisit lebih berguna daripada sekadar adanya pesan.