https://nvidia.github.io/TensorRT-LLM/quick-start-guide.html#launch-the-docker
https://github.com/triton-inference-server/tensorrtllm_backend
bashgit clone https://github.com/triton-inference-server/tensorrtllm_backend.git
cd tensorrtllm_backend
git submodule update --init --recursive
git lfs install
git lfs pull
挺大:2.5G tensorrtllm_backend/
bashdocker run --rm -it --net host --shm-size=4g \
--ulimit memlock=-1 --ulimit stack=67108864 --gpus device=1 \
-v /data/xiedong/tensorrtllm_backend:/tensorrtllm_backend \
-v /data/xiedong/engines:/engines \
-v /data/xiedong/Qwen2.5-14B-Instruct/:/Qwen2.5-14B-Instruct/ \
nvcr.io/nvidia/tritonserver:24.10-trtllm-python-py3
这里选镜像:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver/tags
bashcd /tensorrtllm_backend/tensorrt_llm/examples/qwen
# Convert weights from HF Tranformers to TensorRT-LLM checkpoint
python3 convert_checkpoint.py --model_dir /Qwen2.5-14B-Instruct \
--dtype float16 \
--tp_size 1 \
--output_dir ./tllm_checkpoint_1gpu_bf16
# Build TensorRT engines
trtllm-build --checkpoint_dir ./tllm_checkpoint_1gpu_bf16 \
--gemm_plugin float16 \
--output_dir /engines/gpt/fp16/1-gpu
Triton 推理服务器提供来自启动服务器时指定的一个或多个模型存储库的模型。在 Triton 运行时,可以按照模型管理中的说明修改所提供服务的模型。
这些存储库路径是在使用 --model-repository 选项启动 Triton 时指定的。可以多次指定 --model-repository 选项以包含来自多个存储库的模型。组成模型存储库的目录和文件必须遵循所需的布局。假设存储库路径指定如下。
https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md
bashmkdir /engines/triton_model_repo/
cp -r /tensorrtllm_backend/all_models/inflight_batcher_llm/* /engines/triton_model_repo/
填写配置参数:
bashENGINE_DIR=/engines/gpt/fp16/1-gpu
TOKENIZER_DIR=/Qwen2.5-14B-Instruct # HF模型所在
MODEL_FOLDER=/engines/triton_model_repo
TRITON_MAX_BATCH_SIZE=1 # 可以多给点,我这里为了测试下显存,给1
INSTANCE_COUNT=1
MAX_QUEUE_DELAY_MS=0
MAX_QUEUE_SIZE=0
FILL_TEMPLATE_SCRIPT=/tensorrtllm_backend/tools/fill_template.py
DECOUPLED_MODE=false
python3 ${FILL_TEMPLATE_SCRIPT} -i ${MODEL_FOLDER}/ensemble/config.pbtxt triton_max_batch_size:${TRITON_MAX_BATCH_SIZE}
python3 ${FILL_TEMPLATE_SCRIPT} -i ${MODEL_FOLDER}/preprocessing/config.pbtxt tokenizer_dir:${TOKENIZER_DIR},triton_max_batch_size:${TRITON_MAX_BATCH_SIZE},preprocessing_instance_count:${INSTANCE_COUNT}
python3 ${FILL_TEMPLATE_SCRIPT} -i ${MODEL_FOLDER}/tensorrt_llm/config.pbtxt triton_backend:tensorrtllm,triton_max_batch_size:${TRITON_MAX_BATCH_SIZE},decoupled_mode:${DECOUPLED_MODE},engine_dir:${ENGINE_DIR},max_queue_delay_microseconds:${MAX_QUEUE_DELAY_MS},batching_strategy:inflight_fused_batching,max_queue_size:${MAX_QUEUE_SIZE}
python3 ${FILL_TEMPLATE_SCRIPT} -i ${MODEL_FOLDER}/postprocessing/config.pbtxt tokenizer_dir:${TOKENIZER_DIR},triton_max_batch_size:${TRITON_MAX_BATCH_SIZE},postprocessing_instance_count:${INSTANCE_COUNT},max_queue_size:${MAX_QUEUE_SIZE}
python3 ${FILL_TEMPLATE_SCRIPT} -i ${MODEL_FOLDER}/tensorrt_llm_bls/config.pbtxt triton_max_batch_size:${TRITON_MAX_BATCH_SIZE},decoupled_mode:${DECOUPLED_MODE},bls_instance_count:${INSTANCE_COUNT}
填充完之后,各个文件夹下面是有一些配置文件的:
bashroot@GZ-LG401-G1-DOCKER-node-gpu-8:triton_model_repo# tree -L 2
.
|-- ensemble
| |-- 1
| `-- config.pbtxt
|-- postprocessing
| |-- 1
| `-- config.pbtxt
|-- preprocessing
| |-- 1
| `-- config.pbtxt
|-- tensorrt_llm
| |-- 1
| `-- config.pbtxt
`-- tensorrt_llm_bls
|-- 1
`-- config.pbtxt
10 directories, 5 files
bash# 'world_size' is the number of GPUs you want to use for serving. This should
# be aligned with the number of GPUs used to build the TensorRT-LLM engine.
python3 /tensorrtllm_backend/scripts/launch_triton_server.py --world_size=1 --model_repo=${MODEL_FOLDER}
这个日志表示启动成功:
bashI1122 06:29:55.578920 145 grpc_server.cc:2558] "Started GRPCInferenceService at 0.0.0.0:8001"
I1122 06:29:55.579121 145 http_server.cc:4713] "Started HTTPService at 0.0.0.0:8000"
I1122 06:29:55.620023 145 http_server.cc:362] "Started Metrics Service at 0.0.0.0:8002"
要停止容器内的 Triton 服务器,请运行:
bashpkill tritonserver
bashcurl -X POST http://101.136.8.66:8000/v2/models/ensemble/generate -d '{"text_input": "你是什么模型?", "max_tokens": 200, "bad_words": "", "stop_words": ""}'
返回:
bash# curl -X POST http://101.136.8.66:8000/v2/models/ensemble/generate -d '{"text_input": "你是谁?", "max_tokens": 200, "bad_words": "", "stop_words": ""}'
{"model_name":"ensemble","model_version":"1","sequence_end":false,"sequence_id":0,"sequence_index":0,"sequence_start":false,"text_output":"你是谁?你从哪里来?你到哪里去?这是哲学家们思考的问题。对于企业来说,这三个问题同样重要。企业从哪里来,决定了它的基因;企业到哪里去,决定了它的战略;而企业是谁,则决定了它的文化。企业文化是企业的灵魂,是企业发展的内在驱动力。企业文化是企业价值观、企业精神、企业制度、企业行为规范等的总和,是企业长期发展过程中形成的一套独特的、稳定的、具有鲜明个性的企业文化体系。\n企业文化是企业的灵魂,是企业发展的内在驱动力。企业文化是企业价值观、企业精神、企业制度、企业行为规范等的总和,是企业长期发展过程中形成的一套独特的、稳定的、具有鲜明个性的企业文化体系。\n企业文化是企业发展的内在驱动力。企业文化是企业价值观、企业精神、企业制度、企业行为规范等的总和,是企业长期发展过程中形成的一套独特的、稳定的、具有鲜明个性的企业文化体系。企业文化"}
https://github.com/triton-inference-server/tensorrtllm_backend/tree/main/inflight_batcher_llm/client
安装环境
bashpip3 install tritonclient[all] pip install transformers
访问例子:
bashpython3 /data/xiedong/tensorrtllm_backend/inflight_batcher_llm/client/inflight_batcher_llm_client.py --request-output-len 200 --tokenizer-dir "/data/xiedong/Qwen2.5-14B-Instruct"
bashpython3 /data/xiedong/tensorrtllm_backend/inflight_batcher_llm/client/end_to_end_grpc_client.py \
--url "localhost:8001" --streaming --output-len 100 \
--prompt "你是谁?"
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!