Membuat image container kustom untuk pelatihan

Penggunaan image container kustom memberikan fleksibilitas paling tinggi untuk pelatihan di Vertex AI. Untuk mempelajari perbedaan penggunaan image container kustom dengan penggunaan aplikasi pelatihan Python dengan container bawaan, baca Persyaratan kode pelatihan.

Panduan ini membahas langkah-langkah berikut:

  1. Membuat container kustom:
    1. Menulis Dockerfile yang menyiapkan container Anda agar berfungsi dengan Vertex AI dan menyertakan dependensi yang diperlukan untuk aplikasi pelatihan Anda.
    2. Membangun dan menjalankan container Docker secara lokal.
  2. Mengirim image container ke Artifact Registry

Sebelum memulai

Untuk mengonfigurasi repositori Artifact Registry API dan menyiapkan Docker di lingkungan pengembangan, ikuti Panduan Memulai Artifact Registry untuk Docker. Secara khusus, pastikan untuk menyelesaikan langkah-langkah di panduan memulai berikut:

  • Sebelum memulai
  • Memilih shell
  • Membuat repositori Docker
  • Mengonfigurasi autentikasi

Membuat image container kustom

Kami merekomendasikan dua kemungkinan alur kerja untuk membuat image container kustom:

  • Tulis kode pelatihan Anda. Kemudian, gunakan perintah local-run gcloud CLI untuk membangun dan menguji image container kustom berdasarkan kode pelatihan Anda tanpa perlu menulis Dockerfile sendiri.

    Alur kerja ini akan lebih mudah dipahami jika Anda tidak terbiasa dengan Docker. Jika mengikuti alur kerja ini, Anda dapat melewati bagian selanjutnya.

  • Tulis kode pelatihan Anda. Kemudian, tulis Dockerfile dan bangun image container berdasarkan Dockerfile tersebut. Terakhir, uji container secara lokal.

    Alur kerja ini menawarkan lebih banyak fleksibilitas, karena Anda bebas menyesuaikan image container Anda.

Bagian selanjutnya akan membahas contoh alur kerja kedua.

Kode pelatihan

Anda dapat menulis kode pelatihan menggunakan dependensi apa pun dalam bahasa pemrograman apa pun. Pastikan kode Anda memenuhi persyaratan kode pelatihan. Jika Anda berencana menggunakan penyesuaian hyperparameter, GPU, atau pelatihan terdistribusi, pastikan Anda membaca bagian yang sesuai dari dokumen tersebut; bagian ini menjelaskan pertimbangan khusus untuk menggunakan fitur dengan container kustom.

Membuat Dockerfile

Buat Dockerfile guna menentukan semua petunjuk yang diperlukan untuk membangun image container Anda.

Bagian ini membahas cara membuat contoh umum Dockerfile yang akan digunakan dalam pelatihan kustom. Untuk mempelajari lebih lanjut cara membuat image container, baca panduan memulai dokumentasi Docker.

Agar berfungsi dengan Vertex AI, Dockerfile Anda harus menyertakan perintah yang mencakup tugas-tugas berikut:

  • Memilih image dasar
  • Menginstal dependensi tambahan
  • Menyalin kode pelatihan ke image
  • Mengonfigurasi titik entri untuk Vertex AI guna memanggil kode pelatihan

Dockerfile Anda dapat menyertakan logika tambahan, bergantung pada kebutuhan Anda. Untuk mengetahui informasi selengkapnya tentang setiap petunjuk tertentu, lihat referensi Dockerfile.

Perintah Dockerfile Deskripsi Contoh
FROM image:tag Menentukan image dasar beserta tag-nya.

Contoh image dasar dengan tag:

  • pytorch/pytorch:latest
  • tensorflow/tensorflow:nightly
  • python:2.7.15-jessie
  • nvidia/cuda:9.0-cudnn7-runtime
WORKDIR /path/to/directory Menentukan direktori pada image tempat petunjuk berikutnya dijalankan. /root
RUN pip install pkg1 pkg2 pkg3 Menginstal paket tambahan menggunakan pip.

Catatan: jika image dasar tidak memiliki pip, Anda harus menyertakan perintah untuk menginstalnya sebelum menginstal paket lain.

Contoh paket:

  • google-cloud-storage
  • cloudml-hypertune
  • pandas
