Englisch 中文
Nachricht
- [2024/06] Wir veröffentlichen eine brandneue Version von rtp-llm, die über ein in C++ überarbeitetes Planungs- und Batch-Framework, eine vollständige GPU-Speicherverwaltung und Zuweisungsverfolgung sowie ein neues Geräte-Backend verfügt. Weitere Informationen finden Sie in den Release-Informationen!
- [2024 / 06] Wir arbeiten derzeit in umfangreichen Kooperationen mit Hardwareherstellern an der Unterstützung mehrerer Hardware-Backends. Unterstützung für AMD ROCm, Intel CPU und ARM CPU ist auf dem Weg, bleiben Sie gespannt auf kommende Veröffentlichungen!
Um
- rtp-llm ist eine Large Language Model (LLM)-Inferenzbeschleunigungs-Engine, die vom Foundation Model Inference Team von Alibaba entwickelt wurde. Es ist innerhalb der Alibaba Group weit verbreitet und unterstützt den LLM-Service in mehreren Geschäftsbereichen, darunter Taobao, Tmall, Idlefish, Cainiao, Amap, Ele.me, AE und Lazada.
- Das RTP-LLM-Projekt ist ein Unterprojekt von Havenask
Merkmale
Produktionserprobt
Wird in zahlreichen LLM-Szenarien angewendet, wie zum Beispiel:
- Taobao Wenwen
- Alibabas internationale KI-Plattform Aidge
- OpenSearch LLM Smart Q&A Edition
- Auf großen Sprachmodellen basierendes Long-Tail-Abfrage-Umschreiben in der Taobao-Suche
Hohe Leistung
- Nutzt leistungsstarke CUDA-Kernel, einschließlich PagedAttention, FlashAttention, FlashDecoding usw.
- Implementiert die WeightOnly INT8-Quantisierung mit automatischer Quantisierung zur Ladezeit; Unterstützt die WeightOnly INT4-Quantisierung mit GPTQ und AWQ
- Adaptive KVCache-Quantisierung
- Detaillierte Optimierung des dynamischen Batch-Overheads auf Framework-Ebene
- Speziell optimiert für die V100 GPU
Flexibilität und Benutzerfreundlichkeit
- Nahtlose Integration mit den HuggingFace-Modellen, Unterstützung mehrerer Gewichtsformate wie SafeTensors, Pytorch und Megatron
- Stellt mehrere LoRA-Dienste mit einer einzigen Modellinstanz bereit
- Verarbeitet multimodale Eingaben (Kombination von Bildern und Text)
- Ermöglicht Tensorparallelität für mehrere Maschinen/GPUs
- Unterstützt P-Tuning-Modelle
Fortgeschrittene Beschleunigungstechniken
- Lädt beschnittene unregelmäßige Modelle
- Kontextbezogener Präfix-Cache für Dialoge mit mehreren Runden
- System-Prompt-Cache
- Spekulative Dekodierung
- Medusa für fortgeschrittene Parallelisierungsstrategien
Verwendung
Anforderungen
- Betriebssystem: Linux
- Python: 3.10
- NVIDIA GPU: Rechenleistung 7.0 oder höher (z. B. RTX20xx, RTX30xx, RTX40xx, V100, T4, A10/A30/A100, L4, H100 usw.)
Startbeispiel
- Docker
cd rtp-llm/docker
# IMAGE_NAME =
# if cuda11: registry.cn-hangzhou.aliyuncs.com/havenask/rtp_llm:deploy_image_cuda11
# if cuda12: registry.cn-hangzhou.aliyuncs.com/havenask/rtp_llm:deploy_image_cuda12
sh ./create_container.sh < CONTAINER_NAME > < IMAGE_NAME >
sh CONTAINER_NAME/sshme.sh
cd ../
# start http service
TOKENIZER_PATH=/path/to/tokenizer CHECKPOINT_PATH=/path/to/model MODEL_TYPE=your_model_type FT_SERVER_TEST=1 python3 -m maga_transformer.start_server
# request to server
curl -XPOST http://localhost:8088 -d ' {"prompt": "hello, what is your name", "generate_config": {"max_new_tokens": 1000}} '
- whl
# Install rtp-llm
cd rtp-llm
# For cuda12 environment, please use requirements_torch_gpu_cuda12.txt
pip3 install -r ./open_source/deps/requirements_torch_gpu.txt
# Use the corresponding whl from the release version, here's an example for the cuda11 version 0.1.0, for the cuda12 whl package please check the release page.
pip3 install maga_transformer-0.1.9+cuda118-cp310-cp310-manylinux1_x86_64.whl
# start http service
cd ../
TOKENIZER_PATH=/path/to/tokenizer CHECKPOINT_PATH=/path/to/model MODEL_TYPE=your_model_type FT_SERVER_TEST=1 python3 -m maga_transformer.start_server
# request to server
curl -XPOST http://localhost:8088 -d ' {"prompt": "hello, what is your name", "generate_config": {"max_new_tokens": 1000}} '
Docker-Veröffentlichungshinweis
FAQ
libcufft.so
Fehlerprotokoll : OSError: libcufft.so.11: cannot open shared object file: No such file or directory
Lösung : Bitte überprüfen Sie, ob die Versionen cuda und rtp-llm übereinstimmen
libth_transformer.so
Fehlerprotokoll : OSError: /rtp-llm/maga_transformer/libs/libth_transformer.so: cannot open shared object file: No such file or directory
Lösung : Wenn die Installation über whl oder Docker erfolgt (was bedeutet, dass es sich nicht um einen Bazel-Build handelt), überprüfen Sie bitte, dass Ihr aktuelles Verzeichnis nicht rtp-llm ist, da Python sonst den relativen Pfad des Pakets anstelle des installierten whl verwendet
Bazel-Bauzeitüberschreitung
Fehlerprotokoll : ERROR: no such package '@pip_gpu_cuda12_torch//': rules_python_external failed: (Timed out)
Auflösung :
- Ändern Sie das Pip-Spiegel-Repository in open_source/deps/pip.bzl und fügen Sie extra_pip_args=["--index_url=xxx"] hinzu.
- pip-Installationsanforderungen manuell ausführen, insbesondere für Pytorch, da dieser Bazel-Build standardmäßig eine Zeitüberschreitung von 600 Sekunden hat, was für das Herunterladen von Pytorch möglicherweise nicht ausreicht
Curl-Fehler Fehlerprotokoll : thread '<unnamed>' panicked at 'index out of bounds: the len is 1 but the index is 1', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.8.1/src/dfa.rs:1415:45
Lösung : Tiktoken auf 0.7.0 aktualisieren
Dokumentation
- Testen Sie in Deploy Docker
- Servierbeispiel
- RWKV-Runner-Beispiel
- Beispiel einer Python-Bibliothek
- Verwendung von RTP-LLm in Aliyun Ecs
- Konfigurationsparameter
- Quellcode-Build
- Anfrageformat
- Multi-GPU-Inferenz
- LoRA
- PTuning
- SystemPrompt
- KVCache wiederverwenden
- Multimodal
- Einbettungs-/Reranker-Modellbereitstellung
- Strukturierter Schnitt
- Quantisierung
- Spekulative Probenahme
- Roadmap
- Mitwirken
- Benchmark und Leistung
Danksagungen
Unser Projekt basiert hauptsächlich auf FasterTransformer und auf dieser Basis haben wir einige Kernel-Implementierungen von TensorRT-LLM integriert. FasterTransformer und TensorRT-LLM haben uns zuverlässige Leistungsgarantien gegeben. Flash-Attention2 und Cutlass haben uns auch bei unserem kontinuierlichen Leistungsoptimierungsprozess sehr geholfen. Unsere kontinuierliche Stapelverarbeitung und Inkrementdekodierung basieren auf der Implementierung von vllm. Das Sampling stützt sich auf Transformatoren, wobei das spekulative Sampling die Implementierung von Medusa integriert und der multimodale Teil Implementierungen von Llava und Qwen-VL integriert. Wir danken diesen Projekten für ihre Inspiration und Hilfe.
Externe Anwendungsszenarien (kontinuierlich aktualisiert)
- Taobao Wenda
- Alibabas internationale KI-Plattform Aidge
- OpenSearch LLM Smart Q&A Edition
- Auf großen Sprachmodellen basierendes Long-Tail-Abfrage-Umschreiben in der Taobao-Suche
Liste der unterstützten Modelle
LLM
- Aquila und Aquila2 (BAAI/AquilaChat2-7B, BAAI/AquilaChat2-34B, BAAI/Aquila-7B, BAAI/AquilaChat-7B usw.)
- Baichuan und Baichuan2 (baichuan-inc/Baichuan2-13B-Chat, baichuan-inc/Baichuan-7B)
- Bloom (bigscience/bloom, bigscience/bloomz)
- ChatGlm (THUDM/chatglm2-6b, THUDM/chatglm3-6b, GLM4 usw.)
- Falke (tiiuae/falcon-7b, tiiuae/falcon-40b, tiiuae/falcon-rw-7b usw.)
- GptNeox (EleutherAI/gpt-neox-20b)
- GPT BigCode (bigcode/starcoder, bigcode/starcoder2)
- LLaMA und LLaMA-2 (Meta-Lama/Llama-2-7b, Meta-Lama/Llama-2-13b-hf, Meta-Lama/Llama-2-70b-hf, lmsys/vicuna-33b-v1.3, 01-ai/Yi-34B, xverse/XVERSE-13B usw.)
- MPT (mosaicml/mpt-30b-chat usw.)
- Phi (Microsoft/Phi-1_5 usw.)
- Qwen (Qwen, Qwen1.5, Qwen2 usw.)
- InternLM (internlm/internlm-7b, internlm/internlm-chat-7b usw.)
- Gemma (google/gemma-it usw.)
- Mixtral (mistralai/Mixtral-8x7B-v0.1 usw.)
LLM + Multimodal
- LLAVA (liuhaotian/llava-v1.5-13b, liuhaotian/llava-v1.5-7b)
- Qwen-VL (Qwen/Qwen-VL)
Kontaktieren Sie uns
DingTalk-Gruppe
WeChat-Gruppe