Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Resep untuk membawa wadah Anda sendiri
Di bagian ini, kami menyediakan panduan langkah demi langkah tentang apa yang Anda butuhkan bring your own container (BYOC) untuk Braket Hybrid Jobs — skrip, file, dan langkah-langkah untuk menggabungkannya agar dapat memulai dan berjalan dengan Docker gambar kustom Anda. Resep untuk dua kasus umum:
-
Instal perangkat lunak tambahan dalam Docker gambar dan gunakan hanya skrip algoritma Python dalam pekerjaan Anda.
-
Gunakan skrip algoritma yang ditulis dalam bahasa non-Python dengan Hybrid Jobs, atau arsitektur CPU selain x86.
Mendefinisikan skrip entri kontainer lebih kompleks untuk kasus 2.
Saat Braket menjalankan Hybrid Job Anda, Braket meluncurkan nomor dan jenis instans Amazon EC2 yang diminta, lalu menjalankan Docker gambar yang ditentukan oleh input URI gambar untuk pembuatan pekerjaan pada instans tersebut. Saat menggunakan fitur BYOC, Anda menentukan URI gambar yang dihosting di repositori Amazon ECR pribadi yang memiliki akses Baca. Braket Hybrid Jobs menggunakan image kustom tersebut untuk menjalankan pekerjaan.
Komponen spesifik yang Anda butuhkan untuk membangun Docker gambar yang dapat digunakan dengan Hybrid Jobs. Jika Anda tidak terbiasa dengan menulis dan membangunDockerfiles, lihat dokumentasi Dockerfile
Persyaratan:
Gambar dasar untuk Dockerfile Anda
Jika Anda menggunakan Python dan ingin menginstal perangkat lunak di atas apa yang disediakan dalam wadah yang disediakan Braket, opsi untuk gambar dasar adalah salah satu gambar wadah Braket, dihosting di GitHub repo kami FROM [IMAGE_URI_HERE]
Selanjutnya, isi sisa Dockerfile untuk menginstal dan mengatur perangkat lunak yang ingin Anda tambahkan ke wadah. Gambar Braket yang sudah dibuat sebelumnya akan berisi skrip titik masuk wadah yang sesuai, jadi Anda tidak perlu khawatir memasukkannya.
Jika Anda ingin menggunakan bahasa non-Python, seperti C++, Rust, atau Julia, atau jika Anda ingin membuat gambar untuk arsitektur CPU non-x86, seperti ARM, Anda mungkin perlu membangun di atas citra publik barebones. Anda dapat menemukan banyak gambar seperti itu di Galeri Pu blik Amazon Elastic Container Registry
(Opsional) Skrip titik masuk wadah yang dimodifikasi
catatan
Jika Anda hanya menambahkan perangkat lunak tambahan ke gambar Braket yang sudah dibuat sebelumnya, Anda dapat melewati bagian ini.
Untuk menjalankan kode non-Python sebagai bagian dari pekerjaan hybrid Anda, ubah skrip Python yang mendefinisikan titik masuk wadah. Misalnya, skrip braket_container.py python di Amazon Braket Githu thekick_off_customer_script()
Anda juga dapat memilih untuk menulis yang sama sekali barubraket_container.py. Ini harus menyalin data input, arsip sumber, dan file lain yang diperlukan dari Amazon S3 ke dalam wadah, dan menentukan variabel lingkungan yang sesuai.
Instal perangkat lunak yang diperlukan dan skrip kontainer dengan Dockerfile
catatan
Jika Anda menggunakan gambar Braket yang sudah dibuat sebelumnya sebagai gambar Docker dasar Anda, skrip kontainer sudah ada.
Jika Anda membuat skrip kontainer yang dimodifikasi pada langkah sebelumnya, Anda harus menyalinnya ke wadah dan menentukan variabel SAGEMAKER_PROGRAM lingkunganbraket_container.py, atau apa yang Anda beri nama skrip titik masuk wadah baru Anda.
Berikut ini adalah contoh Dockerfile yang memungkinkan Anda menggunakan Julia pada instance GPU-accelerated Jobs:
FROM nvidia/cuda:12.2.0-devel-ubuntu22.04 ARG DEBIAN_FRONTEND=noninteractive ARG JULIA_RELEASE=1.8 ARG JULIA_VERSION=1.8.3 ARG PYTHON=python3.11 ARG PYTHON_PIP=python3-pip ARG PIP=pip ARG JULIA_URL = https://julialang-s3.julialang.org/bin/linux/x64/${JULIA_RELEASE}/ ARG TAR_NAME = julia-${JULIA_VERSION}-linux-x86_64.tar.gz ARG PYTHON_PKGS = # list your Python packages and versions here RUN curl -s -L ${JULIA_URL}/${TAR_NAME} | tar -C /usr/local -x -z --strip-components=1 -f - RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ tzdata \ openssh-client \ openssh-server \ ca-certificates \ curl \ git \ libtemplate-perl \ libssl1.1 \ openssl \ unzip \ wget \ zlib1g-dev \ ${PYTHON_PIP} \ ${PYTHON}-dev \ RUN ${PIP} install --no-cache --upgrade ${PYTHON_PKGS} RUN ${PIP} install --no-cache --upgrade sagemaker-training==4.1.3 # Add EFA and SMDDP to LD library path ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH" ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH # Julia specific installation instructions COPY Project.toml /usr/local/share/julia/environments/v${JULIA_RELEASE}/ RUN JULIA_DEPOT_PATH=/usr/local/share/julia \ julia -e 'using Pkg; Pkg.instantiate(); Pkg.API.precompile()' # generate the device runtime library for all known and supported devices RUN JULIA_DEPOT_PATH=/usr/local/share/julia \ julia -e 'using CUDA; CUDA.precompile_runtime()' # Open source compliance scripts RUN HOME_DIR=/root \ && curl -o ${HOME_DIR}/oss_compliance.zip https://aws-dlinfra-utilities.s3.amazonaws.com/oss_compliance.zip \ && unzip ${HOME_DIR}/oss_compliance.zip -d ${HOME_DIR}/ \ && cp ${HOME_DIR}/oss_compliance/test/testOSSCompliance /usr/local/bin/testOSSCompliance \ && chmod +x /usr/local/bin/testOSSCompliance \ && chmod +x ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh \ && ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} ${PYTHON} \ && rm -rf ${HOME_DIR}/oss_compliance* # Copying the container entry point script COPY braket_container.py /opt/ml/code/braket_container.py ENV SAGEMAKER_PROGRAM braket_container.py
Contoh ini, mengunduh dan menjalankan skrip yang disediakan oleh AWS untuk memastikan kepatuhan dengan semua Open-Source lisensi yang relevan. Misalnya, dengan menghubungkan kode yang diinstal dengan benar yang MIT license diatur oleh.
Jika Anda perlu menyertakan kode non-publik, misalnya kode yang dihosting di pribadi GitHub atau GitLab repositori, jangan menyematkan kunci SSH dalam Docker gambar untuk mengaksesnya. Sebagai gantinya, gunakan Docker Compose saat Anda membangun Docker untuk mengizinkan akses SSH pada mesin host tempat itu dibangun. Untuk informasi selengkapnya, lihat panduan menggunakan kunci SSH dengan aman di Docker untuk mengakses repositori
Membangun dan mengunggah Docker gambar Anda
Dengan definisi yang benarDockerfile, Anda sekarang siap untuk mengikuti langkah-langkah untuk membuat repositori Amazon ECR pribadi, jika belum ada. Anda juga dapat membangun, menandai, dan mengunggah gambar kontainer Anda ke repositori.
Anda siap untuk membangun, menandai, dan mendorong gambar. Lihat dokumentasi build Docker docker build dan beberapa contoh.
Untuk file sampel yang didefinisikan di atas, Anda dapat menjalankan:
aws ecr get-login-password --region ${your_region} | docker login --username AWS --password-stdin ${aws_account_id}.dkr.ecr.${your_region}.amazonaws.com docker build -t braket-julia . docker tag braket-julia:latest ${aws_account_id}.dkr.ecr.${your_region}.amazonaws.com/braket-julia:latest docker push ${aws_account_id}.dkr.ecr.${your_region}.amazonaws.com/braket-julia:latest
Menetapkan izin Amazon ECR yang sesuai
Braket Hybrid Jobs Dockergambar harus di-host di repositori Amazon ECR pribadi. Secara default, repo Amazon ECR pribadi tidak menyediakan akses baca ke Braket Hybrid Jobs IAM role atau ke pengguna lain yang ingin menggunakan gambar Anda, seperti kolaborator atau siswa. Anda harus menetapkan kebijakan repositori untuk memberikan izin yang sesuai. Secara umum, hanya memberikan izin kepada pengguna dan IAM peran tertentu yang Anda inginkan untuk mengakses gambar Anda, daripada mengizinkan siapa pun yang memilikinya image URI untuk menariknya.