Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.

Amazon EKS ve Torch Distributed Elastic ile dağıtılmış eğitim

Dağıtılmış derin öğrenme modeli eğitimi, birçok sektörde veri boyutları büyüdükçe giderek daha önemli hale geliyor. Bilgisayarla görü ve doğal dil işlemedeki birçok uygulama artık karmaşıklığı katlanarak büyüyen ve genellikle yüzlerce terabayt veriyle eğitilen derin öğrenme modellerinin eğitimini gerektiriyor. Ardından, bu kadar büyük modellerin eğitimini ölçeklendirmek için geniş bir bulut altyapısı kullanmak önemli hale geliyor.

Geliştiriciler, sezgisel model mimarilerini kolayca tasarlamak için PyTorch gibi açık kaynaklı çerçeveleri kullanabilir. Ancak, bu modellerin eğitimini birden çok düğümde ölçeklendirmek, artan düzenleme karmaşıklığı nedeniyle zor olabilir.

Dağıtılmış model eğitimi temel olarak iki paradigmadan oluşur:

  • Model paralel – Model paralel eğitiminde, modelin kendisi tek bir GPU'nun belleğine sığmayacak kadar büyüktür ve modeli eğitmek için birden çok GPU'ya ihtiyaç vardır. Open AI'ın 3 milyar eğitilebilir parametreye (yaklaşık 175 GB boyutunda) sahip GPT-350 modeli buna iyi bir örnektir.
  • Veri paralel – Veri paralel eğitiminde model tek bir GPU'da bulunabilir, ancak veriler çok büyük olduğundan bir modeli eğitmek günler veya haftalar alabilir. Verileri birden çok GPU düğümü arasında dağıtmak, eğitim süresini önemli ölçüde azaltabilir.

Bu yazıda, PyTorch modellerini aşağıdakileri kullanarak eğitmek için örnek bir mimari sunuyoruz. Meşale Dağıtılmış Elastik çerçeve kullanarak dağıtılmış bir veri paralel şekilde Amazon Elastik Kubernetes Hizmeti (Amazon EKS).

Önkoşullar

Bu gönderide bildirilen sonuçları çoğaltmak için tek ön koşul bir AWS hesabıdır. Bu hesapta bir EKS kümesi oluşturuyoruz ve bir Lustre için Amazon FSx dosya sistemi. Ayrıca kapsayıcı görüntülerini bir Amazon Elastik Konteyner Kayıt Defteri Hesaptaki (Amazon ECR) deposu. Bu bileşenleri kurmak için talimatlar, gönderi boyunca gerektiği gibi sağlanır.

EKS kümeleri

Amazon EKS, AWS'de Kubernetes uygulamalarını çalıştırmak ve ölçeklendirmek için yönetilen bir kapsayıcı hizmetidir. Amazon EKS ile en son teknolojileri kullanarak dağıtılmış eğitim işlerini verimli bir şekilde çalıştırabilirsiniz. Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) bulut sunucuları, kendi kontrol düzleminizi veya düğümlerinizi kurmanıza, çalıştırmanıza ve bakımını yapmanıza gerek kalmadan. popüler bir orkestraci makine öğrenimi (ML) ve AI iş akışları için. AWS'deki tipik bir EKS kümesi aşağıdaki şekle benzer.

Açık kaynaklı bir proje yayınladık, EKS için AWS DevOps (aws-do-eks)EKS kümelerini sağlamak ve dağıtılmış eğitim işlerini çalıştırmak için kullanımı kolay ve yapılandırılabilir komut dosyaları ve araçlardan oluşan geniş bir koleksiyon sağlayan . Bu proje aşağıdaki ilkelere göre inşa edilmiştir: Çerçeve Yap: Basitlik, Esneklik ve Evrensellik. kullanarak istediğiniz kümeyi yapılandırabilirsiniz. eks.conf dosyasını çalıştırın ve ardından çalıştırarak başlatın. eks-create.sh senaryo. Ayrıntılı talimatlar, GitHub repo.

PyTorch modellerini Torch Distributed Elastic kullanarak eğitin

