Azure Machine Learning ile dağıtılmış eğitim

Bu makalede, dağıtılmış eğitim ve Azure Machine Learning'in derin öğrenme modelleri için bunu nasıl desteklediği hakkında bilgi ediniyorsunuz.

Dağıtılmış eğitimde, bir modeli eğitmek için iş yükünü böler ve çalışan düğümleri olarak adlandırılan birden çok mini işlemci arasında paylaşırsınız. Bu çalışan düğümleri model eğitimini hızlandırmak için paralel olarak çalışır. Geleneksel makine öğrenmesi modelleri için dağıtılmış eğitimi kullanabilirsiniz, ancak derin sinir ağlarını eğiten derin öğrenme gibi işlem ve zaman açısından yoğun görevler için daha uygundur.

Derin öğrenme ve dağıtılmış eğitim

İki ana dağıtılmış eğitim türü vardır: veri paralelliği ve model paralelliği. Derin öğrenme modelleri hakkında dağıtılmış eğitim için Python'daki Azure Machine Learning SDK'sı PyTorch ve TensorFlow ile tümleştirmeleri destekler. Her ikisi de dağıtılmış eğitim için veri paralelliği kullanan popüler çerçevelerdir ve işlem hızlarını iyileştirmek için Horovod'ı kullanabilir.

Dağıtılmış eğitim gerektirmeyen makine öğrenmesi modelleri için bkz . Python SDK'sını kullanarak modelleri eğitmek için farklı yollar için Azure Machine Learning ile modelleri eğitin.

Veri paralelliği

Veri paralelliği, iki dağıtılmış eğitim yaklaşımının uygulanması en kolayıdır ve çoğu kullanım örneği için yeterlidir.

Bu yaklaşımda, verileri bölümlere bölersiniz; burada bölüm sayısı işlem kümesindeki veya sunucusuz işlemdeki kullanılabilir düğümlerin toplam sayısına eşittir. Modeli bu çalışan düğümlerinin her birinde kopyalarsınız ve her düğüm kendi veri alt kümesinde çalışır. Her düğümün eğitilen modeli destekleyecek kapasiteye sahip olması gerektiğini, yani modelin tamamının her düğüme sığması gerektiğini unutmayın.

Aşağıdaki diyagramda bu yaklaşım gösterilmektedir.

Veri paralelliği diyagramı, modelin çalışan düğümlere kopyalandığını gösteriyor.

Her düğüm, eğitim örnekleri için tahminleri ile etiketli çıkışlar arasındaki hataları bağımsız olarak hesaplar. Buna karşılık, her düğüm hatalara göre modelini güncelleştirir ve ilgili modellerini güncelleştirmek için tüm değişikliklerini diğer düğümlere iletmesi gerekir. Çalışan düğüm gruplarının, tutarlı bir model eğittiklerinden emin olmak için toplu işlem sonunda model parametrelerini veya gradyanları senkronize etmesi gerekir.

Model paralelliği

Ağ paralelliği olarak da bilinen model paralelliği içinde, modeli farklı düğümlerde eşzamanlı olarak çalışan farklı parçalara bölersiniz. Her parça aynı veri üzerinde çalışır. Bu yöntemin ölçeklenebilirliği, algoritmanın görev paralelleştirme derecesine bağlıdır. Veri paralelliği yerine uygulamak daha karmaşıktır.

Model paralelliği içinde çalışan düğümlerinin paylaşılan parametreleri yalnızca eşitlemesi gerekir; genellikle her ileri veya geri yayma adımı için bir kez. Ayrıca, her düğüm modelin bir alt bölümünde aynı eğitim verileri üzerinde çalıştığından daha büyük modeller önemli değildir.