Membuat tugas pelatihan kustom

Tugas pelatihan kustom (resource CustomJob di Vertex AI API) adalah cara dasar untuk menjalankan kode pelatihan machine learning (ML) kustom di Vertex AI.

Sebelum Anda mengirimkan tugas

Sebelum membuat CustomJob di Vertex AI, Anda harus membuat aplikasi pelatihan Python atau image container kustom untuk menentukan kode pelatihan dan dependensi yang ingin Anda jalankan di Vertex AI.

Sebaiknya gunakan fitur pengemasan otomatis Google Cloud CLI, yang dijelaskan di bagian selanjutnya dari panduan ini, untuk membuat image container Docker dari kode di komputer lokal Anda, mengirim image container ini ke Container Registry, dan membuat CustomJob, semuanya dengan satu perintah.

Jika tidak, Anda harus membuat aplikasi pelatihan Python atau image container kustom secara manual.

Jika Anda tidak yakin opsi mana yang harus dipilih, lihat persyaratan kode pelatihan untuk mempelajari lebih lanjut.

Lingkup tugas kustom

Saat membuat tugas kustom, Anda menentukan setelan yang diperlukan Vertex AI untuk menjalankan kode pelatihan Anda, termasuk:

Dalam kumpulan worker, Anda dapat menentukan setelan berikut:

Anda juga dapat mengonfigurasi tugas kustom untuk berjalan pada resource persisten, daripada membuat resource komputasi baru saat startup tugas. Untuk mempelajari resource persisten lebih lanjut, lihat Ringkasan resource persisten.

Mengonfigurasi pelatihan terdistribusi

Anda dapat mengonfigurasi CustomJob untuk pelatihan terdistribusi dengan menentukan beberapa kumpulan worker.

Sebagian besar contoh di halaman ini menunjukkan tugas pelatihan replika tunggal dengan satu kumpulan worker. Guna memodifikasinya untuk pelatihan terdistribusi:

  • Gunakan kumpulan worker pertama Anda untuk mengonfigurasi replika utama, dan tetapkan jumlah replika ke 1.
  • Tambahkan lebih banyak kumpulan worker untuk mengonfigurasi replika pekerja, replika server parameter, atau replika evaluator jika framework machine learning Anda mendukung tugas cluster tambahan ini untuk pelatihan terdistribusi.

Pelajari lebih lanjut cara menggunakan pelatihan terdistribusi.

Membuat CustomJob

Untuk membuat CustomJob, ikuti petunjuk di salah satu tab berikut, bergantung pada alat yang ingin Anda gunakan. Jika menggunakan gcloud CLI, Anda dapat menggunakan perintah tunggal untuk mengemas kode pelatihan secara otomatis di komputer lokal Anda ke dalam image container Docker, mengirim image container ke Container Registry, dan membuat CustomJob. Opsi lainnya mengasumsikan bahwa Anda sudah membuat aplikasi pelatihan Python atau image container kustom.

gcloud

Contoh berikut menggunakan perintah gcloud ai custom-jobs create.

Jika kode pelatihan Anda ada di komputer lokal, sebaiknya ikuti bagian Dengan pengemasan otomatis. Atau, jika Anda sudah membuat aplikasi pelatihan Python atau image container kustom, lanjutkan ke bagian Tanpa pengemasan otomatis.

Dengan pengemasan otomatis

Jika Anda memiliki kode pelatihan di komputer lokal, Anda cukup menggunakan satu perintah untuk melakukan hal berikut:

  • Membangun image Docker kustom berdasarkan kode.
  • Mengirim image ke Container Registry.
  • Memulai CustomJob berdasarkan gambar.

Hasilnya mirip dengan membuat CustomJob menggunakan container kustom lainnya; Anda dapat menggunakan versi perintah ini jika sesuai untuk alur kerja Anda.

Sebelum memulai