Torch Distributed Elastic (TDE), bilgi işlem kaynaklarını kullanılabilirliğe dayalı olarak dinamik olarak ölçeklendirmenin kritik olduğu büyük ölçekli derin öğrenme modellerini eğitmek için yerel bir PyTorch kitaplığıdır. bu Kubernetes için TorchElastic Denetleyici TDE eğitimi için gereken bölmelerin ve hizmetlerin yaşam döngüsünü otomatik olarak yöneten TDE için yerel bir Kubernetes uygulamasıdır. Gerektiğinde eğitim sırasında bilgi işlem kaynaklarının dinamik olarak ölçeklenmesine olanak tanır. Ayrıca, işleri düğüm hatasından kurtararak hataya dayanıklı eğitim sağlar.

Bu yazıda, PyTorch'u eğitme adımlarını tartışıyoruz EfficientNet-B7 ve ResNet50 kullanan modeller IMAGEnet TDE ile dağıtılmış bir şekilde veri. PyTorch'u kullanıyoruz Dağıtılmış VeriParalel API ve Kubernetes TorchElastic denetleyicisi ve eğitim işlerimizi birden çok GPU düğümü içeren bir EKS kümesinde çalıştırın. Aşağıdaki diyagram, bu model eğitimi için mimari diyagramı göstermektedir.

Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.

Kubernetes için TorchElastic temel olarak iki bileşenden oluşur: TorchElastic Kubernetes Denetleyicisi (TEC) ve parametre sunucusu (etcd). Denetleyici, eğitim işlerini izlemekten ve yönetmekten sorumludur ve parametre sunucusu, dağıtılmış senkronizasyon ve eş keşfi için çalışan düğümlerini takip eder.

Eğitim podlarının verilere erişebilmesi için, her bir pod tarafından monte edilebilen paylaşılan bir veri hacmine ihtiyacımız var. aracılığıyla paylaşılan hacimler için bazı seçenekler Konteyner Depolama Arayüzü (CSI) sürücüleri dahil EKS için AWS DevOps vardır Amazon Elastik Dosya Sistemi (Amazon EFS) ve Parlaklık için FSx.

Küme kurulumu

Küme yapılandırmamızda, sistem bölmeleri için bir c5.2xlarge örneği kullanıyoruz. EfficientNet modelini eğitmek için çalışan bölmeleri olarak üç p4d.24xlarge örneği kullanıyoruz. ResNet50 eğitimi için çalışan bölmeleri olarak p3.8xlarge örnekleri kullanıyoruz. Ek olarak, eğitim verilerimizi ve model yapılarımızı depolamak için bir FSx paylaşımlı dosya sistemi kullanıyoruz.

AWS p4d.24xlarge bulut sunucuları şunlarla donatılmıştır: Elastik Kumaş Adaptörü (EFA) düğümler arasında ağ sağlamak için. EFA'yı yazının ilerleyen kısımlarında daha fazla tartışacağız. EFA üzerinden iletişimi sağlamak için bir .yaml dosyası üzerinden küme kurulumunu yapılandırmamız gerekiyor. Bir örnek dosya GitHub deposunda sağlanır.

Bu .yaml dosyası uygun şekilde yapılandırıldıktan sonra, GitHub deposunda sağlanan komut dosyasını kullanarak kümeyi başlatabiliriz:

./eks-create.sh

Bakın GitHub repo detaylı talimatlar için.

İşleri p4d.24xlarge ve p3.8xlarge üzerinde çalıştırmak arasında pratikte hiçbir fark yoktur. Bu gönderide açıklanan adımlar her ikisi için de geçerlidir. Tek fark, p4d.24xlarge bulut sunucularında EFA'nın kullanılabilirliğidir. ResNet50 gibi daha küçük modeller için, EFA ağıyla karşılaştırıldığında standart ağ oluşturma, eğitim hızı üzerinde minimum etkiye sahiptir.

Lustre dosya sistemi için FSx

FSx, yüksek performanslı bilgi işlem iş yükleri için tasarlanmıştır ve katı hal sürücü depolama birimlerini kullanarak milisaniyenin altında gecikme sağlar. FSx'i seçtik çünkü çok sayıda düğüme ölçeklenirken daha iyi performans sağladı. Unutulmaması gereken önemli bir ayrıntı, FSx'in yalnızca tek bir Erişilebilirlik Alanında var olabileceğidir. Bu nedenle, FSx dosya sistemine erişen tüm düğümler, FSx dosya sistemi ile aynı Erişilebilirlik Alanında bulunmalıdır. Bunu başarmanın bir yolu, kümeyi oluşturmadan önce belirli düğüm grupları için küme .yaml dosyasında ilgili Erişilebilirlik Alanını belirtmektir. Alternatif olarak, küme kurulduktan sonra bu düğümler için otomatik ölçeklendirme grubunun ağ bölümünü değiştirebilir ve tek bir alt ağ kullanarak sınırlayabiliriz. Bu, Amazon EC2 konsolunda kolayca yapılabilir.

