Menggunakan penjadwalan sadar topologi di Amazon SageMaker HyperPod - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan penjadwalan sadar topologi di Amazon SageMaker HyperPod

Efisiensi transfer data merupakan faktor penting dalam komputasi kinerja tinggi (HPC) dan beban kerja pembelajaran mesin. Saat menggunakan UltraServers dengan Amazon SageMaker HyperPod, SageMaker HyperPod secara otomatis menerapkan label topologi ke sumber daya Anda. Penjadwalan sadar topologi membantu mengalokasikan sumber daya untuk meminimalkan overhead transfer data dengan mempertimbangkan topologi instance (bagaimana sumber daya terhubung dalam sebuah instance) dan topologi jaringan (bagaimana instance terhubung satu sama lain). Untuk informasi selengkapnya tentang topologi instans, lihat topologi EC2 instans Amazon.

Penjadwalan sadar topologi berfungsi dengan kedua cluster di Slurm dan Amazon EKS. Untuk informasi umum tentang cara kerja topologi dengan Slurm, lihat panduan Topologi dalam dokumentasi Slurm.

Di Amazon SageMaker HyperPod, overhead transfer data biasanya berasal dari tiga sumber utama:

  • GPU-to-GPU Transfer data: Teknologi modern seperti NVLink dan NVLink switch memungkinkan transfer data throughput tinggi antara GPUs tanpa melibatkan sumber daya komputasi lainnya. Ini sangat efisien tetapi biasanya terbatas pada satu contoh.

  • GPU-to-CPU transfer data: Sistem akses memori non-seragam (NUMA) memiliki beberapa bus sistem pada satu motherboard. Dalam arsitektur EC2 contoh tipikal seperti p5.48xlarge, ada dua bus sistem yang berbeda, masing-masing dengan CPU dan 4. GPUs Untuk kinerja optimal, proses yang memuat atau membaca data to/from GPUs harus dijalankan pada CPU yang terhubung ke bus sistem yang sama dengan GPU.

  • Komunikasi jaringan antar instance: Instance mentransfer data melalui rantai switch jaringan. Jalur terpendek biasanya sesuai dengan latensi terendah.

Arsitektur UltraServer

SageMaker HyperPod mendukung UltraServer arsitektur dengan instance p6e-gb200.36xlarge. Sebuah UltraServer berisi hingga 18 instance p6e-gb200.36xlarge, dengan 4 pada setiap instance. GPUs Semua GPUs node saling berhubungan melalui NVLink switch, memungkinkan transfer data antara dua GPUs tanpa menggunakan antarmuka jaringan.

Arsitektur ini memberikan peningkatan kinerja yang signifikan dibandingkan dengan instance individual. Untuk memanfaatkan arsitektur ini secara efektif, pekerjaan harus diserahkan ke node komputasi dari satu UltraServer.

Label topologi EKS

Sesuai dengan topologi EC2 instance, HyperPod secara otomatis memberi label pada node Anda dengan label berikut:

  • topology.kubernetes.io/region - tempat node berada. Wilayah AWS

  • topology.kubernetes.io/zone - Availability Zone tempat node berada.

  • menggambarkan rangkaian simpul jaringan dari sebuah instans. Dalam setiap set simpul jaringan, simpul jaringan terdaftar dalam urutan hierarkis dari atas ke bawah. Simpul jaringan yang terhubung ke instans adalah simpul jaringan terakhir dalam daftar (lapisan bawah). Ada hingga empat lapisan node jaringan, dan setiap node ditandai dengan label. Lapisan yang tersedia adalahtopology.k8s.aws/network-node-layer-1,topology.k8s.aws/network-node-layer-2,topology.k8s.aws/network-node-layer-3.

  • topology.k8s.aws/ultraserver-id - Pengidentifikasi yang digunakan untuk memberi label pada setiap instance milik domain yang sama di Ultraserver. NVLink Untuk mempelajari selengkapnya tentang menggunakan UltraServers dengan SageMaker HyperPod dan , lihat .

Dengan menggunakan label ini, Anda dapat menggunakan penjadwalan sadar topologi dalam tata kelola HyperPod tugas untuk menerapkan label topologi dan anotasi guna mengoptimalkan efisiensi pelatihan beban kerja Anda. Untuk informasi selengkapnya, lihat Menggunakan penjadwalan sadar topologi di tata kelola tugas Amazon SageMaker HyperPod .

Plugin topologi jaringan slurm

Slurm menyediakan plugin bawaan untuk kesadaran topologi jaringan. UltraServer arsitektur dalam SageMaker HyperPod mendukung plugin blok.

Menggunakan topology/block Plugin

