Inglês 中文
Notícias
- [2024/06] Estamos lançando uma nova versão do rtp-llm, que apresenta estrutura de agendamento e lote refatorada em c++, gerenciamento completo de memória GPU e rastreamento de alocação e novo back-end de dispositivo. Verifique as informações de lançamento para mais detalhes!
- [2024/06] Atualmente, estamos trabalhando no suporte para vários back-ends de hardware em extensas colaborações com fabricantes de hardware. Suporte para AMD ROCm, CPU Intel e CPU ARM estão a caminho, fique ligado nos próximos lançamentos!
Sobre
- rtp-llm é um mecanismo de aceleração de inferência de Large Language Model (LLM) desenvolvido pela Foundation Model Inference Team do Alibaba. É amplamente utilizado no Grupo Alibaba, oferecendo suporte ao serviço LLM em várias unidades de negócios, incluindo Taobao, Tmall, Idlefish, Cainiao, Amap, Ele.me, AE e Lazada.
- O projeto rtp-llm é um subprojeto do havenask
Características
Produção comprovada
Aplicado em vários cenários de LLM, como:
- Taobao Wenwen
- Plataforma internacional de IA do Alibaba, Aidge
- Edição inteligente de perguntas e respostas do OpenSearch LLM
- Reescrita de consulta de cauda longa baseada em modelo de linguagem grande na pesquisa Taobao
Alto desempenho
- Utiliza kernels CUDA de alto desempenho, incluindo PagedAttention, FlashAttention, FlashDecoding, etc.
- Implementa Quantização WeightOnly INT8 com quantização automática no tempo de carregamento; Suporta quantização WeightOnly INT4 com GPTQ e AWQ
- Quantização KVCache Adaptativa
- Otimização detalhada da sobrecarga dinâmica de lotes no nível da estrutura
- Especialmente otimizado para a GPU V100
Flexibilidade e facilidade de uso
- Integração perfeita com os modelos HuggingFace, suportando vários formatos de peso, como SafeTensors, Pytorch e Megatron
- Implanta vários serviços LoRA com uma única instância de modelo
- Lida com entradas multimodais (combinando imagens e texto)
- Permite paralelismo de tensor multimáquina/multi-GPU
- Suporta modelos de ajuste P
Técnicas Avançadas de Aceleração
- Carrega modelos irregulares podados
- Cache de prefixo contextual para diálogos multivoltas
- Cache de prompt do sistema
- Decodificação Especulativa
- Medusa para estratégias avançadas de paralelização
Como usar
Requisitos
- Sistema operacional: Linux
- Pitão: 3.10
- GPU NVIDIA: capacidade de computação 7.0 ou superior (por exemplo, RTX20xx, RTX30xx, RTX40xx, V100, T4, A10/A30/A100, L4, H100, etc.)
Exemplo de inicialização
- janela de encaixe
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}} '
- o que
# 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 lançamento do Docker
Perguntas frequentes
libcufft.so
Log de erros : OSError: libcufft.so.11: cannot open shared object file: No such file or directory
Resolução : verifique se as versões cuda e rtp-llm correspondem
libth_transformer.so
Log de erros : OSError: /rtp-llm/maga_transformer/libs/libth_transformer.so: cannot open shared object file: No such file or directory
Resolução : Se instalado via whl ou docker (o que significa que não é uma compilação bazel), verifique se seu diretório atual não é rtp-llm, ou o python usará o pacote de caminho relativo em vez do whl instalado
Tempo limite de compilação do Bazel
Log de erros : ERROR: no such package '@pip_gpu_cuda12_torch//': rules_python_external failed: (Timed out)
Resolução :
- altere o repositório de espelho pip em open_source/deps/pip.bzl, adicione extra_pip_args=["--index_url=xxx"]
- requisitos de instalação do pip manualmente, especialmente para pytorch, pois a compilação do bazel tem um tempo limite de 600s por padrão, o que pode não ser suficiente para o download do pytorch
Erro de curl Log de erros: 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
Resolução : atualize o tiktoken para 0.7.0
Documentação
- Teste no Deploy Docker
- Exemplo de serviço
- Exemplo de RWKV-Runner
- Exemplo de biblioteca Python
- Usando RTP-LLm em Aliyun Ecs
- Parâmetros de configuração
- Construção de código-fonte
- Formato de solicitação
- Inferência Multi GPU
- LoRA
- PTuning
- Prompt do Sistema
- Reutilizar KVCache
- Multimodal
- Implantação de modelo de incorporação/reclassificação
- Poda Estruturada
- Quantização
- Amostragem Especulativa
- Roteiro
- Contribuindo
- Referência e desempenho
Agradecimentos
Nosso projeto é baseado principalmente no FasterTransformer e, com base nisso, integramos algumas implementações de kernel do TensorRT-LLM. FasterTransformer e TensorRT-LLM nos forneceram garantias de desempenho confiáveis. Flash-Attention2 e cutlass também forneceram muita ajuda em nosso processo contínuo de otimização de desempenho. Nosso lote contínuo e decodificação incremental baseiam-se na implementação do vllm; a amostragem baseia-se em transformadores, com amostragem especulativa integrando a implementação da Medusa, e a parte multimodal integrando implementações de llava e qwen-vl. Agradecemos a esses projetos por sua inspiração e ajuda.
Cenários de aplicativos externos (atualizados continuamente)
- Wenda Taobao
- Auxílio à plataforma internacional de IA do Alibaba
- Edição inteligente de perguntas e respostas do OpenSearch LLM
- Reescrita de consulta de cauda longa baseada em modelo de linguagem grande na pesquisa Taobao
Lista de modelos suportados
LLM
- Aquila e Aquila2 (BAAI/AquilaChat2-7B, BAAI/AquilaChat2-34B, BAAI/Aquila-7B, BAAI/AquilaChat-7B, etc.)
- Baichuan e Baichuan2 (baichuan-inc/Baichuan2-13B-Chat, baichuan-inc/Baichuan-7B)
- Bloom (bigscience/bloom, bigscience/bloomz)
- ChatGlm (THUDM/chatglm2-6b, THUDM/chatglm3-6b, GLM4, etc.)
- Falcão (tiiuae/falcon-7b, tiiuae/falcon-40b, tiiuae/falcon-rw-7b, etc.)
- GptNeox (EleutherAI/gpt-neox-20b)
- GPT BigCode (bigcode/starcoder, bigcode/starcoder2)
- LLaMA e LLaMA-2 (meta-lhama/Llama-2-7b, meta-lhama/Llama-2-13b-hf, meta-lhama/Lhama-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)
Contate-nos
Grupo DingTalk
Grupo WeChat