EKS kümesinin çalışır durumda olduğunu ve Erişilebilirlik Alanının alt ağ kimliğinin bilindiğini varsayarsak, gerekli bilgileri fsx.conf dosya beni oku ve çalıştırıyor konuşlandırma.sh komut dosyası fsx dosya. Bu, dosya sistemine erişim için doğru politikayı ve güvenlik grubunu kurar. Komut dosyası ayrıca şunları da yükler: CSI sürücüsü bir arka plan programı olarak FSx için. Son olarak, tek bir .yaml dosyası uygulayarak Kubernetes'te FSx kalıcı birim talebini oluşturabiliriz:

kubectl apply -f fsx-pvc-dynamic.yaml

Bu, Bölümde belirtilen Erişilebilirlik Alanında bir FSx dosya sistemi oluşturur. fsx.conf dosya ve ayrıca kalıcı bir birim talebi oluşturur fsx-pvc, kümedeki bölmelerden herhangi biri tarafından çok okuma-yazma (RWX) tarzında monte edilebilir.

Deneyimizde, 12 sınıfa bölünmüş 1,000 milyondan fazla eğitim görüntüsünü içeren eksiksiz ImageNet verilerini kullandık. Veriler şu adresten indirilebilir: ImageNet web sitesi. Orijinal TAR topunun birkaç dizini var, ancak model eğitimimiz için sadece ilgileniyoruz. ILSVRC/Data/CLS-LOC/içeren train ve val alt dizinler. Eğitimden önce, içindeki görüntüleri yeniden düzenlememiz gerekiyor. val PyTorch'un gerektirdiği dizin yapısıyla eşleşecek alt dizin ResimKlasörü sınıf. Bu basit bir kullanılarak yapılabilir Python komut dosyası Veriler bir sonraki adımda kalıcı birime kopyalandıktan sonra.

Verileri bir bilgisayardan kopyalamak için Amazon Basit Depolama Hizmeti (Amazon S3) kovasını FSx dosya sistemine eklersek, bu görev için komut dosyalarını içeren bir Docker görüntüsü oluşturuyoruz. Örnek bir Dockerfile ve bir kabuk betiği, csi GitHub deposundaki klasör. kullanarak görüntüyü oluşturabiliriz. build.sh komut dosyasını kullanın ve ardından bunu kullanarak Amazon ECR'ye gönderin. push.sh senaryo. Bu komut dosyalarını kullanmadan önce, ECR deposu için doğru URI'yi sağlamamız gerekir. .env GitHub deposunun kök klasöründeki dosya. Docker görüntüsünü Amazon ECR'ye gönderdikten sonra, ilgili .yaml dosyasını uygulayarak verileri kopyalamak için bir bölme başlatabiliriz:

kubectl apply -f fsx-data-prep-pod.yaml

Pod, komut dosyasını otomatik olarak çalıştırır data-prep.sh verileri Amazon S3'ten paylaşılan birime kopyalamak için. ImageNet verileri 12 milyondan fazla dosyaya sahip olduğundan, kopyalama işlemi birkaç saat sürer. Python betiği imagenet_data_prep.py ayrıca yeniden düzenlemek için çalıştırılır val PyTorch tarafından beklendiği gibi veri kümesi.

Ağ hızlandırma

Elastik Yapı Adaptörü (EFA) ile birlikte kullanabiliriz. desteklenen EC2 bulut sunucusu türleri kümenizdeki GPU düğümleri arasındaki ağ trafiğini hızlandırmak için. Bu, standart ağ iletişiminin bir darboğaz olabileceği büyük dağıtılmış eğitim işleri çalıştırırken faydalı olabilir. Burada kullandığımız EKS kümesindeki EFA cihaz eklentisini dağıtmak ve test etmek için komut dosyaları, efa-cihaz-eklentisi GitHub deposundaki klasör. EKS kümenizde EFA ile bir işi etkinleştirmek için gerekli donanım ve yazılıma sahip küme düğümlerine ek olarak, kümeye EFA cihaz eklentisinin dağıtılması ve iş kapsayıcınızın uyumlu CUDA ve NCCL'ye sahip olması gerekir sürümler yüklü.

