Mengonfigurasi pipeline yang berjalan di resource persisten

Resource persisten Vertex AI adalah cluster yang berjalan lama, yang dapat Anda gunakan untuk menjalankan tugas pelatihan kustom dan eksekusi pipeline. Dengan menggunakan resource persisten untuk menjalankan pipeline, Anda dapat membantu memastikan ketersediaan resource komputasi dan mengurangi waktu startup tugas pipeline. Resource persisten mendukung semua VM dan GPU yang didukung oleh tugas pelatihan kustom. Untuk mempelajari lebih lanjut resource persisten, lihat Ringkasan resource persisten.

Halaman ini menunjukkan cara melakukan hal berikut:

Sebelum memulai

Sebelum dapat membuat proses pipeline dengan resource persisten, Anda harus menyelesaikan prasyarat berikut terlebih dahulu.

Menentukan dan mengompilasi pipeline

Tentukan pipeline Anda lalu kompilasi definisi pipeline menjadi file YAML. Untuk mengetahui informasi selengkapnya tentang cara menentukan dan mengompilasi pipeline, lihat Membangun pipeline.

Peran IAM yang diperlukan

Untuk mendapatkan izin yang diperlukan guna membuat resource persisten, minta administrator Anda untuk memberi Anda peran IAM Vertex AI Administrator (roles/aiplatform.admin) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin aiplatform.persistentResources.create yang diperlukan untuk membuat resource persisten.

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Membuat resource yang persisten

Gunakan contoh berikut untuk membuat resource persisten yang dapat Anda kaitkan dengan proses pipeline. Untuk mengetahui informasi selengkapnya tentang cara membuat resource persisten, lihat Membuat resource persisten.

gcloud

Untuk membuat resource persisten yang dapat Anda kaitkan dengan eksekusi pipeline, gunakan perintah gcloud ai persistent-resources create bersama dengan flag --enable-custom-service-account.

Resource persisten dapat memiliki satu atau beberapa kumpulan resource. Untuk membuat beberapa kumpulan resource dalam resource persisten, tentukan beberapa flag --resource-pool-spec.

Anda dapat menetapkan semua konfigurasi kumpulan resource sebagai bagian dari command line, atau menggunakan flag --config untuk menentukan jalur ke file YAML yang berisi konfigurasi tersebut.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • PROJECT_ID: Project ID dari Google Cloud project tempat Anda ingin membuat resource persisten.
  • LOCATION: Region tempat Anda ingin membuat resource persisten. Untuk mengetahui daftar region yang didukung, lihat Ketersediaan fitur.
  • PERSISTENT_RESOURCE_ID: ID unik yang ditentukan pengguna untuk resource persisten. Nama harus diawali dengan huruf, diakhiri dengan huruf atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung (-).
  • DISPLAY_NAME: Opsional. Nama tampilan resource persisten.
  • MACHINE_TYPE: Jenis virtual machine (VM) yang akan digunakan. Untuk mengetahui daftar VM yang didukung, lihat Jenis mesin. Kolom ini sesuai dengan kolom machineSpec.machineType di dalam pesan API ResourcePool.
  • REPLICA_COUNT: Opsional. Jumlah replika yang akan dibuat untuk kumpulan resource, jika Anda tidak ingin menggunakan penskalaan otomatis. Kolom ini sesuai dengan kolom replicaCount di dalam pesan API ResourcePool. Anda harus menentukan jumlah replika jika Anda tidak menentukan kolom MIN_REPLICA_COUNT dan MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: Opsional. Jumlah minimum replika jika Anda menggunakan penskalaan otomatis untuk kumpulan resource. Anda harus menentukan MIN_REPLICA_COUNT dan MAX_REPLICA_COUNT untuk menggunakan penskalaan otomatis.
  • MAX_REPLICA_COUNT: Opsional. Jumlah maksimum replika jika Anda menggunakan penskalaan otomatis untuk kumpulan resource. Anda harus menentukan MIN_REPLICA_COUNT dan MAX_REPLICA_COUNT untuk menggunakan penskalaan otomatis.
  • CONFIG: Jalur ke file konfigurasi YAML resource persisten, yang berisi daftar spesifikasi ResourcePool. Jika opsi ditentukan dalam file konfigurasi dan argumen command line, argumen command line akan menggantikan file konfigurasi. Perhatikan bahwa kunci dengan garis bawah dianggap tidak valid.

    Contoh file konfigurasi YAML:

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --display-name=DISPLAY_NAME \
    --project=PROJECT_ID \
    --region=LOCATION \
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \
    --enable-custom-service-account

Windows (PowerShell)

gcloud ai persistent-resources create `
    --persistent-resource-id=PERSISTENT_RESOURCE_ID `
    --display-name=DISPLAY_NAME `
    --project=PROJECT_ID `
    --region=LOCATION `
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" `
    --enable-custom-service-account

Windows (cmd.exe)

gcloud ai persistent-resources create ^
    --persistent-resource-id=PERSISTENT_RESOURCE_ID ^
    --display-name=DISPLAY_NAME ^
    --project=PROJECT_ID ^
    --region=LOCATION ^
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^
    --enable-custom-service-account

