Tugas paralel multisimpul - AWS Batch

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

Tugas paralel multisimpul

Anda dapat menggunakan pekerjaan paralel multi-node untuk menjalankan pekerjaan tunggal yang mencakup beberapa instans Amazon EC2. Dengan AWS Batch multi-node parallel jobs, Anda dapat menjalankan aplikasi komputasi berkinerja tinggi skala besar dan pelatihan model GPU terdistribusi tanpa perlu meluncurkan, mengonfigurasi, dan mengelola sumber daya Amazon EC2 secara langsung. Pekerjaan paralel AWS Batch multi-node kompatibel dengan kerangka kerja apa pun yang mendukung komunikasi internode berbasis IP. Contohnya termasuk Apache MXNet,, Caffe2 TensorFlow, atau Message Passing Interface (MPI).

Tugas paralel multisimpul dikirimkan sebagai tugas tunggal. Namun, ketentuan tugas Anda (atau timpaan simpul pengiriman tugas) menentukan jumlah simpul yang akan dibuat untuk tugas dan grup simpul apa yang akan dibuat. Setiap tugas paralel multisimpul berisi simpul utama, yang diluncurkan terlebih dahulu. Setelah simpul utama berjalan, simpul turunan diluncurkan dan dimulai. Pekerjaan selesai hanya jika node utama keluar. Semua node anak kemudian dihentikan. Untuk informasi selengkapnya, lihat Grup simpul.

Node pekerjaan paralel multi-node adalah penyewa tunggal. Ini berarti bahwa hanya satu wadah pekerjaan yang dijalankan di setiap instans Amazon EC2.

Status tugas akhir (SUCCEEDED atau FAILED) ditentukan oleh status tugas akhir dari simpul utama. Untuk mendapatkan status pekerjaan paralel multi-node, jelaskan pekerjaan dengan menggunakan ID pekerjaan yang dikembalikan saat Anda mengirimkan pekerjaan. Jika Anda memerlukan detail untuk node anak, jelaskan setiap node anak satu per satu. Anda dapat mengatasi node menggunakan #N notasi (dimulai dengan 0). Misalnya, untuk mengakses detail node kedua dari suatu pekerjaan, jelaskan aws_batch_job_id #1 menggunakan operasi API. AWS Batch DescribeJobs Informasi started, stoppedAt, statusReason, dan exit untuk tugas paralel multisimpul diisi dari simpul utama.

Jika Anda menentukan percobaan ulang pekerjaan, kegagalan node utama menyebabkan upaya lain terjadi. Kegagalan simpul anak tidak menyebabkan lebih banyak upaya terjadi. Setiap upaya baru dari tugas paralel multisimpul akan memperbarui upaya yang sesuai dari simpul turunan yang terkait.

Untuk menjalankan tugas paralel multi-node AWS Batch, kode aplikasi Anda harus berisi kerangka kerja dan pustaka yang diperlukan untuk komunikasi terdistribusi.

Variabel-variabel lingkungan

Saat runtime, setiap node dikonfigurasi variabel lingkungan standar yang diterima semua AWS Batch pekerjaan. Selain itu, node dikonfigurasi dengan variabel lingkungan berikut yang khusus untuk pekerjaan paralel multi-node:

AWS_BATCH_JOB_MAIN_NODE_INDEX

Variabel ini ditetapkan ke nomor indeks simpul utama tugas. Kode aplikasi Anda dapat AWS_BATCH_JOB_MAIN_NODE_INDEX membandingkan dengan AWS_BATCH_JOB_NODE_INDEX pada node individual untuk menentukan apakah itu node utama.

AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS

Variabel ini hanya diatur dalam node anak pekerjaan paralel multi-node. Variabel ini tidak ada pada node utama. Variabel ini ditetapkan ke alamat IPv4 privat simpul utama tugas. Kode aplikasi simpul turunan Anda dapat menggunakan alamat ini untuk berkomunikasi dengan simpul utama.

AWS_BATCH_JOB_NODE_INDEX

