PyTorch Modelini Eğitme
Bu makalede, DenseNet gibi PyTorch modellerini eğitmek için Azure Machine Learning tasarımcısında PyTorch Modeli Eğitme bileşeninin nasıl kullanılacağı açıklanmaktadır. Eğitim, modeli tanımlayıp parametrelerini ayarladıktan sonra gerçekleştirilir ve etiketlenmiş veriler gerektirir.
Şu anda PyTorch Modelini Eğitme 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.
İşlem hattına Train PyTorch Modeli bileşenini 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şe 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 etiketlenmiş bir görüntü dizini olması gerekir. Etiketli bir 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 InvalidDatasetError oluşturulur.
Dönemler için, eğitmek istediğiniz dönem sayısını belirtin. Veri kümesinin tamamı her dönem (varsayılan olarak 5) yinelenir.
Toplu iş boyutu için, varsayılan olarak 16 olmak üzere bir toplu işlemde eğitilmesi gereken örnek sayısını belirtin.
Isınma adım numarası için, ilk öğrenme oranının yakınsamaya başlanamayacak kadar büyük olması durumunda, varsayılan olarak 0 olmak üzere eğitimi ısıtmak istediğiniz dönem sayısını belirtin.
Öğrenme oranı için öğrenme oranı için bir değer belirtin ve varsayılan değer 0,001'dir. Öğrenme oranı, modelin her test edilişinde ve düzeltildiğinde sgd gibi iyileştiricide kullanılan adımın boyutunu denetler.
Hızı daha küçük ayarlayarak modeli daha sık test edersiniz ve yerel bir platoda takılma riskiniz olur. Hızı daha büyük ayarlayarak, gerçek minima'yı aşırı izleme riskiyle daha hızlı yakınsayabilirsiniz.
Not
Eğitim sırasında eğitim kaybı nan olursa ve bunun nedeni çok yüksek öğrenme oranı olabilir, öğrenme oranının azalması 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 boyutu tek işlemin dünya boyut süreleridir. Polinomsal öğrenme hızı bozulmaları uygulanır ve daha iyi performans gösteren bir model elde etmek için yardımcı 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' e tıklayın.
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ü, ç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ğitimini hızlandırmak için paralel olarak çalışır. Şu anda tasarımcı , PyTorch Modeli bileşenini eğitme 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 | 6h22 dak | ~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 grafiklerini görü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
NCCL arka ucu Train PyTorch Model bileşeninin cuda kullanması gerektiğinden, dağıtılmış eğitimi etkinleştirmek için birden çok GPU gereklidir.
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ındanküçü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'neeşit veya ondan 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 Outputs+logs sekmesinde her işlemin hata ayrıntıları için sürücü günlüklerini de kontrol edebilirsiniz.
Bileşenin etkinleştirildiği 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şleminin İşlem Biriminden daha büyük olan yaygın bir hata gösterilmektedir.
Bileşen sorunlarını giderme hakkında daha fazla ayrıntı için bu makaleye bakabilirsiniz.
Sonuçlar
İşlem hattı işi tamamlandıktan sonra, modeli puanlama için kullanmak üzere PyTorch ModeliniPuanlama Görüntüsü Modeli'ne 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
Name | 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ı | >=çift. Epsilon | Float | 0.1 | Stokastik Gradyan Azalma iyileştiricisi için ilk öğrenme oranı. |
Rastgele tohum | Herhangi biri | 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
Azure Machine Learning'in kullanabileceği bileşenler kümesine bakın.