首页 > 其他分享 >【大模型实战篇】利用TensorRT LLM部署及推理大模型实战(bloom560m、chatglm-6b等大模型)

【大模型实战篇】利用TensorRT LLM部署及推理大模型实战(bloom560m、chatglm-6b等大模型)

时间:2024-11-27 18:59:49浏览次数:7  
标签:6b -- 模型 实战篇 TensorRT LLM docker

1. TensorRT-LLM基础介绍

        TensorRT-LLM 是 NVIDIA 用于做 LLM(Large Language Model)的可扩展推理方案。基于 TensorRT 深度学习编译框架来构建、编译并执行计算图,并借鉴了许多 FastTransformer 中高效的 Kernels 实现,然后利用 NCCL 完成设备之间的通讯。TensorRT-LLM 提供了一个易于使用的 Python API,让用户能够定义大型语言模型(LLMs)并构建包含 TensorRT 引擎,以便在 NVIDIA GPU 上执行推理【1,2,3】。

     【3,4】对TensorRT-LLM的架构进行了介绍。TensorRT + FastTransFormer + NCCL + Python api => TensorRT-LLM。

        传统TensorRT需要将Pytorch模型转成Onnx,然后再将Onnx转成TensorRT。一般还需要做数据对齐,plugin编写,Onnx修改来适配TensorRT plugin。深度学习模型通常使用各种框架(如PyTorch、TensorFlow、Keras等)进行训练和部署,而每个框架都有自己的模型表示和存储格式。ONNX(Open Neural Network Exchange) 是一个开放的、跨平台的神经网络模型交换格式。主要目标是实现机器学习模型的互操作性,使得模型可以在不同的框架和运行时之间轻松迁移。ONNX 模型由节点和边组成的计算图表示。ONNX使用Protobuf作为其模型文件的序列化格式。Protobuf是一种轻量级的、高效的数据交换格式,但它在序列化和反序列化大型数据时有一个默认的大小限制。在Protobuf中,默认的大小限制是2GB。单个序列化的消息不能超过2GB的大小。

        TensorRT-LLM 作为优化大语言模型(LLM)推理的库,提供了包括自定义注意力核、批处理、分页键值缓存、量化(如 FP8、INT4 AWQ、INT8 SmoothQuant 等)以及更多优化手段,在 NVIDIA GPU 上高效地进行推理。提供了一个 Python API,用于将 LLM 构建为优化过的 TensorRT 引擎。包含 Python 绑定和 C++ 运行时,用于执行这些 TensorRT 引擎。此外,它还包括与 NVIDIA Triton 推理服务器集成的后端。使用 TensorRT-LLM 构建的模型可以在各种配置下运行,从单个 GPU 到多个节点、多个 GPU(使用张量并行和/或流水线并行)。此外,也提供了几种预定义的流行模型。通过类似 PyTorch 的 Python API修改和扩展以满足自定义需求。

        TensorRT-LLM 构建于 TensorRT 深度学习推理库之上。它利用了 TensorRT 大部分的深度学习优化,并在此基础上添加了 LLM 特定的优化,TensorRT 是一个预编译器,它构建“引擎”,这些引擎是编译后的模型的优化表示,包含整个执行图。这些引擎是针对特定的 GPU 架构进行优化的,可以在生产环境中进行验证、基准测试和序列化以便后续部署。

2. TensorRT-LLM部署大模型推理实战

        实战一般绕不开环境配置,tensorrt-llm也是如此,一开始我是按照官网提供的案例【5】来操纵,不出意外得出了各种报错,要么是系统依赖的版本问题,要么是编译mpi出错,搞了半天。后来实在觉得这条路子不好走,就换了一种思路。

        (1)先去下载nvidia的NVIDIA Container Toolkit,绕过手动配置环境的困扰。这里docker pull镜像的时候,最好加一下国内的加速代理,不然又要很崩溃。当然也可以在本地用魔法先下载镜像,然后采用docker save -o  xxx.tar  #对应container保存镜像,然后上传到服务器,再执行docker load -i xxx.tar,然后再启动容器。

        docker镜像地址:https://hub.docker.com/r/nvidia/cuda/tags?page=2&name=12.4

docker pull nvidia/cuda:12.4.0-devel-ubuntu22.04 

docker run --rm --ipc=host --runtime=nvidia --gpus all --entrypoint /bin/bash -it nvidia/cuda:12.4.0-devel-ubuntu22.04

        成功启动docker镜像后,输入docker ps找到对应容器,进入容器环境:

 docker exec -it xxx bash

        这里可能需要注意下,如果本地显卡的cuda版本最好和docker镜像的配置一致,不然后面又会各种报错。还有建议下载ubuntu22.04系统的版本,带python3.10版本。

        (2)接下来在容器中安装TensorRT-LLM,这一步需要花些时间。

# Install dependencies, TensorRT-LLM requires Python 3.10
apt-get update && apt-get -y install python3.10 python3-pip openmpi-bin libopenmpi-dev git git-lfs

pip3 install tensorrt_llm -U --extra-index-url https://pypi.nvidia.com

# Check installation
python3 -c "import tensorrt_llm"        

2.1 部署运行bloom560m

        需要git clone TensorRT-LLM的项目,并且安装对应大模型的依赖。

git clone https://github.com/NVIDIA/TensorRT-LLM.git

cd TensorRT-LLM

pip install -r examples/bloom/requirements.txt

git lfs install

        按照惯例,我们从modelscope上拉取对应大模型的参数文件。

git clone https://modelscope.cn/models/AI-ModelScope/bloom-560m.git

        然后执行三部曲:(1)执行模型参数convert;(2)build tensorrt engine;(3)运行engine

        从推理结果看,bloom-560m的效果貌似很差。

