PyTorch modelini eğitme

Bu makalede, DenseNet gibi PyTorch modellerini eğmek için Azure Machine Learning Designer 'da Pytorch model modülünün nasıl kullanılacağı açıklanır. Bir modeli tanımladıktan ve parametrelerini ayarladıktan sonra ve etiketli veriler gerektirdiğinde eğitim gerçekleşir.

Şu anda PyTorch model modülünü eğitme tek düğüm ve dağıtılmış eğitimi destekler.

PyTorch modeliyle eğitme kullanma

  1. Tasarımcı 'daki işlem hattı taslağınızı Densenet modülü veya ResNet olarak ekleyin.

  2. İşlem hattına PyTorch model modülünü ekleyin. Bu modülü model eğitimi kategorisi altında bulabilirsiniz. Eğit' i genişletin ve ardından

    Not

    PyTorch model modülünü eğitme , büyük veri kümesi için GPU türü hesaplama üzerinde daha iyi çalışır, aksi takdirde ardışık düzen başarısız olur. Modülün sağ bölmesinde, diğer işlem hedefini kullan' ı seçerek belirli bir modül için işlem seçebilirsiniz.

  3. Sol girişte, eğitimli olmayan bir model ekleyin. Eğitim veri kümesini ve doğrulama veri kümesini, PyTorch modelini eğitme ve sağ taraftaki girişe iliştirin.

    Eğitilmiş olmayan model için, DenseNet gibi bir PyTorch modeli olmalıdır. Aksi takdirde, ' ınvalidmodeldirectoryerror ' atılır.

    Veri kümesi için eğitim veri kümesi etiketli bir görüntü dizini olmalıdır. Etiketli görüntü dizini alma için görüntü dizinine dönüştürme bölümüne bakın. Etiketlenmişse, ' NotLabeledDatasetError ' atılır.

    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, kaç dönemler arasında eğmek istediğinizi belirtin. Tüm veri kümesi, varsayılan olarak her dönem içinde tekrarlandırılır.

  5. Toplu iş boyutu için, bir toplu işte kaç örnek eğitmek istediğinizi belirtin, varsayılan olarak 16.

  6. Warmup adım numarası için, ilk öğrenme oranının, yakınsama başlatmaya kadar çok büyük olması durumunda, varsayılan 0 olarak, eğitimin kaç dönemler 'i daha sıcak yapmak istediğinizi belirtin.

  7. Öğrenme oranı için, öğrenme ücreti için bir değer belirtin ve varsayılan değer 0,001 ' dir. Öğrenme oranı, model test edildiğinde ve düzeltildiğinde her seferinde SGD gibi iyileştiricinin kullandığı adımın boyutunu denetler.

    Hızı daha küçük olarak ayarlayarak, yerel bir Play 'de kalmış olabileceğiniz riskle modeli daha sık test edersiniz. Hızı daha büyük olarak ayarlayarak, doğru Minima 'yı fazla atma riskiyle daha hızlı bir şekilde yakınsama yapabilirsiniz.

    Not

    Eğitim sırasında eğitme kaybı, çok büyük bir öğrenme oranının neden olabileceği için, öğrenme oranının azaltılması yardımcı olabilir. Dağıtılmış eğitiminde, degradenin daha kararlı kalmasını sağlamak için, lr * torch.distributed.get_world_size() işlem grubunun toplu iş boyutu tek bir işlemin dünya boyutu süreleriyle gerçek öğrenme ücreti tarafından hesaplanır. Polinom öğrenme oranı, daha iyi bir performans elde edilmesine yardımcı olabilir.

  8. Rastgele çekirdek için, isteğe bağlı olarak, çekirdek olarak kullanılacak bir tamsayı değeri yazın. Çalıştırmanın çalışmalarından reproducibility emin olmak istiyorsanız çekirdek kullanılması önerilir.

  9. Haence için, doğrulama kaybı arka arkaya azalmadığında eğitimin erken olarak nasıl durdurulacağını belirten bir dönemler belirtin. Varsayılan olarak 3.

  10. Yazdırma sıklığı için, her dönem için varsayılan 10 ' a kadar her bir dönem için eğitim günlüğü yazdırma sıklığını belirtin.

  11. İşlem hattını gönderme. Veri kümenizin boyutu daha büyükse, bu işlem biraz zaman alabilir ve GPU işlem yapmanız önerilir.

Dağıtılmış eğitim

Dağıtılmış eğitiminde, bir modeli eğitme iş yükü, çalışan düğümleri olarak adlandırılan birden çok mini işlemci arasında bölünür ve paylaşılır. Bu çalışan düğümleri, model eğitiminin hızlandırılmasına yönelik paralel olarak çalışır. Şu anda tasarımcı, PyTorch model modülünü eğitme için dağıtılmış eğitimi desteklemektedir.

Eğitim süresi