COPY src/foo.py dest/foo.py Menyalin kode untuk aplikasi pelatihan Anda ke dalam image. Bergantung pada struktur aplikasi pelatihan Anda, ini kemungkinan akan mencakup beberapa file.

Contoh nama file dalam aplikasi pelatihan Anda:

  • model.py
  • task.py
  • data_utils.py
ENTRYPOINT ["exec", "file"] Menyiapkan titik entri untuk memanggil kode pelatihan Anda agar dapat dijalankan. Saat memulai pelatihan kustom, Anda dapat mengganti titik entri ini dengan menentukan kolom command di ContainerSpec Anda. Anda juga dapat menentukan kolom args di ContainerSpec untuk memberikan argumen tambahan ke titik entri (dan mengganti petunjuk CMD image container jika ada). ["python", "task.py"]

Logika di Dockerfile Anda dapat bervariasi sesuai dengan kebutuhan Anda, tetapi secara umum akan terlihat seperti ini:

# Specifies base image and tag
FROM image:tag
WORKDIR /root

# Installs additional packages
RUN pip install pkg1 pkg2 pkg3

# Downloads training data
RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

# Copies the trainer code to the docker image.
COPY your-path-to/model.py /root/model.py
COPY your-path-to/task.py /root/task.py

# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "task.py"]

(Opsional) Menyesuaikan Dockerfile untuk VM TPU

Jika ingin berlatih di Vertex AI menggunakan VM TPU, Anda harus menyesuaikan Dockerfile untuk menginstal versi library tensorflow dan libtpu yang dibuat khusus. Pelajari lebih lanjut cara menyesuaikan container yang akan digunakan dengan VM TPU.

Membangun image container

Buat URI image yang benar menggunakan variabel lingkungan, lalu bangun image Docker:

export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export REPO_NAME=REPOSITORY_NAME
export IMAGE_NAME=IMAGE_NAME
export IMAGE_TAG=IMAGE_TAG
export IMAGE_URI=us-central1-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}

docker build -f Dockerfile -t ${IMAGE_URI} ./

Dalam perintah ini, ganti hal berikut:

  • REPOSITORY_NAME: nama repositori Artifact Registry yang Anda buat di bagian Sebelum memulai.
  • IMAGE_NAME: nama pilihan Anda untuk image container.
  • IMAGE_TAG: tag pilihan Anda untuk versi image container ini.

Pelajari lebih lanjut persyaratan Artifact Registry untuk memberi nama image container.

Menjalankan container secara lokal (opsional)

Verifikasi image container dengan menjalankannya sebagai container secara lokal. Anda mungkin ingin menjalankan kode pelatihan pada set data yang lebih kecil atau untuk jumlah iterasi yang lebih singkat dari yang rencananya akan Anda jalankan di Vertex AI. Misalnya, jika skrip titik entri di image container menerima flag --epochs untuk mengontrol jumlah epoch yang dijalankan, Anda dapat menjalankan perintah berikut:

docker run ${IMAGE_URI} --epochs 1

Mengirim container ke Artifact Registry

Jika proses lokal berfungsi, Anda dapat mengirim container ke Artifact Registry.

Pertama, jalankan gcloud auth configure-docker us-central1-docker.pkg.dev jika Anda belum melakukannya di lingkungan pengembangan Anda. Lalu, jalankan perintah berikut:

docker push ${IMAGE_URI}

Izin Artifact Registry

Jika Anda menggunakan image Artifact Registry dari project Google Cloud yang sama dengan tempat Anda menggunakan Vertex AI, Anda tidak perlu mengonfigurasi izin lagi. Anda dapat langsung membuat tugas pelatihan kustom yang menggunakan image container.

Namun, jika Anda telah mengirim image container ke Artifact Registry dalam project Google Cloud yang berbeda dari project tempat Anda berencana menggunakan Vertex AI, Anda harus memberikan izin kepada Agen Layanan Vertex AI agar project Vertex AI Anda dapat mengambil image dari project lain. Pelajari lebih lanjut Vertex AI Service Agent dan cara memberinya izin..

Artifact Registry

Untuk mempelajari cara memberi Vertex AI Service agent akses ke repositori Artifact Registry, baca dokumentasi Artifact Registry tentang memberikan izin khusus repositori.

Langkah selanjutnya