Karena versi perintah ini membangun dan mengirim image Docker, Anda harus melakukan konfigurasi berikut di komputer lokal Anda:

  1. Menginstal Docker Engine.

  2. Jika Anda menggunakan Linux, konfigurasi Docker agar Anda dapat menjalankannya tanpa sudo.

  3. Aktifkan API Container Registry.

    Mengaktifkan API

  4. Mengonfigurasi autentikasi untuk Docker, sehingga Anda dapat mengirim image Docker ke Container Registry:

    gcloud auth configure-docker
    

Membangun dan mengirim image Docker, serta membuat CustomJob

Perintah berikut membangun image Docker berdasarkan image container pelatihan bawaan dan kode Python lokal, mengirim image ke Container Registry, dan membuat CustomJob.

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=EXECUTOR_IMAGE_URI,local-package-path=WORKING_DIRECTORY,script=SCRIPT_PATH

Ganti kode berikut:

  • LOCATION: Region tempat container atau paket Python akan dijalankan.

  • JOB_NAME: Harus ada. Nama tampilan untuk CustomJob.

  • MACHINE_TYPE: Jenis mesin. Lihat jenis mesin yang tersedia untuk pelatihan.

  • REPLICA_COUNT: Jumlah replika worker yang akan digunakan. Pada umumnya, tetapkan ini ke 1 untuk kumpulan worker pertama Anda.

  • EXECUTOR_IMAGE_URI: URI image container yang menjalankan kode yang disediakan. Lihat container bawaan yang tersedia untuk pelatihan.

    Image ini berfungsi sebagai image dasar untuk image Docker baru yang sedang Anda bangun dengan perintah ini.

  • WORKING_DIRECTORY: Direktori di sistem file lokal Anda yang berisi skrip titik entri yang menjalankan kode pelatihan Anda (lihat item daftar berikut).

    Anda dapat menggunakan direktori induk skrip, atau direktori dengan level yang lebih tinggi. Sebaiknya gunakan direktori yang levelnya lebih tinggi untuk menentukan nama modul Python yang sepenuhnya memenuhi syarat (lihat item daftar berikut). Ada baiknya juga untuk menggunakan direktori dengan tingkat yang lebih tinggi jika direktori tersebut berisi file requirements.txt atau setup.py. Untuk mempelajari lebih lanjut, lihat Menginstal dependensi.

    Perhatikan bahwa meskipun Anda menentukan direktori dengan level yang lebih tinggi, perintah ini hanya menyalin direktori induk skrip titik entri Anda ke image Docker.

  • 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, gunakan trainer/task.py untuk nilai ini.

    Gunakan python-module, bukan script

    Secara opsional, Anda dapat mengganti script=SCRIPT_PATH dengan python-module=PYTHON_MODULE untuk menentukan nama modul Python di WORKING_DIRECTORY agar 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.

Menginstal dependensi

Saat menggunakan pengemasan otomatis, Anda dapat menginstal dependensi Python di container dengan cara yang sama seperti yang tersedia saat Anda menggunakan perintah local-run gcloud CLI. Untuk mempelajari berbagai cara menginstal dependensi Python, baca bagian Menginstal dependensi dalam panduan perintah local-run.

Sintaksis untuk menentukan dependensi yang digunakan untuk pengemasan otomatis sedikit berbeda dibandingkan dengan yang digunakan untuk perintah local-run. Untuk menentukan dependensi, Anda harus menggunakan opsi dalam nilai flag --worker-pool-spec, bukan menggunakan tanda command line. Selain itu, nilai di dalam opsi ini harus dipisahkan dengan titik koma, bukan koma. Secara khusus, sintaksis:

  • Gunakan opsi local-package-path pada nilai flag --worker-pool-spec, bukan flag --local-package-path perintah local-run. Jika direktori kerja yang Anda tentukan dengan opsi ini berisi file requirements.txt atau setup.py, pengemasan otomatis akan menginstal dependensi berdasarkan file ini.

    Contoh sebelumnya menunjukkan sintaksis ini.

  • (Opsional) Daripada menggunakan flag --requirements, gunakan opsi requirements pada nilai flag --worker-pool-spec. Gunakan titik koma untuk memisahkan dependensi PyPI, bukan koma.

  • (Opsional) Daripada menggunakan flag --extra-packages, gunakan opsi extra-packages pada nilai flag --worker-pool-spec. Gunakan titik koma untuk memisahkan dependensi lokal, bukan koma.

  • (Opsional) Daripada menggunakan flag --extra-dirs, gunakan opsi extra-dirs pada nilai flag --worker-pool-spec. Gunakan titik koma untuk memisahkan jalur direktori, bukan koma.