NCCL testlerinin çalıştırıldığını ve p4d.24xlarge örneklerinde EFA'nın performansının değerlendirildiğini göstermek için, önce karşılık gelen komutu çalıştırarak Kubeflow MPI operatörünü dağıtmalıyız. konuşlandırma.sh komut dosyası mpi operatörü dosya. Sonra çalıştırıyoruz konuşlandırma.sh komut dosyası ve güncelleme test-efa-nccl.yaml kaynak için sınırlar ve istekler tezahür ettirin vpc.amazonaws.com 4'e ayarlanır. p4d.24xlarge düğümlerindeki mevcut dört EFA adaptörü, maksimum verim sağlamak için bir araya toplanır.

koşmak kubectl apply -f ./test-efa-nccl.yaml testi uygulamak ve ardından test bölmesinin günlüklerini görüntülemek için Günlük çıktısındaki aşağıdaki satır, EFA'nın kullanıldığını doğrular:

NCCL INFO NET/OFI Selected Provider is efa

Test sonuçları aşağıdaki çıktıya benzer görünmelidir:

[1,0]<stdout>:#                                                       out-of-place                       in-place
[1,0]<stdout>:#       size         count      type   redop     time   algbw   busbw  error     time   algbw   busbw  error
[1,0]<stdout>:#        (B)    (elements)                       (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
[1,0]<stdout>:           8             2     float     sum    629.7    0.00    0.00  2e-07    631.4    0.00    0.00  1e-07
[1,0]<stdout>:          16             4     float     sum    630.5    0.00    0.00  1e-07    628.1    0.00    0.00  1e-07
[1,0]<stdout>:          32             8     float     sum    627.6    0.00    0.00  1e-07    628.2    0.00    0.00  1e-07
[1,0]<stdout>:          64            16     float     sum    633.6    0.00    0.00  1e-07    628.4    0.00    0.00  6e-08
[1,0]<stdout>:         128            32     float     sum    627.5    0.00    0.00  6e-08    632.0    0.00    0.00  6e-08
[1,0]<stdout>:         256            64     float     sum    634.5    0.00    0.00  6e-08    636.5    0.00    0.00  6e-08
[1,0]<stdout>:         512           128     float     sum    634.8    0.00    0.00  6e-08    635.2    0.00    0.00  6e-08
[1,0]<stdout>:        1024           256     float     sum    646.6    0.00    0.00  2e-07    643.6    0.00    0.00  2e-07
[1,0]<stdout>:        2048           512     float     sum    745.0    0.00    0.01  5e-07    746.0    0.00    0.01  5e-07
[1,0]<stdout>:        4096          1024     float     sum    958.2    0.00    0.01  5e-07    955.8    0.00    0.01  5e-07
[1,0]<stdout>:        8192          2048     float     sum    963.0    0.01    0.02  5e-07    954.5    0.01    0.02  5e-07
[1,0]<stdout>:       16384          4096     float     sum    955.0    0.02    0.03  5e-07    955.5    0.02    0.03  5e-07
[1,0]<stdout>:       32768          8192     float     sum    975.5    0.03    0.06  5e-07   1009.0    0.03    0.06  5e-07
[1,0]<stdout>:       65536         16384     float     sum   1353.4    0.05    0.09  5e-07   1343.5    0.05    0.09  5e-07
[1,0]<stdout>:      131072         32768     float     sum   1395.9    0.09    0.18  5e-07   1392.6    0.09    0.18  5e-07
[1,0]<stdout>:      262144         65536     float     sum   1476.7    0.18    0.33  5e-07   1536.3    0.17    0.32  5e-07
[1,0]<stdout>:      524288        131072     float     sum   1560.3    0.34    0.63  5e-07   1568.3    0.33    0.63  5e-07
[1,0]<stdout>:     1048576        262144     float     sum   1599.2    0.66    1.23  5e-07   1595.3    0.66    1.23  5e-07
[1,0]<stdout>:     2097152        524288     float     sum   1671.1    1.25    2.35  5e-07   1672.5    1.25    2.35  5e-07
[1,0]<stdout>:     4194304       1048576     float     sum   1785.1    2.35    4.41  5e-07   1780.3    2.36    4.42  5e-07
[1,0]<stdout>:     8388608       2097152     float     sum   2133.6    3.93    7.37  5e-07   2135.0    3.93    7.37  5e-07
[1,0]<stdout>:    16777216       4194304     float     sum   2650.9    6.33   11.87  5e-07   2649.9    6.33   11.87  5e-07
[1,0]<stdout>:    33554432       8388608     float     sum   3422.0    9.81   18.39  5e-07   3478.7    9.65   18.09  5e-07
[1,0]<stdout>:    67108864      16777216     float     sum   4783.2   14.03   26.31  5e-07   4782.6   14.03   26.31  5e-07
[1,0]<stdout>:   134217728      33554432     float     sum   7216.9   18.60   34.87  5e-07   7240.9   18.54   34.75  5e-07
[1,0]<stdout>:   268435456      67108864     float     sum    12738   21.07   39.51  5e-07    12802   20.97   39.31  5e-07
[1,0]<stdout>:   536870912     134217728     float     sum    24375   22.03   41.30  5e-07    24403   22.00   41.25  5e-07
[1,0]<stdout>:  1073741824     268435456     float     sum    47904   22.41   42.03  5e-07    47893   22.42   42.04  5e-07
[1,4]<stdout>:test-efa-nccl-worker-0:33:33 [4] NCCL INFO comm 0x7fd4a0000f60 rank 4 nranks 16 cudaDev 4 busId 901c0 - Destroy COMPLETE
[1,0]<stdout>:# Out of bounds values : 0 OK
[1,0]<stdout>:# Avg bus bandwidth    : 8.23785

