Menyalurkan model DeepSeek-V3 menggunakan deployment GPU multi-host

Ringkasan

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

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

Sebelum memulai, pastikan Anda memahami hal-hal berikut:

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

Container

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

Jika diinginkan, Anda dapat membuat image multi-node vLLM Anda 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 project Google Cloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the Vertex AI API.

    Enable the API

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

    Go to project selector

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

  7. Enable the Vertex AI API.

    Enable the API

  8. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  9. Meminta kuota GPU

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

    1. Untuk melihat kuota GPU H100, buka halaman Google Cloud konsol Kuota & Batas Sistem.

      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:20250130_0916_RC01 \
          --container-args='^;^/vllm-workspace/ray_launcher.sh;python;-m;vllm.entrypoints.api_server;--host=0.0.0.0;--port=8080;--model=deepseek-ai/DeepSeek-V3;--tensor-parallel-size=16;--pipeline-parallel-size=1;--gpu-memory-utilization=0.9;--trust-remote-code;--max-model-len=32768' \
          --container-deployment-timeout-seconds=4500 \
          --container-ports=8080 \
          --container-env-vars=MODEL_ID=deepseek-ai/DeepSeek-V3
      

      Lakukan penggantian berikut:

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

    Membuat endpoint inferensi online khusus

    Untuk mendukung permintaan penyelesaian chat, penampung Model Garden memerlukan endpoint khusus. Endpoint khusus masih dalam pratinjau dan tidak mendukung Google Cloud CLI, jadi 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 berikut:

      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 perintah gcloud ai models list:

      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 perintah gcloud ai deploy-model:

      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 bisa 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 kehabisan waktu, 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. Mengirim 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. Mengirim 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

    Agar tidak menimbulkan 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