Anglais 中文
Nouvelles
- [2024 / 06] Nous publions une toute nouvelle version de rtp-llm, qui comprend un cadre de planification et de traitement par lots refactorisé en C++, une gestion complète de la mémoire GPU et une piste d'allocation et un nouveau backend de périphérique. Vérifiez les informations de sortie pour plus de détails !
- [2024 / 06] Nous travaillons actuellement sur la prise en charge de plusieurs backends matériels dans le cadre de collaborations approfondies avec les fabricants de matériel. La prise en charge des processeurs AMD ROCm, Intel et ARM est en route, restez à l'écoute des prochaines versions !
À propos
- rtp-llm est un moteur d'accélération d'inférence de modèle de langage large (LLM) développé par l'équipe d'inférence de modèle de base d'Alibaba. Il est largement utilisé au sein du groupe Alibaba, prenant en charge le service LLM dans plusieurs unités commerciales, notamment Taobao, Tmall, Idlefish, Cainiao, Amap, Ele.me, AE et Lazada.
- Le projet rtp-llm est un sous-projet de Havenask
Caractéristiques
Production éprouvée
Appliqué dans de nombreux scénarios LLM, tels que :
- Taobao Wenwen
- Aidge, la plateforme internationale d'IA d'Alibaba
- Édition de questions et réponses intelligentes OpenSearch LLM
- Réécriture de requêtes longue traîne basée sur un modèle de langage étendu dans la recherche Taobao
Haute performance
- Utilise des noyaux CUDA hautes performances, notamment PagedAttention, FlashAttention, FlashDecoding, etc.
- Implémente la quantification WeightOnly INT8 avec quantification automatique au moment du chargement ; Prise en charge de la quantification WeightOnly INT4 avec GPTQ et AWQ
- Quantification KVCache adaptative
- Optimisation détaillée de la surcharge du traitement par lots dynamique au niveau du framework
- Spécialement optimisé pour le GPU V100
Flexibilité et facilité d'utilisation
- Intégration transparente avec les modèles HuggingFace, prenant en charge plusieurs formats de poids tels que SafeTensors, Pytorch et Megatron
- Déploie plusieurs services LoRA avec une seule instance de modèle
- Gère les entrées multimodales (combinant des images et du texte)
- Permet le parallélisme tenseur multi-machines/multi-GPU
- Prend en charge les modèles de réglage P
Techniques d'accélération avancées
- Charges de modèles irréguliers élagués
- Cache de préfixes contextuel pour les dialogues multi-tours
- Cache d'invite système
- Décodage spéculatif
- Medusa pour les stratégies de parallélisation avancées
Comment utiliser
Exigences
- Système d'exploitation : Linux
- Python : 3.10
- GPU NVIDIA : Compute Capability 7.0 ou supérieur (par exemple, RTX20xx, RTX30xx, RTX40xx, V100, T4, A10/A30/A100, L4, H100, etc.)
Exemple de démarrage
- 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}} '
- quoi
# 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}} '
Note de version Docker
FAQ
libcufft.so
Journal des erreurs : OSError: libcufft.so.11: cannot open shared object file: No such file or directory
Résolution : veuillez vérifier si les versions cuda et rtp-llm correspondent
libth_transformer.so
Journal des erreurs : OSError: /rtp-llm/maga_transformer/libs/libth_transformer.so: cannot open shared object file: No such file or directory
Résolution : s'il est installé via whl ou docker (ce qui signifie qu'il ne s'agit pas d'une version bazel), veuillez vérifier que votre répertoire actuel n'est pas rtp-llm, sinon python utilisera le package de chemin relatif au lieu de whl installé.
Temps mort de construction de Bazel
Journal des erreurs : ERROR: no such package '@pip_gpu_cuda12_torch//': rules_python_external failed: (Timed out)
Résolution :
- changez le référentiel miroir pip dans open_source/deps/pip.bzl, ajoutez extra_pip_args=["--index_url=xxx"]
- pip installe manuellement les exigences, en particulier pour pytorch, car cette version de bazel a un délai d'attente de 600 secondes par défaut, ce qui peut ne pas être suffisant pour le téléchargement de pytorch
Erreur Curl Journal des erreurs : 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
Résolution : mettre à niveau tiktoken vers 0.7.0
Documentation
- Tester dans Deploy Docker
- Exemple de service
- Exemple de programme d'exécution RWKV
- Exemple de bibliothèque Python
- Utilisation de RTP-LLm dans Aliyun Ecs
- Paramètres de configuration
- Construction du code source
- Format de demande
- Inférence multi-GPU
- LoRA
- PRéglage
- Invite système
- RéutiliserKVCache
- Multimodal
- Déploiement du modèle d'intégration/reranker
- Taille structurée
- Quantification
- Échantillonnage spéculatif
- Feuille de route
- Contribuer
- Référence et performance
Remerciements
Notre projet est principalement basé sur FasterTransformer, et sur cette base, nous avons intégré certaines implémentations du noyau de TensorRT-LLM. FasterTransformer et TensorRT-LLM nous ont fourni des garanties de performances fiables. Flash-Attention2 et cutlass ont également apporté une grande aide dans notre processus continu d'optimisation des performances. Notre décodage continu par lots et par incréments s'appuie sur la mise en œuvre de vllm ; l'échantillonnage s'appuie sur des transformateurs, l'échantillonnage spéculatif intégrant l'implémentation de Medusa, et la partie multimodale intégrant les implémentations de llava et qwen-vl. Nous remercions ces projets pour leur inspiration et leur aide.
Scénarios d'application externe (mis à jour en permanence)
- Taobao Wenda
- Aide à la plateforme internationale d'IA d'Alibaba
- Édition de questions et réponses intelligentes OpenSearch LLM
- Réécriture de requêtes longue traîne basée sur un modèle de langage étendu dans la recherche Taobao
Liste des modèles pris en charge
LLM
- Aquila et Aquila2 (BAAI/AquilaChat2-7B, BAAI/AquilaChat2-34B, BAAI/Aquila-7B, BAAI/AquilaChat-7B, etc.)
- Baichuan et Baichuan2 (baichuan-inc/Baichuan2-13B-Chat, baichuan-inc/Baichuan-7B)
- Bloom (bigscience/bloom, bigscience/bloomz)
- ChatGlm (THUDM/chatglm2-6b, THUDM/chatglm3-6b, GLM4, etc.)
- Faucon (tiiuae/falcon-7b, tiiuae/falcon-40b, tiiuae/falcon-rw-7b, etc.)
- GptNeox (EleutherAI/gpt-neox-20b)
- GPT BigCode (bigcode/starcoder, bigcode/starcoder2)
- LLaMA et LLaMA-2 (méta-llama/Llama-2-7b, méta-llama/Llama-2-13b-hf, méta-llama/Llama-2-70b-hf, lmsys/vicuna-33b-v1.3, 01-ai/Yi-34B, xverse/XVERSE-13B, etc.)
- MPT (mosaicml/mpt-30b-chat, etc.)
- Phi (microsoft/phi-1_5, etc.)
- Qwen (Qwen, Qwen1.5, Qwen2, etc.)
- InternLM (internlm/internlm-7b, internlm/internlm-chat-7b, etc.)
- Gemma (google/gemma-it, etc.)
- Mixtral (mistralai/Mixtral-8x7B-v0.1, etc.)
LLM + Multimodal
- LLAVA (liuhaotian/llava-v1.5-13b, liuhaotian/llava-v1.5-7b)
- Qwen-VL (Qwen/Qwen-VL)
Contactez-nous
Groupe DingTalk
Groupe WeChat