All Products
Search
Document Center

Container Service for Kubernetes:Gunakan TGI untuk menerapkan layanan inferensi Qwen di ACK

Last Updated:Jul 02, 2025

Topik ini menggunakan model Qwen1.5-4B-Chat dan GPU A10 sebagai contoh untuk menunjukkan cara menggunakan kerangka Text Generation Inference (TGI) dari Hugging Face guna menerapkan layanan inferensi Qwen di Container Service for Kubernetes (ACK).

Informasi latar belakang

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat adalah model bahasa besar (LLM) dengan 4 miliar parameter yang dikembangkan oleh Alibaba Cloud berdasarkan Transformer. Model ini dilatih menggunakan jumlah data pelatihan ultra-besar, mencakup berbagai teks berbasis web, buku sektor spesialis, dan kode. Untuk informasi lebih lanjut, lihat Repositori GitHub Qwen.

Text Generation Inference (TGI)

TGI adalah alat sumber terbuka yang disediakan oleh Hugging Face untuk menerapkan model bahasa besar (LLM) sebagai layanan inferensi. Ini menyediakan berbagai fitur akselerasi inferensi, seperti Flash Attention, Paged Attention, pengelompokan kontinu, dan Tensor parallelism. Untuk informasi lebih lanjut, lihat Dokumentasi Resmi TGI.

Prasyarat

Langkah 1: Persiapkan data model

Bagian ini menggunakan model Qwen1.5-4B-Chat sebagai contoh untuk menunjukkan cara mengunduh model dari dan mengunggah model ke Object Storage Service (OSS), serta cara membuat volume persisten (PV) dan klaim volume persisten (PVC) di kluster ACK.

Untuk informasi lebih lanjut tentang cara mengunggah model ke File Storage NAS (NAS), lihat Pasang Volume NAS yang Diprovition Secara Statis.

    1. Unduh file model.

      1. Jalankan perintah berikut untuk menginstal Git:

        # Jalankan yum install git atau apt install git. 
        yum install git
      2. Jalankan perintah berikut untuk menginstal plug-in Git Large File Support (LFS):

        # Jalankan yum install git-lfs atau apt install git-lfs. 
        yum install git-lfs
      3. Jalankan perintah berikut untuk mengkloning repositori Qwen1.5-4B-Chat di ModelScope ke lingkungan lokal:

        GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
      4. Jalankan perintah berikut untuk masuk ke direktori Qwen1.5-4B-Chat dan tarik file besar yang dikelola oleh LFS:

        cd Qwen1.5-4B-Chat
        git lfs pull
    2. Unggah file model Qwen1.5-4B-Chat ke OSS.

      1. Masuk ke Konsol OSS, dan lihat serta catat nama Bucket OSS yang telah Anda buat.

        Untuk informasi lebih lanjut tentang cara membuat Bucket OSS, lihat Buat Bucket.

      2. Instal dan konfigurasikan ossutil untuk mengelola sumber daya OSS. Untuk informasi lebih lanjut, lihat Instal ossutil.

      3. Jalankan perintah berikut untuk membuat direktori bernama Qwen1.5-4B-Chat di OSS:

        ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
      4. Jalankan perintah berikut untuk mengunggah file model ke OSS:

        ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
    3. Konfigurasikan PV dan PVC di kluster tujuan. Untuk informasi lebih lanjut, lihat Pasang Volume ossfs 1.0 yang Diprovition Secara Statis.

      • Tabel berikut menjelaskan parameter PV.

        Parameter

        Deskripsi

        PV Type

        OSS

        Volume Name

        llm-model

        Access Certificate

        Tentukan ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses Bucket OSS.

        Bucket ID

        Tentukan nama Bucket OSS yang telah Anda buat.

        OSS Path

        Pilih path model, seperti /models/Qwen1.5-4B-Chat.

      • Tabel berikut menjelaskan parameter PVC.

        Parameter

        Deskripsi

        PVC Type

        OSS

        Volume Name

        llm-model

        Allocation Mode

        Pilih Existing Volumes.

        Existing Volumes

        Klik hyperlink Existing Volumes dan pilih PV yang telah Anda buat.

Langkah 2: Terapkan layanan inferensi

Penting