Variabel ini ditetapkan ke nomor indeks simpul pada simpul. Indeks simpul dimulai dari 0, dan setiap simpul menerima nomor indeks yang unik. Misalnya, tugas paralel multisimpul dengan 10 turunan memiliki nilai indeks 0-9.

AWS_BATCH_JOB_NUM_NODES

Variabel ini ditetapkan ke jumlah simpul yang telah Anda minta untuk tugas paralel multisimpul Anda.

Grup simpul

Grup node adalah grup node pekerjaan yang identik yang semuanya berbagi properti kontainer yang sama. Anda dapat menggunakan AWS Batch untuk menentukan hingga lima grup node yang berbeda untuk setiap pekerjaan.

Setiap grup dapat memiliki citra kontainer, perintah, variabel lingkungan, dan sebagainya sendiri. Misalnya, Anda dapat mengirimkan pekerjaan yang memerlukan satu c5.xlarge instance untuk node utama dan lima node c5.xlarge turunan instance. Masing-masing grup node yang berbeda ini dapat menentukan gambar atau perintah kontainer yang berbeda untuk dijalankan untuk setiap pekerjaan.

Atau, semua node dalam pekerjaan Anda dapat menggunakan satu grup node. Selain itu, kode aplikasi Anda dapat membedakan peran node seperti node utama dan node anak. Hal ini dilakukan dengan membandingkan variabel AWS_BATCH_JOB_MAIN_NODE_INDEX lingkungan terhadap nilainya sendiri untukAWS_BATCH_JOB_NODE_INDEX. Anda dapat memiliki hingga 1.000 node dalam satu pekerjaan. Ini adalah batas default untuk instance di cluster Amazon ECS. Anda dapat meminta untuk meningkatkan batas ini.

catatan

Saat ini semua grup simpul dalam tugas paralel multisimpul harus menggunakan tipe instans yang sama.

Siklus hidup Job

Saat Anda mengirimkan pekerjaan paralel multi-node, pekerjaan tersebut memasuki SUBMITTED status. Kemudian, pekerjaan menunggu dependensi pekerjaan selesai. Pekerjaan juga pindah ke RUNNABLE status. Terakhir, AWS Batch berikan kapasitas instans yang diperlukan untuk menjalankan pekerjaan Anda dan meluncurkan instans ini.

Setiap tugas paralel multisimpul berisi simpul utama. Node utama adalah subtugas tunggal yang AWS Batch memantau untuk menentukan hasil dari pekerjaan multi node yang dikirimkan. Simpul utama diluncurkan pertama dan berpindah ke status STARTING. Nilai batas waktu yang ditentukan dalam attemptDurationSeconds parameter berlaku untuk seluruh pekerjaan dan bukan ke node.

Ketika node utama mencapai RUNNING status setelah wadah node berjalan, node anak diluncurkan dan mereka juga pindah ke STARTING status. Simpul turunan muncul dalam urutan acak. Tidak ada jaminan terkait waktu atau urutan peluncuran simpul turunan. Untuk memastikan bahwa semua node pekerjaan berada dalam RUNNING status setelah penampung node berjalan, kode aplikasi Anda dapat melakukan kueri AWS Batch API untuk mendapatkan informasi node utama dan node anak. Atau, kode aplikasi dapat menunggu sampai semua node online sebelum memulai tugas pemrosesan terdistribusi. Alamat IP privat dari simpul utama tersedia sebagai variabel lingkungan AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS di setiap simpul turunan. Kode aplikasi Anda dapat menggunakan informasi ini untuk mengoordinasikan dan mengomunikasikan data di antara setiap tugas.

Saat simpul individual keluar, simpul pindah ke SUCCEEDED atau FAILED, tergantung pada kode keluarnya. Jika simpul utama keluar, tugas dianggap selesai, dan semua simpul turunan dihentikan. Jika node anak mati, AWS Batch tidak mengambil tindakan apa pun pada node lain dalam pekerjaan. Jika Anda tidak ingin pekerjaan Anda berlanjut dengan jumlah node yang berkurang, Anda harus memasukkan ini ke dalam kode aplikasi Anda. Melakukan hal ini mengakhiri atau membatalkan pekerjaan.

