目录

TensorRT-LLM

TensorRT-LLM 为用户提供了易于使用的 Python API 来定义大型语言模型 (LLM) 并构建包含最先进优化的 TensorRT 引擎,以便在 NVIDIA GPU 上高效地执行推理。 TensorRT-LLM 还包含用于创建执行这些 TensorRT 引擎的 Python 和 C++ 运行时的组件。

Build TensorRT-LLM

# TensorRT-LLM uses git-lfs, which needs to be installed in advance.
apt-get update && apt-get -y install git git-lfs

git clone https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
git submodule update --init --recursive
git lfs install
git lfs pull

make -C docker release_build

查看镜像

docker images --filter reference=tensorrt_llm/release
REPOSITORY             TAG       IMAGE ID       CREATED        SIZE
tensorrt_llm/release   latest    94001d38cf79   33 hours ago   33.2GB

Build TensorRT engine(s)

docker run --gpus 1 --rm -it -v /data/models:/data/models tensorrt_llm/release:latest bash

cd examples/chatglm/
python build.py -m chatglm3_6b --model_dir /data/models/llm/chatglm3-6b --output_dir /data/models/trt-engines/chatglm3-6b/fp16/1-gpu
[TRT-LLM] [I] Total time of building all 1 engines: 00:04:20

查看生成的 TensorRT engine(s)

ll -h /data/models/trt-engines/chatglm3-6b/fp16/1-gpu
total 12G
drwxr-xr-x 2 root root 4.0K Dec 12 14:25 ./
drwxr-xr-x 3 root root 4.0K Dec 12 14:21 ../
-rw-r--r-- 1 root root  12G Dec 12 14:25 chatglm3_6b_float16_tp1_rank0.engine
-rw-r--r-- 1 root root 1.7K Dec 12 14:25 config.json

Run TensorRT-LLM

单节点、单GPU

# Run the default engine of ChatGLM3-6B on single GPU, other model name is available if built.
python3 ../run.py --input_text "你是谁?" \
                  --max_output_len 50 \
                  --tokenizer_dir /data/models/llm/chatglm3-6b \
                  --engine_dir /data/models/trt-engines/chatglm3-6b/fp16/1-gpu
Input [Text 0]: "[gMASK]sop 你是谁?"
Output [Text 0 Beam 0]: "你有什么目的?你有什么能力?我为什么要相信你?
python3 ../run.py --input_text "写一篇1000字的玄幻小说" \
                  --max_output_len 1024 \
                  --tokenizer_dir /data/models/llm/chatglm3-6b \
                  --engine_dir /data/models/trt-engines/chatglm3-6b/fp16/1-gpu
Input [Text 0]: "[gMASK]sop 写一篇1000字的玄幻小说"
Output [Text 0 Beam 0]: ",讲述一个神秘的世界,这个世界有魔法、神秘生物和奇幻的冒险故事。
在一个神秘的世界中,魔法、神秘生物和奇幻的冒险故事充斥着每一个角落。这个世界被称为“奇幻大陆”,由许多种族组成,包括人类、精灵、兽人、矮人、巨魔、龙等等。每一个种族都有自己独特的文化和传统,同时也存在着许多神秘的生物和魔法。
在这个世界中,有一个年轻的人类男孩叫做亚瑟。亚瑟出生在一个普通的人类家庭,但他从小就表现出了对魔法和神秘生物的浓厚兴趣。他常常独自一人深入森林和山脉,探索那些被认为充满神秘和魔法的地方。
有一天,亚瑟在森林中发现了一个神秘的洞穴。他走进去,发现里面有一个巨大的石柱,上面刻满了奇怪的符号和文字。在石柱的底部,他发现了一个神秘的盒子。当他打开盒子时,里面出现了一只神秘的生物。
这只生物看起来像是一只猫,但它的毛发是紫色的,眼睛是蓝色的,而且它能够发出非常强大的魔法能量。亚瑟被这只神秘生物吓到了,但他很快就发现了它的善良和神秘生物的能力。他开始和这只生物一起冒险,探索这个神秘的世界。
他们一起穿越了森林和山脉,探索了许多神秘的地方,遇到了许多奇幻的生物和魔法。他们遇到了一只巨大的飞龙,它能够飞行千里,喷出非常强大的火焰。他们还遇到了一只叫做“地精”的生物,它能够挖掘出非常珍贵的矿石和珠宝。
在这个过程中,亚瑟和神秘生物学会了许多技能和魔法。亚瑟学会了如何使用魔法,神秘生物学会了如何使用它的能力来帮助别人。他们一起战胜了许多强大的敌人,也帮助了许多需要帮助的人。
最终,亚瑟和神秘生物完成了一次伟大的冒险。他们探索了许多神秘的地方,遇到了许多奇幻的生物和魔法,最终成功地完成了他们的任务。亚瑟也学会了如何在这个神秘的世界中生存,并且变得更加勇敢和自信。
这就是亚瑟的故事,一个勇敢的人类男孩,通过一次神秘的冒险,探索了一个充满魔法、神秘生物和奇幻的"

Streaming

python3 ../run.py --input_text "你是谁?" \
                  --max_output_len 1024 \
                  --tokenizer_dir /data/models/llm/chatglm3-6b \
                  --engine_dir /data/models/trt-engines/chatglm3-6b/fp16/1-gpu \
                  --streaming

Triton Inference Server

docker pull nvcr.io/nvidia/tritonserver:23.11-py3

TensorRT-LLM Backend

克隆仓库

git clone https://github.com/triton-inference-server/tensorrtllm_backend.git  # --branch <release branch>
# Update the submodules
cd tensorrtllm_backend
# Install git-lfs if needed
apt-get update && apt-get install git-lfs -y --no-install-recommends
git lfs install
git submodule update --init --recursive

运行 Docker 容器

docker run --rm -it --net host --shm-size=2g \
    --ulimit memlock=-1 --ulimit stack=67108864 --gpus 1 \
    -v $(pwd):/tensorrtllm_backend \
    -v /data/models/llm/chatglm3-6b:/models \
    -v /data/models/trt-engines/:/engines \
    nvcr.io/nvidia/tritonserver:23.11-trtllm-python-py3

创建模型仓库

# Create the model repository that will be used by the Triton server
cd tensorrtllm_backend
mkdir triton_model_repo

# Copy the example models to the model repository
cp -r all_models/inflight_batcher_llm/* triton_model_repo/

# Copy the TRT engine to triton_model_repo/tensorrt_llm/1/
cp /engines/chatglm3_6b/fp16/1-gpu/* triton_model_repo/tensorrt_llm/1

修改模型配置

启动 Triton Inference Server

python3 scripts/launch_triton_server.py --world_size=1 --model_repo=/tensorrtllm_backend/triton_model_repo

出现错误:UNAVAILABLE: Internal: ValueError: Tokenizer class ChatGLMTokenizer does not exist or is not currently imported.

参考资料