Test sonuçlarında maksimum verimin yaklaşık 42 GB/sn ve ortalama veri yolu bant genişliğinin yaklaşık 8 GB olduğunu gözlemleyebiliriz.

Ayrıca tek bir EFA bağdaştırıcısının etkinleştirildiği ve EFA bağdaştırıcılarının olmadığı deneyler de gerçekleştirdik. Tüm sonuçlar aşağıdaki tabloda özetlenmiştir.

EFA Adaptörlerinin Sayısı Net/OFI Seçilmiş Sağlayıcı Ort. Bant genişliği (GB/sn) Maks. Bant genişliği (GB/sn)
4 efa 8.24 42.04
1 efa 3.02 5.89
0 soket 0.97 2.38

Ayrıca ImageNet gibi nispeten küçük modeller için, hızlandırılmış ağ kullanımının, 5 parti boyutunda epoch başına eğitim süresini yalnızca %8-64 oranında azalttığını bulduk. Daha büyük modeller ve daha küçük parti boyutları için, ağırlıkların daha fazla ağ iletişimi gerektiğinde , hızlandırılmış ağ kullanımı daha büyük bir etkiye sahiptir. Parti boyutu 15 ile EfficientNet-B18 eğitimi için epoch eğitim süresinin %7-1 oranında azaldığını gözlemledik. EFA'nın eğitiminiz üzerindeki gerçek etkisi, modelinizin boyutuna bağlı olacaktır.

GPU izleme

Eğitim işini çalıştırmadan önce de ayarlayabiliriz Amazon Bulut İzleme Eğitim sırasında GPU kullanımını görselleştirmek için ölçümler. Kaynakların optimal olarak kullanılıp kullanılmadığını veya potansiyel olarak eğitim sürecindeki kaynak açlığını ve darboğazları tespit edip etmediğini bilmek yardımcı olabilir.

CloudWatch'ı kurmak için ilgili komut dosyaları şurada bulunur: gpu-metrikleri dosya. İlk olarak, bir Docker imajı oluşturuyoruz. amazon-cloudwatch-agent ve nvidia-smi. Dockerfile'ı şurada kullanabiliriz: gpu-metrics Bu görüntüyü oluşturmak için klasör. ECR kayıt defterinin önceden ayarlanmış olduğunu varsayarsak .env önceki adımdan dosya, kullanarak görüntüyü oluşturabilir ve itebiliriz. build.sh ve push.sh. Bundan sonra, çalıştırma deploy.sh komut dosyası kurulumu otomatik olarak tamamlar. İle bir arka plan programı başlatır amazon-cloudwatch-agent ve çeşitli ölçümleri CloudWatch'a gönderir. GPU metrikleri, CWAgent CloudWatch konsolunda ad alanı. Küme metriklerinin geri kalanı, ContainerInsights ad.