Hitung pertimbangan lingkungan

Ada beberapa hal yang perlu dipertimbangkan ketika mengonfigurasi lingkungan komputasi untuk menjalankan tugas paralel multisimpul dengan AWS Batch.

  • Pekerjaan paralel multi-node tidak didukung pada lingkungan UNMANAGED komputasi.

  • Jika Anda ingin mengirimkan pekerjaan paralel multi-node ke lingkungan komputasi, buat grup penempatan klaster dalam satu Availability Zone dan kaitkan dengan sumber daya komputasi Anda. Ini membuat pekerjaan paralel multi-node Anda pada pengelompokan instans yang logis dekat dengan potensi aliran jaringan yang tinggi. Untuk informasi selengkapnya, lihat Grup Penempatan di Panduan Pengguna Amazon EC2.

  • Pekerjaan paralel multi-node tidak didukung pada lingkungan komputasi yang menggunakan Instans Spot.

  • AWS Batch multi-node parallel jobs menggunakan mode awsvpc jaringan Amazon ECS, yang memberikan container kerja paralel multi-node Anda properti jaringan yang sama dengan instans Amazon EC2. Setiap kontainer tugas paralel multisimpul mendapat antarmuka jaringan elastis sendiri, alamat IP privat utama, dan nama host DNS internal. Antarmuka jaringan dibuat di subnet VPC yang sama dengan sumber daya komputasi host-nya. Grup keamanan yang diterapkan pada sumber daya komputasi Anda juga diterapkan pada antarmuka jaringan. Untuk informasi selengkapnya, lihat, Jaringan Tugas dengan Mode Jaringan awsvpc dalam Panduan Developer Amazon Elastic Container.

  • Lingkungan komputasi Anda mungkin memiliki tidak lebih dari lima grup keamanan yang terkait dengannya.

  • Mode awsvpc jaringan tidak menyediakan antarmuka jaringan elastis untuk pekerjaan paralel multi-node dengan alamat IP publik. Untuk mengakses internet, sumber daya komputasi Anda harus diluncurkan di subnet privat yang dikonfigurasi untuk menggunakan gateway NAT. Untuk informasi lebih lanjut, lihat Gateway NAT dalam Panduan Pengguna Amazon VPC. Komunikasi antarsimpul harus menggunakan alamat IP privat atau nama host DNS untuk simpul tersebut. Pekerjaan paralel multi-node yang berjalan pada sumber daya komputasi dalam subnet publik tidak memiliki akses jaringan keluar. Untuk membuat VPC dengan subnet privat dan gateway NAT, lihat Membuat cloud pribadi virtual .

  • Antarmuka jaringan elastis yang dibuat dan dilampirkan ke sumber daya komputasi Anda tidak dapat dipisahkan secara manual atau dimodifikasi oleh akun Anda. Ini untuk mencegah penghapusan yang tidak disengaja dari elastic network interface yang terkait dengan pekerjaan yang sedang berjalan. Untuk melepaskan antarmuka jaringan elastis untuk tugas, akhiri tugas.

  • Lingkungan komputasi Anda harus memiliki vCPUs maksimum yang cukup untuk mendukung tugas paralel multisimpul Anda.

  • Kuota instans Amazon EC2 Anda mencakup jumlah instans yang diperlukan untuk menjalankan pekerjaan Anda. Misalnya, misalkan pekerjaan Anda memerlukan 30 instans, tetapi akun Anda hanya dapat menjalankan 20 instans di Wilayah. Kemudian, pekerjaan Anda akan terjebak dalam RUNNABLE status.

  • Jika Anda menentukan tipe instance untuk grup node dalam pekerjaan paralel multi-node, lingkungan komputasi Anda harus meluncurkan tipe instance tersebut.