Deploy layanan inferensi Qwen1.5-4B-Chat di ACK dengan rtp-llm menggunakan GPU A10 atau T4.
Latar Belakang
Qwen1.5-4B-Chat
Qwen1.5-4B-Chat adalah model bahasa besar dengan 4 miliar parameter yang dikembangkan oleh Alibaba Cloud berdasarkan arsitektur Transformer. Model ini dilatih pada data pre-training berskala besar dan beragam, termasuk teks web, buku profesional, dan kode. Untuk informasi lebih lanjut, lihat repositori GitHub Qwen.
rtp-llm
rtp-llm adalah mesin akselerasi inferensi LLM yang dikembangkan oleh tim prediksi model besar Alibaba khusus untuk LLM. Mesin ini meningkatkan efisiensi dan performa inferensi. rtp-llm memiliki fitur-fitur berikut:
-
Kernel CUDA berkinerja tinggi, termasuk PagedAttention, FlashAttention, dan FlashDecoding.
-
Kuantisasi WeightOnly INT8 dan INT4.
-
Dukungan untuk algoritma kuantisasi populer seperti GPTQ (General Purpose Quantization) dan AWQ (Approximate Weight Quantization).
-
Kerangka kerja kuantisasi KVCache adaptif dengan optimasi mendetail untuk overhead dalam dynamic batching.
-
Optimasi untuk perangkat keras GPU V100.
Lihat rtp-llm.
Prasyarat
-
Diperlukan Kluster ACK Pro dengan node GPU. Kluster harus menjalankan Kubernetes 1.22 atau lebih baru, dan setiap node GPU harus memiliki memori GPU minimal 16 GB. Untuk informasi lebih lanjut, lihat Buat kluster ACK yang dikelola.
Kami menyarankan Anda menggunakan driver NVIDIA versi 525 pada node GPU. Anda dapat menambahkan label
ack.aliyun.com/nvidia-driver-version:525.105.17ke kelompok node GPU untuk mengunci versi driver ke 525.105.17. Untuk informasi lebih lanjut, lihat Sesuaikan versi driver GPU node dengan menentukan nomor versi. -
Klien Arena versi terbaru telah diinstal. Untuk informasi lebih lanjut, lihat Konfigurasikan klien Arena.
Langkah 1: Siapkan data model
Unduh model Qwen1.5-4B-Chat, unggah ke OSS, lalu buat PV dan PVC di kluster ACK Anda.
Untuk mengunggah model ke NAS, lihat Gunakan volume persisten NAS statis.
-
Unduh file model.
-
Jalankan perintah berikut untuk menginstal Git.
# Perintah ini untuk sistem berbasis Red Hat. Untuk sistem berbasis Debian, gunakan 'apt install git'. yum install git -
Jalankan perintah berikut untuk menginstal plugin Git Large File Storage (LFS).
# Perintah ini untuk sistem berbasis Red Hat. Untuk sistem berbasis Debian, gunakan 'apt install git-lfs'. yum install git-lfs -
Jalankan perintah berikut untuk mengkloning repositori Qwen1.5-4B-Chat dari ModelScope ke mesin lokal Anda.
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git -
Jalankan perintah berikut untuk masuk ke direktori Qwen1.5-4B-Chat dan menarik file besar yang dikelola oleh LFS.
cd Qwen1.5-4B-Chat git lfs pull
-
-
Unggah file Qwen1.5-4B-Chat yang telah diunduh ke OSS.
-
Masuk ke Konsol OSS, lalu lihat dan catat nama bucket Anda.
Untuk informasi tentang cara membuat bucket, 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-Chat -
Jalankan 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 untuk kluster tujuan. Untuk informasi lebih lanjut, lihat Gunakan volume ossfs 1.0 yang disediakan secara statis.
-
Tabel berikut menjelaskan konfigurasi contoh PV.
Parameter
Deskripsi
PV Type
OSS
Name
llm-model
AccessKey
ID AccessKey dan AccessKey Secret yang digunakan untuk mengakses OSS.
Bucket ID:
Bucket OSS yang Anda buat.
OSS path
Pilih path tempat model disimpan, misalnya /models/Qwen1.5-4B-Chat.
-
Tabel berikut menjelaskan konfigurasi contoh PVC.
Parameter
Deskripsi
PVC Type
OSS
Name
llm-model
Allocation Mode
Pilih Existing Volumes.
Existing Volumes
Klik Select PV dan pilih PV yang telah Anda buat.
-
Langkah 2: Deploy layanan inferensi
-
Deploy layanan inferensi untuk model Qwen1.5-4B-Chat.
Deploy layanan inferensi kustom menggunakan Arena. Layanan rtp-llm-qwen (v1) berjalan pada satu GPU dengan satu replika dan pemeriksaan kesiapan.
--datamemasang PVCllm-modelke/model/Qwen1.5-4B-Chatdi dalam kontainer.GPU A10 Tunggal
arena serve custom \ --name=rtp-llm-qwen \ --version=v1 \ --gpus=1 \ --replicas=1 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --restful-port=8000 \ --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/rtp_llm:0.1.12-cuda12-ubuntu22.04 \ --data=llm-model:/model/Qwen1.5-4B-Chat \ "MODEL_TYPE=qwen_2 START_PORT=8000 CHECKPOINT_PATH=/model/Qwen1.5-4B-Chat TOKENIZER_PATH=/model/Qwen1.5-4B-Chat python3 -m maga_transformer.start_server"GPU T4 Tunggal
arena serve custom \ --name=rtp-llm-qwen \ --version=v1 \ --gpus=1 \ --replicas=1 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --restful-port=8000 \ --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/rtp_llm:0.1.12-cuda12-ubuntu22.04 \ --data=llm-model:/model/Qwen1.5-4B-Chat \ "MODEL_TYPE=qwen_2 START_PORT=8000 CHECKPOINT_PATH=/model/Qwen1.5-4B-Chat TOKENIZER_PATH=/model/Qwen1.5-4B-Chat MAX_SEQ_LEN=2048 python3 -m maga_transformer.start_server"Output yang diharapkan:
service/rtp-llm-qwen-v1 created deployment.apps/rtp-llm-qwen-v1-custom-serving created INFO[0001] The Job rtp-llm-qwen has been submitted successfully INFO[0001] You can run `arena serve get rtp-llm-qwen --type custom-serving -n default` to check the job statusLayanan inferensi telah di-deploy.
-
Lihat detail layanan inferensi dan tunggu hingga siap.
arena serve get rtp-llm-qwenOutput yang diharapkan:
Name: rtp-llm-qwen Namespace: default Type: Custom Version: v1 Desired: 1 Available: 1 Age: 1h Address: 192.168.XX.XX Port: RESTFUL:8000 GPU: 1 Instances: NAME STATUS AGE READY RESTARTS GPU NODE ---- ------ --- ----- -------- --- ---- rtp-llm-qwen-v1-custom-serving-696f699485-mn56v Running 1h 1/1 0 1 cn-beijing.192.168.XX.XXPod layanan inferensi
rtp-llm-qwen-v1-custom-serving-696f699485-mn56vsedang berjalan dan siap.
Langkah 3: Verifikasi layanan inferensi
-
Siapkan penerusan port ke layanan inferensi.
PentingPenerusan port dengan
kubectl port-forwardtidak cocok untuk produksi karena kurang andal, aman, dan skalabel. Gunakan hanya untuk pengembangan dan debugging. Untuk solusi jaringan tingkat produksi di kluster Kubernetes, lihat Manajemen Ingress.kubectl port-forward svc/rtp-llm-qwen-v1 8000:8000Output yang diharapkan:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000 -
Kirim 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": "Run a quick test"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'Output yang diharapkan:
{"id":"chat-","object":"chat.completion","created":1717383026,"model":"AsyncModel","choices":[{"index":0,"message":{"role":"assistant","content":"Sure. What would you like me to test for you?"},"finish_reason":"stop"}],"usage":{"prompt_tokens":21,"total_tokens":31,"completion_tokens":10}}Model menghasilkan tanggapan terhadap pesan uji coba.
(Opsional) Langkah 4: Bersihkan lingkungan
Jika Anda tidak lagi memerlukan sumber daya tersebut, segera hapus untuk menghindari biaya yang tidak perlu.
-
Hapus layanan inferensi model.
arena serve del rtp-llm-qwen -
Hapus PV dan PVC.
kubectl delete pvc llm-model kubectl delete pv llm-model
Lampiran: Referensi parameter perintah
| Parameter | Deskripsi | Contoh |
|---|---|---|
serve custom |
Subperintah Arena. Deploy layanan model kustom, bukan 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 akan 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 pemeriksaan kesiapan 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 pemeriksaan kesiapan. Bendera ini dapat diulang. Mengatur delay awal dan interval pemeriksaan. | initialDelaySeconds: 30, periodSeconds: 30 |
--data |
Pemasangan volume. Memasang PVC pada path tertentu di dalam kontainer, dalam format <pvc-name>:<mount-path>. Digunakan untuk memasang file model yang telah dimuat sebelumnya. |
llm-model:/Qwen1.5-4B-Chat |
--image |
Gambar kontainer. URL lengkap gambar kontainer yang menentukan 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" |