Menyajikan model DeepSeek-V3 menggunakan deployment GPU multi-host

Ringkasan

Vertex AI mendukung deployment GPU multi-host untuk menyalurkan model yang melebihi kapasitas memori satu node GPU, seperti DeepSeek-V3, DeepSeek-R1, dan Meta LLama 3.1 405B (versi non-kuantisasi).

Panduan ini menjelaskan cara menyalurkan model DeepSeek-V3 menggunakan unit pemrosesan grafis multi-host (GPU) di Vertex AI dengan vLLM. Penyiapan untuk model lain serupa. Untuk mengetahui informasi selengkapnya, lihat penyaluran vLLM untuk model bahasa teks dan multimodal.

Sebelum memulai, pastikan Anda memahami hal berikut:

Gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Container

Untuk mendukung deployment multi-host, panduan ini menggunakan container vLLM bawaan image dengan Ray integrasi dari Model Garden. Ray memungkinkan pemrosesan terdistribusi yang diperlukan untuk menjalankan model di beberapa node GPU. Container ini juga mendukung penyaluran permintaan streaming menggunakan Chat Completions API.

Jika diinginkan, Anda dapat membuat image multi-node vLLM sendiri. Perhatikan bahwa image container kustom ini harus kompatibel dengan Vertex AI.

Sebelum memulai

Sebelum memulai deployment model, selesaikan prasyarat yang tercantum di bagian ini.

Menyiapkan Google Cloud project

  1. Login ke akun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Di konsol, aktifkan Cloud Shell. Google Cloud

    Aktifkan Cloud Shell

    Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.

Meminta kuota GPU

Untuk men-deploy DeepSeek-V3, Anda memerlukan dua a3-highgpu-8g VM dengan delapan H100 masing-masing, sehingga totalnya 16 GPU H100. Kemungkinan Anda perlu meminta penambahan kuota GPU H100, karena nilai default-nya kurang dari 16.

  1. Untuk melihat kuota GPU H100, buka halaman Google Cloud konsol Quotas & System Limits.

    Buka Quotas &System Limits

  2. Minta penyesuaian kuota.

Mengupload model

  1. Untuk mengupload model Anda sebagai resource Model ke Vertex AI, jalankan perintah gcloud ai models upload sebagai berikut:

    gcloud ai models upload \
        --region=LOCATION \
        --project=PROJECT_ID \
        --display-name=MODEL_DISPLAY_NAME \
        --container-image-uri=us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250312_0916_RC01 \
        --container-args='^;^/vllm-workspace/ray_launcher.sh;python;-m;vllm.entrypoints.api_server;--host=0.0.0.0;--port=7080;--model=deepseek-ai/DeepSeek-V3;--tensor-parallel-size=8;--pipeline-parallel-size=2;--gpu-memory-utilization=0.82;--max-model-len=163840;--max-num-seqs=64;--enable-chunked-prefill;--kv-cache-dtype=auto;--trust-remote-code;--disable-log-requests' \
        --container-deployment-timeout-seconds=7200 \
        --container-ports=7080 \
        --container-env-vars=MODEL_ID=deepseek-ai/DeepSeek-V3
    

    Lakukan penggantian berikut:

    • LOCATION: region tempat Anda menggunakan Vertex AI
    • PROJECT_ID: ID project Anda Google Cloud
    • MODEL_DISPLAY_NAME: nama tampilan yang Anda inginkan untuk model Anda

Membuat endpoint inferensi online khusus

Untuk mendukung permintaan penyelesaian chat, container Model Garden memerlukan a endpoint khusus. Endpoint khusus berada dalam pratinjau dan tidak mendukung Google Cloud CLI, sehingga Anda harus menggunakan REST API untuk membuat endpoint.

  1. Untuk membuat endpoint khusus, jalankan perintah berikut:

    PROJECT_ID=PROJECT_ID
    REGION=LOCATION
    ENDPOINT="${REGION}-aiplatform.googleapis.com"
    
    curl \
      -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/${REGION}/endpoints \
      -d '{
        "displayName": "ENDPOINT_DISPLAY_NAME",
        "dedicatedEndpointEnabled": true
        }'
    

    Lakukan penggantian berikut:

    • ENDPOINT_DISPLAY_NAME: nama tampilan untuk endpoint Anda

Men-deploy model

  1. Dapatkan ID endpoint untuk endpoint inferensi online dengan menjalankan perintah gcloud ai endpoints list:

    ENDPOINT_ID=$(gcloud ai endpoints list \
     --project=PROJECT_ID \
     --region=LOCATION \
     --filter=display_name~'ENDPOINT_DISPLAY_NAME' \
     --format="value(name)")
    
  2. Dapatkan ID model untuk model Anda dengan menjalankan gcloud ai models list perintah:

    MODEL_ID=$(gcloud ai models list \
     --project=PROJECT_ID \
     --region=LOCATION \
     --filter=display_name~'MODEL_DISPLAY_NAME' \
     --format="value(name)")
    
  3. Deploy model ke endpoint dengan menjalankan gcloud ai deploy-model perintah:

    gcloud alpha ai endpoints deploy-model $ENDPOINT_ID \
     --project=PROJECT_ID \
     --region=LOCATION \
     --model=$MODEL_ID \
     --display-name="DEPLOYED_MODEL_NAME" \
     --machine-type=a3-highgpu-8g \
     --traffic-split=0=100 \
     --accelerator=type=nvidia-h100-80gb,count=8 \
     --multihost-gpu-node-count=2
    

    Ganti DEPLOYED_MODEL_NAME dengan nama untuk model yang di-deploy. Nama ini dapat sama dengan nama tampilan model (MODEL_DISPLAY_NAME).

    Men-deploy model besar seperti DeepSeek-V3 dapat memerlukan waktu lebih lama daripada waktu tunggu deployment default. Jika perintah deploy-model mencapai waktu tunggu, proses deployment akan terus berjalan di latar belakang.

    Perintah deploy-model menampilkan ID operasi yang dapat digunakan untuk memeriksa kapan operasi selesai. Anda dapat melakukan polling untuk status operasi hingga responsnya menyertakan "done": true. Gunakan perintah berikut untuk melakukan polling status:

    gcloud ai operations describe \
    --region=LOCATION \
    OPERATION_ID
    

    Ganti OPERATION_ID dengan ID operasi yang ditampilkan oleh perintah sebelumnya.

Mendapatkan inferensi online dari model yang di-deploy

Bagian ini menjelaskan cara mengirim permintaan inferensi online ke endpoint publik khusus tempat model DeepSeek-V3 di-deploy.

  1. Dapatkan nomor project dengan menjalankan perintah gcloud projects describe:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
  2. Kirim permintaan prediksi mentah:

    curl \
    -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://${ENDPOINT_ID}.${REGION}-${PROJECT_NUMBER}.prediction.vertexai.goog/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/endpoints/${ENDPOINT_ID}:rawPredict \
    -d '{
       "prompt": "Write a short story about a robot.",
       "stream": false,
       "max_tokens": 50,
       "temperature": 0.7
       }'
    
  3. Kirim permintaan penyelesaian chat:

    curl \
    -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://${ENDPOINT_ID}.${REGION}-${PROJECT_NUMBER}.prediction.vertexai.goog/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/endpoints/${ENDPOINT_ID}/chat/completions \
    -d '{"stream":false, "messages":[{"role": "user", "content": "Summer travel plan to Paris"}], "max_tokens": 40,"temperature":0.4,"top_k":10,"top_p":0.95, "n":1}'
    

    Untuk mengaktifkan streaming, ubah nilai "stream" dari false menjadi true.

Pembersihan

Untuk menghindari biaya Vertex AI lebih lanjut, hapus Google Cloud resource yang Anda buat selama tutorial ini:

  1. Untuk membatalkan deployment model dari endpoint dan menghapus endpoint, jalankan perintah berikut:

    ENDPOINT_ID=$(gcloud ai endpoints list \
       --region=LOCATION \
       --filter=display_name=ENDPOINT_DISPLAY_NAME \
       --format="value(name)")
    
    DEPLOYED_MODEL_ID=$(gcloud ai endpoints describe $ENDPOINT_ID \
       --region=LOCATION \
       --format="value(deployedModels.id)")
    
    gcloud ai endpoints undeploy-model $ENDPOINT_ID \
      --region=LOCATION \
      --deployed-model-id=$DEPLOYED_MODEL_ID
    
    gcloud ai endpoints delete $ENDPOINT_ID \
       --region=LOCATION \
       --quiet
    
  2. Untuk menghapus model, jalankan perintah berikut:

    MODEL_ID=$(gcloud ai models list \
       --region=LOCATION \
       --filter=display_name=DEPLOYED_MODEL_NAME \
       --format="value(name)")
    
    gcloud ai models delete $MODEL_ID \
       --region=LOCATION \
       --quiet
    

Langkah berikutnya