Dağıtılmış eğitim, PyTorch modelini eğiterek yalnızca birkaç saat Içinde ImageNet (1000 sınıfları, 1.200.000 görüntüleri) gibi büyük bir veri kümesi üzerinde eğitim yapmayı olanaklı kılar. Aşağıdaki tabloda, ımagenet üzerinde farklı cihazlara göre sıfırdan Resnet50 50 dönemleri, eğitim süresi ve performansı gösterilmektedir.

Cihazlar Eğitim süresi Eğitim Işleme En yüksek 1 doğrulama doğruluğu En iyi 5 doğrulama doğruluğu
16 V100 GPU 6h22dk ~ 3200 görüntü/sn % 68,83 % 88,84
8 V100 GPU 12h21dk ~ 1670 görüntü/sn % 68,84 % 88,74

Bu modülün ' ölçümler ' sekmesine tıklayın ve ' saniye başına görüntüleri eğitme ' ve ' Ilk 1 doğruluk ' gibi eğitim ölçümü grafiklerini inceleyin.

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

Dağıtılmış eğitimi etkinleştirme

PyTorch model modülünü eğitme için dağıtılmış eğitimi etkinleştirmek üzere modülün sağ bölmesindeki çalışma ayarları ' nda ayarlayabilirsiniz. Dağıtılmış eğitim için yalnızca AML işlem kümesi desteklenir.

Not

NCCL arka ucu eğitimi PyTorch model modülü, CUDA ' nin kullanıldığı için dağıtılmış eğitimi etkinleştirmek üzere birden çok GPU gerekir.

  1. Modülünü seçin ve sağ paneli açın. Çalışma ayarları bölümünü genişletin.

    Runsetting 'de dağıtılmış eğitimin nasıl ayarlanacağını gösteren ekran görüntüsü

  2. İşlem hedefi için AML hesaplama 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 hedefi içindeki düğüm sayısı. İşlem kümenizin en fazla düğüm sayısına eşit veya ondan daha az olmalıdır. Varsayılan olarak 1 ' dir ve bu, tek düğümlü bir iş anlamına gelir.

    • Düğüm başına işlem sayısı: düğüm başına tetiklenen işlem sayısı. Işlemin Işlem biriminden küçük veya bu değere eşit olmalıdır. Varsayılan olarak 1 ' dir ve tek işlem işi anlamına gelir.

    İşlem adını hesaplama ayrıntısı sayfasına tıklayarak, işlem için en fazla düğüm sayısını ve işlem birimini kontrol edebilirsiniz.

    İşlem kümesinin nasıl kontrol etileceğini gösteren ekran görüntüsü

BuradaAzure Machine Learning dağıtılmış eğitim hakkında daha fazla bilgi edinebilirsiniz.

Dağıtılmış eğitim sorunlarını giderme

Bu modül 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 çıktılar + Günlükler sekmesinde her bir işlemin hata ayrıntıları için sürücü günlüklerini kontrol edebilirsiniz.

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

Dağıtılan bir modül etkin bir günlük olmadan başarısız olursa 70_driver , hata ayrıntılarını kontrol edebilirsiniz 70_mpi_log .

Aşağıdaki örnekte, düğüm başına işlem sayısı işlemin işlem biriminden daha büyük olan ortak bir hata gösterilmektedir.

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

Modül sorun giderme hakkında daha fazla bilgi için Bu makaleye başvurabilirsiniz.

Sonuçlar

İşlem hattı çalıştırması tamamlandıktan sonra, puanlama modelini kullanmak için, yeni giriş örneklerine ilişkin değerleri tahmin etmek üzere, bir görüntü modelineyönelik eğitim

Teknik notlar

Beklenen girişler

Ad Tür Description
Eğitilen model Untraınedmodeldirectory Eğitilen model, PyTorch gerektir
Eğitim veri kümesi ImageDirectory Eğitim veri kümesi
Doğrulama veri kümesi ImageDirectory Her dönem değerlendirmesi için doğrulama veri kümesi

Modül parametreleri

Name Aralık Tür Varsayılan Description
Dönemler >0 Tamsayı 5 Etiket veya sonuç sütununu içeren sütunu seçin
Toplu iş boyutu >0 Tamsayı 16 Bir toplu işte eğiten örnek sayısı
Warmup adım numarası >= 0 Tamsayı 0 Isınma eğitimi için kaç dönemler
Öğrenme oranı >= Double. Upsilon Float 0.1 Stochastic gradyanı ilgili iyileştiricinin ilk öğrenme oranı.
Rastgele çekirdek Herhangi biri Tamsayı 1 Model tarafından kullanılan rastgele sayı oluşturucusunun çekirdek.
Beklediğiniz >0 Tamsayı 3 Eğitimin erken durdurulması için kaç dönemler
Yazdırma sıklığı >0 Tamsayı 10 Eğitim günlüğü her dönem için yinelemelerde yineleme üzerinden yazdırma sıklığı

Çıkışlar

Ad Tür Description
Eğitilen model ModelDirectory Eğitilen model

Sonraki adımlar

Azure Machine Learning için kullanılabilen modül kümesine bakın.