NVIDIA mengembangkan topology/block plugin yang menyediakan penjadwalan hierarkis di seluruh blok node dengan karakteristik sebagai berikut:

  • Blok adalah rentang node yang berurutan

  • Blok tidak dapat tumpang tindih satu sama lain

  • Semua node dalam blok dialokasikan ke pekerjaan sebelum blok berikutnya digunakan

  • Ukuran blok perencanaan adalah ukuran blok terkecil yang dikonfigurasi

  • Setiap ukuran level blok yang lebih tinggi adalah kekuatan dua dari yang sebelumnya

Plugin ini mengalokasikan node berdasarkan topologi jaringan yang ditentukan.

Konfigurasi

Untuk mengonfigurasi penjadwalan sadar topologi dengan plugin, topology/block

  • SageMaker HyperPod secara otomatis mengkonfigurasi topology/block plugin. Jika Anda ingin mengkonfigurasi plugin, tentukan yang berikut ini di file topology.conf di direktori konfigurasi Slurm Anda:

    BlockName=us1 Nodes=ultraserver1-[0-17] BlockName=us2 Nodes=ultraserver2-[0-17] BlockSizes=18
  • Pastikan Anda slurm.conf termasuk:

    TopologyPlugin=topology/block

Penggunaan

Saat mengirimkan pekerjaan, Anda dapat menggunakan argumen tambahan berikut dengan sbatch dan srun perintah:

  • --segment=N: Tentukan jumlah node untuk dikelompokkan bersama. Ukuran segmen harus kurang dari atau sama dengan ukuran blok perencanaan.

  • --exclusive=topo: Meminta agar tidak ada pekerjaan lain yang ditempatkan di blok yang sama. Ini berguna untuk benchmarking dan aplikasi yang peka terhadap kinerja.

Berikut ini adalah contoh skenario yang mungkin Anda pertimbangkan ketika berpikir tentang mengalokasikan blok.

Alokasikan seluruh blok node pada sistem kosong

sbatch -N18

Alokasikan dua blok node pada sistem kosong

sbatch -N36

Alokasikan 18 node pada satu blok+6 node di blok lain

sbatch -N24

Alokasikan 12 node pada satu blok dan 12 node di blok lain

sbatch -N24 —segment=12

Dengan —exclusive=topo, pekerjaan harus ditempatkan di blok tanpa pekerjaan lain

sbatch -N12 —exclusive=topo

Praktik terbaik untuk UltraServer topologi

Untuk kinerja optimal dengan UltraServer arsitektur di SageMaker HyperPod:

  • Tetapkan ukuran blok yang sesuai: Konfigurasikan BlockSizes=18 (atau 17 jika satu node cadangan) agar sesuai dengan UltraServer arsitektur.

  • Gunakan segmen untuk ketersediaan yang lebih baik: Gunakan--segment=16,--segment=8, atau --segment=9 dengan srun dan sbatch perintah untuk meningkatkan fleksibilitas penjadwalan pekerjaan.

  • Pertimbangkan ukuran pekerjaan dan ukuran segmen:

    • JikaBlockSizes=18, pekerjaan dengan hingga 18 instans akan selalu berjalan dalam satu UltraServer.

    • JikaBlockSizes=16, pekerjaan dengan kurang dari 16 instans akan selalu berjalan pada satu UltraServer, sementara pekerjaan dengan 18 instance dapat berjalan pada satu atau dua. UltraServers

Saat memikirkan segmentasi, pertimbangkan hal berikut:

  • Dengan--segment=1, setiap instance dapat berjalan secara terpisah UltraServer.

  • Dengan-N 18 --segment 9, 9 node akan ditempatkan pada satu UltraServer, dan 9 node lainnya dapat ditempatkan pada yang sama atau yang lain UltraServer.

  • Dengan-N 24 --segment 8, pekerjaan dapat berjalan pada 2 atau 3 UltraServers, dengan setiap 8 node ditempatkan bersama di server yang sama.

Keterbatasan dalam SageMaker HyperPod penjadwalan sadar topologi

topology/blockPlugin ini memiliki keterbatasan dengan cluster heterogen (cluster dengan tipe instance yang berbeda):

  • Hanya node yang terdaftar dalam blok yang dapat dijadwalkan oleh Slurm

  • Setiap blok harus memiliki setidaknya BlockSizes[0] simpul

Untuk cluster heterogen, pertimbangkan alternatif ini:

  • Jangan gunakan plugin blok dengan cluster heterogen. Sebaliknya, isolasi UltraServer node di partisi yang berbeda.

  • Buat cluster terpisah dengan UltraServers hanya di VPC yang sama dan gunakan pengaturan multicluster Slurm.