Contoh berikut menunjukkan cara menginstal dependensi menggunakan semua teknik opsional. (Anda dapat menentukan subset apa pun darinya.) Untuk mendemonstrasikan sintaksis titik koma, contoh ini menentukan dua nilai untuk setiap opsi. Untuk mengurangi panjang contoh, opsi --worker-pool-spec lainnya akan diganti dengan [...].

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=[...],requirements=PYPI_DEP_1;PYPI_DEP_2,extra-packages=LOCAL_DEP_1;LOCAL_DEP_2,extra-dirs=EXTRA_DIR_1;EXTRA_DIR_2

Guna mempelajari nilai yang sesuai untuk placeholder ini, lihat "Menginstal dependensi" dalam panduan untuk perintah local-run.

Tanpa pengemasan otomatis

Jika Anda tidak menggunakan pengemasan otomatis, Anda dapat membuat CustomJob dengan perintah yang mirip dengan salah satu dari berikut ini. Bergantung pada apakah Anda telah membuat aplikasi pelatihan Python atau image container kustom, pilih salah satu tab berikut:

Aplikasi pelatihan Python

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --python-package-uris=PYTHON_PACKAGE_URIS \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=EXECUTOR_IMAGE_URI,python-module=PYTHON_MODULE

Ganti kode berikut:

  • LOCATION: Region tempat container atau paket Python akan dijalankan.
  • JOB_NAME: Harus ada. Nama tampilan untuk CustomJob.
  • PYTHON_PACKAGE_URIS: Daftar URI Cloud Storage yang dipisahkan koma yang menentukan file paket Python yang merupakan program pelatihan dan paket dependensinya. Jumlah maksimum URI paket adalah 100.
  • MACHINE_TYPE: Jenis mesin. Lihat jenis mesin yang tersedia untuk pelatihan.
  • REPLICA_COUNT: Jumlah replika worker yang akan digunakan. Pada umumnya, tetapkan ini ke 1 untuk kumpulan worker pertama Anda.
  • EXECUTOR_IMAGE_URI: URI image container yang menjalankan kode yang disediakan. Lihat container bawaan yang tersedia untuk pelatihan.
  • PYTHON_MODULE: Nama modul Python yang akan dijalankan setelah menginstal paket.

Image container kustom

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,container-image-uri=CUSTOM_CONTAINER_IMAGE_URI

Ganti kode berikut:

  • LOCATION: Region tempat container atau paket Python akan dijalankan.
  • JOB_NAME: Harus ada. Nama tampilan untuk CustomJob.
  • MACHINE_TYPE: Jenis mesin. Lihat jenis mesin yang tersedia untuk pelatihan.
  • REPLICA_COUNT: Jumlah replika worker yang akan digunakan. Pada umumnya, tetapkan ini ke 1 untuk kumpulan worker pertama Anda.
  • CUSTOM_CONTAINER_IMAGE_URI: URI image container di Artifact Registry, Container Registry, atau Docker Hub yang akan dijalankan di setiap replika worker.

Pelatihan terdistribusi

Untuk melakukan pelatihan terdistribusi, tentukan flag --worker-pool-spec beberapa kali, satu kali untuk setiap kumpulan worker.

Jika menggunakan pengemasan otomatis, Anda hanya boleh menentukan local-package-path, script, dan opsi lain yang berkaitan dengan pengemasan otomatis di kumpulan worker pertama. Hapus kolom yang berkaitan dengan kode pelatihan Anda di kumpulan worker berikutnya, yang semuanya akan menggunakan container pelatihan yang sama yang dibuat dengan pengemasan otomatis.

