View a markdown version of this page

Konfigurasikan UltraServer instance - AWS PCS

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

Konfigurasikan UltraServer instance

UltraServer Instans NVIDIA menghubungkan beberapa GPU di seluruh instans menggunakan NVLink. GPU-to-GPU komunikasi melalui NVLink memerlukan layanan NVIDIA IMEX untuk dikonfigurasi dengan alamat IP dari semua node komputasi dalam pekerjaan. Halaman ini menunjukkan cara membuat skrip prolog Slurm yang secara otomatis mengkonfigurasi IMEX untuk setiap pekerjaan, dan cara menyebarkannya di cluster PCS Anda. AWS

Prasyarat

  • Cluster AWS PCS dengan Slurm 25.05 atau yang lebih baru.

  • Grup node komputasi menggunakan UltraServer instance dengan Blok Kapasitas. Untuk informasi selengkapnya, lihat Konfigurasikan grup node komputasi AWS PCS untuk menggunakan Blok Kapasitas.

  • AMI dengan driver NVIDIA, CUDA, dan paket IMEX diinstal. Layanan IMEX (nvidia-imex) harus diaktifkan pada AMI.

  • Skrip prolog harus tersedia di semua node komputasi di jalur yang dikonfigurasi dalam pengaturan S Prolog lurm cluster. Anda dapat menggunakan sistem file bersama atau menyertakan skrip dalam AMI kustom Anda.

Pemilihan topologi otomatis

Saat Anda membuat cluster AWS PCS dengan grup simpul UltraServer komputasi, sistem memeriksa Blok Kapasitas, mengidentifikasi jen UltraServer isnya, dan mengonfigurasi Slurm dengan plugin topologi yang sesuai. Proses ini berjalan secara otomatis dan tidak memerlukan konfigurasi apa pun.

AWS PCS mengelola topologi melalui topology.yaml file yang dihasilkan secara dinamis. Saat cluster berkembang melalui penambahan atau penghapusan grup simpul komputasi, AWS PCS terus mendamaikan konfigurasi topologi untuk mencerminkan status cluster saat ini.

Model topologi blok seragam, domain komunikasi bandwidth tinggi di mana semua GPU berpartisipasi dalam domain NVLink berkecepatan tinggi tunggal dengan latensi hampir seragam. topology/blockPlugin mengalokasikan node berdasarkan topologi jaringan yang ditentukan, memastikan bahwa pekerjaan ditempatkan dalam yang sama UltraServer dan GPU-to-GPU komunikasi menggunakan NVLink alih-alih kembali ke jaringan EFA.

Menggunakan topology/block plugin

Pekerjaan yang dikirimkan UltraServer ke antrian secara otomatis ditempatkan dalam blok (UltraServer) yang sama oleh penjadwal Slurm. Semua node dalam blok dialokasikan ke pekerjaan sebelum blok berikutnya digunakan. Pekerjaan harus menggunakan --exclusive flag karena IMEX memerlukan domain IMEX khusus per pekerjaan, dan memulai ulang layanan IMEX akan mengganggu pekerjaan lain yang berjalan di node yang sama. Untuk informasi selengkapnya tentang topology/block plugin, lihat panduan Topologi dan referensi https://slurm.schedmd.com/topology.yaml.html topology.yaml dalam dokumentasi Slurm.

Saat mengirimkan pekerjaan, Anda dapat menggunakan --segment=N argumen dengan srun perintah sbatch dan untuk menentukan jumlah node untuk dikelompokkan bersama dalam blok yang sama. Ukuran segmen harus kurang dari atau sama dengan ukuran blok perencanaan. Penggunaan --segment tidak menjamin bahwa segmen akan ditempatkan pada blok yang berbeda.

Berikut ini adalah contoh skenario untuk mengalokasikan blok pada antrian dengan 18-node UltraServers (misalnya, u-p6e-gb200x72 yang memiliki 18 p6e-gb200.36xlarge instance):

# Allocate a whole block (single UltraServer) sbatch -N18 --exclusive --partition=ultra job.sh # Allocate two full blocks (two UltraServers) sbatch -N36 --exclusive --partition=ultra job.sh # Allocate 24 nodes: full block is filled before 2nd block is used sbatch -N24 --exclusive --partition=ultra job.sh # Allocate 24 nodes as segments of 12, segments can fit on blocks with available space sbatch -N24 --segment=12 --exclusive --partition=ultra job.sh

Praktik terbaik untuk UltraServer topologi

Untuk kinerja optimal dengan UltraServer arsitektur di AWS PCS:

  • Gunakan segmen untuk ketersediaan yang lebih baik: Gunakan --segment opsi dengan nilai yang lebih kecil dari ukuran blok penuh untuk memungkinkan pekerjaan dijadwalkan pada blok yang memiliki beberapa node yang terkuras atau tidak tersedia. Ini memperdagangkan lokalitas NVLink absolut untuk waktu penjadwalan pekerjaan yang lebih cepat. Untuk informasi selengkapnya, lihat M endapatkan kontrol lebih lanjut atas penjadwalan node dengan Topology/Block Plugin.

  • Pertimbangkan ukuran pekerjaan dan ukuran blok: JikaBlockSizes=18, pekerjaan dengan hingga 18 instans selalu berjalan pada satu instans UltraServer. Pekerjaan yang meminta lebih dari 18 node mencakup beberapa UltraServers, dengan konektivitas NVLink dalam setiap blok dan jaringan EFA antar blok.

  • Pengorbanan segmen: Menggunakan --segment menonaktifkan penjadwalan ukuran blok tingkat tinggi. Tanpa--segment, blok penuh diisi sebelum blok berikutnya digunakan. Dengan--segment, segmen dapat ditempatkan pada blok apa pun dengan node yang cukup tersedia.

Batasan

  • AWS PCS mensyaratkan bahwa UltraServer grup simpul komputasi ditempatkan dalam antrian khusus, terpisah dari grup simpul non- UltraServer komputasi.

  • Setiap grup simpul komputasi dapat dikaitkan dengan hanya satu Blok UltraServer Kapasitas.

  • Ketika antrian berisi beberapa grup simp UltraServer ul komputasi, jumlah instance dari setiap grup simpul komputasi harus memiliki rasio kekuatan-2 di antara mereka (misalnya, 9 dan 18, atau 2 dan 8).

  • Pekerjaan di UltraServer antrian harus menggunakan --exclusive flag untuk memastikan domain IMEX khusus per pekerjaan.

  • Domain IMEX yang dibuat oleh skrip prolog hanya mencakup node yang dialokasikan untuk pekerjaan. Karena AWS PCS mengalokasikan node ke pekerjaan secara dinamis, domain IMEX tidak dapat dibuat sebelumnya dan harus dikonfigurasi pada waktu mulai pekerjaan. Pekerjaan yang mencakup beberapa tidak UltraServers akan memiliki konektivitas NVLink antar node yang berbeda UltraServers karena domain IMEX didasarkan pada alamat IP dan tidak dapat menjembatani struktur NVLink terpisah.

  • IMEX nodes_config.cfg tidak dapat dimodifikasi saat layanan sedang berjalan. Jika konfigurasi diubah, IMEX secara permanen memblokir komunikasi ke node yang tidak cocok. Satu-satunya pemulihan adalah menghentikan IMEX pada semua node dan memulai ulang dengan konfigurasi yang konsisten.

Buat skrip prolog IMEX

91_nvidia_imex_prolog.shSkrip berikut mengonfigurasi NVIDIA IMEX pada node komputasi saat pekerjaan Slurm dimulai. Nama skrip menggunakan 91 awalan mengikuti konvensi penamaan SchedMD untuk urutan eksekusi prolog.

