Amazon Search PlatoBlockchain Veri Zekasını içeren Amazon SageMaker Training'de PyTorch Lightning ve yerel PyTorch DDP'yi çalıştırın. Dikey Arama. Ai.

Amazon Search'ü içeren Amazon SageMaker Training'de PyTorch Lightning ve yerel PyTorch DDP'yi çalıştırın

Çok fazla veri, çok az zaman. Makine öğrenimi (ML) uzmanları, veri bilimcileri, mühendisler ve meraklılar dünyanın her yerinde bu sorunla karşılaştı. Doğal dil işlemeden bilgisayarla görüye, tablodan zaman serilerine ve aradaki her şeye kadar, elde edebileceğiniz kadar çok GPU'ya karşı veri çalıştırırken hızı optimize etme konusundaki asırlık sorun, sayısız çözüme ilham verdi. Bugün, yerel açık kaynaklı çerçeveler kullanan PyTorch geliştiricileri için aşağıdaki gibi özellikleri duyurmaktan mutluluk duyuyoruz: PyTorch Yıldırım ve PyTorch DDP, bu onların buluta giden yolunu kolaylaştıracak.

Amazon Adaçayı Yapıcı makine öğrenimi için tam olarak yönetilen bir hizmettir ve SageMaker model eğitimi, geniş ölçekte yüksek performanslı eğitim için optimize edilmiş bir bilgi işlem ortamıdır. SageMaker model eğitimi, ML modellerini yüksek performans ve düşük maliyetle kolayca eğitmek ve yeniden oluşturmak için kusursuz bir kontrol düzlemi ile uzaktan eğitim deneyimi sunar. SageMaker eğitim portföyünde, PyTorch'u geniş ölçekte çalıştırmayı daha da kolay ve erişilebilir hale getiren yeni özellikleri duyurmaktan heyecan duyuyoruz:

  1. PyTorch Lightning artık entegre edilebilir SageMaker'ın dağıtılmış veri paralel kitaplığı sadece bir satır kod değişikliği ile.
  2. SageMaker modeli eğitimi artık NCCL arka ucu ile yerel PyTorch Dağıtılmış Veri Paralel desteğine sahip olup, geliştiricilerin SageMaker'a her zamankinden daha kolay geçiş yapmasına olanak tanır.

Bu gönderide, bu yeni özellikleri tartışıyoruz ve ayrıca Amazon Search'ün model eğitim süresini hızlandırmak için SageMaker'da optimize edilmiş dağıtılmış eğitim arka ucuyla PyTorch Lightning'i nasıl çalıştırdığını öğreniyoruz.

Amazon Arama örnek olay incelemesine dalmadan önce, aşina olmayanlar için biraz arka plan vermek istiyoruz. SageMaker'ın dağıtılmış veri paralel kitaplığı. 2020'de, Amazon Science'da şu şekilde tanıtılan, genel küme verimliliğini artıran, ölçekte dağıtılmış gradyan inişi için özel bir küme yapılandırması geliştirdik ve kullanıma sunduk. Ringa. Hem parametre sunucularının hem de halka tabanlı topolojilerin en iyisini kullanan SageMaker Dağıtılmış Veri Paralel (SMDDP), aşağıdakiler için optimize edilmiştir. Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) ağ topolojisi, EFA. Daha büyük küme boyutları için SMDDP, Horovod (TensorFlow) ve PyTorch Distributed Data Parallel'e göre %20-40 verim artışı sağlayabilir. Daha küçük küme boyutları ve desteklenen modeller için şunu öneririz: SageMaker Eğitim Derleyicisi, genel iş süresini %50'ye kadar azaltabilir.

Müşteri ilgi odağı: SageMaker'ın Amazon Search ile optimize edilmiş arka ucunda PyTorch Lightning

Amazon Search, arama ve keşif deneyiminden sorumludur. Amazon.com. Amazon'da satın almak için ürün arayan müşteriler için arama deneyimini güçlendirir. Amazon Arama, Amazon.com'da satılan tüm ürünler için yüksek düzeyde bir dizin oluşturur. Bir müşteri bir sorgu girdiğinde Amazon Search, alakalı ve ilginç ürünleri müşteri sorgusuyla eşleştirmek için derin öğrenme modelleri de dahil olmak üzere çeşitli makine öğrenimi tekniklerini kullanır. Daha sonra sonuçları müşteriye göstermeden önce ürünleri sıralar.

