영어 중국어
소식
- [2024/06] 우리는 C++로 리팩터링된 스케줄링 및 일괄 처리 프레임워크, 완전한 GPU 메모리 관리 및 할당 트랙, 새로운 장치 백엔드를 특징으로 하는 rtp-llm의 새로운 버전을 출시합니다. 자세한 내용은 출시 정보를 확인하세요!
- [2024/06] 현재 하드웨어 제조사와의 광범위한 협력을 통해 다양한 하드웨어 백엔드 지원을 위해 노력하고 있습니다. AMD ROCm, Intel CPU 및 ARM CPU 지원이 예정되어 있습니다. 향후 릴리스를 계속 지켜봐 주시기 바랍니다!
에 대한
- rtp-llm은 Alibaba의 Foundation Model Inference Team에서 개발한 LLM(Large Language Model) 추론 가속 엔진입니다. 이는 Alibaba 그룹 내에서 널리 사용되며 Taobao, Tmall, Idlefish, Cainiao, Amap, Ele.me, AE 및 Lazada를 포함한 여러 사업 단위에서 LLM 서비스를 지원합니다.
- rtp-llm 프로젝트는 Havenask의 하위 프로젝트입니다.
특징
입증된 생산
다음과 같은 다양한 LLM 시나리오에 적용됩니다.
- 타오바오 원웬
- 알리바바의 국제 AI 플랫폼 에이지(Aidge)
- OpenSearch LLM 스마트 Q&A 에디션
- Taobao 검색의 대규모 언어 모델 기반 롱테일 쿼리 재작성
고성능
- PagedAttention, FlashAttention, FlashDecoding 등을 포함한 고성능 CUDA 커널을 활용합니다.
- 로드 시 자동 양자화로 WeightOnly INT8 양자화를 구현합니다. GPTQ 및 AWQ로 WeightOnly INT4 양자화 지원
- 적응형 KVCache 양자화
- 프레임워크 수준에서 동적 일괄 처리 오버헤드의 세부적인 최적화
- V100 GPU에 특별히 최적화됨
유연성과 사용 용이성
- SafeTensors, Pytorch 및 Megatron과 같은 다양한 가중치 형식을 지원하는 HuggingFace 모델과의 원활한 통합
- 단일 모델 인스턴스로 여러 LoRA 서비스 배포
- 다중 모드 입력 처리(이미지와 텍스트 결합)
- 다중 머신/다중 GPU 텐서 병렬 처리 가능
- P-튜닝 모델 지원
고급 가속 기술
- 정리된 불규칙 모델 로드
- 여러 차례 대화를 위한 상황별 접두사 캐시
- 시스템 프롬프트 캐시
- 추측적 디코딩
- 고급 병렬화 전략을 위한 Medusa
사용방법
요구사항
- 운영 체제: 리눅스
- 파이썬: 3.10
- NVIDIA GPU: 컴퓨팅 성능 7.0 이상(예: RTX20xx, RTX30xx, RTX40xx, V100, T4, A10/A30/A100, L4, H100 등)
시동 예
- 도커
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}} '
- 으악
# 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 릴리스 노트
FAQ
libcufft.so
오류 로그 : OSError: libcufft.so.11: cannot open shared object file: No such file or directory
해결방법 : cuda와 rtp-llm 버전이 일치하는지 확인해주세요.
libth_transformer.so
오류 로그 : OSError: /rtp-llm/maga_transformer/libs/libth_transformer.so: cannot open shared object file: No such file or directory
해결 방법 : whl 또는 docker를 통해 설치된 경우(bazel 빌드가 아님을 의미) 현재 디렉터리가 rtp-llm이 아닌지 확인하세요. 그렇지 않으면 Python이 설치된 whl 대신 상대 경로 패키지를 사용합니다.
Bazel 빌드 시간 초과
오류 로그 : ERROR: no such package '@pip_gpu_cuda12_torch//': rules_python_external failed: (Timed out)
해결 :
- open_source/deps/pip.bzl에서 pip 미러 저장소를 변경하고 extra_pip_args=["--index_url=xxx"]를 추가하세요.
- 특히 pytorch의 경우 수동으로 pip 설치 요구 사항을 충족해야 합니다. 해당 bazel 빌드의 경우 기본적으로 600초 시간 제한이 있으므로 pytorch 다운로드에 충분하지 않을 수 있습니다.
컬 오류 오류 로그 : 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
해결 방법 : tiktoken을 0.7.0으로 업그레이드하세요.
선적 서류 비치
- Docker 배포에서 테스트
- 제공 예
- RWKV-러너 예
- Python 라이브러리 예
- Aliyun Ecs에서 RTP-LLm 사용
- 구성 매개변수
- 소스 코드 빌드
- 요청 형식
- 다중 GPU 추론
- 로라
- P튜닝
- 시스템 프롬프트
- 재사용KVCache
- 다중 모드
- 임베딩/재순위 모델 배포
- 구조화된 가지치기
- 양자화
- 추측 샘플링
- 로드맵
- 기여
- 벤치마크 및 성능
감사의 말
우리 프로젝트는 주로 FasterTransformer를 기반으로 하며, 이를 기반으로 TensorRT-LLM의 일부 커널 구현을 통합했습니다. FasterTransformer와 TensorRT-LLM은 안정적인 성능을 보장해 주었습니다. Flash-Attention2와 cutlass는 지속적인 성능 최적화 프로세스에도 많은 도움을 주었습니다. 우리의 지속적인 일괄 처리 및 증분 디코딩은 vllm 구현을 기반으로 합니다. 샘플링은 Medusa의 구현을 통합하는 추측 샘플링과 llava 및 qwen-vl의 구현을 통합하는 다중 모드 부분을 사용하여 변환기를 사용합니다. 영감과 도움을 주신 이들 프로젝트에 감사드립니다.
외부 애플리케이션 시나리오(지속적으로 업데이트됨)
- 타오바오 웬다
- 알리바바의 국제 AI 플랫폼 에이지(Aidge)
- OpenSearch LLM 스마트 Q&A 에디션
- Taobao 검색의 대규모 언어 모델 기반 롱테일 쿼리 재작성
지원 모델 목록
법학대학원
- Aquila 및 Aquila2(BAAI/AquilaChat2-7B, BAAI/AquilaChat2-34B, BAAI/Aquila-7B, BAAI/AquilaChat-7B 등)
- Baichuan 및 Baichuan2(baichuan-inc/Baichuan2-13B-Chat, baichuan-inc/Baichuan-7B)
- 블룸(bigscience/bloom, bigscience/bloomz)
- ChatGlm(THUDM/chatglm2-6b, THUDM/chatglm3-6b, GLM4 등)
- Falcon(tiiuae/falcon-7b, tiiuae/falcon-40b, tiiuae/falcon-rw-7b 등)
- GptNeox(EleutherAI/gpt-neox-20b)
- GPT 빅코드(빅코드/스타코더, 빅코드/스타코더2)
- LLaMA 및 LLaMA-2(meta-llama/Llama-2-7b, Meta-llama/Llama-2-13b-hf, Meta-llama/Llama-2-70b-hf, lmsys/vicuna-33b-v1.3, 01-ai/Yi-34B, xverse/XVERSE-13B 등)
- MPT(mosaicml/mpt-30b-chat 등)
- Phi(microsoft/phi-1_5 등)
- Qwen(Qwen, Qwen1.5, Qwen2 등)
- InternLM(internlm/internlm-7b, internlm/internlm-chat-7b 등)
- Gemma(google/gemma-it 등)
- Mixtral(mistralai/Mixtral-8x7B-v0.1 등)
LLM + 멀티모달
- LLAVA(liuhaotian/llava-v1.5-13b, liuhaotian/llava-v1.5-7b)
- Qwen-VL(Qwen/Qwen-VL)
문의하기
딩톡 그룹
위챗 그룹