2.2 部署运行chatglm-6b

        从modelscope上拉取对应大模型的参数文件。

(1)执行convert_checkpoint.py  

cd ~/TensorRT-LLM/examples/chatglm   

python3 convert_checkpoint.py --model_dir /root/chatglm3-6b/ \
                --dtype float16 \
                --output_dir /root/TensorRT-LLM/examples/chatglm/6b/trt_ckpt/fp16/1-gpu/

(2)build tensorrt engine.

trtllm-build --checkpoint_dir /root/TensorRT-LLM/examples/chatglm/6b/trt_ckpt/fp16/1-gpu/ \
                --gemm_plugin float16 \
                --output_dir /root/TensorRT-LLM/examples/chatglm/6b/trt_engines/fp16/1-gpu/

(3)运行engine

python3 /root/TensorRT-LLM/examples/run.py --input_text "What's result of 1 plus 1?" \
                  --max_output_len 50 \
                  --tokenizer_dir /root/chatglm3-6b/  \
                  --engine_dir /root/TensorRT-LLM/examples/chatglm/6b/trt_engines/fp16/1-gpu/

        从结果看,chatglm-6b的推理结果还可以。

3. 参考材料

【1】TensorRT-LLM部署Qwen

【2】TensorRT-LLM实战

【3】​NVIDIA大模型推理框架TensorRT-LLM

【4】TensorRT-LLM实战指南

【5】TensorRT-LLM/examples/qwen/README.md at main · NVIDIA/TensorRT-LLM · GitHub

标签:6b,--,模型,实战篇,TensorRT,LLM,docker
From: https://blog.csdn.net/weixin_65514978/article/details/143815654

相关文章

  • 从头开始构建一个大型语言模型《Build a Large Language Model (From Scratch)》附PDF
    通过从头开始构建一个大型语言模型,了解如何创建、训练和调整大型语言模型(LLMs)!一、构建大型语言模型(从头开始)在《构建大型语言模型(从头开始)》中,你将了解如何LLMs从内到外工作。在这本富有洞察力的书中,畅销书作家塞巴斯蒂安·拉施卡(SebastianRaschka)将指导你逐步创建......
  • 库存系统:仓库层、调度层、销售层的库存数据模型设计
    大家好,我是汤师爷~让我们深入探讨库存概念模型设计,这是实现库存管理系统的基础,也是确保库存数据准确性和一致性的关键。库存的数据模型设计如图所示,展示了库存概念模型设计。通过合理的概念模型设计,我们可以更好地支持库存管理的各项业务需求。仓库层仓库层是实际存放和管理......
  • AI大模型的基本概念和国内各种大模型介绍
    我们现在使用的kimi,文心一言,豆包等手机app或网页,即所谓的AI工具,背后都是大语言模型。一、什么是大模型?大模型(LargeModel)是指使用大规模数据和深层神经网络训练出来的人工智能模型。这些模型有数十亿甚至数千亿个参数(类似大脑神经元),通过处理海量数据,学习人类语言、图像、声音等......
  • AIGC系统中多个模型的切换调用方案探索
    作者:京东科技贾玉龙1背景1.1现状AIGC系统中多个模型的切换调用通常指的是在同一个AIGC系统或应用中,可以根据不同的输入条件或任务需求,动态地选择并调用不同的机器学习模型进行处理。是一个AIGC系统能力不可或缺的环节。目前现行方案中,一般直接请求不同的会话聊天对应不同的......
  • RFM模型
    https://wiki.mbalib.com/wiki/RFM模型https://baike.baidu.com/item/RFM模型/7070365 根据美国数据库营销研究所ArthurHughes的研究,客户数据库中有3个神奇的要素,这3个要素构成了数据分析最好的指标:最近一次消费(Recency)消费频率(Frequency)消费金额(Monetary)  ......
  • NeurIPS2024 | 提高专业生产力,让你的AI画作布局可控,360 AI Research开源新模型HiCo
    前言 为了解决这一问题,360人工智能研究院在人工智能顶会NeurIPS2024上提出了布局可控AI绘画模型HiCo,并将于近期开源。基于HiCo模型,使用者可以对生成画面中的不同主体的布局进行自由控制和调整,实现“指哪打哪”的生成效果。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、......
  • 【数据治理】大模型赋能,重塑数据治理新篇章
            在数字化时代,数据已成为企业最重要的资产之一。然而,数据治理的复杂性和挑战性也随之增加。如何有效地管理、利用和保护数据,成为企业面临的重要课题。本文将深入探讨大模型如何赋能数据治理,助力企业构建高效、智能的数据治理体系。大模型在数据治理中的核......
  • 新型大语言模型的预训练与后训练范式,阿里Qwen
    前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整流程。后训练通常涵盖监督指导微调和对齐过程,而这些在ChatGPT的推广下变得广为......
  • 大模型--模型量化GPTQ--23
    目录1.参考2.OBD3.OBS4.从OBS到OBQ5.GPTQGradientPreTrainedQuantity1.参考GPTQ量化技术演进:https://zhuanlan.zhihu.com/p/690834228?utm_id=0OBS/OBD/GPTQ:https://www.cnblogs.com/wangbingbing/p/17547681.htmlGPTQ使用的方法改进自OBC(Frantar,2022),OBC来......
  • DAMODEL丹摩|《ChatGLM-6B 在丹摩智算平台的部署与使用指南》
     声明:非广告,为用户体验文章目录一、引言二、ChatGLM-6B模型简介ChatGLM-6B的特点三、DAMODEL平台部署ChatGLM-6B1.实例创建2.模型准备3.模型启动四、通过WebAPI实现本地使用1.启动服务2.开放端口3.使用PostMan测试功能4.本地代码使用功能五、总......