Jalankan PyTorch Lightning dan PyTorch DDP asli di Pelatihan Amazon SageMaker, yang menampilkan Intelijen Data Amazon Search PlatoBlockchain. Pencarian Vertikal. Ai.

Jalankan PyTorch Lightning dan PyTorch DDP asli di Pelatihan Amazon SageMaker, yang menampilkan Pencarian Amazon

Begitu banyak data, begitu sedikit waktu. Pakar pembelajaran mesin (ML), ilmuwan data, insinyur, dan penggemar telah menghadapi masalah ini di seluruh dunia. Dari pemrosesan bahasa alami hingga visi komputer, tabel hingga deret waktu, dan semua yang ada di antaranya, masalah lama dalam mengoptimalkan kecepatan saat menjalankan data terhadap sebanyak mungkin GPU yang Anda dapatkan telah menginspirasi banyak solusi. Hari ini, kami dengan senang hati mengumumkan fitur untuk pengembang PyTorch menggunakan kerangka kerja sumber terbuka asli, seperti Petir PyTorch dan DDP PyTorch, yang akan menyederhanakan jalur mereka ke cloud.

Amazon SageMaker adalah layanan yang terkelola sepenuhnya untuk ML, dan pelatihan model SageMaker adalah lingkungan komputasi yang dioptimalkan untuk pelatihan performa tinggi dalam skala besar. Pelatihan model SageMaker menawarkan pengalaman pelatihan jarak jauh dengan bidang kontrol yang mulus untuk melatih dan mereproduksi model ML dengan mudah dengan kinerja tinggi dan biaya rendah. Kami senang mengumumkan fitur baru dalam portofolio pelatihan SageMaker yang membuat menjalankan PyTorch dalam skala lebih mudah dan lebih mudah diakses:

  1. PyTorch Lightning sekarang dapat diintegrasikan ke Pustaka paralel data terdistribusi SageMaker dengan hanya satu baris perubahan kode.
  2. Pelatihan model SageMaker sekarang memiliki dukungan untuk PyTorch Distributed Data Parallel asli dengan backend NCCL, memungkinkan pengembang untuk bermigrasi ke SageMaker lebih mudah dari sebelumnya.

Dalam posting ini, kami membahas fitur-fitur baru ini, dan juga mempelajari bagaimana Amazon Search telah menjalankan PyTorch Lightning dengan backend pelatihan terdistribusi yang dioptimalkan di SageMaker untuk mempercepat waktu pelatihan model.

Sebelum masuk ke studi kasus Pencarian Amazon, bagi mereka yang tidak terbiasa, kami ingin memberikan beberapa latar belakang tentang Pustaka paralel data terdistribusi SageMaker. Pada tahun 2020, kami mengembangkan dan meluncurkan konfigurasi klaster khusus untuk penurunan gradien terdistribusi pada skala yang meningkatkan efisiensi klaster secara keseluruhan, yang diperkenalkan di Amazon Science sebagai Ikan haring. Menggunakan yang terbaik dari server parameter dan topologi berbasis cincin, SageMaker Distributed Data Parallel (SMDDP) dioptimalkan untuk Cloud komputasi elastis Amazon (Amazon EC2) topologi jaringan, termasuk PUS. Untuk ukuran cluster yang lebih besar, SMDDP mampu memberikan peningkatan throughput 20โ€“40% dibandingkan dengan Horovod (TensorFlow) dan PyTorch Distributed Data Parallel. Untuk ukuran cluster yang lebih kecil dan model yang didukung, kami merekomendasikan: Penyusun Pelatihan SageMaker, yang mampu mengurangi waktu kerja keseluruhan hingga 50%.

Sorotan pelanggan: PyTorch Lightning pada backend SageMaker yang dioptimalkan dengan Pencarian Amazon

Amazon Search bertanggung jawab atas pengalaman pencarian dan penemuan di Amazon.com. Ini memperkuat pengalaman pencarian bagi pelanggan yang mencari produk untuk dibeli di Amazon. Pada tingkat tinggi, Amazon Search membuat indeks untuk semua produk yang dijual di Amazon.com. Saat pelanggan memasukkan kueri, Amazon Search kemudian menggunakan berbagai teknik ML, termasuk model pembelajaran mendalam, untuk mencocokkan produk yang relevan dan menarik dengan kueri pelanggan. Kemudian peringkat produk sebelum menunjukkan hasilnya kepada pelanggan.

Ilmuwan Amazon Search telah menggunakan PyTorch Lightning sebagai salah satu kerangka kerja utama untuk melatih model pembelajaran mendalam yang memperkuat peringkat Pencarian karena fitur kegunaan tambahannya di atas PyTorch. SMDDP tidak didukung untuk model pembelajaran mendalam yang ditulis dalam PyTorch Lightning sebelum peluncuran SageMaker baru ini. Ini mencegah ilmuwan Amazon Search yang lebih suka menggunakan PyTorch Lightning untuk menskalakan pelatihan model mereka menggunakan teknik paralel data, secara signifikan memperlambat waktu pelatihan mereka dan mencegah mereka menguji eksperimen baru yang memerlukan pelatihan yang lebih skalabel.

Hasil benchmarking awal tim menunjukkan waktu pelatihan 7.3 kali lebih cepat untuk model sampel ketika dilatih pada delapan node dibandingkan dengan baseline pelatihan node tunggal. Model dasar yang digunakan dalam pembandingan ini adalah jaringan saraf perceptron multi-layer dengan tujuh lapisan padat yang terhubung penuh dan lebih dari 200 parameter. Tabel berikut merangkum hasil tolok ukur pada instans pelatihan ml.p3.16xlarge SageMaker.

Jumlah Instance Waktu Pelatihan (menit) Perbaikan
1 99 Dasar
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Selanjutnya, kami menyelami detail peluncuran baru. Jika Anda suka, Anda dapat melangkah melalui yang sesuai contoh buku catatan.

Jalankan PyTorch Lightning dengan perpustakaan pelatihan terdistribusi SageMaker

Dengan senang hati kami umumkan bahwa SageMaker Data Parallel sekarang terintegrasi dengan mulus dengan PyTorch Lightning dalam pelatihan SageMaker.

PyTorch Lightning adalah kerangka kerja sumber terbuka yang menyediakan penyederhanaan untuk menulis model khusus di PyTorch. Dalam beberapa hal mirip dengan apa yang Keras lakukan untuk TensorFlow, atau bahkan bisa dibilang Hugging Face, PyTorch Lightning menyediakan API tingkat tinggi dengan abstraksi untuk sebagian besar fungsionalitas tingkat rendah dari PyTorch itu sendiri. Ini termasuk mendefinisikan model, membuat profil, evaluasi, pemangkasan, paralelisme model, konfigurasi hyperparameter, pembelajaran transfer, dan banyak lagi.

Sebelumnya, pengembang PyTorch Lightning tidak yakin tentang cara memigrasikan kode pelatihan mereka dengan mulus ke kluster GPU SageMaker berperforma tinggi. Selain itu, tidak ada cara bagi mereka untuk memanfaatkan peningkatan efisiensi yang diperkenalkan oleh SageMaker Data Parallel.

Untuk PyTorch Lightning, secara umum, seharusnya tidak ada perubahan kode untuk menjalankan API ini di Pelatihan SageMaker. Dalam contoh notebook kami menggunakan Strategi DDP dan Plugin DDPP metode.

