Menggunakan Spot VM atau reservasi untuk men-deploy endpoint Vertex AI Llama-3.1 di GPU Cloud

Tutorial ini memandu Anda men-deploy model Meta-Llama-3.1-8B di Vertex AI. Anda akan mempelajari cara men-deploy endpoint dan mengoptimalkannya untuk kebutuhan spesifik Anda. Jika memiliki workload fault-tolerant, Anda dapat mengoptimalkan biaya dengan menggunakan Spot VM. Jika Anda ingin memastikan ketersediaan, gunakan pemesanan Compute Engine. Anda akan mempelajari cara men-deploy endpoint yang menggunakan:

  • Spot VM: Gunakan instance yang disediakan spot untuk menghemat biaya secara signifikan.
  • Pemesanan: Menjamin ketersediaan resource untuk performa yang dapat diprediksi, terutama untuk workload produksi. Tutorial ini menunjukkan penggunaan reservasi otomatis (ANY_RESERVATION) dan spesifik (SPECIFIC_RESERVATION).

Untuk informasi selengkapnya, lihat Spot VM atau Reservasi resource Compute Engine.

Prasyarat

Sebelum memulai, selesaikan prasyarat berikut:

  • Project Google Cloud dengan penagihan diaktifkan.
  • Vertex AI dan Compute Engine API diaktifkan.
  • Kuota yang memadai untuk jenis mesin dan akselerator yang ingin Anda gunakan, seperti GPU NVIDIA L4. Untuk memeriksa kuota, lihat Kuota dan batas sistem di Google Cloud konsol.
  • Akun Hugging Face dan Token Akses Pengguna dengan akses baca.
  • Jika Anda menggunakan pemesanan bersama, berikan izin IAM antar-project. Semua izin tersebut tercakup dalam notebook.

Men-deploy di Spot VM

Bagian berikut akan memandu Anda dalam proses menyiapkan Google Cloud project, mengonfigurasi autentikasi Hugging Face, men-deploy model Llama-3.1 menggunakan VM Spot atau reservasi, dan menguji deployment.

1. Menyiapkan Google Cloud project dan pemesanan bersama

Buka notebook Colab Enterprise.

Di bagian pertama, tetapkan variabel PROJECT_ID, SHARED_PROJECT_ID (jika ada), BUCKET_URI, dan REGION di notebook Colab.

Notebook memberikan peran compute.viewer ke akun layanan kedua project.

Jika Anda ingin menggunakan reservasi yang dibuat di project yang berbeda dalam organisasi yang sama, pastikan untuk memberikan peran compute.viewer ke P4SA (Akun Layanan Utama) dari kedua project. Kode notebook akan mengotomatiskan hal ini, tetapi pastikan SHARED_PROJECT_ID ditetapkan dengan benar. Izin lintas project ini memungkinkan endpoint Vertex AI di project utama Anda untuk melihat dan menggunakan kapasitas reservasi di project bersama.

2. Menyiapkan autentikasi Hugging Face

Untuk mendownload model Llama-3.1, Anda harus memberikan Token Akses Pengguna Hugging Face di variabel HF_TOKEN dalam notebook Colab. Jika tidak memberikannya, Anda akan mendapatkan error berikut: Cannot access gated repository for URL.

Setelan Token Akses Hugging Face Gambar 1: Setelan Token Akses Hugging Face

3. Men-deploy dengan Spot VM

Untuk men-deploy model Llama ke Spot VM, buka bagian "Spot VM Vertex AI Endpoint Deployment" di notebook Colab dan tetapkan is_spot=True.

base_model_name = "Meta-Llama-3.1-8B"
hf_model_id = "meta-llama/" + base_model_name

if "8b" in base_model_name.lower():
    accelerator_type = "NVIDIA_L4"
    machine_type = "g2-standard-12"
    accelerator_count = 1
    max_loras = 5
else:
    raise ValueError(
        f"Recommended GPU setting not found for: {accelerator_type} and {base_model_name}."
    )

common_util.check_quota(
    project_id=PROJECT_ID,
    region=REGION,
    accelerator_type=accelerator_type,
    accelerator_count=accelerator_count,
    is_for_training=False,
)

gpu_memory_utilization = 0.95
max_model_len = 8192

models["vllm_gpu_spotvm"], endpoints["vllm_gpu_spotvm"] = deploy_model_vllm(
    model_name=common_util.get_job_name_with_datetime(prefix="llama3_1-serve-spotvm"),
    model_id=hf_model_id,
    base_model_id=hf_model_id,
    service_account=SERVICE_ACCOUNT,
    machine_type=machine_type,
    accelerator_type=accelerator_type,
    accelerator_count=accelerator_count,
    gpu_memory_utilization=gpu_memory_utilization,
    max_model_len=max_model_len,
    max_loras=max_loras,
    enforce_eager=True,
    enable_lora=True,
    use_dedicated_endpoint=False,
    model_type="llama3.1",
    is_spot=True,
)

Men-deploy di instance reservasi bersama

Bagian berikut akan memandu Anda melalui proses pembuatan reservasi bersama, mengonfigurasi setelan reservasi, men-deploy model Llama-3.1 menggunakan ANY_RESERVATION atau SPECIFIC_RESERVATION, dan menguji deployment.

1. Membuat pemesanan bersama

Untuk mengonfigurasi reservasi, buka bagian "Siapkan Reservasi untuk Prediksi Vertex AI" di notebook. Tetapkan variabel yang diperlukan untuk reservasi seperti RES_ZONE, RESERVATION_NAME, RES_MACHINE_TYPE, RES_ACCELERATOR_TYPE, dan RES_ACCELERATOR_COUNT.

Anda harus menetapkan RES_ZONE ke {REGION}-{availability_zone}

RES_ZONE = "a"
RES_ZONE = f"{REGION}-{RES_ZONE}"

RESERVATION_NAME = "shared-reservation-1"
RESERVATION_NAME = f"{PROJECT_ID}-{RESERVATION_NAME}"
RES_MACHINE_TYPE = "g2-standard-12"
RES_ACCELERATOR_TYPE = "nvidia-l4"
RES_ACCELERATOR_COUNT = 1
rev_names.append(RESERVATION_NAME)

create_reservation(
    res_project_id=PROJECT_ID,
    res_zone=RES_ZONE,
    res_name=RESERVATION_NAME,
    res_machine_type=RES_MACHINE_TYPE,
    res_accelerator_type=RES_ACCELERATOR_TYPE,
    res_accelerator_count=RES_ACCELERATOR_COUNT,
    shared_project_id=SHARED_PROJECT_ID,
)

2. Membagikan reservasi

Ada dua jenis reservasi: reservasi project tunggal (default) dan reservasi bersama. Pemesanan satu project hanya dapat digunakan oleh VM dalam project yang sama dengan pemesanan itu sendiri. Di sisi lain, pemesanan bersama dapat digunakan oleh VM dalam project tempat pemesanan berada, serta oleh VM dalam project lain yang telah dibagikan pemesanannya. Dengan menggunakan pemesanan bersama, pemanfaatan resource yang direservasi dapat ditingkatkan dan jumlah keseluruhan pemesanan yang perlu dibuat dan dikelola dapat dikurangi. Tutorial ini berfokus pada pemesanan bersama. Untuk informasi selengkapnya, lihat Cara kerja pemesanan bersama.

Sebelum melanjutkan, pastikan untuk "Bagikan dengan Layanan Google lainnya" dari Google Cloud konsol seperti yang ditunjukkan pada gambar:

Membagikan reservasi dengan layanan Google lainnya Gambar 2: Membagikan reservasi ke layanan Google lainnya

3. Men-deploy dengan ANY_RESERVATION

Untuk men-deploy endpoint menggunakan ANY_RESERVATION, buka bagian "Deploy Llama-3.1 Endpoint with ANY_RESERVATION" di notebook. Tentukan setelan deployment, lalu tetapkan reservation_affinity_type="ANY_RESERVATION". Kemudian, jalankan sel untuk men-deploy endpoint.

hf_model_id = "meta-llama/Meta-Llama-3.1-8B"

models["vllm_gpu_any_reserve"], endpoints["vllm_gpu_any_reserve"] = deploy_model_vllm(
    model_name=common_util.get_job_name_with_datetime(
        prefix=f"llama3_1-serve-any-{RESERVATION_NAME}"
    ),
    model_id=hf_model_id,
    base_model_id=hf_model_id,
    service_account=SERVICE_ACCOUNT,
    machine_type=MACHINE_TYPE,
    accelerator_type=ACCELERATOR_TYPE,
    accelerator_count=ACCELERATOR_COUNT,
    model_type="llama3.1",
    reservation_affinity_type="ANY_RESERVATION",
)

4. Menguji endpoint ANY_RESERVATION

Setelah endpoint di-deploy, pastikan untuk menguji beberapa perintah untuk memastikan endpoint di-deploy dengan benar.

5. Men-deploy dengan SPECIFIC_RESERVATION

Untuk men-deploy endpoint menggunakan SPECIFIC_RESERVATION, buka bagian "Deploy Llama-3.1 Endpoint with SPECIFIC_RESERVATION" di notebook. Tentukan parameter berikut: reservation_name, reservation_affinity_type="SPECIFIC_RESERVATION", reservation_project, dan reservation_zone. Kemudian, jalankan sel untuk men-deploy endpoint.

hf_model_id = "meta-llama/Meta-Llama-3.1-8B"

MACHINE_TYPE = "g2-standard-12"
ACCELERATOR_TYPE = "NVIDIA_L4"
ACCELERATOR_COUNT = 1

(
    models["vllm_gpu_specific_reserve"],
    endpoints["vllm_gpu_specific_reserve"],
) = deploy_model_vllm(
    model_name=common_util.get_job_name_with_datetime(
        prefix=f"llama3_1-serve-specific-{RESERVATION_NAME}"
    ),
    model_id=hf_model_id,
    base_model_id=hf_model_id,
    service_account=SERVICE_ACCOUNT,
    machine_type=MACHINE_TYPE,
    accelerator_type=ACCELERATOR_TYPE,
    accelerator_count=ACCELERATOR_COUNT,
    model_type="llama3.1",
    reservation_name=RESERVATION_NAME,
    reservation_affinity_type="SPECIFIC_RESERVATION",
    reservation_project=PROJECT_ID,
    reservation_zone=RES_ZONE,
)

6. Menguji endpoint SPECIFIC_RESERVATION

Setelah endpoint di-deploy, pastikan reservasi digunakan oleh prediksi online Vertex AI, dan pastikan untuk menguji beberapa perintah untuk memastikannya di-deploy dengan benar.

Memeriksa pemesanan yang digunakan oleh prediksi online Vertex Gambar 3: Reservasi pemeriksaan digunakan oleh prediksi online Vertex

7. Pembersihan

Untuk menghindari tagihan yang sedang berlangsung, hapus model, endpoint, dan reservasi yang dibuat selama tutorial ini. Notebook Colab menyediakan kode di bagian "Pembersihan" untuk mengotomatiskan proses pembersihan ini.

Pemecahan masalah

  • Error Token Hugging Face: Periksa kembali apakah token Hugging Face Anda memiliki izin read dan ditetapkan dengan benar di notebook.
  • Error Kuota: Pastikan Anda memiliki kuota GPU yang memadai di region tempat Anda men-deploy. Minta penambahan kuota jika diperlukan.
  • Konflik Reservasi: Pastikan jenis mesin dan konfigurasi akselerator deployment endpoint Anda cocok dengan setelan reservasi Anda. Pastikan reservasi diaktifkan untuk dibagikan ke Layanan Google

Langkah berikutnya