Skrip tersebut melakukan tindakan-tindakan berikut:

  1. Periksa apakah pekerjaan itu eksklusif. Konfigurasi IMEX memerlukan pekerjaan eksklusif untuk mencegah gangguan pekerjaan lain yang sedang berjalan pada node yang sama.

  2. Memeriksa apakah jenis instance adalah UltraServer tipe yang didukung (p6e-gb200ataup6e-gb300).

  3. Memeriksa apakah layanan IMEX diaktifkan.

  4. Membuat perangkat saluran default IMEX jika tidak ada.

  5. Menulis alamat IP pribadi dari semua node pekerjaan ke dalam/etc/nvidia-imex/nodes_config.cfg.

  6. Mulai ulang layanan IMEX.

penting

Skrip prolog ini mengharuskan pekerjaan dikirimkan dengan --exclusive bendera. Memulai ulang IMEX saat pekerjaan lain berjalan di node yang sama akan mengganggu pekerjaan tersebut.

catatan

Skrip prolog ini mendukung p6e-gb200 dan jenis p6e-gb300 instance. Untuk menyesuaikannya dengan jenis instance lain, perbarui ALLOWED_INSTANCE_TYPES pola dalam skrip.

Simpan skrip berikut sebagai91_nvidia_imex_prolog.sh:

#!/usr/bin/env bash # This prolog script configures NVIDIA IMEX on compute nodes involved in the job execution. # # In particular: # - Checks whether the job is executed exclusively. # If not, it exits immediately because it requires jobs to be executed exclusively. # - Checks if it is running on a supported UltraServer instance type. # If not, it exits immediately because IMEX must be configured only on those instance types. # - Checks if the IMEX service is enabled. # If not, it exits immediately because IMEX must be enabled to get configured. # - Creates the IMEX default channel. # For more information about IMEX channels, see # https://docs.nvidia.com/multi-node-nvlink-systems/imex-guide/imexchannels.html # - Writes the private IP addresses of compute nodes into /etc/nvidia-imex/nodes_config.cfg. # - Restarts the IMEX system service. # # REQUIREMENTS: # - This prolog assumes to be run only with exclusive jobs. LOG_FILE_PATH="/var/log/nvidia-imex-prolog.log" SCONTROL_CMD="scontrol" IMEX_START_TIMEOUT=60 IMEX_STOP_TIMEOUT=15 ALLOWED_INSTANCE_TYPES="^(p6e-gb200|p6e-gb300)" IMEX_SERVICE="nvidia-imex" IMEX_NODES_CONFIG="/etc/nvidia-imex/nodes_config.cfg" function info() { echo "$(date "+%Y-%m-%dT%H:%M:%S.%3N") [INFO] [PID:$$] [JOB:${SLURM_JOB_ID}] $1" } function warn() { echo "$(date "+%Y-%m-%dT%H:%M:%S.%3N") [WARN] [PID:$$] [JOB:${SLURM_JOB_ID}] $1" } function error() { echo "$(date "+%Y-%m-%dT%H:%M:%S.%3N") [ERROR] [PID:$$] [JOB:${SLURM_JOB_ID}] $1" } function prolog_end() { info "PROLOG End JobId=${SLURM_JOB_ID}: $0" info "----------------" exit 0 } function get_instance_type() { local token=$(curl -X PUT -s "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") curl -s -H "X-aws-ec2-metadata-token: ${token}" http://169.254.169.254/latest/meta-data/instance-type } function return_if_unsupported_instance_type() { local instance_type=$(get_instance_type) if [[ ! ${instance_type} =~ ${ALLOWED_INSTANCE_TYPES} ]]; then info "Skipping IMEX configuration because instance type ${instance_type} does not support it" prolog_end fi } function return_if_imex_disabled() { if ! systemctl is-enabled "${IMEX_SERVICE}" &>/dev/null; then warn "Skipping IMEX configuration because system service ${IMEX_SERVICE} is not enabled" prolog_end fi } function return_if_job_is_not_exclusive() { if [[ "${SLURM_JOB_OVERSUBSCRIBE}" =~ ^(NO|TOPO)$ ]]; then info "Job is exclusive, proceeding with IMEX configuration" else info "Skipping IMEX configuration because the job is not exclusive" prolog_end fi } function get_ips_from_node_names() { local _nodes=$1 ${SCONTROL_CMD} -ao show node "${_nodes}" | sed 's/^.* NodeAddr=\([^ ]*\).*/\1/' } function reload_imex() { info "Stopping IMEX" timeout ${IMEX_STOP_TIMEOUT} systemctl stop ${IMEX_SERVICE} pkill -9 ${IMEX_SERVICE} info "Restarting IMEX" timeout ${IMEX_START_TIMEOUT} systemctl start ${IMEX_SERVICE} } function create_default_imex_channel() { info "Creating IMEX default channel" MAJOR_NUMBER=$(cat /proc/devices | grep nvidia-caps-imex-channels | cut -d' ' -f1) if [ ! -d "/dev/nvidia-caps-imex-channels" ]; then sudo mkdir /dev/nvidia-caps-imex-channels fi # Then check and create device node if [ ! -e "/dev/nvidia-caps-imex-channels/channel0" ]; then sudo mknod /dev/nvidia-caps-imex-channels/channel0 c $MAJOR_NUMBER 0 info "IMEX default channel created" else info "IMEX default channel already exists" fi } { info "PROLOG Start JobId=${SLURM_JOB_ID}: $0" return_if_job_is_not_exclusive return_if_unsupported_instance_type return_if_imex_disabled create_default_imex_channel IPS_FROM_CR=$(get_ips_from_node_names "${SLURM_NODELIST}") info "Node Names: ${SLURM_NODELIST}" info "Node IPs: ${IPS_FROM_CR}" info "IMEX Nodes Config: ${IMEX_NODES_CONFIG}" info "Updating IMEX nodes config ${IMEX_NODES_CONFIG}" echo "${IPS_FROM_CR}" > "${IMEX_NODES_CONFIG}" reload_imex prolog_end } 2>&1 | tee -a "${LOG_FILE_PATH}" | logger -t "91_nvidia_imex_prolog"

Terapkan skrip prolog

Untuk menerapkan skrip prolog, konfigurasikan pengaturan Slurm Prolog dan PrologFlags kustom pada cluster Anda. Anda dapat mengatur ini ketika Anda membuat cluster atau memperbarui cluster yang ada.

Untuk informasi selengkapnya tentang mengkonfigurasi pengaturan Slurm kustom, lihat. Pengaturan Slurm khusus untuk AWS Cluster PCS Untuk prosedur memperbarui cluster, lihatPerbarui sebuah AWS Cluster PCS.

Tetapkan pengaturan Slurm kustom berikut pada cluster:

  • Prolog- Atur ke jalur di mana skrip prolog tersedia pada node komputasi, misalnya. /shared/scripts/prolog.d/91_nvidia_imex_prolog.sh

  • PrologFlags- Setel keAlloc,NoHold. AllocBendera menjalankan prolog pada setiap node saat pertama kali dialokasikan ke pekerjaan. NoHoldBendera mencegah pekerjaan ditahan jika prolog gagal.

contoh Perbarui cluster dengan pengaturan prolog menggunakan AWS CLI
aws pcs update-cluster \ --cluster-identifier <cluster-id> \ --slurm-configuration '{ "slurmCustomSettings": [ {"parameterName": "Prolog", "parameterValue": "/shared/scripts/prolog.d/91_nvidia_imex_prolog.sh"}, {"parameterName": "PrologFlags", "parameterValue": "Alloc,NoHold"} ] }'

Validasi pengaturan IMEX

Skrip prolog berjalan secara otomatis saat Anda mengirimkan pekerjaan Slurm. Kirim tugas pengujian untuk memverifikasi bahwa IMEX dikonfigurasi dengan benar di semua node.

Buat skrip pekerjaan bernamacheck-imex.sh:

#!/bin/bash #SBATCH --job-name=nvidia-imex-status #SBATCH --ntasks-per-node=1 #SBATCH --exclusive #SBATCH --output=imex-status-%j.out #SBATCH --error=imex-status-%j.err srun bash -c "/usr/bin/nvidia-imex-ctl -N > imex_result_\${SLURM_JOB_ID}_\$(hostname).out 2>&1"