Ada tiga langkah untuk menggunakan PyTorch Lightning dengan SageMaker Data Parallel sebagai backend yang dioptimalkan:

  1. Gunakan yang didukung Wadah Pembelajaran Mendalam AWS (DLC) sebagai gambar dasar Anda, atau secara opsional buat wadah Anda sendiri dan instal sendiri backend Paralel Data SageMaker. Pastikan Anda memiliki PyTorch Lightning yang disertakan dalam paket yang diperlukan, seperti dengan a requirements.txt file.
  2. Buat beberapa perubahan kode kecil pada skrip pelatihan Anda yang mengaktifkan backend yang dioptimalkan. Ini termasuk:
    1. Impor perpustakaan SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Siapkan lingkungan PyTorch Lightning untuk SageMaker:
      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. Jika Anda menggunakan versi PyTorch Lightning yang lebih lama dari 1.5.10, Anda perlu menambahkan beberapa langkah lagi.
      1. Pertama, tambahkan variabel lingkungan:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Kedua, pastikan Anda menggunakan DDPPlugin, Daripada DDPStrategy. Jika Anda menggunakan versi yang lebih baru, yang dapat Anda atur dengan mudah dengan menempatkan tombol requirements.txt dalam source_dir untuk pekerjaan Anda, maka ini tidak perlu. Lihat kode berikut:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Secara opsional, tentukan backend grup proses Anda sebagai "smddp" dalam DDPSTrategy obyek. Namun, jika Anda menggunakan PyTorch Lightning dengan backend DDP PyTorch, yang juga didukung, cukup hapus `process_group_backend`parameter. Lihat kode berikut:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Pastikan Anda memiliki metode distribusi yang dicatat dalam estimator, seperti: distribution={"smdistributed":{"dataparallel":{"enabled":True} jika Anda menggunakan backend Herring, atau distribution={"pytorchddp":{"enabled":True}.
  • Untuk daftar lengkap parameter yang sesuai di distribution parameter, lihat dokumentasi kami di sini.

Sekarang Anda dapat meluncurkan tugas pelatihan SageMaker Anda! Anda dapat meluncurkan tugas pelatihan Anda melalui Python SDK, Boto3, konsol SageMaker, the Antarmuka Baris Perintah AWS (AWS CLI), dan banyak metode lainnya. Dari perspektif AWS, ini adalah satu perintah API: create-training-job. Apakah Anda meluncurkan perintah ini dari terminal lokal Anda, dan AWS Lambda fungsi, sebuah Studio Amazon SageMaker notebook, pipeline KubeFlow, atau lingkungan komputasi lainnya sepenuhnya terserah Anda.

Harap dicatat bahwa integrasi antara PyTorch Lightning dan SageMaker Data Parallel saat ini hanya didukung untuk versi PyTorch yang lebih baru, mulai dari 1.11. Selain itu, rilis ini hanya tersedia di DLC AWS untuk SageMaker mulai dari PyTorch 1.12. Pastikan Anda menunjuk ke gambar ini sebagai basis Anda. Di us-east-1, alamat ini adalah sebagai berikut:

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

Kemudian Anda dapat memperluas wadah Docker Anda menggunakan ini sebagai gambar dasar Anda, atau Anda dapat meneruskan ini sebagai variabel ke dalam image_uri argumen dari Penaksir pelatihan SageMaker.

Hasilnya, Anda akan dapat menjalankan kode PyTorch Lightning pada GPU yang dioptimalkan dari Pelatihan SageMaker, dengan kinerja terbaik yang tersedia di AWS.

Jalankan Paralel Data Terdistribusi PyTorch di SageMaker

Masalah terbesar PyTorch Data Terdistribusi Paralel (DDP) memecahkan tampak sederhana: kecepatan. Kerangka kerja pelatihan terdistribusi yang baik harus memberikan stabilitas, keandalan, dan yang terpenting, kinerja luar biasa dalam skala besar. PyTorch DDP memberikan ini dengan menyediakan pengembang obor dengan API untuk mereplikasi model mereka melalui beberapa perangkat GPU, baik dalam pengaturan satu node dan multi-node. Kerangka kerja kemudian mengelola sharding objek yang berbeda dari set data pelatihan ke setiap salinan model, dengan merata-ratakan gradien untuk setiap salinan model untuk menyinkronkannya di setiap langkah. Ini menghasilkan satu model pada penyelesaian total dari rangkaian pelatihan penuh. Diagram berikut menggambarkan proses ini.

PyTorch DDP umum di proyek yang menggunakan kumpulan data besar. Ukuran yang tepat dari setiap kumpulan data akan sangat bervariasi, tetapi pedoman umumnya adalah menskalakan kumpulan data, menghitung ukuran, dan ukuran model dalam rasio yang sama. Disebut juga hukum skala, kombinasi optimal dari ketiganya sangat diperdebatkan dan akan bervariasi berdasarkan aplikasi. Di AWS, berdasarkan bekerja dengan banyak pelanggan, kami dapat dengan jelas melihat manfaat dari strategi paralel data ketika ukuran kumpulan data keseluruhan setidaknya beberapa puluh GB. Saat kumpulan data menjadi lebih besar, menerapkan beberapa jenis strategi paralel data adalah teknik penting untuk mempercepat keseluruhan eksperimen dan meningkatkan waktu Anda untuk menilai.

Sebelumnya, pelanggan yang menggunakan PyTorch DDP untuk pelatihan terdistribusi di tempat atau di lingkungan komputasi lainnya tidak memiliki kerangka kerja untuk dengan mudah memigrasikan proyek mereka ke Pelatihan SageMaker untuk memanfaatkan GPU berperforma tinggi dengan bidang kontrol yang mulus. Secara khusus, mereka perlu memigrasikan kerangka kerja paralel data mereka ke SMDDP, atau mengembangkan dan menguji kemampuan DDP PyTorch pada Pelatihan SageMaker secara manual. Hari ini, Pelatihan SageMaker dengan senang hati memberikan pengalaman yang mulus bagi pelanggan yang menggunakan kode DDP PyTorch mereka.

Untuk menggunakan ini secara efektif, Anda tidak perlu membuat perubahan apa pun pada skrip pelatihan Anda.

Anda dapat melihat parameter baru ini dalam kode berikut. Dalam distribution parameter, cukup tambahkan pytorchddp dan atur diaktifkan sebagai 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"}}
)

Konfigurasi baru ini dimulai pada SageMaker Python SDK versi 2.102.0 dan PyTorch DLC 1.11.

Untuk pengembang DDP PyTorch yang akrab dengan yang populer obor kerangka kerja, sangat membantu untuk mengetahui bahwa ini tidak diperlukan di lingkungan pelatihan SageMaker, yang telah memberikan toleransi kesalahan yang kuat. Namun, untuk meminimalkan penulisan ulang kode, Anda dapat membawa skrip peluncur lain yang menjalankan perintah ini sebagai titik masuk Anda.

Sekarang pengembang PyTorch dapat dengan mudah memindahkan skrip mereka ke SageMaker, memastikan skrip dan wadah mereka dapat berjalan mulus di berbagai lingkungan komputasi.

Ini mempersiapkan mereka untuk, di masa depan, memanfaatkan Pustaka pelatihan terdistribusi SageMaker yang menyediakan topologi pelatihan yang dioptimalkan AWS untuk memberikan peningkatan kecepatan hingga 40%. Untuk pengembang PyTorch, ini adalah satu baris kode! Untuk kode DDP PyTorch, Anda cukup mengatur backend ke smddp dalam inisialisasi (lihat Memodifikasi Skrip Pelatihan PyTorch), seperti yang ditunjukkan pada kode berikut:

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

Seperti yang kita lihat di atas, Anda juga dapat mengatur backend dari DDPStrategy untuk smddp saat menggunakan Petir. Hal ini dapat menyebabkan hingga 40% percepatan keseluruhan untuk cluster besar! Untuk mempelajari lebih lanjut tentang pelatihan terdistribusi di SageMaker, lihat webinar sesuai permintaan kami, mendukung laptop, relevan dokumentasi, dan dokumen.

Kesimpulan

Dalam posting ini, kami memperkenalkan dua fitur baru dalam keluarga Pelatihan SageMaker. Ini mempermudah pengembang PyTorch untuk menggunakan kode mereka yang ada di SageMaker, baik PyTorch DDP maupun PyTorch Lightning.

Kami juga menunjukkan bagaimana Amazon Search menggunakan Pelatihan SageMaker untuk melatih model pembelajaran mendalam mereka, dan khususnya PyTorch Lightning dengan perpustakaan kolektif SageMaker Data Parallel yang dioptimalkan sebagai backend. Pindah ke pelatihan terdistribusi secara keseluruhan membantu Amazon Search mencapai waktu kereta 7.3x lebih cepat.


Tentang penulis

Jalankan PyTorch Lightning dan PyTorch DDP asli di Pelatihan Amazon SageMaker, yang menampilkan Intelijen Data Amazon Search PlatoBlockchain. Pencarian Vertikal. Ai.Emily Webber bergabung dengan AWS tepat setelah SageMaker diluncurkan, dan telah mencoba memberi tahu dunia tentang hal itu sejak saat itu! Di luar membangun pengalaman ML baru untuk pelanggan, Emily menikmati bermeditasi dan mempelajari Buddhisme Tibet.

Jalankan PyTorch Lightning dan PyTorch DDP asli di Pelatihan Amazon SageMaker, yang menampilkan Intelijen Data Amazon Search PlatoBlockchain. Pencarian Vertikal. Ai. Karan Dhiman adalah Insinyur Pengembangan Perangkat Lunak di AWS, yang berbasis di Toronto, Kanada. Dia sangat bersemangat tentang ruang Pembelajaran Mesin dan membangun solusi untuk mempercepat beban kerja komputasi terdistribusi.

Jalankan PyTorch Lightning dan PyTorch DDP asli di Pelatihan Amazon SageMaker, yang menampilkan Intelijen Data Amazon Search PlatoBlockchain. Pencarian Vertikal. Ai.Wiswa Karia adalah Insinyur Pengembangan Perangkat Lunak di AWS Deep Engine. Minatnya terletak di persimpangan Machine Learning dan Sistem Terdistribusi dan dia juga bersemangat dalam memberdayakan wanita di bidang teknologi dan AI.

Jalankan PyTorch Lightning dan PyTorch DDP asli di Pelatihan Amazon SageMaker, yang menampilkan Intelijen Data Amazon Search PlatoBlockchain. Pencarian Vertikal. Ai.Eiman Elnahrawy adalah Insinyur Perangkat Lunak Utama di Amazon Search yang memimpin upaya percepatan, penskalaan, dan otomatisasi Pembelajaran Mesin. Keahliannya mencakup berbagai bidang, termasuk Pembelajaran Mesin, Sistem Terdistribusi, dan Personalisasi.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS