View a markdown version of this page

Membuat pengguna di cluster Slurm di 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.

Membuat pengguna di cluster Slurm di SageMaker HyperPod

Ada tiga cara untuk membuat pengguna POSIX di seluruh node cluster Slurm. SageMaker HyperPod Mereka berbeda dalam kapan pengguna dibuat dan berapa banyak konfigurasi siklus hidup yang harus Anda kelola. Pilih opsi yang cocok dengan cluster dan alur kerja Anda, yang tercantum di sini dari yang paling mudah hingga yang paling canggih.

Opsi Terbaik untuk Diperlukan konfigurasi siklus hidup Saat pengguna dibuat Perilaku pada peningkatan skala atau penggantian simpul
Opsi A: Tambahkan pengguna dengan skrip utilitas buat pengguna Menambahkan pengguna ke cluster yang sudah ada InService, tanpa menyentuh konfigurasi siklus hidup Tidak ada Sesuai permintaan, setiap kali Anda menjalankan skrip Manual. Pengguna tidak diterapkan secara otomatis; jalankan kembali skrip setiap kali node ditambahkan atau diganti (secara otomatis atau manual).
Opsi B: Tambahkan pengguna dengan skrip ekstensi add-user AMI-based kluster yang dikonfigurasi siklus hidup yang menyediakan pengguna secara otomatis Tambahkan skrip ekstensi pengguna Secara otomatis selama penyediaan node — selama pembuatan klaster, menambahkan node (peningkatan skala), pembaruan AMI, penggantian node. Otomatis. Ekstensi berjalan pada setiap node baru selama penyediaan, menggunakan file pengguna dalam bucket Amazon S3 skrip siklus hidup.
Opsi C: Tambahkan pengguna dengan skrip siklus hidup dasar Cluster yang sudah menggunakan set skrip siklus hidup dasar kustom lengkap Set skrip siklus hidup kustom penuh Secara otomatis selama penyediaan node — selama pembuatan klaster, menambahkan node (peningkatan skala), pembaruan AMI, penggantian node. Otomatis. Skrip siklus hidup dasar berjalan pada setiap node baru selama penyediaan, menggunakan file pengguna dalam bucket Amazon S3 skrip siklus hidup.

Ketiga opsi menggunakan skrip yang disediakan tim SageMaker HyperPod layanan di repositori Pelatihan Terdistribusi Awsome di situs web. GitHub

Opsi A: Tambahkan pengguna dengan skrip utilitas buat pengguna

Ini adalah opsi paling sederhana dan tidak memerlukan konfigurasi siklus hidup. Gunakan saat cluster Anda sudah InServicedan Anda ingin menambahkan pengguna sekarang. Jalankan skrip utilitas create_users.sh di GitHub situs web pada node pengontrol untuk membuat pengguna di setiap node dalam satu kali proses. Script otomatis mendeteksi node lain dari file konfigurasi cluster, membuat pengguna melalui SSH, dan mengkonfigurasi node komputasi secara paralel untuk skala ke cluster besar. Skrip mendukung tiga mode untuk menentukan pengguna, dipilih oleh argumen yang Anda lewati dan file yang ada di direktori saat ini, dalam urutan prioritas berikut:

  • Mode baris perintah — Anda meneruskan nama pengguna sebagai argumen dan skrip secara otomatis menetapkan UID. Ini adalah cara tercepat untuk menambahkan pengguna.

  • Mode file — skrip membaca definisi pengguna dari file shared_users.txt (CSV) atau shared_users.yaml (YAMB) di direktori saat ini.

  • Mode interaktif — skrip meminta Anda untuk nama pengguna dan, secara opsional, UID.

penting

Dalam setiap mode, create_users.sh buat pengguna hanya pada node yang ada saat Anda menjalankannya. Ini termasuk mode file dengan lokal shared_users.txt ataushared_users.yaml. Pengguna tidak secara otomatis dibuat ulang pada node yang ditambahkan kemudian dengan scale-up atau penggantian node. Itu adalah penyediaan acara di mana node baru melakukan booting dengan volume root baru yang tidak memiliki akun POSIX. (Direktori rumah dan kunci SSH pada sistem file bersama bertahan, tetapi akun pengguna sendiri tidak.) Re-run create_users.shsetelah node baru ditambahkan untuk mengantre.

Re-running naskahnya aman. Jalankan pada node controller; ia menemukan node cluster lain dan menerapkan pengguna di seluruh cluster dalam satu run. Ini idempoten per node: ini menciptakan pengguna hanya jika hilang, meninggalkan node yang sudah memiliki pengguna tidak berubah - jadi berjalan kembali setelah menambahkan node hanya mempengaruhi node baru.

Agar node baru menerima pengguna secara otomatis, file pengguna harus menjadi bagian dari konfigurasi siklus hidup klaster sehingga berjalan selama penyediaan: simpan shared_users.yaml file shared_users.txt atau di bucket Amazon S3 skrip siklus hidup Anda dan gunakan dengan atau file. Opsi B: Tambahkan pengguna dengan skrip ekstensi add-user Opsi C: Tambahkan pengguna dengan skrip siklus hidup dasar create_users.shmembantu dengan menambahkan setiap pengguna yang dibuatnya shared_users.txt dan menawarkan untuk mengunggahnya ke Amazon S3, tetapi dengan sendirinya — dalam mode apa pun — itu tidak membuat pengguna bertahan di seluruh acara penyediaan.

Untuk setiap pengguna, skrip:

  • Menciptakan pengguna POSIX dengan UID yang konsisten pada setiap node.

  • Membuat direktori home pada sistem file bersama (deteksi otomatis OpenZFS di /home atau Amazon FSx for Lustre at). /fsx

  • Menghasilkan key pair SSH pada sistem file bersama untuk SSH antar-node tanpa kata sandi.

  • Menambahkan pengguna ke docker grup (dan, secara opsional, memberikan akses sudo).

  • Mendaftarkan pengguna dengan akuntansi Slurm pada pengontrol sehingga mereka dapat mengirimkan pekerjaan.

  • Menambahkan pengguna baru ke shared_users.txt file dan secara opsional mengunggahnya ke Amazon S3, sehingga Anda dapat menggunakannya kembali dengan opsi lain.

Prasyarat

Sebelum Anda mulai, verifikasi persyaratan berikut terpenuhi.

  • Cluster adalah InServicedan Anda dapat terhubung ke node controller. Lihat Mengakses node SageMaker HyperPod cluster Anda.

  • jqdiinstal pada node pengontrol.

  • Akses SSH tersedia dari node pengontrol ke semua node lain (HyperPod mengkonfigurasi ini untuk pengguna default).

Untuk menambahkan pengguna dengan skrip utilitas create_users.sh

Selesaikan langkah-langkah berikut:

  1. Connect ke node controller dan download script. Pastikan Anda menjalankannya dengan izin sudo.

    $ curl -O https://raw.githubusercontent.com/awslabs/awsome-distributed-training/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh chmod +x create_users.sh
  2. Jalankan skrip menggunakan salah satu dari tiga modenya, yang dipilih berdasarkan prioritas dari argumen yang Anda lewati dan file di direktori saat ini: argumen baris perintah terlebih dahulu, lalu file pengguna, lalu prompt interaktif. Setiap mode menjalankan urutan yang sama: buat pengguna pada node saat ini, atur keypair SSH pada sistem file bersama, buat pengguna di semua node yang tersisa (hitung node secara paralel), daftarkan mereka dengan akuntansi Slurm pada pengontrol, tambahkan keshared_users.txt, dan tawarkan untuk mengunggah file itu ke Amazon S3.

    Tiga mode dijelaskan dalam contoh berikut, masing-masing menambahkan dua pengguna (user1danuser2).

    Mode baris perintah

    Berikan nama pengguna sebagai argumen. Skrip secara otomatis menetapkan UID dan meminta apakah pengguna baru harus menjadi sudoer. Ini adalah cara tercepat untuk menambahkan pengguna.

    $ sudo ./create_users.sh user1 user2

    Skrip memvalidasi nama pengguna, lalu meminta akses sudoer:

    ======================================== Step 1: User Configuration ======================================== Users from CLI args: user1 user2 ✓ user1 — will be created (auto-assign UID) ✓ user2 — will be created (auto-assign UID) Make these user(s) sudoer(s)? (y/N): n

    Kemudian membuat pengguna pada node saat ini, mengatur keypair SSH, membuatnya di node komputasi, mendaftarkannya dengan akuntansi Slurm pada pengontrol, dan menulisshared_users.txt, meminta Anda di akhir untuk mengunggah file itu ke Amazon S3.

    Modus berkas

    Buat file pengguna di direktori yang sama dengan skrip, lalu jalankan skrip tanpa argumen. Skrip membaca definisi pengguna, memvalidasinya (hanya membuat pengguna yang belum ada dan melewatkan konflik UID), dan membuat pengguna di semua node. Script menerima dua format file.

    Untukshared_users.txt, gunakan file CSV dengan satu pengguna per baris dalam formatusername,uid,home_directory:

    user1,2001,/fsx/user1 user2,2002,/fsx/user2

    Atau, untukshared_users.yaml, gunakan file YAMM dengan daftar sederhana pengguna atau pengguna yang diatur ke dalam grup. Parsing format ini membutuhkan PyYaml pada node. Berikut ini adalah format daftar sederhana:

    users: - username: user1 uid: 2001 - username: user2 uid: 2002

    Jika kedua file ada, shared_users.txt diutamakan. Jalankan skrip tanpa argumen:

    $ sudo ./create_users.sh

    Skrip memvalidasi entri file, mengonfirmasi pembuatan, meminta akses sudoer, dan menawarkan untuk menambahkan pengguna yang tidak ada dalam file. Kemudian membuat user1 dan user2 pada semua node dengan UID dari file (2001 dan 2002), mengatur keypair SSH, mendaftarkannya dengan akuntansi Slurm, dan memperbarui. shared_users.txt

    Mode interaktif

    Jalankan skrip tanpa argumen dan tidak ada file pengguna. Skrip meminta Anda untuk nama pengguna dan, secara opsional, UID untuk menetapkan:

    $ sudo ./create_users.sh
    ======================================== Step 1: User Configuration ======================================== No shared_users.txt or shared_users.yaml found. Entering interactive mode... Enter username(s), comma-separated (e.g. 'sean' or 'sean,alice,bob'): user1,user2 Specify UIDs? (Enter for auto-assign, or comma-separated UIDs): 2001,2002 Make these user(s) sudoer(s)? (y/N): n

    Setelah Anda menjawab petunjuknya, skrip membuat user1 dan user2 pada semua node dengan UID yang Anda masukkan, mengatur keypair SSH, mendaftarkannya dengan akuntansi Slurm, dan memperbarui. shared_users.txt

  3. Uji pengguna dengan beralih ke sana dan menjalankan perintah di seluruh cluster.

    $ sudo su - user1 && ssh $(srun hostname)
catatan

Naskahnya idempoten. Pengguna yang sudah ada dilewati, dan kunci SSH dan asosiasi akuntansi Slurm yang ada dibiarkan di tempatnya, sehingga aman untuk dijalankan kembali.

Opsi B: Tambahkan pengguna dengan skrip ekstensi add-user

Gunakan opsi ini saat klaster Anda menggunakan AMI-basedkonfigurasi dan Anda ingin pengguna disediakan secara otomatis. Dengan opsi siklus hidup ekstensi, SageMaker HyperPod jalankan AMI-based konfigurasi lengkap terlebih dahulu, lalu jalankan skrip ekstensi Anda. Tim layanan menyediakan ekstensi add-user yang siap digunakan di folder Extensions dari repositori Pelatihan Terdistribusi Awsome di situs web. GitHub Karena ekstensi berjalan selama penyediaan node, pengguna dibuat secara otomatis saat cluster dibuat dan lagi pada node baru yang ditambahkan selama scale-out.

Untuk informasi selengkapnya tentang pengaturan ekstensi:

  • Untuk mengatur ekstensi menggunakan AWS konsol, lihat Konfigurasi siklus hidup - opsional di bawah Penyiapan khusus.

  • Untuk menyiapkan ekstensi menggunakan API, lihat Opsi B: Memperpanjang AMI-based konfigurasi dengan bagian OnInitComplete Buat klaster Anda.

add-usersEkstensi ini menciptakan pengguna POSIX dengan UID yang konsisten, menyiapkan direktori home pada sistem file bersama, menghasilkan pasangan kunci SSH untuk SSH antar-simpul tanpa kata sandi, dan mendaftarkan pengguna dengan akuntansi Slurm pada pengontrol. Ia menerima dua format input:

  • shared_users.txt— format CSV yang sama yang digunakan oleh skrip siklus hidup dasar (). username,uid,/fsx/username Semua pengguna ditambahkan ke akun root Slurm.

  • shared_users.yaml— format YAMM yang juga mendukung pengorganisasian pengguna ke dalam grup dengan akun Slurm per grup dan pemasangan sistem file. Grup hanya organisasi; mereka tidak membuat grup Linux.

Berikut ini adalah contoh shared_users.yaml menggunakan format grup:

groups: - name: research slurm_account: research users: - username: user1 uid: 2001 - username: user2 uid: 2002 - name: platform slurm_account: platform users: - username: user3 uid: 3001
Untuk menambahkan pengguna dengan ekstensi add-users pada pembuatan cluster

Selesaikan langkah-langkah berikut:

  1. Salin file sampel yang sesuai di add-users direktori dan edit dengan pengguna Anda:

    $ cp shared_users_sample.yaml shared_users.yaml
  2. Unggah add-users direktori ke skrip siklus hidup Anda Amazon S3 bucket (jalur bucket harus dimulai dengan): s3://sagemaker-

    $ aws s3 cp add-users/ s3://DOC-EXAMPLE-BUCKET/add-users/ --recursive
  3. Tentukan ekstensi di LifeCycleConfig blok CreateCluster permintaan Anda, gunakan add_users.sh sebagai OnInitComplete skrip:

    "LifeCycleConfig": { "OnInitComplete": "add_users.sh", "SourceS3Uri": "s3://DOC-EXAMPLE-BUCKET/add-users/" }
Tip

Jika klaster Anda membutuhkan beberapa kemampuan selain pembuatan pengguna (misalnya, observabilitas), unggah seluruh folder Extensions dan gunakan run_extensions.sh orkestrator sebagai skrip ekstensi Anda. Ini menyediakan toggle boolean sederhana seperti ENABLE_ADD_USERS="true" untuk mengaktifkan setiap kemampuan. Lihat perinciannya di Memulai dengan SageMaker HyperPod menggunakan AWS CLI.

Untuk menambahkan pengguna ke cluster yang ada setelah pembuatan

Karena ekstensi hanya berjalan selama penyediaan node, menambahkan pengguna ke node yang sudah berjalan mengharuskan Anda menjalankan ekstensi secara manual.

  1. Perbarui file pengguna Anda dengan pengguna baru (simpan pengguna yang ada di file) dan unggah ke Amazon S3:

    $ aws s3 cp add-users/shared_users.yaml s3://DOC-EXAMPLE-BUCKET/add-users/shared_users.yaml
  2. Connect ke node controller dan tarik script ke sistem file bersama:

    $ sudo mkdir -p /fsx/cluster-scripts/add-users sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/add-users/ /fsx/cluster-scripts/add-users/ --recursive sudo chmod +x /fsx/cluster-scripts/add-users/*.sh
  3. Jalankan ekstensi pada pengontrol:

    $ sudo bash /fsx/cluster-scripts/add-users/add_users.sh
  4. Jalankan ekstensi pada node komputasi dengansrun:

    $ sudo srun --partition=partition-name bash /fsx/cluster-scripts/add-users/add_users.sh

Skrip melewati pengguna yang ada dan hanya membuat yang baru; mereka idempoten.

Opsi C: Tambahkan pengguna dengan skrip siklus hidup dasar

Gunakan opsi ini hanya jika klaster Anda sudah menggunakan set skrip siklus hidup dasar kustom lengkap, di mana skrip Anda memiliki seluruh urutan penyediaan. Ini adalah opsi paling canggih karena Anda mengelola set skrip siklus hidup lengkap daripada ekstensi tunggal. Tim layanan menyediakan skrip add_users.sh di GitHub situs web sebagai satu skrip dalam set skrip siklus hidup konfigurasi dasar. Selama pembuatan klaster, pembaruan klaster, atau pembaruan perangkat lunak cluster, runner skrip siklus hidup (lifecycle_script.py) berjalanadd_users.sh, yang membaca shared_users.txt file dan membuat pengguna dan direktori home mereka.

Dalam opsi ini, add_users.sh menangani pengguna POSIX dan pembuatan direktori home saja. Pembuatan keypair SSH untuk SSH antar-simpul tanpa kata sandi adalah modul terpisah dalam kumpulan skrip siklus hidup dasar (misalnya,gen-keypair-ubuntu.sh), yang dipanggil pelari skrip siklus hidup sebagai bagian dari set lengkap. Pastikan modul kunci SSH disertakan dalam set skrip siklus hidup Anda sehingga pengguna mendapatkan keypair pada sistem file bersama.

Untuk informasi selengkapnya tentang menyiapkan set skrip siklus hidup kustom lengkap:

Untuk membuat pengguna selama pembuatan klaster Slurm

Selesaikan langkah-langkah berikut:

  1. Unduh set skrip siklus hidup konfigurasi dasar dari situs web. GitHub Dengan opsi ini, Anda mengunggah seluruh folder konfigurasi dasar sebagai set skrip siklus hidup Anda, tidak hanya. add_users.sh

  2. Di folder base-config, buat atau edit file teks bernama shared_users.txt dalam format berikut. Kolom pertama adalah nama pengguna, kolom kedua adalah ID pengguna unik, dan kolom ketiga adalah direktori pengguna di ruang bersama Amazon FSx.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...

    add_users.shmembaca shared_users.txt dari folder yang sama, jadi file harus berada di dalam konfigurasi dasar di samping skrip.

  3. Unggah seluruh folder konfigurasi dasar ke bucket Amazon S3 untuk skrip siklus hidup Anda. HyperPod Sementara pembuatan cluster, pembaruan cluster, atau pembaruan perangkat lunak cluster sedang berlangsung, runner skrip siklus hidup berjalanadd_users.sh, yang membaca shared_users.txt dan mengatur pengguna dan direktori home mereka.

catatan

add_users.shsecara otomatis mendeteksi sistem file bersama: jika OpenZFS dipasang di sana akan membuat direktori home di /home sana; jika tidak, ia menggunakan jalur Amazon FSx for Lustre.