Kirim pekerjaan ke UltraServer antrian Anda:

sbatch -p queue-name -N node-count check-imex.sh

Periksa file output. Konfigurasi IMEX yang berhasil menunjukkan semua node dalam READY keadaan dengan C (Terhubung) di tabel konektivitas dan: Domain State: UP

Connectivity Table Legend: I - Invalid - Node wasn't reachable, no connection status available N - Never Connected R - Recovering - Connection was lost, but clean up has not yet been triggered. D - Disconnected - Connection was lost, and clean up has been triggreed. A - Authenticating - If GSSAPI enabled, client has initiated mutual authentication. !V! - Version mismatch, communication disabled. !M! - Node map mismatch, communication disabled. C - Connected - Ready for operation 5/4/2026 06:08:10.580 Nodes: Node #0 - 172.31.48.81 - READY - Version: 570.172 Node #1 - 172.31.48.98 - READY - Version: 570.172 Node #2 - 172.31.48.221 - READY - Version: 570.172 Node #3 - 172.31.49.228 - READY - Version: 570.172 Node #4 - 172.31.50.39 - READY - Version: 570.172 Node #5 - 172.31.50.44 - READY - Version: 570.172 Node #6 - 172.31.51.66 - READY - Version: 570.172 Node #7 - 172.31.51.157 - READY - Version: 570.172 Node #8 - 172.31.52.239 - READY - Version: 570.172 Node #9 - 172.31.53.80 - READY - Version: 570.172 Node #10 - 172.31.54.95 - READY - Version: 570.172 Node #11 - 172.31.54.183 - READY - Version: 570.172 Node #12 - 172.31.54.203 - READY - Version: 570.172 Node #13 - 172.31.54.241 - READY - Version: 570.172 Node #14 - 172.31.55.59 - READY - Version: 570.172 Node #15 - 172.31.55.187 - READY - Version: 570.172 Node #16 - 172.31.55.197 - READY - Version: 570.172 Node #17 - 172.31.56.47 - READY - Version: 570.172 Nodes From\To 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 C C C C C C C C C C C C C C C C C C 1 C C C C C C C C C C C C C C C C C C 2 C C C C C C C C C C C C C C C C C C 3 C C C C C C C C C C C C C C C C C C 4 C C C C C C C C C C C C C C C C C C 5 C C C C C C C C C C C C C C C C C C 6 C C C C C C C C C C C C C C C C C C 7 C C C C C C C C C C C C C C C C C C 8 C C C C C C C C C C C C C C C C C C 9 C C C C C C C C C C C C C C C C C C 10 C C C C C C C C C C C C C C C C C C 11 C C C C C C C C C C C C C C C C C C 12 C C C C C C C C C C C C C C C C C C 13 C C C C C C C C C C C C C C C C C C 14 C C C C C C C C C C C C C C C C C C 15 C C C C C C C C C C C C C C C C C C 16 C C C C C C C C C C C C C C C C C C 17 C C C C C C C C C C C C C C C C C C Domain State: UP

Pemecahan masalah

Ketidakcocokan pemetaan konfigurasi simpul

Jika Anda melihat !M! di tabel konektivitas atau Node configuration mapping mismatch di log IMEX, nodes_config.cfg file tidak konsisten di semua node. IMEX secara permanen memblokir komunikasi ke node yang tidak cocok. Verifikasi bahwa skrip prolog berjalan di semua node dan mulai ulang pekerjaan.

Perangkat saluran IMEX tidak ditemukan

Jika skrip prolog gagal membuat perangkat saluran IMEX, verifikasi bahwa driver NVIDIA diinstal dan berisi. /proc/devices nvidia-caps-imex-channels

Skrip prolog tidak berjalan

Verifikasi bahwa PrologFlags pengaturan Prolog dan dikonfigurasi pada cluster. Periksa apakah file skrip ada di node komputasi dan memiliki izin eksekusi (chmod 0755).