PyTorch Modelini Eğitme
Bu makalede, Azure Machine Learning tasarımcısında PyTorch Modelini Eğitme bileşenini kullanarak DenseNet gibi PyTorch modellerini eğitme adımları açıklanmaktadır. Eğitim, bir modeli tanımladıktan ve parametrelerini ayarladıktan sonra gerçekleştirilir ve etiketlenmiş veriler gerektirir.
Şu anda, Train PyTorch Model bileşeni hem tek düğümü hem de dağıtılmış eğitimi destekler.
PyTorch Modelini Eğitme'yi kullanma
Tasarımcıda işlem hattı taslağınıza DenseNet bileşeni veya ResNet ekleyin.
pytorch modeli bileşenini işlem hattına ekleyin. Bu bileşeni Model Eğitimi kategorisi altında bulabilirsiniz. Eğit'i genişletin ve ardından PyTorch Modelini Eğit bileşenini işlem hattınıza sürükleyin.
Not
PyTorch Modeli bileşenini eğitme, büyük veri kümesi için GPU türü işlemde daha iyi çalıştırılır, aksi takdirde işlem hattınız başarısız olur. Diğer işlem hedefini kullan'ı ayarlayarak bileşenin sağ bölmesinde belirli bir bileşen için işlem seçebilirsiniz.
Sol girişte, eğitilmemiş bir model ekleyin. Eğitim veri kümesini ve doğrulama veri kümesini PyTorch Modelini Eğitme'nin orta ve sağ girişine ekleyin.
Eğitilmemiş model için, DenseNet gibi bir PyTorch modeli olmalıdır; aksi takdirde bir 'InvalidModelDirectoryError' oluşturulur.
Veri kümesi için eğitim veri kümesinin etiketli bir görüntü dizini olması gerekir. Etiketli görüntü dizini almak için Görüntü Dizinine Dönüştür'e bakın. Etiketlenmemişse bir 'NotLabeledDatasetError' oluşturulur.
Eğitim veri kümesi ve doğrulama veri kümesi aynı etiket kategorilerine sahiptir, aksi takdirde bir InvalidDatasetError oluşturulur.
Dönemler için, eğitmek istediğiniz dönem sayısını belirtin. Veri kümesinin tamamı varsayılan olarak 5 olmak üzere her dönem yinelenir.
Batch boyutu için, bir toplu işlemde eğitilmesi gereken örnek sayısını (varsayılan olarak 16) belirtin.
Isınma adım numarası için, ilk öğrenme oranının yakınsama başlatmak için biraz fazla büyük olması durumunda, eğitimi ısıtmak istediğiniz dönem sayısını belirtin( varsayılan olarak 0).
Öğrenme oranı için öğrenme oranı için bir değer belirtin ve varsayılan değer 0,001'dir. Öğrenme hızı, modelin her test ve düzeltmesinde sgd gibi iyileştiricide kullanılan adımın boyutunu denetler.
Hızı daha küçük ayarlayarak modeli daha sık test eder ve yerel bir platoda takılma riskiniz olur. Hızı daha büyük ayarlayarak, gerçek minima'yı aşırı dağıtma riskiyle daha hızlı bir şekilde yakınsayabilirsiniz.
Not
Eğitim sırasında tren kaybı çok büyük öğrenme hızından kaynaklanabilirse öğrenme oranının azaltılması yararlı olabilir. Dağıtılmış eğitimde gradyan azalmasını kararlı tutmak için gerçek öğrenme oranı tarafından hesaplanır
lr * torch.distributed.get_world_size()
çünkü işlem grubunun toplu iş boyutu tek bir işlemin dünya boyutuna göre değişir. Polinom öğrenme hızı bozulması uygulanır ve daha iyi performans gösteren bir modele neden olabilir.Rastgele tohum için isteğe bağlı olarak, tohum olarak kullanılacak bir tamsayı değeri yazın. Denemenin işler arasında yeniden üretilebilirliğini sağlamak istiyorsanız, bir tohum kullanılması önerilir.
Patience için doğrulama kaybı art arda azalmazsa eğitimin kaç dönem erken durdurulacağını belirtin. varsayılan olarak 3.
Yazdırma sıklığı için, her dönemdeki yinelemeler üzerinde eğitim günlüğü yazdırma sıklığını varsayılan olarak 10 olarak belirtin.
İşlem hattını gönderin. Veri kümenizin boyutu daha büyükse bu işlem biraz zaman alır ve GPU işlem önerilir.
Dağıtılmış eğitim
Dağıtılmış eğitimde bir modeli eğitmek için iş yükü bölünür ve çalışan düğümleri olarak adlandırılan birden çok mini işlemci arasında paylaşılır. Bu çalışan düğümleri model eğitimini hızlandırmak için paralel olarak çalışır. Tasarımcı şu anda PyTorch Modelini Eğitme bileşeni için dağıtılmış eğitimi desteklemekte.
Eğitim süresi
Dağıtılmış eğitim, PyTorch Modelini Eğiterek ImageNet gibi büyük bir veri kümesinde (1000 sınıf, 1,2 milyon görüntü) yalnızca birkaç saat içinde eğitim almayı mümkün kılar. Aşağıdaki tabloda, farklı cihazlara dayalı sıfırdan ImageNet üzerinde Resnet50'nin 50 dönemi boyunca eğitim süresi ve performansı gösterilmektedir.
Cihazlar | Eğitim Zamanı | Eğitim Aktarım Hızı | İlk 1 Doğrulama Doğruluğu | İlk 5 Doğrulama Doğruluğu |
---|---|---|---|---|
16 V100 GPU | 6h22dk | ~3200 Resim/Sn | 68.83% | 88.84% |
8 V100 GPU | 12h21 dak. | ~1670 Resim/Sn | 68.84% | 88.74% |
Bu bileşen 'Ölçümler' sekmesine tıklayın ve 'Saniyede görüntü eğit' ve 'İlk 1 doğruluk' gibi eğitim ölçüm graflarına bakın.
Dağıtılmış eğitimi etkinleştirme
PyTorch Modelini Eğitme bileşeni için dağıtılmış eğitimi etkinleştirmek için bileşenin sağ bölmesindeki İş ayarları'nda ayarlayabilirsiniz. Dağıtılmış eğitim için yalnızca AML İşlem kümesi desteklenir.
Not
Dağıtılmış eğitimi etkinleştirmek için birden çok GPU gereklidir çünkü NCCL arka ucu PyTorch Modeli bileşeninin cuda kullanması gerekir.
Bileşeni seçin ve sağ paneli açın. İş ayarları bölümünü genişletin.
İşlem hedefi için AML işlem'i seçtiğinizden emin olun.
Kaynak düzeni bölümünde aşağıdaki değerleri ayarlamanız gerekir:
Düğüm sayısı : Eğitim için kullanılan işlem hedefindeki düğüm sayısı. İşlem kümenizin düğüm sayısı üst sınırından küçük veya buna eşit olmalıdır. Varsayılan olarak 1'dir ve bu da tek düğüm iş anlamına gelir.
Düğüm başına işlem sayısı: Düğüm başına tetiklenen işlem sayısı. İşleminizin İşlem Birimi'ne eşit veya daha küçük olmalıdır. Varsayılan olarak 1'dir ve bu da tek işlem işi anlamına gelir.
İşlem ayrıntı sayfasında işlem adına tıklayarak İşleminizin En fazla düğüm sayısı ve İşlem Birimi'ni de kontrol edebilirsiniz.
Azure Machine Learning'de dağıtılmış eğitim hakkında daha fazla bilgiyi burada bulabilirsiniz.
Dağıtılmış eğitim için sorun giderme
Bu bileşen için dağıtılmış eğitimi etkinleştirirseniz, her işlem için sürücü günlükleri olacaktır. 70_driver_log_0
ana işlem içindir. Sağ bölmedeki Çıkışlar+günlükler sekmesinden sürücü günlüklerinde her işlemin hata ayrıntılarını kontrol edebilirsiniz.
Bileşen etkin dağıtılmış eğitim herhangi bir 70_driver
günlük olmadan başarısız olursa hata ayrıntılarını de kontrol 70_mpi_log
edebilirsiniz.
Aşağıdaki örnekte düğüm başına işlem sayısı, işlemin İşlem Biriminden daha büyük olan yaygın bir hata gösterilmektedir.
Bileşen sorunlarını giderme hakkında daha fazla bilgi için bu makaleye başvurabilirsiniz.
Sonuçlar
İşlem hattı işi tamamlandıktan sonra, modeli puanlama için kullanmak üzere PyTorch Modelini Görüntü Modelini Puanlayacak Şekilde Eğitme'yi bağlayarak yeni giriş örneklerinin değerlerini tahmin edin.
Teknik notlar
Beklenen girişler
Adı | Tür | Açıklama |
---|---|---|
Eğitilmemiş model | UntrainedModelDirectory | Eğitilmemiş model, PyTorch gerektirir |
Eğitim veri kümesi | ImageDirectory | Eğitim veri kümesi |
Doğrulama veri kümesi | ImageDirectory | Her dönem değerlendirme için doğrulama veri kümesi |
Bileşen parametreleri
Veri Akışı Adı | Aralık | Tür | Varsayılan | Açıklama |
---|---|---|---|---|
Dönemler | >0 | Tamsayı | 5 | Etiket veya sonuç sütununu içeren sütunu seçin |
Toplu iş boyutu | >0 | Tamsayı | 16 | Toplu olarak eğitmek için kaç örnek |
Isınma adımı numarası | >=0 | Tamsayı | 0 | Eğitimin ısınması için kaç dönem |
Öğrenme oranı | >=double. Epsilon | Satışa Arz | 0,1 | Stokastik Gradyan Azalma iyileştiricisi için ilk öğrenme oranı. |
Rastgele çekirdek | Tümü | Tamsayı | 1 | Model tarafından kullanılan rastgele sayı oluşturucunun tohumu. |
Sabır | >0 | Tamsayı | 3 | Eğitimi erken durdurmak için kaç dönem |
Yazdırma sıklığı | >0 | Tamsayı | 10 | Her dönemdeki yinelemeler üzerinde eğitim günlüğü yazdırma sıklığı |
Çıkışlar
Adı | Tür | Açıklama |
---|---|---|
Eğitilmiş model | Model Dizini | Eğitilmiş model |
Sonraki adımlar
Bkz. Azure Machine Learning için kullanılabilen bileşenler kümesi.