1. Ekranın karıştırdığı dört durumu ayırt edin
Açık bir bağlantı yalnızca makineyle hâlâ iletişim kurabildiğinizi kanıtlar. Görünür bir terminal, hesaplaması çoktan bitmiş bir kabuğu barındırıyor olabilir. Tersine, bağlantıyı kaybetmek sürecin durduğu sonucuna varmanızı sağlamaz. Öyleyse önce çalıştırmaya ve izlerini bulacağınız yere bir ad verin.
Sürecin varlığını, işleyiş ilerlemesini ve sonucun onaylanmasını ayrı ayrı izleyin. Bir günlükteki satır sayısı başarılı verilerin sayacı değildir: bir program aynı uyarıyı tekrarlayabilir. Kısmi bir çıktı okunabilir olduğu hâlde eksik olabilir.
Bu yöntem, gerekli erişim araçlarını alıp doğruladığınızı varsayar. Belirli bir erişim protokolü veya dosyaların otomatik olarak saklanmasını vaat etmez. Kullanılabilir araçlar ve hedefler, fiilen sağlanan ortamda kontrol edilmelidir.
Tüm sütunları görmek için tabloyu kaydırın.| Gözlem | Ne gösterdiği | Neyi kanıtlamadığı |
|---|---|---|
| Etkin bağlantı | Kanal yanıt veriyor. | Hesaplama ilerliyor. |
| Süreç mevcut | Bir çalıştırma hâlâ var. | Doğru öğeleri işliyor. |
| Onaylanan sayaç artıyor | Öngörülen birimler tamamlandı. | Tüm derlem tamamlandı. |
| Dönüş kodu sıfıra eşit | Program normal bir sonlanma bildiriyor. | Sonuç sözleşmenize uyuyor. |
| Kontrollü ve alınmış çıktılar | Seçilen ölçütler doğrulandı. | Bu ölçütlerin ötesinde bir kalite. |
2. Ayırmadan önce tanımlanabilir bir çalıştırma hazırlayın
Verileri, etkin yapılandırmayı ve uygulamanın kısa bir ilk geçişini kontrol edin. GPU tanılaması başka bir soruyu yanıtlar: arka uç bir hesaplama yürütebiliyor mu? Derlemin tam olarak yüklenmesini veya programınızın mantığını doğrulamaz. Bu kontrolleri önemli bir süreyi başlatmadan önce yapın.
Bir çalıştırma tanımlayıcısı ve yeni bir klasör seçin. Sırrı içermeyen komutu, kodun sürümünü, girdilerin kimliğini ve beklenen sonucu saklayın. Günlüklerin nereye yazılacağını ve dosyaların nereden alınacağını planlayın. İki başlatma aynı anda aynı klasöre yazmamalıdır.
Bağımsız bölümlere ayrılmış bir iş için bir bölümün ne zaman tamamlandığına karar verin: hesaplama bitti, dosya kapatıldı, içerik kontrol edildi ve durum kaydedildi. Yazılmakta olan bir dosya, kabul edilmiş bir sonuçla aynı anlama gelmemelidir. Başlamadan önce gerçekten kullanılabilir alanı da doğrulayın.
3. Bağlam izin verdiğinde terminali bulunabilir tutun
Ortam bir Unix kabuğu ve tmux sunuyorsa, bu çoklayıcı bir terminali ayırıp yeniden bağlandıktan sonra geri bulmanızı sağlar. Bu akışı bağlantı istemcisinin kaybına karşı korur; makinenin yeniden başlatılması veya sürecin yok edilmesi durumunda kurtarma mekanizması değildir.
Aşağıdaki komutlar eğitim amaçlıdır ve çalıştırılmaz. Bash, tmux ve gösterilen seçeneklerle kendi traitement.py programınızı varsayar; bu dosya sağlanan bir kaynak değildir. Önce kısa komutunu doğrulayın ve iki hesaplamayı karıştırmamak için farklı bir oturum adı kullanın.
Oturumu oluşturun, ardından ikinci bloğu içinde başlatın. Klasör oluşturma, zaten varsa başarısız olur; bu da günlüklerinin sessizce yeniden kullanılmasını önler. Kabuk yazma adımına ulaşırsa dönüş kodu korunur; ani bir durma bu dosyanın oluşturulmasını engelleyebilir. Dolayısıyla kodun yokluğu örtük bir başarı değildir.
Varsayılan kısayollarla Ctrl-b ardından d ile ayırın. Yeniden bağlandıktan sonra oturumları listeleyin ve doğru olanı yeniden bağlayın. Program bitmiş olsa bile kabuk görünür kalabilir: günlüğe ve kaydedilen koda bakın. Eski terminaliniz kayboldu diye hemen ikinci bir kopya başlatmayın.
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. Yalnızca etkinliği değil, kabul edilen işi sayma
Python -u seçeneği, standart ve hata çıkışlarının arabelleğe alınmasını kaldırır. Yayılan mesajları görmeye yardımcı olur, ancak uygulamada ilerleme olayları oluşturmaz. Bir kitaplık veya sessiz bir adım yine de ayrı bir gözlem gerektirebilir.
Anlaşılır aşamalar tanımlayın: okuma, hazırlık, hesaplama, yazma, doğrulama. Birimi sabit kalan bir sayaç ve bilindiğinde bir toplam ekleyin. Kabul edilen bölümleri sayıyorsanız, günlüğün ortasında adını değiştirmeden okunan satır sayacına geçmeyin.
Aşağıdaki eğitim örneği, her biri beş yüz öğeden oluşan sekiz bölümü, yani dört bin öğeyi ele alır. Gösterilen anda yalnızca beş bölüm kabul edilmiştir. Altıncısı kısmi olup toplamı şişirmemelidir. Sayılar bir sayma kuralını gösterir; hiçbir Kernodeck çalıştırmasını tanımlamaz.
Tüm sütunları görmek için tabloyu kaydırın.| Bölümler | Durum | Kabul edilmiş sayılan öğeler | Karar |
|---|---|---|---|
| 1 ila 5 | Doğrulandı | 2 500 | Kimliklerini ve sonuçlarını koru. |
| 6 | Kısmi yazma | 0 | Bu bölümü tamamlandı diye bildirme. |
| 7 ve 8 | İşlenecek | 0 | Çalışma listesinde kal. |
| Tamamı | Eksik | 4.000 üzerinden 2.500 | Nihai klasörü kabul etme. |
5. Bir sessizliği veya kesintiyi yineleme oluşturmadan inceleme
Hiçbir sayaç ilerlemediğinde, bilinen son aşamayı ve tamamlanan son birimini belirleyin. Sürecin var olup olmadığını, bir hata mesajının görünüp görünmediğini ve hedefin hâlâ kullanılabilir olup olmadığını kontrol edin. Yavaş bir model başlangıcı ile bloke olmuş bir döngü aynı hareketsiz ekranı üretebilir; sonraki kontrolü bağlam belirler.
Uygulamanızda istemli durdurmayı hazırlayın: durdurma isteği, güvenli bir birimin bitişi, durum kaydı, ardından çıkış. Sinyaller ve kesintiler sisteme bağlıdır. Python SIGKILL'i yakalayamaz ve bir Python işleyicisi, uzun bir yerel çağrının bitmesini bekleyebilir. Dolayısıyla kapanışta alınan bir yedek, düzenli yedeklerin yerini tutmaz.
Bir bağlantı kaybından sonra önce mevcut oturumu ve çalıştırmayı geri bulun. Onaylanmış bir durdurmadan sonra neyin tam, neyin kısmi olduğunu belirleyin. Bir eğitim için sürdürme, ayrıntılı model ve optimizasyon durumlarını gerektirir; ilgili kılavuz bu durumu yeni bir süreçte doğrular.
6. Yalnızca sözleşmenin izin verdiğini sürdürme
Örneğimizde, bölüm bazlı devam etme, her bölümün bağımsız olduğunu ve girdi, kod ve yapılandırmanın aynı kaldığını varsayar. Onaylanmış beş sonucu koruyup altıncıyı tamamen yeniden hesaplayarak sonraki ikisine devam edebilir. Bu varsayımlar geçerli değilse, bu kısayol haklı görülemez.
Yeni satırları kısmi dosyaya öylece eklemeyin. Yinelenen kayıtlar oluşturma veya iki yapılandırmayı karıştırma riskiyle karşılaşırsınız. Tam, eksik ve mevcut olmayan durumları ayırt etmek için beklenen tanımlayıcıları kullanın. Eski durumu bir açıklama öğesi olarak, yeni deneme için ayrı bir hedefle saklayın.
Büyük bir işlem için bu stratejiye güvenmeden önce, kontrollü bir kesintiyle stratejinizi doğrulayın. Ölçüt, ilerleme mesajlarının aynılığı değil, sözleşmenize göre faydalı çıktıların denkliğidir. Eğitimler, dış etkileri olan hesaplamalar ve dağıtılmış işlemler, bu bağımsız bölümler örneğinden farklı güvenceler gerektirir.
7. İşi kapatmadan önce sonucu kabul etme ve geri alma
Önce dönüş koduyla başlayın, ardından çıktıları girdi bildirimiyle karşılaştırın. Örneğimiz için, eksik veya yinelenen olmaksızın beklenen sekiz bölümü ve dört bin tanımlayıcıyı bekleyin. Biçimi, boyutları ve ilgili değerleri kontrol edin; bir dosyayı okumak, doğru sonucu içerdiğini kanıtlamaz.
Kabul edilen çıktıları, izin verilen yapılandırmayı, sürümleri ve kontrol raporunu alın. Boyutları ve gerekirse kaynak ile kopya arasındaki özet değerleri karşılaştırın. Aynı özet değer, baytların aktarımını doğrulamaya yardımcı olur; ne modelin kalitesini ne de dosyanın meşru kaynağını kanıtlar.
Son olarak, bir sonucu saklama hedefinden, onu kullanacak araçla açın. Bu adımı hesaplama erişiminizin sona ermesinden önce planlayın. İş, kontrol edilen sonuç geri alınabilir ve yorumlanabilir olduğunda tamamlanır; son yüzde yüze ulaştığında değil.