TGI tidak mendukung model GPU yang sudah usang, seperti V100 atau T4. Anda harus menerapkan layanan inferensi Anda pada A10 atau GPU dengan arsitektur yang lebih baru.

  1. Jalankan perintah berikut untuk menggunakan Arena guna menerapkan layanan inferensi kustom:

    Nama layanan inferensi adalah tgi-qwen-4b-chat dan versinya adalah v1. Layanan ini menggunakan satu GPU dan memiliki satu replika. Probe kesiapan dikonfigurasikan untuk layanan ini. Model dianggap sebagai jenis data khusus. Oleh karena itu, atur parameter --data untuk memasang PVC model ke direktori /model/Qwen1.5-4B-Chat dalam kontainer.

    arena serve custom \
        --name=tgi-qwen-4b-chat \
        --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=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/text-generation-inference:2.0.2-ubuntu22.04 \
        --data=llm-model:/model/Qwen1.5-4B-Chat \
        "text-generation-launcher --model-id /model/Qwen1.5-4B-Chat --num-shard 1 -p 8000"

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    --name

    Nama layanan inferensi.

    --version

    Versi layanan inferensi.

    --gpus

    Jumlah GPU untuk setiap replika layanan inferensi.

    --replicas

    Jumlah replika layanan inferensi.

    --restful-port

    Port layanan inferensi yang akan diekspos.

    --readiness-probe-action

    Tipe koneksi probe kesiapan. Nilai valid: HttpGet, Exec, gRPC, dan TCPSocket.

    --readiness-probe-action-option

    Metode koneksi probe kesiapan.

    --readiness-probe-option

    Konfigurasi probe kesiapan.

    --data

    Pasang PVC bersama ke lingkungan runtime. Nilainya terdiri dari dua bagian yang dipisahkan oleh titik dua (:). Tentukan nama PVC di sisi kiri titik dua. Anda dapat menjalankan perintah arena data list untuk menanyakan daftar PVC yang ada di kluster. Tentukan lingkungan runtime di sisi kanan titik dua. Anda juga dapat menentukan jalur lokal data pelatihan atau model. Dengan cara ini, skrip Anda dapat mengakses data atau model di PV yang ditentukan.

    --image

    Alamat gambar layanan inferensi.

    Output yang Diharapkan:

    service/tgi-qwen-4b-chat-v1 created
    deployment.apps/tgi-qwen-4b-chat-v1-custom-serving created
    INFO[0001] Job tgi-qwen-4b-chat telah disubmit dengan sukses
    INFO[0001] Anda dapat menjalankan `arena serve get tgi-qwen-4b-chat --type custom-serving -n default` untuk memeriksa status job

    Output menunjukkan bahwa layanan inferensi telah diterapkan.

  2. Jalankan perintah berikut untuk menanyakan detail layanan inferensi:

    arena serve get tgi-qwen-4b-chat

    Output yang Diharapkan:

    Name:       tgi-qwen-4b-chat
    Namespace:  default
    Type:       Custom
    Version:    v1
    Desired:    1
    Available:  1
    Age:        3m
    Address:    172.16.XX.XX
    Port:       RESTFUL:8000
    GPU:        1
    
    Instances:
      NAME                                                 STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                                 ------   ---  -----  --------  ---  ----
      tgi-qwen-4b-chat-v1-custom-serving-67b58c9865-m89lq  Running  3m   1/1    0         1    cn-beijing.192.168.XX.XX

    Output menunjukkan bahwa sebuah pod (tgi-qwen-4b-chat-v1-custom-serving-67b58c9865-m89lq) sedang berjalan untuk layanan inferensi dan siap memberikan layanan.

Langkah 3: Verifikasi layanan inferensi

  1. Jalankan perintah berikut untuk menyiapkan penerusan port antara layanan inferensi dan lingkungan lokal:

    Penting

    Penerusan port yang disiapkan menggunakan kubectl port-forward tidak andal, aman, atau dapat diperluas di lingkungan produksi. Ini hanya untuk pengembangan dan debugging. Jangan gunakan perintah ini untuk menyiapkan penerusan port di lingkungan produksi. Untuk informasi lebih lanjut tentang solusi jaringan yang digunakan untuk produksi di kluster ACK, lihat Manajemen Ingress.

    kubectl port-forward svc/tgi-qwen-4b-chat-v1 8000:8000

    Output yang Diharapkan:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. Jalankan perintah berikut untuk mengirim permintaan ke layanan inferensi:

    curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json"  -d '{"model": "/model/Qwen1.5-4B-Chat/", "messages": [{"role": "user", "content": "Test"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

    Output yang Diharapkan:

    {"id":"","object":"text_completion","created":1716274541,"model":"/model/Qwen1.5-4B-Chat","system_fingerprint":"2.0.2-sha-6073ece","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What test do you want me to run?"},"logprobs":null,"finish_reason":"length"}],"usage":{"prompt_tokens":21,"completion_tokens":10,"total_tokens":31}}

    Output menunjukkan bahwa model dapat menghasilkan respons berdasarkan prompt yang diberikan. Dalam contoh ini, prompt adalah permintaan tes.

(Opsional) Langkah 4: Bersihkan lingkungan

Jika Anda tidak lagi membutuhkan sumber daya, bersihkan lingkungan segera.

  • Jalankan perintah berikut untuk menghapus layanan inferensi:

    arena serve delete tgi-qwen-4b-chat
  • Jalankan perintah berikut untuk menghapus PV dan PVC:

    kubectl delete pvc llm-model
    kubectl delete pv llm-model