Misalnya, perintah berikut menyesuaikan contoh pengemasan otomatis sebelumnya untuk menggunakan kumpulan worker kedua:

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=EXECUTOR_IMAGE_URI,local-package-path=WORKING_DIRECTORY,script=SCRIPT_PATH \
  --worker-pool-spec=machine-type=SECOND_POOL_MACHINE_TYPE,replica-count=SECOND_POOL_REPLICA_COUNT

Jika Anda tidak menggunakan pengemasan otomatis, tentukan setiap kumpulan worker sepenuhnya dan secara independen; jangan hapus kolom apa pun.

Perintah berikut menyesuaikan contoh sebelumnya untuk menggunakan kumpulan worker kedua:

Aplikasi pelatihan Python

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --python-package-uris=PYTHON_PACKAGE_URIS \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=EXECUTOR_IMAGE_URI,python-module=PYTHON_MODULE \
  --worker-pool-spec=machine-type=SECOND_POOL_MACHINE_TYPE,replica-count=SECOND_POOL_REPLICA_COUNT,executor-image-uri=SECOND_POOL_EXECUTOR_IMAGE_URI,python-module=SECOND_POOL_PYTHON_MODULE

Image container kustom

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,container-image-uri=CUSTOM_CONTAINER_IMAGE_URI \
  --worker-pool-spec=machine-type=SECOND_POOL_MACHINE_TYPE,replica-count=SECOND_POOL_REPLICA_COUNT,container-image-uri=SECOND_POOL_CUSTOM_CONTAINER_IMAGE_URI

Konfigurasi lanjutan

Jika ingin menentukan opsi konfigurasi yang tidak tersedia dalam contoh sebelumnya, Anda dapat menggunakan flag --config untuk menentukan jalur ke file config.yaml di lingkungan lokal Anda yang berisi kolom dari CustomJobSpec. Contoh:

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --config=config.yaml

Lihat contoh file config.yaml.

Konsol

Di konsol Google Cloud, Anda tidak dapat membuat resource CustomJob secara langsung. Namun, Anda dapat membuat resource TrainingPipeline yang akan membuat CustomJob.

Petunjuk berikut menjelaskan cara membuat TrainingPipeline yang membuat CustomJob dan tidak melakukan hal lain. Jika Anda ingin menggunakan fitur TrainingPipeline tambahan, seperti pelatihan dengan set data terkelola atau membuat resource Model di akhir pelatihan, baca Membuat pipeline pelatihan.

  1. Di konsol Google Cloud, di bagian Vertex AI, buka halaman Pipeline pelatihan.

    Buka Training pipelines

  2. Klik Create untuk membuka panel Train new model.

  3. Pada langkah Training method, tentukan setelan berikut:

    1. Di menu drop-down Dataset, pilih No Managed dataset.

    2. Pilih Custom training (advanced).

    Klik Lanjutkan.

  4. Pada langkah Model details, pilih Train new model atau Train new version. Jika Anda memilih opsi latih model baru, masukkan nama pilihan Anda MODEL_NAME, untuk model Anda. Klik Continue.

  5. Pada langkah Training container, tentukan setelan berikut:

    1. Pilih apakah akan menggunakan Prebuilt container atau Custom container untuk pelatihan.

    2. Bergantung pada pilihan Anda, lakukan salah satu hal berikut:

    3. Di kolom Model output directory, Anda dapat menentukan URI Cloud Storage dari direktori dalam bucket yang dapat Anda akses. Direktori belum perlu ada.

      Nilai ini diteruskan ke Vertex AI di kolom baseOutputDirectory API, yang menetapkan beberapa variabel lingkungan yang dapat diakses oleh aplikasi pelatihan Anda saat aplikasi berjalan.

    4. Opsional: Di kolom Arguments, Anda dapat menentukan argumen untuk Vertex AI yang akan digunakan saat Vertex AI mulai menjalankan kode pelatihan Anda. Panjang maksimum untuk semua argumen yang digabungkan adalah 100.000 karakter. Perilaku argumen ini berbeda-beda, bergantung pada jenis container yang Anda gunakan:

    Klik Lanjutkan.

  6. Pada langkah Penyesuaian hyperparameter, pastikan kotak centang Aktifkan penyesuaian hyperparameter tidak dicentang. Klik Lanjutkan.

  7. Pada langkah Komputasi dan harga, tentukan setelan berikut:

    1. Di menu drop-down Region, pilih "region yang mendukung pelatihan kustom"

    2. Di bagian Worker pool 0, tentukan resource komputasi yang akan digunakan untuk pelatihan.

      Jika Anda menentukan akselerator, pastikan jenis akselerator yang Anda pilih tersedia di region yang Anda pilih.

      Jika Anda ingin melakukan pelatihan terdistribusi, klik Add more worker pools dan tentukan kumpulan resource komputasi tambahan untuk setiap pool worker tambahan yang Anda inginkan.

    Klik Continue.

  8. Pada langkah Prediction container, pilih No prediction container.

  9. Klik Mulai pelatihan untuk memulai pipeline pelatihan kustom.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION: Region tempat container atau paket Python akan dijalankan.
  • PROJECT_ID: Project ID Anda.
  • JOB_NAME: Harus ada. Nama tampilan untuk CustomJob.
  • Tentukan tugas pelatihan kustom:
    • MACHINE_TYPE: Jenis mesin. Lihat jenis mesin yang tersedia untuk pelatihan.
    • ACCELERATOR_TYPE: (Opsional.) Jenis akselerator yang akan dipasang ke tugas.
    • ACCELERATOR_COUNT: (Opsional.) Jumlah akselerator yang akan dipasang ke tugas.
    • DISK_TYPE: (Opsional.) Jenis boot disk yang akan digunakan untuk tugas, pd-standard (default) atau pd-ssd. Pelajari jenis disk lebih lanjut
    • DISK_SIZE: (Opsional.) Ukuran boot disk yang digunakan untuk tugas dalam satuan GB. Nilai defaultnya adalah 100.
    • REPLICA_COUNT: Jumlah replika worker yang akan digunakan. Pada umumnya, tetapkan ini ke 1 untuk kumpulan worker pertama Anda.
    • Jika aplikasi pelatihan Anda berjalan dalam container kustom, tentukan hal berikut:
      • CUSTOM_CONTAINER_IMAGE_URI: URI image container di Artifact Registry, Container Registry, atau Docker Hub yang akan dijalankan di setiap replika worker.
      • CUSTOM_CONTAINER_COMMAND: (Opsional.) Perintah yang akan dipanggil saat container dimulai. Perintah ini mengganti titik entri default container.
      • CUSTOM_CONTAINER_ARGS: (Opsional.) Argumen yang akan diteruskan saat memulai container.
    • Jika aplikasi pelatihan Anda adalah paket Python yang berjalan dalam container bawaan, tentukan hal berikut:
      • EXECUTOR_IMAGE_URI: URI image container yang menjalankan kode yang disediakan. Lihat container bawaan yang tersedia untuk pelatihan.
      • PYTHON_PACKAGE_URIS: Daftar URI Cloud Storage yang dipisahkan koma yang menentukan file paket Python yang merupakan program pelatihan dan paket dependensinya. Jumlah maksimum URI paket adalah 100.
      • PYTHON_MODULE: Nama modul Python yang akan dijalankan setelah menginstal paket.
      • PYTHON_PACKAGE_ARGS: (Opsional.) Argumen command line yang akan diteruskan ke modul Python.
    • Pelajari opsi penjadwalan tugas.
    • TIMEOUT: (Opsional.) Waktu berjalan maksimum untuk tugas.
  • Tentukan LABEL_NAME dan LABEL_VALUE untuk setiap label yang ingin Anda terapkan ke tugas kustom ini.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

