LoRAX: Server inferensi multi-LoRA yang menskalakan hingga 1000-an LLM yang telah disesuaikan
LoRAX (LoRA eXchange) adalah kerangka kerja yang memungkinkan pengguna untuk melayani ribuan model yang telah disesuaikan pada satu GPU, sehingga secara drastis mengurangi biaya penyajian tanpa mengorbankan throughput atau latensi.
Daftar isi
Fitur
Model
?Memulai
Persyaratan
Luncurkan Server LoRAX
Prompt melalui REST API
Prompt melalui Klien Python
Mengobrol melalui OpenAI API
Langkah selanjutnya
Ucapan Terima Kasih
Peta jalan
Pemuatan Adaptor Dinamis: sertakan adaptor LoRA yang telah disempurnakan dari HuggingFace, Predibase, atau sistem file apa pun dalam permintaan Anda, adaptor tersebut akan dimuat tepat pada waktunya tanpa memblokir permintaan bersamaan. Gabungkan adaptor per permintaan untuk membuat ansambel yang kuat secara instan.
Batching Berkelanjutan Heterogen: mengemas permintaan untuk adaptor berbeda ke dalam batch yang sama, menjaga latensi dan throughput hampir konstan dengan jumlah adaptor bersamaan.
Penjadwalan Pertukaran Adaptor: mengambil dan melepas adaptor secara asinkron antara GPU dan memori CPU, menjadwalkan batching permintaan untuk mengoptimalkan throughput agregat sistem.
Inferensi yang Dioptimalkan: optimasi throughput tinggi dan latensi rendah termasuk paralelisme tensor, kernel CUDA yang telah dikompilasi sebelumnya (perhatian flash, perhatian halaman, SGMV), kuantisasi, streaming token.
Siap untuk gambar Docker bawaan Produksi , diagram Helm untuk Kubernetes, metrik Prometheus, dan penelusuran terdistribusi dengan Open Telemetri. API yang kompatibel dengan OpenAI mendukung percakapan obrolan multi-putaran. Adaptor pribadi melalui isolasi penyewa per permintaan. Output Terstruktur (mode JSON).
? Gratis untuk Penggunaan Komersial: Lisensi Apache 2.0. Cukup dikatakan?.
Melayani model yang disempurnakan dengan LoRAX terdiri dari dua komponen:
Model Dasar: model besar terlatih yang dibagikan ke semua adaptor.
Adaptor: bobot adaptor khusus tugas yang dimuat secara dinamis per permintaan.
LoRAX mendukung sejumlah Model Bahasa Besar sebagai model dasar termasuk Llama (termasuk CodeLlama), Mistral (termasuk Zephyr), dan Qwen. Lihat Arsitektur yang Didukung untuk daftar lengkap model dasar yang didukung.
Model dasar dapat dimuat dalam fp16 atau dikuantisasi dengan bitsandbytes
, GPT-Q, atau AWQ.
Adaptor yang didukung mencakup adaptor LoRA yang dilatih menggunakan pustaka PEFT dan Ludwig. Lapisan linier mana pun dalam model dapat diadaptasi melalui LoRA dan dimuat di LoRAX.
Kami menyarankan untuk memulai dengan image Docker bawaan kami untuk menghindari kompilasi kernel CUDA khusus dan dependensi lainnya.
Persyaratan sistem minimum yang diperlukan untuk menjalankan LoRAX meliputi:
GPU Nvidia (generasi Ampere atau lebih tinggi)
Driver perangkat yang kompatibel dengan CUDA 11.8 dan yang lebih baru
sistem operasi Linux
Docker (untuk panduan ini)
Instal nvidia-container-toolkit Lalu
sudo systemctl daemon-reload
sudo systemctl restart docker
model=mistralai/Mistral-7B-Instruksi-v0.1 volume=$PWD/data menjalankan buruh pelabuhan --gpus semua --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/predibase/lorax:main --model-id $model
Untuk tutorial lengkap termasuk streaming token dan klien Python, lihat Memulai - Docker.
LLM dasar yang cepat:
curl 127.0.0.1:8080/hasilkan -X POSTING -d '{ "inputs": "[INST] Natalia menjual klip ke 48 temannya pada bulan April, dan kemudian dia menjual separuh klip tersebut pada bulan Mei. Berapa banyak klip yang terjual seluruhnya oleh Natalia pada bulan April dan Mei? [/INST] ", "parameter": { "max_new_tokens": 64 } }' -H 'Jenis Konten: aplikasi/json'
Minta adaptor LoRA:
curl 127.0.0.1:8080/hasilkan -X POSTING -d '{ "inputs": "[INST] Natalia menjual klip ke 48 temannya pada bulan April, dan kemudian dia menjual separuh klip tersebut pada bulan Mei. Berapa banyak klip yang terjual seluruhnya oleh Natalia pada bulan April dan Mei? [/INST] ", "parameter": { "max_new_tokens": 64, "adapter_id": "vineetsharma/qlora-adapter-Mistral-7B-Instruct-v0.1-gsm8k" } }' -H 'Jenis Konten: aplikasi/json'
Lihat Referensi - REST API untuk detail selengkapnya.
Memasang:
pip instal klien-lorax
Berlari:
from lorax import Clientclient = Client("http://127.0.0.1:8080")# Prompt the base LLMprompt = "[INST] Natalia menjual klip ke 48 temannya di bulan April, dan kemudian dia menjual separuh klip di bulan Mei . Berapa banyak klip yang terjual seluruhnya oleh Natalia pada bulan April dan Mei? [/INST]"print(client.generate(prompt, max_new_tokens=64).generated_text)# Minta a LoRA adapteradapter_id = "vineetsharma/qlora-adapter-Mistral-7B-Instruct-v0.1-gsm8k"print(client.generate(prompt, max_new_tokens=64, adapter_id=adapter_id).generated_text)
Lihat Referensi - Klien Python untuk detail selengkapnya.
Untuk mengetahui cara lain menjalankan LoRAX, lihat Memulai - Kubernetes, Memulai - SkyPilot, dan Memulai - Lokal.
LoRAX mendukung percakapan obrolan multi-putaran yang dikombinasikan dengan pemuatan adaptor dinamis melalui API yang kompatibel dengan OpenAI. Cukup tentukan adaptor apa pun sebagai parameter model
.
dari openai import OpenAIclient = OpenAI(api_key="EMPTY",base_url="http://127.0.0.1:8080/v1", )resp = klien.chat.completions.create(model="alignment-handbook/zephyr-7b-dpo-lora",messages=[ {"role": "system","content": "Anda adalah chatbot ramah yang selalu merespons dengan gaya bajak laut", }, {"role": "user", "content": "Berapa banyak helikopter yang dapat dimakan manusia dalam sekali duduk?"}, ],tok_maks=100, )print("Respon:", resp.choices[0].message.content)
Lihat API yang Kompatibel dengan OpenAI untuk detailnya.
Berikut adalah beberapa model Mistral-7B yang menarik untuk dicoba:
penyelarasan-handbook/zephyr-7b-dpo-lora: Mistral-7b disempurnakan pada kumpulan data Zephyr-7B dengan DPO.
IlyaGusev/saiga_mistral_7b_lora: Chatbot Rusia berdasarkan Open-Orca/Mistral-7B-OpenOrca
.
Undi95/Mistral-7B-roleplay_alpaca-lora: Disempurnakan menggunakan petunjuk permainan peran.
Anda dapat menemukan lebih banyak adaptor LoRA di sini, atau coba sesuaikan adaptor Anda sendiri dengan PEFT atau Ludwig.
LoRAX dibangun di atas inferensi pembuatan teks HuggingFace, bercabang dari v0.9.4 (Apache 2.0).
Kami juga ingin mengucapkan terima kasih kepada Punica atas pekerjaan mereka pada kernel SGMV, yang digunakan untuk mempercepat inferensi multi-adaptor di bawah beban berat.
Peta jalan kami dilacak di sini.