Amazon Arama bilim adamları, PyTorch'un üzerine eklenen kullanılabilirlik özellikleri nedeniyle Arama sıralamasını güçlendiren derin öğrenme modellerini eğitmek için ana çerçevelerden biri olarak PyTorch Lightning'i kullandı. SMDDP, bu yeni SageMaker lansmanından önce PyTorch Lightning'de yazılmış derin öğrenme modelleri için desteklenmiyordu. Bu, PyTorch Lightning kullanmayı tercih eden Amazon Arama bilim adamlarının model eğitimlerini veri paralel tekniklerini kullanarak ölçeklendirmesini engelledi, eğitim sürelerini önemli ölçüde yavaşlattı ve daha ölçeklenebilir eğitim gerektiren yeni deneyleri test etmelerini engelledi.

Ekibin erken kıyaslama sonuçları, tek düğümlü eğitim temeline kıyasla sekiz düğümde eğitildiğinde örnek bir model için 7.3 kat daha hızlı eğitim süresi gösteriyor. Bu kıyaslamada kullanılan temel model, yedi yoğun tam bağlantılı katmana ve 200'den fazla parametreye sahip çok katmanlı bir algılayıcı sinir ağıdır. Aşağıdaki tablo, ml.p3.16xlarge SageMaker eğitim örneklerinde kıyaslama sonucunu özetlemektedir.

Örnek Sayısı Eğitim Süresi (dakika) İyileştirme
1 99 Temel
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Ardından, yeni lansmanlarla ilgili ayrıntılara dalıyoruz. Dilerseniz ilgili sayfamıza geçebilirsiniz. örnek defter.

PyTorch Lightning'i SageMaker dağıtılmış eğitim kitaplığıyla çalıştırın

SageMaker Data Parallel'in artık SageMaker eğitiminde PyTorch Lightning ile sorunsuz bir şekilde entegre olduğunu duyurmaktan mutluluk duyuyoruz.

PyTorch Lightning, PyTorch'ta özel modeller yazmak için basitleştirme sağlayan açık kaynaklı bir çerçevedir. Keras'ın TensorFlow için yaptığına benzer bazı şekillerde, hatta tartışmalı bir şekilde Hugging Face, PyTorch Lightning, PyTorch'un alt düzey işlevlerinin çoğu için soyutlamalar içeren yüksek düzey bir API sağlar. Buna model tanımlama, profil oluşturma, değerlendirme, budama, model paralelliği, hiperparametre yapılandırmaları, aktarım öğrenimi ve daha fazlası dahildir.

Önceden, PyTorch Lightning geliştiricileri, eğitim kodlarını yüksek performanslı SageMaker GPU kümelerine sorunsuz bir şekilde nasıl geçireceklerinden emin değildi. Ayrıca, SageMaker Data Parallel'in sunduğu verimlilik kazanımlarından yararlanmalarının hiçbir yolu yoktu.

PyTorch Lightning için, genel olarak konuşursak, bu API'leri SageMaker Training'de çalıştırmak için çok az veya hiç kod değişikliği olmamalıdır. Örnek defterlerde kullandığımız DDPStratejisi ve DDPP eklentisi yöntemleri.

Optimize edilmiş bir arka uç olarak SageMaker Data Parallel ile PyTorch Lightning'i kullanmak için üç adım vardır:

  1. Desteklenen bir AWS Derin Öğrenme Kapsayıcısı (DLC) temel görüntünüz olarak veya isteğe bağlı olarak kendi kapsayıcınızı oluşturun ve SageMaker Data Parallel arka ucunu kendiniz kurun. PyTorch Lightning'in gerekli paketlerinize dahil olduğundan emin olun, örneğin bir requirements.txt dosyası.
  2. Eğitim komut dosyanızda, optimize edilmiş arka ucu etkinleştiren birkaç küçük kod değişikliği yapın. Bunlar şunları içerir:
    1. SM DDP kitaplığını içe aktarın:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. SageMaker için PyTorch Lightning ortamını ayarlayın:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. 1.5.10'dan daha eski bir PyTorch Lightning sürümü kullanıyorsanız, birkaç adım daha eklemeniz gerekir.
      1. İlk olarak, ortam değişkenini ekleyin:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. İkincisi, kullandığınızdan emin olun DDPPluginYerine, DDPStrategy. Yerleştirerek kolayca ayarlayabileceğiniz daha yeni bir sürüm kullanıyorsanız, requirements.txt içinde source_dir işiniz için, o zaman bu gerekli değil. Aşağıdaki koda bakın:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. İsteğe bağlı olarak, süreç grubu arka ucunu şu şekilde tanımlayın: "smddp" içinde DDPSTrategy nesne. Ancak, PyTorch Lightning'i aynı zamanda desteklenen PyTorch DDP arka ucuyla kullanıyorsanız, bunu kaldırmanız yeterlidir `process_group_backend` parametresi. Aşağıdaki koda bakın:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Tahmin edicide belirtilen bir dağıtım yöntemine sahip olduğunuzdan emin olun, örneğin: distribution={"smdistributed":{"dataparallel":{"enabled":True} Herring arka ucunu kullanıyorsanız veya distribution={"pytorchddp":{"enabled":True}.
  • Uygun parametrelerin tam listesi için distribution parametre, belgelerimize bakın okuyun.

Artık SageMaker eğitim işinizi başlatabilirsiniz! Eğitim işinizi Python SDK, Boto3, SageMaker konsolu, AWS Komut Satırı Arayüzü (AWS CLI) ve sayısız diğer yöntemler. AWS perspektifinden bakıldığında, bu tek bir API komutu: create-training-job. Bu komutu yerel terminalinizden başlatsanız da, bir AWS Lambda işlev, bir Amazon SageMaker Stüdyosu notebook, KubeFlow ardışık düzeni veya başka herhangi bir bilgi işlem ortamı tamamen size kalmış.

Lütfen PyTorch Lightning ve SageMaker Data Parallel arasındaki entegrasyonun şu anda 1.11'den başlayarak yalnızca PyTorch'un daha yeni sürümleri için desteklendiğini unutmayın. Ayrıca, bu sürüm yalnızca PyTorch 1.12'den başlayarak SageMaker için AWS DLC'lerinde mevcuttur. Bu resmi temel olarak gösterdiğinizden emin olun. İçinde us-east-1, bu adres aşağıdaki gibidir:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Ardından, bunu temel görüntünüz olarak kullanarak Docker kapsayıcınızı genişletebilir veya bunu bir değişken olarak image_uri tartışması SageMaker eğitim tahmincisi.

Sonuç olarak, PyTorch Lightning kodunuzu SageMaker Training'in optimize edilmiş GPU'larında AWS'de bulunan en iyi performansla çalıştırabileceksiniz.

SageMaker'da PyTorch Dağıtılmış Veri Paralel Çalıştır

En büyük problem PyTorch Dağıtılmış Veri Paraleli (DDP) çözer aldatıcı bir şekilde basittir: hız. İyi bir dağıtılmış eğitim çerçevesi, istikrar, güvenilirlik ve en önemlisi, ölçekte mükemmel performans sağlamalıdır. PyTorch DDP, torç geliştiricilerine modellerini hem tek düğümlü hem de çok düğümlü ayarlarda birden çok GPU cihazı üzerinde çoğaltmaları için API'ler sağlayarak bunu başarır. Çerçeve daha sonra eğitim veri kümesinden her bir model kopyasına farklı nesnelerin parçalanmasını yönetir ve her adımda bunları senkronize etmek için model kopyalarının her biri için gradyanların ortalamasını alır. Bu, tam eğitim çalışmasının toplam tamamlanmasında bir model üretir. Aşağıdaki diyagram bu işlemi göstermektedir.

PyTorch DDP, büyük veri kümeleri kullanan projelerde yaygındır. Her veri kümesinin kesin boyutu büyük ölçüde farklılık gösterecektir, ancak genel bir kılavuz, veri kümelerini, hesaplama boyutlarını ve model boyutlarını benzer oranlarda ölçeklemektir. Olarak da adlandırılır ölçeklendirme yasaları, bu üçünün en uygun kombinasyonu tartışmaya açıktır ve uygulamalara göre değişecektir. AWS'de, birden fazla müşteriyle çalışmaya dayalı olarak, genel bir veri kümesi boyutu en az birkaç on GB olduğunda veri paralel stratejilerinin faydalarını açıkça görebiliriz. Veri kümeleri daha da büyüdüğünde, bir tür paralel veri stratejisi uygulamak, genel denemeyi hızlandırmak ve değer elde etme zamanınızı iyileştirmek için kritik bir tekniktir.

Önceden, şirket içinde veya diğer bilgi işlem ortamlarında dağıtılmış eğitim için PyTorch DDP kullanan müşteriler, sorunsuz bir kontrol düzlemine sahip yüksek performanslı GPU'lardan yararlanmak için projelerini SageMaker Eğitimine kolayca geçirecek bir çerçeveye sahip değildi. Spesifik olarak, veri paralel çerçevelerini SMDDP'ye geçirmeleri veya PyTorch DDP'nin SageMaker Training üzerindeki yeteneklerini manuel olarak geliştirmeleri ve test etmeleri gerekiyordu. Bugün SageMaker Training, PyTorch DDP kodlarını kullanan müşteriler için sorunsuz bir deneyim sunmaktan mutluluk duyar.

Bunu etkili bir şekilde kullanmak için eğitim komut dosyalarınızda herhangi bir değişiklik yapmanız gerekmez.

Bu yeni parametreyi aşağıdaki kodda görebilirsiniz. İçinde distribution parametre, basitçe ekleyin pytorchddp ve etkin olarak ayarla true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Bu yeni yapılandırma, SageMaker Python SDK sürüm 2.102.0 ve PyTorch DLC'nin 1.11 sürümünde başlar.

Popüler olana aşina olan PyTorch DDP geliştiricileri için meşale koşusu çerçevesinde, zaten sağlam hata toleransı sağlayan SageMaker eğitim ortamında bunun gerekli olmadığını bilmek yararlıdır. Ancak, yeniden kod yazma işlemlerini en aza indirmek için giriş noktanız olarak bu komutu çalıştıran başka bir başlatıcı komut dosyası getirebilirsiniz.

Artık PyTorch geliştiricileri, komut dosyalarını SageMaker'a kolayca taşıyarak komut dosyalarının ve kapsayıcılarının birden çok hesaplama ortamında sorunsuz bir şekilde çalışmasını sağlayabilir.

Bu, onları gelecekte yararlanmaya hazırlar. SageMaker'ın dağıtılmış eğitim kitaplıkları %40'a varan hızlanma iyileştirmeleri sağlamak için AWS için optimize edilmiş eğitim topolojileri sağlar. PyTorch geliştiricileri için bu, tek bir kod satırıdır! PyTorch DDP kodu için arka ucu basitçe şu şekilde ayarlayabilirsiniz: smddp başlatmada (bkz. PyTorch Eğitim Komut Dosyasını Değiştirin), aşağıdaki kodda gösterildiği gibi:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

Yukarıda gördüğümüz gibi, arka ucunu da ayarlayabilirsiniz. DDPStrategy için smddp Yıldırım kullanırken. Bu kadar yol açabilir %40 genel hızlandırma büyük kümeler için! SageMaker'da dağıtılmış eğitim hakkında daha fazla bilgi edinmek için bkz. talep üzerine web seminerimiz, destekleyici dizüstü bilgisayarlar, ilgili belgeleme, ve kâğıtlar.

Sonuç

Bu gönderide, SageMaker Eğitim ailesindeki iki yeni özelliği tanıttık. Bunlar, PyTorch geliştiricilerinin hem PyTorch DDP hem de PyTorch Lightning olmak üzere mevcut kodlarını SageMaker'da kullanmasını çok daha kolay hale getirir.

Ayrıca Amazon Search'ün derin öğrenme modellerini eğitmek için SageMaker Training'i ve özellikle arka uç olarak SageMaker Data Parallel için optimize edilmiş toplu kitaplıkla PyTorch Lightning'i nasıl kullandığını gösterdik. Genel olarak dağıtılmış eğitime geçiş, Amazon Search'ün 7.3 kat daha hızlı tren süreleri elde etmesine yardımcı oldu.


yazarlar hakkında

Amazon Search PlatoBlockchain Veri Zekasını içeren Amazon SageMaker Training'de PyTorch Lightning ve yerel PyTorch DDP'yi çalıştırın. Dikey Arama. Ai.Emily Webber SageMaker başlatıldıktan hemen sonra AWS'ye katıldı ve o zamandan beri dünyaya bunu anlatmaya çalışıyor! Emily, müşteriler için yeni makine öğrenimi deneyimleri oluşturmanın dışında meditasyon yapmaktan ve Tibet Budizmi üzerinde çalışmaktan keyif alıyor.

Amazon Search PlatoBlockchain Veri Zekasını içeren Amazon SageMaker Training'de PyTorch Lightning ve yerel PyTorch DDP'yi çalıştırın. Dikey Arama. Ai. Karan Diman Toronto, Kanada merkezli AWS'de Yazılım Geliştirme Mühendisidir. Dağıtılmış bilgi işlem iş yüklerini hızlandırmak için Makine Öğrenimi alanı ve bina çözümleri konusunda çok tutkulu.

Amazon Search PlatoBlockchain Veri Zekasını içeren Amazon SageMaker Training'de PyTorch Lightning ve yerel PyTorch DDP'yi çalıştırın. Dikey Arama. Ai.Vişva Karia AWS Deep Engine'de Yazılım Geliştirme Mühendisidir. İlgi alanları Makine Öğrenimi ve Dağıtılmış Sistemlerin kesiştiği noktada yer alır ve aynı zamanda kadınları teknoloji ve yapay zeka alanında güçlendirme konusunda tutkuludur.

Amazon Search PlatoBlockchain Veri Zekasını içeren Amazon SageMaker Training'de PyTorch Lightning ve yerel PyTorch DDP'yi çalıştırın. Dikey Arama. Ai.Eiman Elnahrawy Amazon Search'te Makine Öğrenimi hızlandırma, ölçeklendirme ve otomasyon çalışmalarına liderlik eden Baş Yazılım Mühendisidir. Uzmanlığı, Makine Öğrenimi, Dağıtılmış Sistemler ve Kişiselleştirme dahil olmak üzere birçok alanı kapsar.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi