All Products
Search
Document Center

Container Service for Kubernetes:Cepat deploy layanan inferensi model bahasa besar di ACK

Last Updated:Mar 27, 2026

Kluster Pro terkelola ACK menyediakan lingkungan siap pakai untuk menjalankan layanan inferensi model bahasa besar (LLM) tanpa memerlukan perangkat keras GPU lokal maupun pengaturan dependensi yang rumit. Panduan ini mencakup dua jalur penerapan: opsi cepat untuk memvalidasi model dalam waktu sekitar 15 menit, dan opsi produksi yang memuat file model ke penyimpanan persisten terlebih dahulu guna mengurangi waktu cold-start dan biaya bandwidth.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster Pro terkelola ACK yang menjalankan Kubernetes 1.22 atau lebih baru

  • Setidaknya satu node berakselerasi GPU dengan memori GPU 16 GB atau lebih

  • Driver NVIDIA versi 535 atau lebih baru yang diinstal pada kelompok node GPU (panduan ini menggunakan 550.144.03, diatur melalui label ack.aliyun.com/nvidia-driver-version)

  • Klien Arena yang telah diinstal

Pilih jalur penerapan

Opsi 1: Uji cepat Opsi 2: Produksi
Waktu penyiapan ~15 menit Lebih lama (perlu unggah model terlebih dahulu)
Penyimpanan model Diunduh ke dalam kontainer saat startup Dimuat sebelumnya di Object Storage Service (OSS)
Cold-start Lambat — model diunduh ulang setiap kali pod restart Cepat — model sudah ada di volume yang dimount
Paling cocok untuk Memvalidasi kemampuan inferensi Beban kerja produksi yang stabil dan dapat diulang

Opsi 1: Penerapan cepat untuk pengujian

Gunakan Arena untuk menerapkan qwen/Qwen1.5-4B-Chat dari ModelScope. Kontainer mengunduh model saat startup, sehingga node GPU memerlukan setidaknya 30 GB ruang disk kosong.

  1. Jalankan perintah Arena untuk menerapkan layanan inferensi:

    arena serve custom \
        --name=modelscope \
        --version=v1 \
        --gpus=1 \
        --replicas=1 \
        --restful-port=8000 \
        --readiness-probe-action="tcpSocket" \
        --readiness-probe-action-option="port: 8000" \
        --readiness-probe-option="initialDelaySeconds: 30" \
        --readiness-probe-option="periodSeconds: 30" \
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
        "MODEL_ID=qwen/Qwen1.5-4B-Chat python3 server.py"
    Untuk menarik file model dari repositori Hugging Face, lihat Tarik model dari Hugging Face.

    Output berikut mengonfirmasi bahwa sumber daya Kubernetes untuk modelscope-v1 telah dibuat:

    service/modelscope-v1 created
    deployment.apps/modelscope-v1-custom-serving created
    INFO[0002] The Job modelscope has been submitted successfully
    INFO[0002] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status
  2. Periksa status layanan. Pod tetap dalam status ContainerCreating selama proses pengunduhan model. Bergantung pada kondisi jaringan, proses ini dapat memakan waktu 5–15 menit:

    arena serve get modelscope

    Saat status pod menunjukkan Running, layanan inferensi siap digunakan.

Opsi 2: Penerapan siap produksi dengan penyimpanan persisten

Memuat file model terlebih dahulu di OSS menghindari pengunduhan ulang file berukuran lebih dari 10 GB setiap kali pod restart. Hal ini mengurangi waktu cold-start, menekan biaya bandwidth, dan meningkatkan stabilitas layanan.

Langkah 1: Unduh file model

  1. Instal Git dan Git Large File Storage (LFS). macOS

    brew install git
    brew install git-lfs

    Windows Unduh dan instal Git dari situs resmi Git. Git Large File Storage sudah termasuk dalam Git for Windows — unduh versi terbaru. Linux (berbasis Red Hat)

    yum install git
    yum install git-lfs

    Untuk distribusi Linux lainnya, lihat situs resmi Git.

  2. Klon repositori model Qwen1.5-4B-Chat dan tarik file besar:

    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
    cd Qwen1.5-4B-Chat
    git lfs pull

