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 multi-node parallel jobs untuk menjalankan pekerjaan tunggal yang mencakup beberapa EC2 instans Amazon. Dengan AWS Batch multi-node parallel jobs (juga dikenal sebagai penjadwalan geng), Anda dapat menjalankan aplikasi komputasi berkinerja tinggi skala besar dan pelatihan GPU model 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 ApacheMXNet,, 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 EC2 instans Amazon.

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 simpul kedua suatu pekerjaan, jelaskan aws_batch_job_id#1 menggunakan AWS Batch DescribeJobsAPIoperasi. 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 diatur ke IPv4 alamat pribadi dari node utama pekerjaan. 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 ECS cluster Amazon. 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 wadah node berjalan, kode aplikasi Anda dapat meminta 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 EC2 Pengguna Amazon.

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

  • AWS Batch multi-node parallel jobs menggunakan mode ECS awsvpc jaringan Amazon, yang memberikan container kerja paralel multi-node Anda properti jaringan yang sama dengan instans AmazonEC2. Setiap multi-node parallel job container mendapatkan elastic network interface sendiri, alamat IP pribadi primer, dan nama DNS host internal. Antarmuka jaringan dibuat dalam VPC subnet 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 pribadi yang dikonfigurasi untuk menggunakan gateway. NAT Untuk informasi selengkapnya, lihat NATGateway di VPCPanduan Pengguna Amazon. Komunikasi internode harus menggunakan alamat IP pribadi atau DNS nama host untuk node. Pekerjaan paralel multi-node yang berjalan pada sumber daya komputasi dalam subnet publik tidak memiliki akses jaringan keluar. Untuk membuat VPC dengan subnet pribadi dan NAT gateway, lihatMembuat 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 secara tidak sengaja 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 cukup maksimum vCPUs untuk mendukung pekerjaan paralel multi-node Anda.

  • Kuota EC2 instans Amazon 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.