Model eğitimi

PyTorch eğitimi için gereken tüm komut dosyaları şurada bulunur: elastik iş GitHub deposundaki klasör. Eğitim işini başlatmadan önce, etcd TEC tarafından çalışan keşfi ve parametre değişimi için kullanılan sunucu. bu konuşlandırma.sh komut dosyası elasticjob klasör tam olarak bunu yapar.

p4d.24xlarge örneklerinde EFA'dan yararlanmak için, şu dosyada bulunan belirli bir Docker görüntüsünü kullanmamız gerekir. Amazon ECR Genel Galerisi EFA aracılığıyla NCCL iletişimini destekleyen. Sadece eğitim kodumuzu bu Docker görüntüsüne kopyalamamız gerekiyor. bu Dockerfile altında örnekleri klasörü, p4d örneklerinde eğitim işi çalıştırılırken kullanılacak bir görüntü oluşturur. Her zaman olduğu gibi, kullanabiliriz inşa.sh ve itme.sh görüntüyü oluşturmak ve itmek için klasördeki komut dosyaları.

The imagenet-efa.yaml dosya eğitim işini açıklar. Bu .yaml dosyası, eğitim işini yürütmek için gereken kaynakları ayarlar ve ayrıca önceki bölümde ayarlanan eğitim verileriyle kalıcı birimi bağlar.

Burada birkaç şeye işaret etmekte fayda var. Çoğaltma sayısı, kümede bulunan düğümlerin sayısına ayarlanmalıdır. Bizim durumumuzda bunu 3'e ayarladık çünkü üç adet p4d.24xlarge düğümümüz vardı. İçinde imagenet-efa.yaml dosya, nvidia.com/gpu kaynaklar altındaki parametre ve nproc_per_node altında args p4d.24xlarge durumunda 8 olan düğüm başına GPU sayısına ayarlanmalıdır. Ayrıca, Python betiği için çalışan bağımsız değişkeni, işlem başına CPU sayısını ayarlar. Bunu 4 olarak seçtik çünkü deneylerimizde bu, p4d.24xlarge bulut sunucularında çalışırken en iyi performansı sağlıyor. Bu ayarlar, kümede bulunan tüm donanım kaynaklarının kullanımını en üst düzeye çıkarmak için gereklidir.

İş çalışırken, kümedeki tüm GPU'lar için CloudWatch'ta GPU kullanımını gözlemleyebiliriz. Aşağıdaki, kümede üç p4d.24xlarge düğümü olan eğitim işlerimizden birinden bir örnektir. Burada her düğümden bir GPU seçtik. Daha önce bahsedilen ayarlarla, kümedeki tüm düğümler için dönemin eğitim aşamasında GPU kullanımı %100'e yakındır.

Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.

p50xlarge örneklerini kullanarak bir ResNet3.8 modelini eğitmek için, p4d.24xlarge kullanarak EfficientNet eğitimi için açıklanan adımların tamamen aynısına ihtiyacımız var. Aynı Docker imajını da kullanabiliriz. Daha önce belirtildiği gibi, p3.8xlarge bulut sunucuları EFA ile donatılmamıştır. Ancak ResNet50 modeli için bu önemli bir dezavantaj değildir. bu imagenet-fsx.yaml GitHub deposunda sağlanan komut dosyası, eğitim işini p3.8xlarge düğüm türü için uygun kaynaklarla ayarlar. İş, FSx dosya sistemindeki aynı veri kümesini kullanır.

GPU ölçeklendirme

GPU sayısını artırarak EfficientNet-B7 modeli için eğitim süresinin nasıl ölçeklendiğini gözlemlemek için bazı deneyler yaptık. Bunu yapmak için, her eğitim çalıştırması için eğitim .yaml dosyamızdaki replika sayısını 1'den 3'e değiştirdik. Tam ImageNet veri setini kullanırken sadece tek bir dönem için zamanı gözlemledik. Aşağıdaki şekil, GPU ölçekleme denememizin sonuçlarını göstermektedir. Kırmızı noktalı çizgi, GPU sayısını artırarak 8 GPU kullanan bir koşudan eğitim süresinin nasıl düşmesi gerektiğini gösterir. Gördüğümüz gibi, ölçekleme beklenene oldukça yakın.

Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.

