Inglés 中文
Noticias
- [2024/06] Estamos lanzando una nueva versión de rtp-llm, que presenta un marco de programación y procesamiento por lotes refactorizado en c ++, seguimiento completo de asignación y administración de memoria de gpu y un nuevo backend del dispositivo. ¡Consulte la información del lanzamiento para obtener más detalles!
- [2024/06] Actualmente estamos trabajando en el soporte para múltiples backends de hardware en amplias colaboraciones con fabricantes de hardware. La compatibilidad con AMD ROCm, CPU Intel y CPU ARM está en camino, ¡estén atentos a los próximos lanzamientos!
Acerca de
- rtp-llm es un motor de aceleración de inferencia de modelo de lenguaje grande (LLM) desarrollado por el Foundation Model Inference Team de Alibaba. Se utiliza ampliamente dentro del Grupo Alibaba y admite el servicio LLM en múltiples unidades de negocios, incluidas Taobao, Tmall, Idlefish, Cainiao, Amap, Ele.me, AE y Lazada.
- El proyecto rtp-llm es un subproyecto de havenask
Características
Producción probada
Aplicado en numerosos escenarios de LLM, tales como:
- Taobao Wenwen
- Aidge, la plataforma internacional de inteligencia artificial de Alibaba
- Edición inteligente de preguntas y respuestas de OpenSearch LLM
- Reescritura de consultas de cola larga basada en modelos de lenguaje grande en la búsqueda de Taobao
Rendimiento alto
- Utiliza kernels CUDA de alto rendimiento, incluidos PagedAttention, FlashAttention, FlashDecoding, etc.
- Implementa la cuantificación WeightOnly INT8 con cuantificación automática en el momento de la carga; Admite cuantización WeightOnly INT4 con GPTQ y AWQ
- Cuantización adaptativa de KVCache
- Optimización detallada de la sobrecarga de procesamiento por lotes dinámicos a nivel de marco
- Especialmente optimizado para la GPU V100
Flexibilidad y facilidad de uso
- Integración perfecta con los modelos HuggingFace, que admite múltiples formatos de peso, como SafeTensors, Pytorch y Megatron.
- Implementa múltiples servicios LoRA con una única instancia de modelo.
- Maneja entradas multimodales (combinando imágenes y texto)
- Permite el paralelismo tensor de múltiples máquinas/multi-GPU
- Admite modelos P-tuning
Técnicas avanzadas de aceleración
- Cargas podadas modelos irregulares
- Caché de prefijos contextuales para diálogos de varios turnos
- Caché de avisos del sistema
- Decodificación especulativa
- Medusa para estrategias avanzadas de paralelización
Cómo utilizar
Requisitos
- Sistema operativo: Linux
- Pitón: 3.10
- GPU NVIDIA: Capacidad de procesamiento 7.0 o superior (p. ej., RTX20xx, RTX30xx, RTX40xx, V100, T4, A10/A30/A100, L4, H100, etc.)
Ejemplo de inicio
- estibador
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}} '
Nota de publicación de Docker
- Nota de versión de Docker
Preguntas frecuentes
libcufft.so
Registro de errores : OSError: libcufft.so.11: cannot open shared object file: No such file or directory
Resolución : compruebe si las versiones de cuda y rtp-llm coinciden
libth_transformer.so
Registro de errores : OSError: /rtp-llm/maga_transformer/libs/libth_transformer.so: cannot open shared object file: No such file or directory
Resolución : si se instala a través de whl o docker (lo que significa que no es una compilación de bazel), verifique que su directorio actual no sea rtp-llm, o Python usará el paquete de ruta relativa en lugar del whl instalado.
Bazel construye tiempo de espera
Registro de errores : ERROR: no such package '@pip_gpu_cuda12_torch//': rules_python_external failed: (Timed out)
Resolución :
- cambie el repositorio espejo de pip en open_source/deps/pip.bzl, agregue extra_pip_args=["--index_url=xxx"]
- requisitos de instalación de pip manualmente, especialmente para pytorch, ya que la compilación de bazel tiene un tiempo de espera de 600 de forma predeterminada, lo que puede no ser suficiente para la descarga de pytorch.
Error de rizo Registro de errores: 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
Resolución : actualizar tiktoken a 0.7.0
Documentación
- Prueba en Implementar Docker
- Ejemplo de servicio
- Ejemplo de corredor RWKV
- Ejemplo de biblioteca de Python
- Usando RTP-LLm en Aliyun Ecs
- Parámetros de configuración
- Construcción de código fuente
- Formato de solicitud
- Inferencia de múltiples GPU
- lora
- Sintonización
- Aviso del sistema
- Reutilizar KVCache
- Multimodal
- Implementación del modelo de incorporación/reclasificación
- Poda estructurada
- Cuantización
- Muestreo especulativo
- Hoja de ruta
- Contribuyendo
- Punto de referencia y rendimiento
Expresiones de gratitud
Nuestro proyecto se basa principalmente en FasterTransformer y, sobre esta base, hemos integrado algunas implementaciones del kernel de TensorRT-LLM. FasterTransformer y TensorRT-LLM nos han brindado garantías de rendimiento confiables. Flash-Attention2 y cutlass también han brindado mucha ayuda en nuestro proceso continuo de optimización del rendimiento. Nuestra decodificación incremental y por lotes continuos se basa en la implementación de vllm; El muestreo se basa en transformadores, el muestreo especulativo integra la implementación de Medusa y la parte multimodal integra implementaciones de llava y qwen-vl. Agradecemos a estos proyectos por su inspiración y ayuda.
Escenarios de aplicaciones externas (actualizados continuamente)
- Taobao Wenda
- Ayuda a la plataforma internacional de IA de Alibaba
- Edición inteligente de preguntas y respuestas de OpenSearch LLM
- Reescritura de consultas de cola larga basada en modelos de lenguaje grande en la búsqueda de Taobao
Lista de modelos compatibles
LLM
- Aquila y Aquila2 (BAAI/AquilaChat2-7B, BAAI/AquilaChat2-34B, BAAI/Aquila-7B, BAAI/AquilaChat-7B, etc.)
- Baichuan y Baichuan2 (baichuan-inc/Baichuan2-13B-Chat, baichuan-inc/Baichuan-7B)
- Bloom (gran ciencia/floración, gran ciencia/bloomz)
- ChatGlm (THUDM/chatglm2-6b, THUDM/chatglm3-6b, GLM4, etc.)
- Halcón (tiiuae/falcon-7b, tiiuae/falcon-40b, tiiuae/halcon-rw-7b, etc.)
- GptNeox (EleutherAI/gpt-neox-20b)
- GPT BigCode (código grande/starcoder, código grande/starcoder2)
- LLaMA y LLaMA-2 (meta-llama/Llama-2-7b, meta-llama/Llama-2-13b-hf, meta-llama/Llama-2-70b-hf, lmsys/vicuña-33b-v1.3, 01-ai/Yi-34B, xverse/XVERSE-13B, etc.)
- MPT (mosaicml/mpt-30b-chat, etc.)
- Fi (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)
Contáctenos
Grupo DingTalk
Grupo WeChat