Sebelum dapat melakukan pelatihan kustom dengan penampung bawaan, Anda harus membuat distribusi sumber Python yang berisi aplikasi pelatihan Anda dan menguploadnya ke bucket Cloud Storage yang dapat diakses project Google Cloud Anda.
Alternatif selain membuat distribusi sumber
Panduan ini membahas cara membuat distribusi sumber secara manual dan menguploadnya ke Cloud Storage. Sebelum mengikuti panduan ini, pertimbangkan alur kerja alternatif berikut, yang mungkin lebih mudah untuk beberapa kasus:
Jika Anda ingin melatih menggunakan kode di komputer lokal Anda dan mengurangi jumlah pekerjaan pengemasan manual sebanyak mungkin, sebaiknya gunakan fitur pengemasan otomatis Google Cloud CLI. Fitur ini memungkinkan Anda mem-build image container Docker, mengirimkannya ke Artifact Registry, dan membuat resource
CustomJob
berdasarkan image container tersebut, semuanya dengan satu perintah. Pelajari lebih lanjut dalam panduan untuk membuatCustomJob
.Untuk menggunakan pengemasan otomatis, Anda harus menginstal Docker di komputer lokal. Opsi ini hanya memungkinkan Anda membuat resource
CustomJob
, bukan resourceTrainingPipeline
atauHyperparameterTuningJob
. (Pelajari perbedaan antara resource pelatihan kustom.)Untuk menyesuaikan image container lebih lanjut dan menjalankan kode dalam container secara lokal sebelum menjalankannya di Vertex AI, Anda dapat menggunakan perintah
local-run
gcloud CLI untuk memasukkan kode Anda ke dalam container dan menjalankannya secara lokal. Kemudian, Anda dapat mengirim image ke Artifact Registry secara manual.Untuk menggunakan perintah
local-run
, Anda harus menginstal Docker di komputer lokal.Jika Anda dapat menulis kode pelatihan dalam satu skrip Python, Anda dapat menggunakan class
CustomJob
Vertex AI SDK untuk Python guna membuat tugas kustom atau classCustomTrainingJob
guna membuatTrainingPipeline
kustom. Kode pelatihan Anda otomatis dikemas sebagai distribusi sumber dan diupload ke Cloud Storage.Untuk fleksibilitas paling tinggi, Anda dapat membuat image container kustom secara manual dan mengirimkannya ke Artifact Registry.
Jika tidak ada opsi sebelumnya yang sesuai dengan kasus penggunaan Anda, atau jika Anda lebih memilih untuk mengemas aplikasi pelatihan sebagai distribusi sumber, ikuti bagian selanjutnya dalam panduan ini.
Sebelum memulai
Sebelum menyiapkan aplikasi pelatihan Anda untuk dijalankan di cloud, selesaikan langkah-langkah berikut:
Kembangkan aplikasi pelatihan Anda menggunakan framework machine learning (ML) yang tersedia di salah satu container bawaan untuk pelatihan Vertex AI. Pastikan aplikasi pelatihan Anda memenuhi persyaratan kode pelatihan.
Jika Anda menulis aplikasi pelatihan dari awal, sebaiknya atur kode Anda sesuai dengan struktur aplikasi yang dijelaskan di bagian selanjutnya dalam dokumen ini.
Buat bucket Cloud Storage di project Google Cloud yang sama tempat Anda berencana menggunakan Vertex AI. Anda akan menyimpan aplikasi pelatihan dalam bucket ini. (Meskipun Anda dapat menggunakan bucket di bucket Google Cloud yang berbeda, hal ini memerlukan konfigurasi tambahan di luar cakupan panduan ini.)
Untuk mendapatkan performa terbaik, pastikan bucket Cloud Storage berada di lokasi tempat Anda berencana menggunakan Vertex AI.
Ketahui semua library Python yang menjadi dependensi aplikasi pelatihan Anda, baik berupa dependensi kustom maupun yang tersedia secara gratis melalui PyPI.
Struktur aplikasi
Saat melakukan pelatihan kustom menggunakan container bawaan, Anda harus menentukan kode pelatihan sesuai dengan persyaratan berikut:
Berikan kode sebagai satu atau beberapa distribusi sumber Python.
Jika Anda menggunakan Vertex AI API untuk memulai pelatihan kustom, tentukan hal ini di kolom
packageUris
.Buat modul di salah satu distribusi sumber ini yang berfungsi sebagai titik entri untuk pelatihan.
Jika Anda menggunakan Vertex AI API untuk memulai pelatihan kustom, tentukan hal ini di kolom
pythonModule
.
Selama memenuhi persyaratan ini, Anda dapat menyusun aplikasi pelatihan sesuai keinginan Anda. Namun, sebaiknya Anda membangun satu distribusi sumber Python dengan mengatur kode dalam struktur berikut (yang sering digunakan dalam contoh Vertex AI):
Gunakan direktori project utama, yang berisi file
setup.py
Anda. Lihat bagian berikut untuk mendapatkan panduan tentang konten file ini.Dalam direktori project utama, buat subdirektori bernama
trainer/
yang berfungsi sebagai paket utama untuk kode pelatihan Anda.Dalam
trainer/
, buat modul bernamatask.py
yang berfungsi sebagai titik entri untuk kode pelatihan Anda.Untuk mendukung
trainer/task.py
, buat modul Python tambahan yang Anda inginkan dalam pakettrainer/
, lalu buat subdirektori tambahan dengan kode tambahan yang Anda inginkan dalam direktori project utama.Buat file
__init__.py
di setiap subdirektori untuk menjadikannya sebuah paket.
Bagian selanjutnya dari panduan ini mengasumsikan bahwa kode Anda diatur sesuai dengan struktur ini.
Membuat distribusi sumber
Membangun distribusi sumber Python adalah topik luas yang sebagian besar di luar cakupan dokumentasi ini. Untuk mempermudah, bagian ini menyediakan ringkasan penggunaan Setuptools untuk membangun distribusi sumber yang akan digunakan dengan Vertex AI. Ada library lain yang dapat Anda gunakan untuk melakukan hal yang sama.
Buat file
setup.py
yang memberi tahu Setuptools cara membuat distribusi sumber.setup.py
dasar mencakup hal berikut:Pernyataan impor untuk
setuptools.find_packages
dansetuptools.setup
.Panggilan ke
setuptools.setup
dengan (setidaknya) parameter berikut ditetapkan:name
ditetapkan ke nama distribusi sumber Anda.version
ditetapkan ke nomor versi build dari distribusi sumber Anda.install_requires
ditetapkan ke daftar dependensi yang diperlukan oleh aplikasi Anda, dengan persyaratan versi, seperti'docutils>=0.3'
.packages
disetel kefind_packages()
. Hal ini memberi tahu Setuptools untuk menyertakan semua subdirektori dari direktori induk yang berisi file__init__.py
sebagai paket.include_package_data
disetel keTrue
.
Contoh berikut menunjukkan file
setup.py
dasar untuk aplikasi pelatihan:from setuptools import find_packages from setuptools import setup setup( name='trainer', version='0.1', packages=find_packages(), include_package_data=True, description='My training application.' )
Jalankan perintah berikut untuk membuat distribusi sumber,
dist/trainer-0.1.tar.gz
:python setup.py sdist --formats=gztar
Dependensi aplikasi Python
Dependensi adalah paket yang Anda import
dalam kode Anda. Aplikasi Anda mungkin
memiliki banyak dependensi yang diperlukannya agar berfungsi.
Untuk setiap replika dalam tugas pelatihan kustom, kode Anda akan berjalan dalam container dengan banyak dependensi Python umum yang sudah terinstal. Periksa dependensi yang disertakan dalam container bawaan yang akan Anda gunakan untuk pelatihan, dan catat setiap dependensi yang belum diinstal. Anda hanya perlu menyelesaikan langkah-langkah berikut untuk dependensi yang belum diinstal di container bawaan.
Ada 2 jenis dependensi yang mungkin perlu Anda tambahkan:
- Dependensi Standar, yang merupakan paket distribusi umum yang tersedia di PyPI
- Dependensi kustom, seperti paket yang Anda kembangkan sendiri, atau yang bersifat internal dalam organisasi.
Bagian di bawah ini menjelaskan prosedur untuk setiap jenis data.
Dependensi Standar (PyPI)
Anda dapat menentukan dependensi standar aplikasi Anda sebagai bagian dari skrip
setup.py
aplikasi tersebut. Vertex AI menggunakan pip
untuk menginstal aplikasi
pelatihan pada replika yang dialokasikan untuk tugas Anda. Perintah
pip install
mencari dependensi yang telah dikonfigurasi dan menginstalnya.
Contoh berikut menunjukkan setup.py
yang mirip dengan yang ada di bagian
sebelumnya. Namun, setup.py
ini memberi tahu Vertex AI untuk menginstal
some_PyPI_package
saat menginstal aplikasi pelatihan:
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['some_PyPI_package>=1.0']
setup(
name='trainer',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
include_package_data=True,
description='My training application.'
)
Dependensi kustom
Anda dapat menentukan dependensi kustom aplikasi dengan meneruskan jalurnya sebagai
bagian dari konfigurasi tugas. Anda memerlukan URI distribusi sumber
setiap dependensi. Dependensi kustom harus berada di
lokasi Cloud Storage. Vertex AI menggunakan
pip install
untuk menginstal dependensi kustom sehingga dapat memiliki dependensi standar
sendiri dalam skrip setup.py
-nya.
Setiap URI yang Anda sertakan adalah jalur ke distribusi sumber, yang diformat sebagai
tarball (.tar.gz
) atau sebagai wheel (.whl
). Vertex AI menginstal setiap
dependensi menggunakan pip install
pada setiap replika
yang dialokasikan untuk tugas pelatihan Anda.
Jika Anda menggunakan Vertex AI API untuk memulai pelatihan kustom, tentukan
Cloud Storage URI ke dependensi ini beserta aplikasi pelatihan
Anda di kolom
packageUris
.
Modul Python
Aplikasi Anda dapat berisi beberapa modul (file Python). Anda harus mengidentifikasi modul yang berisi titik entri aplikasi Anda. Layanan pelatihan menjalankan modul tersebut dengan memanggil Python, sama seperti Anda menjalankannya secara lokal.
Misalnya, jika Anda mengikuti struktur yang direkomendasikan dari bagian sebelumnya,
modul utama Anda adalah task.py
. Karena berada di dalam paket impor (direktori
dengan file __init__.py
) bernama trainer
, nama yang sepenuhnya memenuhi syarat untuk modul
ini adalah trainer.task
. Jadi, jika Anda menggunakan Vertex AI API untuk memulai pelatihan
kustom, tetapkan kolom
moduleName
ke trainer.task
.
Lihat panduan Python untuk paket guna mengetahui informasi selengkapnya tentang modul.
Mengupload distribusi sumber ke Cloud Storage
Anda dapat menggunakan gcloud CLI untuk mengupload distribusi sumber dan dependensi kustom apa pun ke bucket Cloud Storage. Misalnya:
gcloud storage cp dist/trainer-0.1.tar.gz CLOUD_STORAGE_DIRECTORY
Ganti CLOUD_STORAGE_DIRECTORY dengan URI (yang diawali dengan gs://
dan diakhiri dengan /
) pada direktori Cloud Storage dalam bucket yang
dapat diakses oleh project Google Cloud Anda.
Guna mempelajari cara lain untuk mengupload distribusi sumber ke Cloud Storage, baca Mengupload objek dalam dokumentasi Cloud Storage.
Langkah berikutnya
- Pelajari persyaratan kode pelatihan tambahan untuk pelatihan kustom.
- Pelajari cara membuat tugas pelatihan kustom atau pipeline pelatihan kustom yang menggunakan aplikasi pelatihan Anda.