Isi JSON permintaan:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": MACHINE_TYPE,
          "acceleratorType": ACCELERATOR_TYPE,
          "acceleratorCount": ACCELERATOR_COUNT
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // Union field task can be only one of the following:
        "containerSpec": {
          "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
          "command": [
            CUSTOM_CONTAINER_COMMAND
          ],
          "args": [
            CUSTOM_CONTAINER_ARGS
          ]
        },
        "pythonPackageSpec": {
          "executorImageUri": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Respons ini berisi informasi tentang spesifikasi serta TRAININGPIPELINE_ID.

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.cloud.aiplatform.v1.AcceleratorType;
import com.google.cloud.aiplatform.v1.ContainerSpec;
import com.google.cloud.aiplatform.v1.CustomJob;
import com.google.cloud.aiplatform.v1.CustomJobSpec;
import com.google.cloud.aiplatform.v1.JobServiceClient;
import com.google.cloud.aiplatform.v1.JobServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.MachineSpec;
import com.google.cloud.aiplatform.v1.WorkerPoolSpec;
import java.io.IOException;

// Create a custom job to run machine learning training code in Vertex AI
public class CreateCustomJobSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String displayName = "DISPLAY_NAME";

    // Vertex AI runs your training application in a Docker container image. A Docker container
    // image is a self-contained software package that includes code and all dependencies. Learn
    // more about preparing your training application at
    // https://cloud.google.com/vertex-ai/docs/training/overview#prepare_your_training_application
    String containerImageUri = "CONTAINER_IMAGE_URI";
    createCustomJobSample(project, displayName, containerImageUri);
  }

  static void createCustomJobSample(String project, String displayName, String containerImageUri)
      throws IOException {
    JobServiceSettings settings =
        JobServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();
    String location = "us-central1";

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (JobServiceClient client = JobServiceClient.create(settings)) {
      MachineSpec machineSpec =
          MachineSpec.newBuilder()
              .setMachineType("n1-standard-4")
              .setAcceleratorType(AcceleratorType.NVIDIA_TESLA_K80)
              .setAcceleratorCount(1)
              .build();

      ContainerSpec containerSpec =
          ContainerSpec.newBuilder().setImageUri(containerImageUri).build();

      WorkerPoolSpec workerPoolSpec =
          WorkerPoolSpec.newBuilder()
              .setMachineSpec(machineSpec)
              .setReplicaCount(1)
              .setContainerSpec(containerSpec)
              .build();

      CustomJobSpec customJobSpecJobSpec =
          CustomJobSpec.newBuilder().addWorkerPoolSpecs(workerPoolSpec).build();

      CustomJob customJob =
          CustomJob.newBuilder()
              .setDisplayName(displayName)
              .setJobSpec(customJobSpecJobSpec)
              .build();
      LocationName parent = LocationName.of(project, location);
      CustomJob response = client.createCustomJob(parent, customJob);
      System.out.format("response: %s\n", response);
      System.out.format("Name: %s\n", response.getName());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const customJobDisplayName = 'YOUR_CUSTOM_JOB_DISPLAY_NAME';
// const containerImageUri = 'YOUR_CONTAINER_IMAGE_URI';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Job Service Client library
const {JobServiceClient} = require('@google-cloud/aiplatform');

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const jobServiceClient = new JobServiceClient(clientOptions);

async function createCustomJob() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}`;
  const customJob = {
    displayName: customJobDisplayName,
    jobSpec: {
      workerPoolSpecs: [
        {
          machineSpec: {
            machineType: 'n1-standard-4',
            acceleratorType: 'NVIDIA_TESLA_K80',
            acceleratorCount: 1,
          },
          replicaCount: 1,
          containerSpec: {
            imageUri: containerImageUri,
            command: [],
            args: [],
          },
        },
      ],
    },
  };
  const request = {parent, customJob};

  // Create custom job request
  const [response] = await jobServiceClient.createCustomJob(request);

  console.log('Create custom job response:\n', JSON.stringify(response));
}
createCustomJob();

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Python API.

def create_custom_job_with_experiment_autologging_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

Langkah selanjutnya

  • Mempelajari cara menemukan bottleneck performa pelatihan untuk melatih model dengan lebih cepat dan lebih murah menggunakan Profiler TensorBoard.
  • Membaca artikel Membuat pipeline pelatihan untuk mempelajari cara membuat pipeline pelatihan guna menjalankan aplikasi pelatihan kustom di Vertex AI.