Topik ini menggunakan model Qwen1.5-4B-Chat dan GPU A10 serta T4 sebagai contoh untuk menunjukkan cara menggunakan kerangka kerja rtp-llm dalam menerapkan layanan inferensi Qwen pada 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.
rtp-llm
rtp-llm adalah mesin akselerasi inferensi yang dikembangkan oleh tim prediksi model bahasa besar (LLM) Alibaba untuk meningkatkan efisiensi dan kinerja inferensi LLM. rtp-llm menyediakan fitur-fitur berikut:
Menyediakan kernel CUDA berperforma tinggi, termasuk PagedAttention, FlashAttention, dan FlashDecoding.
Mengadopsi teknologi Kuantisasi INT8 delapanOnly dan WeightOnly INT4.
Mendukung algoritma utama, termasuk General Purpose Quantization (GPTQ) dan Approximate Weight Quantization (AWQ).
Menggunakan kerangka kerja Kuantisasi KVCache adaptif dan dioptimalkan untuk overhead dalam pengelompokan kontinyu.
Dioptimalkan untuk GPU V100.
Untuk informasi lebih lanjut, lihat rtp-llm.
Prasyarat
Sebuah ACK Pro cluster yang berisi node dengan akselerasi GPU telah dibuat. Versi Kubernetes dari kluster tersebut adalah 1.22 atau lebih baru. Setiap node dengan akselerasi GPU menyediakan Memori GPU sebesar 16 GB atau lebih. Untuk informasi lebih lanjut, lihat Buat Klaster ACK Terkelola.
Kami merekomendasikan Anda menginstal Driver GPU versi 525. Anda dapat menambahkan label
ack.aliyun.com/nvidia-driver-version:525.105.17ke node dengan akselerasi 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 dari 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) dalam kluster ACK.
Untuk informasi lebih lanjut tentang cara mengunggah model ke File Storage NAS (NAS), lihat Mount Volume NAS yang Disediakan 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 Plugin Dukungan File Besar Git (LFS):
# Jalankan yum install git-lfs atau apt install git-lfs. yum install git-lfsJalankan perintah berikut untuk mengkloning repositori Qwen1.5-4B-Chat pada 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 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 Mount Volume ossfs 1.0 yang Disediakan secara Statis.
Tabel berikut menjelaskan parameter dari 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 Anda buat.
OSS Path
Pilih path model, seperti /models/Qwen1.5-4B-Chat.
Tabel berikut menjelaskan parameter dari 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 Anda buat.
Langkah 2: Terapkan layanan inferensi
Jalankan perintah berikut untuk menerapkan layanan inferensi dari model Qwen1.5-4B-Chat.
Gunakan Arena untuk menerapkan layanan inferensi kustom. Nama layanan tersebut adalah rtp-llm-qwen dan versinya adalah v1. Layanan tersebut menggunakan satu GPU dan memiliki satu replika. Probe kesiapan dikonfigurasikan untuk layanan tersebut. Model dianggap sebagai jenis data khusus. Oleh karena itu, atur parameter
--datauntuk memasang PVC model bernamallm-modelke direktori/model/Qwen1.5-4B-Chatdalam kontainer.Gunakan satu GPU A10
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"Gunakan satu GPU T4
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"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
Jenis 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
Mount 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 dalam PV yang ditentukan.--image
Alamat gambar layanan inferensi.
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 statusOutput tersebut menunjukkan bahwa layanan inferensi telah diterapkan.
Jalankan perintah berikut untuk menanyakan informasi detail layanan dan tunggu hingga layanan 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.XXOutput tersebut menunjukkan bahwa sebuah pod (rtp-llm-qwen-v1-custom-serving-696f699485-mn56v) sedang berjalan untuk layanan inferensi dan siap untuk memberikan layanan.
Langkah 3: Verifikasi layanan inferensi
Jalankan perintah berikut untuk menyiapkan port forwarding antara layanan inferensi dan lingkungan lokal.
PentingPort forwarding yang disiapkan menggunakan kubectl port-forward tidak andal, aman, atau dapat diperluas dalam lingkungan produksi. Ini hanya untuk pengembangan dan debugging. Jangan gunakan perintah ini untuk menyiapkan port forwarding dalam lingkungan produksi. Untuk informasi lebih lanjut tentang solusi jaringan yang digunakan untuk produksi dalam kluster ACK, 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 -> 8000Jalankan perintah berikut untuk mengirim permintaan ke layanan inferensi Triton.
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":"chat-","object":"chat.completion","created":1717383026,"model":"AsyncModel","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What test do you want me to run?"},"finish_reason":"stop"}],"usage":{"prompt_tokens":21,"total_tokens":31,"completion_tokens":10}}Output tersebut menunjukkan bahwa model dapat menghasilkan respons berdasarkan prompt yang diberikan. Dalam contoh ini, promptnya 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 del rtp-llm-qwenJalankan perintah berikut untuk menghapus PV dan PVC:
kubectl delete pvc llm-model kubectl delete pv llm-model