1. Referansı ve beklenen sonucu tanımlama
Yeniden yapmak istediğiniz şeyle başlayın: aynı kategorileri üretmek, yakın değerler elde etmek veya bir eğitim yörüngesini sürdürmek. Önemli adımlardan geçen küçük bir giriş kümesi ve geçerli bir çıktı örneği saklayın. Hatasız tamamlanan bir kurulum bu soruyu henüz yanıtlamaz.
Eğitici bir örnek ele alalım: uygulamanız tanımlanmış bir örnek için embedding üretiyor. Referans ortamda çıktıların biçimini, türünü, sonlu olmayan değerlerin bulunmadığını ve işe yarayan iş kriterini belirlemeniz gerekir. Değerleri karşılaştırıyorsanız, kullanımınıza göre gerekçelendirilmiş bir tolerans seçin. Burada evrensel bir sayısal eşik verilmemektedir.
Koda, verilere ve ağırlıklara bir revizyon atayın. « son-model » gibi bir ad, program göstermeden değişebilir. Parametreleri ve ön işlemeyi de referansa bağlayın. Bu dosya, bir farkın yazılımdan mı, girdilerden mi yoksa çalıştırma koşullarından mı kaynaklandığını bilmenizi sağlar.
Tüm sütunları görmek için tabloyu kaydırın.| Öğe | Korunacaklar | Yeniden oluşturma sonrası kontrol |
|---|---|---|
| Kod ve parametreler | Revizyon, olası değişiklikler, yapılandırma | Aynı giriş noktası ve aynı seçenekler. |
| Veriler ve ağırlıklar | Sürüm veya parmak izi, kaynak ve erişim hakları | Aynı örnek ve aynı beklenen içerik. |
| Python ve paketler | Sürümler, yordam ve kurulum kaynakları | Doğru yorumlayıcı ve tutarlı bağımlılıklar. |
| Sistem ve arka uç | İşletim sistemi, mimari, sürücü, CUDA veya ROCm | Görünür aygıt ve başarılı asgari hesaplama. |
| Sonuç | Biçim ve kabul kriterleri | Önce yapı, ardından kalite veya öngörülen tolerans. |
2. Sistem zincirini Python paketlerinden ayırma
Kartı, sistemi, sürücüyü, Python'u ve kütüphaneleri birlikte doğrulayın. Sanal bir ortam Python paketlerini düzenler; sistem sürücüsünün yerini almaz. Aynı şekilde, bir imajın referansı, GPU'ya ana makinesinden gerçek erişimi tanımlamaya yetmez. Derlenmiş bir uzantı için gerekli derleme araçlarını ve kütüphanelerini kaydedin.
PyTorch dağıtımını projenizin hesaplama platformuna göre seçin. ROCm üzerinde PyTorch torch.cuda çağrılarını ve cuda adlı aygıtları yeniden kullanır: arayüz adı NVIDIA'yı tanımlamaya izin vermez. torch.version.cuda ve torch.version.hip değerlerini ayrı ayrı kaydedin. Belirli bir zincir için yazılmış bir uzantı kendi kontrolünü hak eder.
Kurulumu gerçekten mümkün kılan yordamı, paketlerin kaynağıyla birlikte saklayın. İnternette bulunan güncel bir komutu, uyumluluğunu incelemeden eski bir bağımlılık dosyasıyla karıştırmaktan kaçının. Başvurulan belgeler değişebilir; kullanılan sürümleri kendi dosyanıza yazın.
3. Kurulu dosyayı kopyalamak yerine yeniden oluşturma yazma
Seçilen Python ile yeni bir ortam oluşturun. Ardından projeyi kurmak ve çalıştırmak için açıkça onun yorumlayıcısını kullanın. Linux'ta bu örneğin .venv-rebuild/bin/python olur; Windows'ta .venv-rebuild\Scripts\python.exe. Önceden yapılmış bir etkinleştirmeye bağlı kalmanız gerekmez. Python belgeleri, bir sanal ortamın konumu değiştiğinde yeniden oluşturulması gerektiğini belirtir.
pip freeze kurulu paketlerin bir dökümünü verir, hesaplanmış bir kilitleme dosyası değil. Bunu bir gözlem olarak saklayın. Yeniden oluşturma dosyası ayrıca PyTorch varyantınız için gerekli dizinleri veya dosyaları ve uyumlu sürümleri açıkça belirtmelidir. Bir dökümün içerebileceği yolları veya URL'leri paylaşmadan önce gözden geçirin.
Aşağıdaki komutlar uyarlanacak bir Linux yeniden oluşturmasını örnekler; projenizin çalıştırılmış bir denemesi değildir. requirements-rebuild.txt dosyası, PyTorch'un doğru seçimi dahil olmak üzere ortamınızı zaten tanımlıyor olmalıdır. Onu evrensel olduğu varsayılan sürümler listesiyle değiştirmeyin.
python -m venv .venv-rebuild
.venv-rebuild/bin/python -m pip --version
.venv-rebuild/bin/python -m pip install -r requirements-rebuild.txt
.venv-rebuild/bin/python -m pip check
.venv-rebuild/bin/python -m pip freeze --all > installed-after.txt4. Hesaplamadan önce bağımlılık sözleşmesini doğrulama
Doğru yorumlayıcıyla çalıştırılan python -m pip check, üst verilerine göre eksik veya uyumsuz kurulu bağımlılıkları arar. Çakışma olmaması, sürücünün, yerel uzantıların veya uygulamanın kalitesinin doğrulanması anlamına gelmez. Bu nedenle bu adımı kısa tutun ve bir hesaplama kontrolüne geçin.
Yeniden oluşturmayı daha katı hale getirmek için sürümleri sabitleyebilir ve izin verilen dağıtımların parmak izlerini saklayabilirsiniz. Bu karar, platformunuzla eşleşen tam listeyi sürdürmeyi gerektirir. Derlenmiş tekerlek arşivi işletim sistemine ve mimariye bağlı olabilir; iki farklı makine arasında taşınabilirlik garantisi değildir.
Embedding örneğimizde, modeli veya parametrelerini değiştirmeden önce yeniden oluşturulan envanteri referansla karşılaştırın. Bir fark kasıtlıysa bunu not edin ve yeni çalıştırmayı bir varyant olarak ele alın. Aksi halde yeniden oluşturmayı düzeltin; birden fazla katmanı aynı anda değiştirmek tanılamayı daha az kesin hale getirir.
5. Asgari kontrolden uygulamaya geçmek
Projenin yorumlayıcısında Python, PyTorch ve arka ucu belirleyin, ardından aygıtı ve küçük bir hesaplamayı doğrulayın. Beklenen GPU erişilebilir değilse bu adımı durdurun; yedek bir CPU çalıştırması karşılaştırmayı bulandırır. Kernodeck tanılaması yorumlanabilir bir rapor sunar ve gerçekten geçilen adımları ayırt eder.
Bu kontrol başarılı olduğunda küçük uygulama örneğinizi kullanın. Embedding'ler için çıktı sayısını, boyutlarını, kimliklerle eşleşmelerini ve seçilen kriteri doğrulayın. Dosyaları çıktı klasöründen yeniden yükleyin. Başarılı bir matris hesaplaması, ön işlemenin veya bir proje eklentisinin çalıştığını kanıtlamaz.
Deneme veri okuma, aktarım veya belirli bir işlem sırasında çökerse adımı ve ilk hatayı saklayın. Genel yeniden oluşturma doğru olabilir; tıkanma veri yükleyiciye veya belirli bir operatöre ait olabilir. Bu durumda tanılamayı o katmana yönlendirin.
6. Yeniden oluşturma ile sayısal kimliği ayırt etmek
Aynı bağımlılıkları bulmak, donanımlar, platformlar veya PyTorch sürümleri arasında aynı sonuçları garanti etmez. Bir tohum sabitlemek tüm varyasyon kaynaklarını kapsamaz. Kullanılan üreteçleri, veri dönüşümlerini ve ilgili hassasiyet veya determinizm ayarlarını belgeleyin.
Karşılaştırma kriterini farkı görmeden önce tanımlayın: tam yapı, sayısal tolerans veya bir metriğin kararlılığı. Bazı deterministik ayarlar işlemleri reddedebilir veya hesaplama maliyetini değiştirebilir. Aranan sonuç, ilan edilen koşullarda anlaşılır bir sonuçtur, her makinede kimlik vaadi değil.
Bir eğitimi sürdürmek için sürümler yeterli değildir: hesaplama durumunu ve ilerlemeyi de geri yüklemek gerekir. Sürdürme dosyası bu soruyu ayrıca kontrol eder. CPU alıştırması ve toleransı otomatik olarak sizin modelinizin koşulları haline gelmez.
7. Başka bir başlatmanın kullanabileceği bir dosyayla bitirmek
Nihai dosya prosedürü, gözlemlenen envanteri, yapılandırmayı, veri referanslarını ve kontrol sonuçlarını bir araya getirir. Tam sırayı ekleyin: yeniden oluştur, tanıla, örneği çalıştır, çıktıyı yeniden oku. Erişim bilgilerini ayrı tutun ve yalnızca nasıl sağlanacağını belirtin.
Ortamı aktarılabilir olarak değerlendirmeden önce bu sırayı temiz bir dosyada yeniden uygulayın. Kontrol, eski bir notebook'tan bir değişkeni almadan veya unutulmuş bir dosyayı aramadan başarılı olmalıdır. Bir değişiklik gerekliyse prosedürü düzeltin ve referansa yeni bir kimlik verin. Bir sonraki hesaplama döneminiz için kullanılabilir bir temel elde edersiniz.