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
Sebuah kluster ACK yang berisi node dipercepat oleh GPU A10 telah dibuat. Versi Kubernetes kluster tersebut adalah 1.22 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat Kluster ACK dengan Node yang Dipercepat GPU.
Kami merekomendasikan Anda menginstal driver GPU versi 525. Anda dapat menambahkan label
ack.aliyun.com/nvidia-driver-version:525.105.17ke node yang dipercepat GPU untuk menentukan versi driver GPU sebagai 525.105.17. Untuk informasi lebih lanjut, lihat Tentukan Versi Driver NVIDIA untuk Node dengan Menambahkan Label.Versi terbaru klien Arena telah diinstal. Untuk informasi lebih lanjut, lihat Konfigurasikan Klien Arena.
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.
Unduh file model.
Jalankan perintah berikut untuk menginstal Git:
# Jalankan yum install git atau apt install git. yum install gitJalankan perintah berikut untuk menginstal plug-in Git Large File Support (LFS):
# Jalankan yum install git-lfs atau apt install git-lfs. yum install git-lfsJalankan 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.gitJalankan 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
Unggah file model Qwen1.5-4B-Chat ke OSS.
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.
Instal dan konfigurasikan ossutil untuk mengelola sumber daya OSS. Untuk informasi lebih lanjut, lihat Instal ossutil.
Jalankan perintah berikut untuk membuat direktori bernama Qwen1.5-4B-Chat di OSS:
ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-ChatJalankan perintah berikut untuk mengunggah file model ke OSS:
ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
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
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.
Jalankan perintah berikut untuk menggunakan Arena guna menerapkan layanan inferensi kustom:
Nama layanan inferensi adalah
tgi-qwen-4b-chatdan 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--datauntuk memasang PVC model ke direktori/model/Qwen1.5-4B-Chatdalam 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 listuntuk 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 jobOutput menunjukkan bahwa layanan inferensi telah diterapkan.
Jalankan perintah berikut untuk menanyakan detail layanan inferensi:
arena serve get tgi-qwen-4b-chatOutput 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.XXOutput 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
Jalankan perintah berikut untuk menyiapkan penerusan port antara layanan inferensi dan lingkungan lokal:
PentingPenerusan 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:8000Output yang Diharapkan:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000Jalankan 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-chatJalankan perintah berikut untuk menghapus PV dan PVC:
kubectl delete pvc llm-model kubectl delete pv llm-model