Anda dapat menggunakan perintah gcloud ai custom-jobs local-run
untuk membangun image container
Docker berdasarkan kode pelatihan dan menjalankan image tersebut sebagai container di
komputer lokal. Fitur ini menawarkan beberapa manfaat:
Anda dapat membangun image container walau tidak mengetahui banyak hal tentang Docker. Anda tidak perlu menulis Dockerfile Anda sendiri. Nantinya Anda dapat mengirim image ini ke Artifact Registry dan menggunakannya untuk pelatihan container kustom.
Untuk kasus penggunaan lanjutan, Anda mungkin sebaiknya menulis Dockerfile Anda sendiri.
Image container Anda dapat menjalankan aplikasi pelatihan Python atau skrip Bash.
Anda dapat menggunakan skrip Bash untuk menjalankan kode pelatihan yang ditulis dalam bahasa pemrograman lain (selama Anda juga menentukan image container dasar yang mendukung bahasa lain).
Menjalankan container secara lokal akan mengeksekusi kode pelatihan dengan cara yang sama seperti saat berjalan di Vertex AI.
Menjalankan kode secara lokal dapat membantu Anda men-debug masalah pada kode sebelum melakukan pelatihan kustom di Vertex AI.
Sebelum memulai
Jika Anda menggunakan Linux, konfigurasi Docker agar Anda dapat menjalankannya tanpa
sudo
.Perintah
local-run
memerlukan konfigurasi ini untuk menggunakan Docker.
Menggunakan perintah local-run
.
Jalankan perintah berikut untuk membangun image container berdasarkan kode pelatihan dan jalankan container secara lokal:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME
Ganti kode berikut:
BASE_IMAGE_URI: URI image Docker yang akan digunakan sebagai dasar container. Pilih image dasar yang menyertakan dependensi yang diperlukan untuk kode pelatihan Anda.
Anda dapat menggunakan URI ke image container pelatihan bawaan atau nilai lain yang akan valid untuk petunjuk
FROM
Dockerfile; misalnya, image Docker yang tersedia secara publik atau image Docker di Artifact Registry yang dapat Anda akses.WORKING_DIRECTORY: Direktori level terendah di sistem file yang berisi semua kode pelatihan dan dependensi lokal yang perlu Anda gunakan untuk pelatihan.
Secara default, perintah ini hanya menyalin direktori induk dari file yang ditentukan oleh flag
--script
(lihat item daftar berikut) ke dalam image Docker yang dihasilkan. Image Docker tidak selalu menyertakan semua file dalam WORKING_DIRECTORY; untuk menyesuaikan file mana yang disertakan, lihat bagian dalam dokumen ini tentang menyertakan dependensi.Jika Anda menghilangkan flag
--local-package-path
(dan placeholder ini), perintahlocal-run
akan menggunakan direktori kerja saat ini untuk nilai ini.SCRIPT_PATH: Jalur, relatif terhadap WORKING_DIRECTORY pada sistem file lokal, ke skrip yang merupakan titik entri untuk kode pelatihan Anda. Ini dapat berupa skrip Python (diakhiri dengan
.py
) atau skrip Bash.Misalnya, jika Anda ingin menjalankan
/hello-world/trainer/task.py
dan WORKING_DIRECTORY adalah/hello-world
, gunakantrainer/task.py
untuk nilai ini.Jika Anda menentukan skrip Python, image dasar harus sudah menginstal Python, dan jika Anda menentukan skrip bash, image dasar harus sudah menginstal Bash. (Semua container pelatihan bawaan dan banyak image Docker lain yang tersedia secara publik menyertakan kedua dependensi ini.)
Gunakan
--python-module
, bukan--script
Jika menghilangkan flag
--script
(dan SCRIPT_PATH), Anda harus menggunakan flag--python-module
untuk menentukan nama modul Python di WORKING_DIRECTORY agar dapat dijalankan sebagai titik entri untuk pelatihan. Misalnya, sebagai ganti--script=trainer/task.py
, Anda dapat menentukan--python-module=trainer.task
.Dalam hal ini, container Docker yang dihasilkan akan memuat kode Anda sebagai modul, bukan sebagai skrip. Sebaiknya gunakan opsi ini jika skrip titik entri Anda mengimpor modul Python lainnya di WORKING_DIRECTORY.
OUTPUT_IMAGE_NAME: Nama untuk image Docker yang dihasilkan, yang dibuat oleh perintah tersebut. Anda dapat menggunakan nilai apa pun yang diterima oleh flag
-t
docker build
.Jika Anda berencana mengirim image ke Artifact Registry, sebaiknya gunakan nama image yang memenuhi persyaratan Artifact Registry. (Atau, Anda dapat memberi tag pada image dengan nama tambahan nanti).
Jika Anda menghilangkan flag
--output-image-uri
(dan placeholder ini), perintahlocal-run
akan memberi tag pada image dengan nama berdasarkan waktu saat ini dan nama file dari skrip titik entri Anda.
Perintah ini membangun image container Docker berdasarkan konfigurasi Anda. Setelah membangun image, perintah akan mencetak output berikut:
A training image is built.
Starting to run ...
Perintah kemudian segera menggunakan image container ini untuk menjalankan container di komputer lokal Anda. Saat container ditutup, perintah akan mencetak output berikut:
A local run is finished successfully using custom image: OUTPUT_IMAGE_NAME
Opsi tambahan
Bagian berikut menjelaskan opsi tambahan yang dapat Anda gunakan untuk menyesuaikan
perilaku perintah local-run
.
Menginstal dependensi
Kode pelatihan dapat bergantung pada dependensi apa pun yang diinstal pada image dasar
(misalnya, image container pelatihan bawaan
menyertakan banyak library Python untuk machine learning), serta file apa pun
yang Anda sertakan di image Docker yang dibuat oleh perintah local-run
.
Saat Anda menentukan skrip dengan flag --script
atau flag
--python-module
, perintah tersebut akan menyalin direktori induk skrip (dan subdirektorinya)
ke dalam image Docker. Misalnya, jika Anda menentukan
--local-package-path=/hello-world
dan --script=trainer/task.py
, perintah akan
menyalin /hello-world/trainer/
ke dalam image Docker.
Anda juga dapat menyertakan dependensi Python tambahan atau file arbitrer dari sistem file dengan menyelesaikan langkah-langkah tambahan yang dijelaskan di salah satu bagian berikut:
- Menggunakan file
requirements.txt
untuk dependensi Python - Menggunakan file
setup.py
untuk dependensi Python - Menentukan setiap dependensi PyPI
- Menentukan dependensi Python lokal
- Termasuk file lainnya
Menginstal dependensi Python tambahan
Anda dapat menyertakan dependensi Python tambahan di image Docker melalui beberapa cara:
Menggunakan file requirements.txt
Jika ada file bernama requirements.txt
di direktori kerja, maka
perintah local-run
akan memperlakukannya sebagai file persyaratan
pip
dan menggunakannya untuk menginstal dependensi Python di image Docker.
Menggunakan file setup.py
Jika ada file bernama setup.py
di direktori kerja, maka
perintah local-run
akan memperlakukannya sebagai file setup.py
Python, menyalin file tersebut ke image Docker, dan menjalankan pip install
di direktori di image Docker yang berisi file ini.
Misalnya, Anda dapat menambahkan argumen
install_requires
ke setup.py
untuk menginstal dependensi Python di
image Docker.
Menentukan setiap dependensi PyPI
Anda dapat menggunakan flag --requirements
untuk menginstal dependensi tertentu dari
PyPI di image Docker. Contoh:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME \
--requirements=REQUIREMENTS
Ganti REQUIREMENTS dengan daftar penentu persyaratan Python yang dipisahkan koma.
Menentukan dependensi Python lokal tambahan
Anda dapat menggunakan flag --extra-packages
untuk menginstal dependensi
Python lokal tertentu. Dependensi Python ini harus berada di direktori kerja, dan
setiap dependensi harus dalam format yang
didukung
pip install
; misalnya, file
roda atau distribusi
sumber Python.
Contoh:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME \
--extra-packages=LOCAL_DEPENDENCIES
Ganti LOCAL_DEPENDENCIES dengan daftar jalur file lokal yang dipisahkan koma, yang dinyatakan relatif terhadap direktori kerja.
Menyertakan file lain
Untuk menyalin direktori tambahan ke image Docker (tanpa menginstalnya sebagai
dependensi Python), Anda dapat menggunakan flag --extra-dirs
. Anda hanya dapat menentukan
direktori pada direktori kerja. Contoh:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME \
--extra-dirs=EXTRA_DIRECTORIES
Ganti EXTRA_DIRECTORIES dengan daftar direktori lokal yang dipisahkan koma, yang dinyatakan relatif terhadap direktori kerja.
Argumen aplikasi pelatihan
Jika skrip titik entri untuk aplikasi pelatihan mengharapkan argumen
command line, Anda dapat menentukannya saat menjalankan perintah local-run
. Argumen ini
tidak disimpan di image Docker; bukan diteruskan sebagai argumen saat
image dijalankan sebagai container.
Untuk meneruskan argumen ke skrip titik entri, teruskan argumen --
yang diikuti dengan
argumen skrip ke perintah local-run
setelah semua flag
perintah lainnya.
Misalnya, bayangkan skrip yang Anda jalankan secara lokal dengan perintah berikut:
python /hello-world/trainer/task.py \
--learning_rate=0.1 \
--input_data=gs://BUCKET/small-dataset/
Saat menggunakan perintah local-run
, Anda dapat menggunakan flag berikut untuk menjalankan
skrip di container dengan argumen yang sama:
gcloud ai custom-jobs local-run \\
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=/hello-world \
--script=/trainer/task.py \
--output-image-uri=OUTPUT_IMAGE_NAME \
-- \
--learning_rate=0.1 \
--input_data=gs://BUCKET/small-dataset/
Mempercepat pelatihan model dengan GPU
Jika pada akhirnya Anda ingin men-deploy image Docker yang dibuat oleh perintah local-run
ke Vertex AI dan menggunakan GPU untuk
pelatihan, pastikan
menulis kode pelatihan yang memanfaatkan
GPU dan menggunakan
image Docker yang mendukung GPU untuk nilai flag --executor-image-uri
. Misalnya,
Anda dapat menggunakan salah satu image container
pelatihan bawaan yang mendukung GPU.
Jika komputer lokal Anda menjalankan Linux dan memiliki GPU, Anda juga dapat mengonfigurasi
perintah local-run
untuk menggunakan GPU saat menjalankan container secara lokal. Tindakan ini
bersifat opsional, tetapi dapat berguna jika Anda ingin menguji cara kerja kode pelatihan
dengan GPU. Lakukan tindakan berikut:
Instal NVIDIA Container Toolkit (
nvidia-docker
) di komputer lokal, jika Anda belum melakukannya.Tentukan flag
--gpu
saat Anda menjalankan perintahlocal-run
. Contoh:gcloud ai custom-jobs local-run \ --executor-image-uri=BASE_IMAGE_URI \ --local-package-path=WORKING_DIRECTORY \ --script=SCRIPT_PATH \ --output-image-uri=OUTPUT_IMAGE_NAME \ --gpu
Menentukan akun layanan kustom
Secara default, saat perintah local-run
menjalankan kode pelatihan di container lokal,
perintah tersebut memasang kredensial Google Cloud yang tersedia di lingkungan lokal Anda
melalui Kredensial Default Aplikasi
(ADC) ke dalam container, sehingga
kode pelatihan Anda dapat menggunakan ADC untuk autentikasi dengan kredensial
yang sama. Dengan kata lain, kredensial yang tersedia oleh ADC di shell
lokal juga tersedia oleh ADC ke kode saat Anda menjalankan perintah local-run
.
Anda dapat menggunakan perintah
gcloud auth application-default login
untuk menggunakan akun
pengguna untuk ADC, atau Anda dapat menyetel variabel lingkungan di shell untuk menggunakan
akun layanan untuk ADC.
Jika Anda ingin container dijalankan dengan kredensial Google Cloud selain yang disediakan oleh ADC di shell lokal, lakukan hal berikut:
Buat atau pilih akun layanan dengan izin yang ingin Anda berikan aksesnya kepada kode pelatihan.
Download kunci akun layanan untuk akun layanan ke komputer lokal Anda.
Saat menjalankan perintah
local-run
, tentukan flag--service-account-key-file
. Contoh:gcloud ai custom-jobs local-run \ --executor-image-uri=BASE_IMAGE_URI \ --local-package-path=WORKING_DIRECTORY \ --script=SCRIPT_PATH \ --output-image-uri=OUTPUT_IMAGE_NAME \ --service-account-key-file=KEY_PATH
Ganti KEY_PATH dengan jalur ke kunci akun layanan di sistem file lokal Anda. Hal ini harus bersifat mutlak atau relatif terhadap direktori kerja shell saat ini, tidak relatif dengan direktori yang ditentukan oleh flag
--local-package-path
.
Di penampung yang dihasilkan, kode pelatihan Anda dapat menggunakan ADC untuk melakukan autentikasi dengan Kredensial Akun Layanan yang ditentukan.
Perbandingan dengan pelatihan di Vertex AI
Saat Anda melakukan pelatihan kustom di Vertex AI, Vertex AI akan menggunakan Agen Layanan Kode Kustom Vertex AI untuk project Anda secara default untuk menjalankan kode. Anda juga dapat melampirkan akun layanan lain untuk pelatihan kustom.
Ketika menggunakan perintah local-run
, Anda tidak dapat melakukan autentikasi sebagai Agen Layanan Kode Kustom Vertex AI,
tetapi Anda dapat membuat akun layanan dengan izin serupa dan menggunakannya
secara lokal.
Langkah berikutnya
Pelajari persyaratan untuk kode pelatihan.
Pelajari cara mengirim image Docker ke Artifact Registry dan menggunakannya sebagai container kustom untuk pelatihan di Vertex AI.