Anda akan melihat respons seperti berikut:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/PROJECT_NUMBER/locations/us-central1/persistentResources/mypersistentresource/operations/OPERATION_ID] is submitted successfully.

You can view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/OPERATION_ID

Contoh perintah gcloud:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"
    --enable-custom-service-account

Konfigurasi gcloud lanjutan

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

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG
    --enable-custom-service-account

Python

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

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

Untuk membuat resource persisten yang dapat Anda gunakan dengan operasi pipeline, tetapkan parameter enable_custom_service_account ke True dalam objek ResourceRuntimeSpec saat membuat resource persisten.

from google.cloud.aiplatform.preview import persistent_resource
from google.cloud.aiplatform_v1beta1.types.persistent_resource import ResourcePool
from google.cloud.aiplatform_v1beta1.types.machine_resources import MachineSpec

my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id='PERSISTENT_RESOURCE_ID',
    display_name='DISPLAY_NAME',
    resource_pools=[
        ResourcePool(
            machine_spec=MachineSpec(
                machine_type='MACHINE_TYPE'
            ),
            replica_count=REPLICA_COUNT
        )
    ],
    enable_custom_service_account=True,
)

Ganti kode berikut:

  • PERSISTENT_RESOURCE_ID: ID unik yang ditentukan pengguna untuk resource persisten. ID hanya boleh berisi huruf kecil, angka, dan tanda hubung (-). Karakter pertama harus berupa huruf kecil dan karakter terakhir harus berupa huruf kecil atau angka.
  • DISPLAY_NAME: Opsional. Nama tampilan resource persisten.
  • MACHINE_TYPE: Jenis virtual machine (VM) yang akan digunakan. Untuk mengetahui daftar VM yang didukung, lihat Jenis mesin. Kolom ini sesuai dengan kolom machineSpec.machineType di dalam pesan API ResourcePool.
  • REPLICA_COUNT: Jumlah replika yang akan dibuat saat membuat kumpulan resource ini.

REST

Untuk membuat resource PersistentResource yang dapat Anda kaitkan dengan proses pipeline, kirim permintaan POST menggunakan metode persistentResources/create dengan parameter enable_custom_service_account yang ditetapkan ke true dalam isi permintaan.

Resource persisten dapat memiliki satu atau beberapa kumpulan resource. Anda dapat mengonfigurasi setiap kumpulan resource untuk menggunakan jumlah replika tetap atau penskalaan otomatis.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID dari Google Cloud project tempat Anda ingin membuat resource persisten.
  • LOCATION: Region tempat Anda ingin membuat resource persisten. Untuk mengetahui daftar region yang didukung, lihat Ketersediaan fitur.
  • PERSISTENT_RESOURCE_ID: ID unik yang ditentukan pengguna untuk resource persisten. Nama harus diawali dengan huruf, diakhiri dengan huruf atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung (-).
  • DISPLAY_NAME: Opsional. Nama tampilan resource persisten.
  • MACHINE_TYPE: Jenis virtual machine (VM) yang akan digunakan. Untuk mengetahui daftar VM yang didukung, lihat Jenis mesin. Kolom ini sesuai dengan kolom machineSpec.machineType di dalam pesan API ResourcePool.
  • REPLICA_COUNT: Opsional. Jumlah replika yang akan dibuat untuk kumpulan resource, jika Anda tidak ingin menggunakan penskalaan otomatis. Kolom ini sesuai dengan kolom replicaCount di dalam pesan API ResourcePool. Anda harus menentukan jumlah replika jika Anda tidak menentukan kolom MIN_REPLICA_COUNT dan MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: Opsional. Jumlah minimum replika jika Anda menggunakan penskalaan otomatis untuk kumpulan resource. Anda harus menentukan MIN_REPLICA_COUNT dan MAX_REPLICA_COUNT untuk menggunakan penskalaan otomatis.
  • MAX_REPLICA_COUNT: Opsional. Jumlah maksimum replika jika Anda menggunakan penskalaan otomatis untuk kumpulan resource. Anda harus menentukan MIN_REPLICA_COUNT dan MAX_REPLICA_COUNT untuk menggunakan penskalaan otomatis.

Metode HTTP dan URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID

Meminta isi JSON:

{
  "display_name": "DISPLAY_NAME",
  "resource_pools": [
    {
      "machine_spec": {
        "machine_type": "MACHINE_TYPE"
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      }
    }
  ],
  "resource_runtime_spec": {
    "service_account_spec": {
      "enable_custom_service_account": true
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-02-08T21:17:15.009668Z",
      "updateTime": "2023-02-08T21:17:15.009668Z"
    }
  }
}

Membuat proses pipeline menggunakan resource persisten

Untuk membuat tugas pipeline, Anda harus membuat spesifikasi pipeline terlebih dahulu. Spesifikasi pipeline adalah objek dalam memori yang Anda buat dengan mengonversi definisi pipeline yang dikompilasi.

Membuat spesifikasi pipeline

Ikuti petunjuk berikut untuk membuat spesifikasi pipeline dalam memori yang dapat Anda gunakan untuk membuat proses pipeline:

  1. Tentukan pipeline dan kompilasi menjadi file YAML. Untuk mengetahui informasi selengkapnya tentang menentukan dan mengompilasi pipeline, lihat Membangun pipeline.

  2. Gunakan contoh kode berikut untuk mengonversi file YAML pipeline yang dikompilasi menjadi spesifikasi pipeline dalam memori.

    import yaml
    with open("COMPILED_PIPELINE_PATH", "r") as stream:
      try:
        pipeline_spec = yaml.safe_load(stream)
        print(pipeline_spec)
      except yaml.YAMLError as exc:
        print(exc)
    

    Ganti COMPILED_PIPELINE_PATH dengan jalur lokal ke file YAML pipeline yang dikompilasi.

Membuat proses pipeline

Gunakan contoh kode Python berikut untuk membuat proses pipeline yang menggunakan resource persisten:

# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1
from google.cloud.aiplatform_v1beta1.types import pipeline_job as pipeline_job_types

# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project='PROJECT_ID', location='LOCATION')

# Create the API Endpoint
client_options = {
    "api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}

# Initialize the PipeLineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)

# Construct the runtime detail
pr_runtime_detail = pipeline_job_types.PipelineJob.RuntimeConfig.PersistentResourceRuntimeDetail(
    persistent_resource_name=(
        f"projects/PROJECT_NUMBER/"
        f"locations/LOCATION/"
        f"persistentResources/PERSISTENT_RESOURCE_ID"
    ),
    task_resource_unavailable_wait_time_ms=WAIT_TIME,
    task_resource_unavailable_timeout_behavior='TIMEOUT_BEHAVIOR',
)

# Construct the default runtime configuration block
default_runtime = pipeline_job_types.PipelineJob.RuntimeConfig.DefaultRuntime(
    persistent_resource_runtime_detail=pr_runtime_detail
)

# Construct the main runtime configuration
runtime_config = pipeline_job_types.PipelineJob.RuntimeConfig(
    gcs_output_directory='PIPELINE_ROOT',
    parameter_values={
        'project_id': 'PROJECT_ID'
    },
    default_runtime=default_runtime
)

# Construct the pipeline job object
pipeline_job = pipeline_job_types.PipelineJob(
    display_name='PIPELINE_DISPLAY_NAME',
    pipeline_spec=PIPELINE_SPEC,
    runtime_config=runtime_config,
)

# Construct the request
parent_path = f"projects/PROJECT_ID/locations/LOCATION"
request = aiplatform_v1beta1.CreatePipelineJobRequest(
    parent=parent_path,
    pipeline_job=pipeline_job,
)

# Make the API Call to create the pipeline job
response = client.create_pipeline_job(request=request)

# Construct the Google Cloud console link
job_id = response.name.split('/')[-1]
console_link = (
    f"https://console.cloud.google.com/vertex-ai/locations/LOCATION"
    f"/pipelines/runs/{job_id}"
    f"?project=PROJECT_ID"
)

# Print the Google Cloud console link to the pipeline run
print(f"View Pipeline Run in Google Cloud console: {console_link}")

Ganti kode berikut:

  • PROJECT_ID: Google Cloud Project tempat pipeline dijalankan.

  • LOCATION: Region tempat eksekusi proses pipeline dilakukan. Untuk mengetahui informasi selengkapnya tentang region tempat Vertex AI Pipelines tersedia, lihat panduan lokasi Vertex AI. Jika Anda tidak menetapkan parameter ini, Vertex AI Pipelines akan menggunakan lokasi default yang ditetapkan di aiplatform.init.

  • PERSISTENT_RESOURCE_ID: ID resource persisten yang Anda buat.

  • PROJECT_NUMBER: Nomor project untuk project Google Cloud Anda. ID ini berbeda dengan ID project. Anda dapat menemukan nomor project di halaman Project Settings di konsol Google Cloud .

  • COMPILED_PIPELINE_PATH: Jalur ke file YAML pipeline yang telah dikompilasi. Ini dapat berupa jalur lokal atau Cloud Storage URI.

  • WAIT_TIME: Waktu dalam milidetik untuk menunggu jika resource persisten tidak tersedia.

  • TIMEOUT_BEHAVIOR: Perilaku penggantian tugas pipeline jika WAIT_TIME terlampaui. Nilai yang memungkinkan mencakup hal berikut:

    • FAIL Tugas pipeline gagal setelah melampaui waktu tunggu.

    • FALL_BACK_TO_ON_DEMAND Tugas pipeline terus berjalan menggunakan resource pelatihan Vertex AI default, tanpa menggunakan resource persisten.

  • PIPELINE_ROOT: Jalur ke Cloud Storage URI untuk menyimpan artefak eksekusi pipeline Anda.

  • PIPELINE_DISPLAY_NAME: Nama eksekusi pipeline. Panjang maksimum untuk nama tampilan adalah 128 karakter UTF-8.

  • PIPELINE_SPEC: Spesifikasi pipeline yang Anda buat di Membuat spesifikasi pipeline.

Langkah berikutnya