Membuat aplikasi pelatihan Python untuk container bawaan

Sebelum dapat melakukan pelatihan kustom dengan container 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 membangun image container Docker, mengirimkannya ke Container Registry, dan membuat resource CustomJob berdasarkan image container tersebut, semuanya dengan satu perintah. Pelajari lebih lanjut dalam panduan untuk membuat CustomJob.

    Untuk menggunakan pengemasan otomatis, Anda harus menginstal Docker di komputer lokal. Opsi ini hanya memungkinkan Anda membuat resource CustomJob, bukan resource TrainingPipeline atau HyperparameterTuningJob. (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 atau Container 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 class CustomTrainingJob guna membuat TrainingPipeline 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 atau Container 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:

  1. 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.

  2. 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.

  3. 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 bernama task.py yang berfungsi sebagai titik entri untuk kode pelatihan Anda.

  • Untuk mendukung trainer/task.py, buat modul Python tambahan yang Anda inginkan dalam paket trainer/, 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.

  1. Buat file setup.py yang memberi tahu Setuptools cara membuat distribusi sumber. setup.py dasar mencakup hal berikut:

    • Pernyataan impor untuk setuptools.find_packages dan setuptools.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 ke find_packages(). Hal ini memberi tahu Setuptools untuk menyertakan semua subdirektori dari direktori induk yang berisi file __init__.py sebagai paket.

      • include_package_data disetel ke True.

    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.'
    )
    
  2. 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 alat gsutil untuk mengupload distribusi sumber dan dependensi kustom apa pun ke bucket Cloud Storage. Misalnya:

gsutil 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 selanjutnya