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

  1. Tasarımcıda işlem hattı taslağınıza DenseNet bileşeni veya ResNet ekleyin.

  2. 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.

  3. 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.

  4. 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.

  5. Batch boyutu için, bir toplu işlemde eğitilmesi gereken örnek sayısını (varsayılan olarak 16) belirtin.

  6. 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).

  7. Öğ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.

  8. 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.

  9. Patience için doğrulama kaybı art arda azalmazsa eğitimin kaç dönem erken durdurulacağını belirtin. varsayılan olarak 3.

  10. 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.

  11. İş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.

Eğitim ölçümlerini gösteren ekran görüntüsü

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.

  1. Bileşeni seçin ve sağ paneli açın. İş ayarları bölümünü genişletin.

    Runsetting'te dağıtılmış eğitimi ayarlamayı gösteren ekran görüntüsü

  2. İşlem hedefi için AML işlem'i seçtiğinizden emin olun.

  3. 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.

    İşlem kümesini denetlemeyi gösteren ekran görüntüsü

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.

Sürücü günlüğünü gösteren ekran görüntüsü

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.

Mpi günlüğünü gösteren ekran görüntüsü

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.