Langkah 2: Unggah file model ke OSS

  1. Instal dan konfigurasikan ossutil.

  2. Buat bucket. Untuk mengurangi latensi saat menarik model, buat bucket di wilayah yang sama dengan kluster Anda:

    ossutil mb oss://<your-bucket-name>
  3. Buat folder di dalam bucket untuk file model:

    ossutil mkdir oss://<your-bucket-name>/Qwen1.5-4B-Chat
  4. Unggah file model:

    ossutil cp -r ./Qwen1.5-4B-Chat oss://<your-bucket-name>/Qwen1.5-4B-Chat

Langkah 3: Konfigurasikan volume persisten (PV)

  1. Masuk ke Konsol ACK dan klik kluster target. Di panel navigasi kiri, pilih Volumes > Persistent Volumes.

  2. Klik Create. Di kotak dialog Create PV, atur parameter berikut lalu klik Create:

    Parameter Nilai
    PV type OSS
    Volume name llm-model
    Capacity 20Gi
    Access mode ReadOnlyMany
    Access certificate Pilih Create Secret
    Optional parameters -o umask=022 -o max_stat_cache_size=0 -o allow_other
    Bucket ID Klik Select Bucket dan pilih bucket Anda
    OSS path /Qwen1.5-4B-Chat
    Endpoint Pilih Public Endpoint

Langkah 4: Konfigurasikan klaim volume persisten (PVC)

  1. Di panel navigasi kiri, pilih Volumes > Persistent Volume Claims.

  2. Di halaman Persistent Volume Claims, atur parameter berikut lalu klik Create:

    Parameter Nilai
    PVC type OSS
    Name llm-model
    Allocation mode Pilih Existing Volumes
    Existing volumes Pilih PV llm-model yang dibuat pada langkah sebelumnya
    Capacity 20Gi

Langkah 5: Terapkan layanan inferensi

Jalankan perintah Arena untuk menerapkan layanan. Bendera --data memount PVC yang berisi file model yang telah dimuat sebelumnya. Karena model sudah ada di volume yang dimount, pod langsung mulai tanpa perlu mengunduh apa pun:

arena serve custom \
    --name=modelscope \
    --version=v1 \
    --gpus=1 \
    --replicas=1 \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --data=llm-model:/Qwen1.5-4B-Chat \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
    "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"

Output berikut mengonfirmasi bahwa layanan inferensi telah diajukan:

service/modelscope-v1 created
deployment.apps/modelscope-v1-custom-serving created
INFO[0001] The Job modelscope has been submitted successfully
INFO[0001] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status

Periksa status layanan:

arena serve get modelscope

Saat status pod menunjukkan Running, layanan inferensi siap digunakan.

Validasi layanan inferensi

  1. Siapkan penerusan port ke layanan inferensi:

    Penting

    kubectl port-forward hanya untuk pengembangan dan debugging. Tidak andal, aman, atau skalabel di lingkungan produksi. Untuk jaringan produksi, lihat Manajemen Ingress.

    kubectl port-forward svc/modelscope-v1 8000:8000

    Output yang diharapkan:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. Di terminal baru, kirim permintaan inferensi uji:

    curl -X POST http://localhost:8000/generate \
      -H "Content-Type: application/json" \
      -d '{
        "text_input": "What is artificial intelligence? Artificial intelligence is",
        "parameters": {
          "stream": false,
          "temperature": 0.9,
          "seed": 10
        }
      }'

    Tanggapan sukses berisi teks yang dihasilkan oleh model:

    {"model_name":"/Qwen1.5-4B-Chat","text_output":"What is artificial intelligence? Artificial intelligence is a branch of computer science that studies how to make computers have intelligent behavior."}

(Opsional) Bersihkan

Hapus layanan inferensi dan sumber daya penyimpanan setelah selesai:

# Delete the inference service
arena serve del modelscope

# Delete the PVC and PV (Option 2 only)
kubectl delete pvc llm-model
kubectl delete pv llm-model

FAQ

Bagaimana cara menarik file model dari Hugging Face alih-alih ModelScope?

Pastikan runtime kontainer dapat mengakses repositori Hugging Face, lalu atur MODEL_SOURCE=Huggingface dalam perintah Arena. Node GPU memerlukan setidaknya 30 GB ruang disk kosong untuk menampung file yang diunduh:

arena serve custom \
    --name=huggingface \
    --version=v1 \
    --gpus=1 \
    --replicas=1 \
    --restful-port=8000 \
    --readiness-probe-action="tcpSocket" \
    --readiness-probe-action-option="port: 8000" \
    --readiness-probe-option="initialDelaySeconds: 30" \
    --readiness-probe-option="periodSeconds: 30" \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
    "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"

Output berikut mengonfirmasi bahwa sumber daya telah dibuat:

service/huggingface-v1 created
deployment.apps/huggingface-v1-custom-serving created
INFO[0003] The Job huggingface has been submitted successfully
INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status

Lampiran: referensi parameter perintah

Parameter Deskripsi Contoh
serve custom Subperintah Arena. Menerapkan layanan model kustom alih-alih tipe preset seperti tfserving atau triton.
--name Nama layanan. Pengenal unik yang digunakan untuk operasi selanjutnya seperti memeriksa log dan menghapus layanan. modelscope
--version Versi layanan. Label versi untuk layanan, berguna untuk manajemen versi dan rilis bertahap. v1
--gpus Jumlah GPU. Jumlah GPU yang dialokasikan untuk setiap pod. Diperlukan ketika model membutuhkan GPU untuk inferensi. 1
--replicas Jumlah replika. Jumlah pod yang dijalankan. Lebih banyak replika meningkatkan throughput konkuren dan ketersediaan. 1
--restful-port Port API RESTful. Port tempat layanan mengekspos API RESTful-nya untuk menerima permintaan inferensi. 8000
--readiness-probe-action Jenis pemeriksaan kesiapan. Metode pemeriksaan yang digunakan oleh readiness probe Kubernetes untuk menentukan apakah kontainer siap menerima traffic. tcpSocket
--readiness-probe-action-option Opsi jenis probe. Parameter untuk jenis probe yang dipilih. Untuk tcpSocket, menentukan port yang akan diperiksa. port: 8000
--readiness-probe-option Pengaturan probe tambahan. Parameter tambahan untuk readiness probe. Bendera ini dapat diulang. Mengatur delay awal dan interval pemeriksaan. initialDelaySeconds: 30, periodSeconds: 30
--data Mount volume. Memount PVC pada path tertentu di dalam kontainer, dalam format <pvc-name>:<mount-path>. Digunakan untuk memount file model yang telah dimuat sebelumnya. llm-model:/Qwen1.5-4B-Chat
--image Gambar kontainer. URL lengkap gambar kontainer yang mendefinisikan lingkungan runtime untuk layanan. kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1
[COMMAND] Perintah startup. Perintah yang dijalankan setelah kontainer dimulai. Mengatur variabel lingkungan MODEL_ID dan menjalankan server.py. "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"

FAQ

Tarik model dari Hugging Face

  1. Pastikan lingkungan runtime kontainer dapat mengakses repositori Hugging Face.

  2. Gunakan klien Arena untuk menerapkan layanan kustom dan tentukan gambar kontainer untuk penerapan menggunakan parameter --image. Untuk informasi lebih lanjut tentang parameter, lihat Referensi parameter perintah.

    Metode ini mengunduh file model Hugging Face ke dalam kontainer. Pastikan node GPU Anda memiliki setidaknya 30 GB ruang disk yang tersedia.
    arena serve custom \
        --name=huggingface \
        --version=v1 \
        --gpus=1 \
        --replicas=1 \
        --restful-port=8000 \
        --readiness-probe-action="tcpSocket" \
        --readiness-probe-action-option="port: 8000" \
        --readiness-probe-option="initialDelaySeconds: 30" \
        --readiness-probe-option="periodSeconds: 30" \
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
        "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"

    Output berikut menunjukkan bahwa sumber daya Kubernetes untuk layanan inferensi huggingface-v1 telah dibuat:

    service/huggingface-v1 created
    deployment.apps/huggingface-v1-custom-serving created
    INFO[0003] The Job huggingface has been submitted successfully 
    INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status 

Langkah selanjutnya