Benzer şekilde, p50xlarge bulut sunucularında ResNet3.8 eğitimi için GPU ölçeklendirme grafiğini elde ettik. Bu durumda .yaml dosyamızdaki replikaları 1'den 4'e değiştirdik. Bu deneyin sonuçları aşağıdaki şekilde gösterilmektedir.

Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.

Temizlemek

Boşta örnekleri çalıştırmayla ilişkili maliyetlerden kaçınmak için model eğitiminden sonra kaynakları azaltmak önemlidir. Kaynak oluşturan her komut dosyasıyla, GitHub repo bunları silmek için eşleşen bir komut dosyası sağlar. Kurulumumuzu temizlemek için, kümenin VPC'sindeki bir alt ağ ile ilişkili olduğundan kümeyi silmeden önce FSx dosya sistemini silmemiz gerekir. FSx dosya sistemini silmek için aşağıdaki komutu çalıştırmamız yeterli. fsx Klasör):

kubectl delete -f fsx-pvc-dynamic.yaml
./delete.sh

Bunun yalnızca kalıcı birimi değil, aynı zamanda FSx dosya sistemini de sileceğini ve dosya sistemindeki tüm verilerin kaybolacağını unutmayın. Bu adım tamamlandığında aşağıdaki scripti kullanarak cluster’ı silebiliriz. ek Klasör:

./eks-delete.sh

Bu, mevcut tüm bölmeleri silecek, kümeyi kaldıracak ve başlangıçta oluşturulan VPC'yi silecektir.

Sonuç

Bu yazıda, EKS kümelerinde PyTorch dağıtılmış veri paralel model eğitimini çalıştırmak için gereken adımları ayrıntılı olarak anlattık. Bu görev göz korkutucu görünebilir, ancak EKS için AWS DevOps AWS'de ML Frameworks ekibi tarafından oluşturulan proje, süreci basitleştirmek ve dağıtılmış model eğitimini kolayca erişilebilir kılmak için gerekli tüm komut dosyalarını ve araçları sağlar.

Bu yazıda kullanılan teknolojiler hakkında daha fazla bilgi için, adresini ziyaret edin. Amazon EKS'si ve Meşale Dağıtılmış Elastik. Burada açıklanan yaklaşımı kendi dağıtılmış eğitim kullanım durumlarınıza uygulamanızı öneririz.

Kaynaklar


yazarlar hakkında

Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.İmran Yunus AWS'de ML Frameworks ekibi için Baş Çözüm Mimarıdır. Amazon EKS ve AWS ParallelCluster gibi AWS hizmetlerinde büyük ölçekli makine öğrenimi ve derin öğrenme iş yüklerine odaklanıyor. Bilgisayarla Görme ve Endüstriyel IoT'de Derin Eğilme uygulamalarında geniş deneyime sahiptir. Imran, peta-bayt ölçeklerinde deneysel verilerin analizinde yer aldığı Yüksek Enerji Parçacık Fiziği alanında doktora derecesini aldı.

Amazon EKS ve Torch Dağıtılmış Elastik PlatoBlockchain Veri Zekası ile dağıtılmış eğitim. Dikey Arama. Ai.Alex Iankoulski derin, uygulamalı işler yapmayı seven tam donanımlı bir yazılım ve altyapı mimarıdır. Şu anda AWS'de Kendi Kendini Yöneten Makine Öğrenimi için Baş Çözüm Mimarıdır. Görevinde, konteyner destekli AWS hizmetlerinde ML ve AI iş yüklerinin konteynerleştirilmesi ve düzenlenmesi konusunda müşterilere yardımcı olmaya odaklanıyor. Aynı zamanda açık kaynak kitabının da yazarıdır. çerçeve yap ve dünyanın en büyük zorluklarını çözerken inovasyon hızını hızlandırmak için konteyner teknolojilerini uygulamayı seven bir Docker kaptanı. Alex, geçtiğimiz 10 yıl boyunca iklim değişikliğiyle mücadele, yapay zeka ve makine öğrenimini demokratikleştirme, seyahati daha güvenli, sağlık hizmetlerini daha iyi hale getirme ve enerjiyi daha akıllı hale getirme konularında çalıştı.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi