点击蓝字 关注我们
为NVDIA_ChatWithRTX
构建中文LLM
前言
前段时间部署了NVDIA_ChatWithRTX模型,它的核心价值在于利用RAG技术显著增强大型语言模型LLM的检索功能,尤其是对于本地文档的搜索能力。然而,使用的过程中发现,尽管该模型具备中文理解能力,但其生成中文回答的效果并不理想。为了改善这一状况,计划为其构建中文LLM,并将其集成至ChatWithRTX模型中,以提升其中文回答的质量与准确性。通过这一举措,期望模型能够更全面地支持中文语境下的交互与应用。
【NVDIA ChatWithRTX】
01 ChatWithRTX介绍
Chat with RTX是一个基于NVIDIA技术的聊天机器人平台,于2024年2月13日由NVIDIA发布。它利用内置在NVIDIA游戏显卡中的Tensor-RT核心(RTX 30或40系列的显卡),结合大语言模型(LLM),对个人数据进行分析并提供答案。
Chat with RTX的主要特点包括:
1、本地运行:与ChatGPT和Copilot等云端AI聊天服务不同,Chat with RTX完全在个人电脑上运行,不需要将任何数据发送到云服务器。这保证了用户数据的安全性和隐私性。
2、数据集灵活:用户可以根据自己的需求提供相关的数据集,Chat with RTX会分析这些数据集并提供答案。此外,它还可以解析PDF、Word文档和纯文本,以及链接YouTube视频并解释视频内容。
3、技术支持:Chat with RTX基于TensorRT-LLM和RTX加速技术,利用检索增强生成(RAG)功能,可以快速灵活地为用户提供见解。
4、文件格式支持:Chat with RTX支持多种文件格式,包括文本文件、PDF、DOC/DOCX和XML。用户只需指定包含目标文件的文件夹,该应用会在几秒内将目标文件加载到库中。
5、开发者友好:NVIDIA提供了TensorRT-LLM RAG开发者参考项目,开发者可以借鉴该项目自行开发和部署面向RTX、基于RAG且由TensorRT-LLM加速的应用。
02 ChatWithRTX安装
ChatWithRTX安装步骤
步骤一:访问官网下载
首先,访问ChatWithRTX的官方并下载应用:https://www.nvidia.com/en-us/ai-on-rtx/chat-with-rtx-generative-ai/。
步骤二:下载与解压
下载完成后,将获得的压缩文件进行解压。
步骤三:安装应用
进入解压后的文件夹,找到名为“setup.exe”的安装文件。双击该文件,按照屏幕上的提示进行默认安装。安装过程中需耐心等待,直到安装完成。
重要提示:网络设置
在运行ChatWithRTX的过程中,应用会尝试连接到huggingface以检查一个向量化工具的模型。为确保应用的顺利运行,需要自行解决网络问题。如果遇到连接失败的情况,请检查网络连接,并尝试使用VPN或其他方法访问huggingface。
【TensorRT-LLM】
01 TensorRT-LLM介绍
TensorRT-LLM是NVIDIA推出的一个开源库,主要用于定义、优化和执行大型语言模型(LLM)在生产环境的推理。
具体来说,TensorRT-LLM具有多种功能和特性,包括:
1、支持模型架构定义、预训练权重编译和推理加速,为大型语言模型提供高效、优化的运行环境。
2、提供Python API来编译TensorRT引擎,方便用户进行模型部署和推理。
3、提供组件创建Python/C++ Runtimes,用于执行TensorRT引擎,支持多GPU、多结点运算,以及工作调度、数据格式优化等。
4、在GPU上实现SOTA(State-of-the-Art)级别的优化推理,带来更高的性能表现。
5、包含一个可与Triton Inference Server集成的backend,方便用户在分布式环境中进行模型推理。
6、自带主流的预定义热门大语言模型,包括baichuan、LlaMA、ChatGLM、BLOOM、GPT等,方便用户快速部署和使用。
注意:
在TensorRT-LLM的example中,可查看支持的模型:https://github.com/NVIDIA/TensorRT-LLM/tree/rel/examples
02 TensorRT-LLM安装
环境准备
1、Python 10安装:
· 访问Python官方下载页面:https://www.python.org/
· 下载并安装Python 10,确保将其添加到系统环境变量中。
2、CUDA安装:
· 访问NVIDIA的CUDA下载页面:https://developer.nvidia.com/cuda-downloads
· 下载并安装CUDA版本12或更高。确保选择与操作系统(Windows)和架构(x86_64)兼容的版本。
· 安装时,请遵循安装程序的指示,并确保安装过程中没有错误。
3、cuDNN安装:
· 访问NVIDIA的cuDNN下载页面:https://developer.nvidia.com/cudnn
· 下载cuDNN库,确保版本与已安装的CUDA版本兼容。
· 解压下载的cuDNN压缩包。
· 进入CUDA安装目录(通常是C:Program FilesNVIDIA GPU Computing ToolkitCUDAv1x.x,其中v1x.x是CUDA版本号)。
· 将cuDNNbin目录下的二进制文件(.dll)复制到CUDA的bin目录中。
· 将cuDNNinclude的头文件(.h)复制到CUDA的include目录中。
· 将cuDNNlibx64的库文件(.lib)复制到CUDA的libx64目录中。
4、Anaconda安装:
· 访问Anaconda的下载页面:https://repo.anaconda.com/archive/,可选择清华源镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
· 下载合适版本的Anaconda 3安装程序(例如Anaconda3-2023.09-0-Windows-x86_64.exe)。
· 运行安装程序并按照屏幕上的指示进行安装。确保在安装过程中选择“为所有用户安装”并将Anaconda添加到系统环境变量中。
5、Microsoft MPI安装:
· 访问Microsoft MPI的下载页面:https://www.microsoft.com/en-us/download/details.aspx?id=57467
· 下载最新版本的Microsoft MPI安装程序。
· 运行安装程序并按照屏幕上的指示进行安装。
安装及验证
运行以下pip命令来安装tensorrt_llm:
pip install tensorrt_llm –extra-index-url https://pypi.nvidia.com –extra-index-url https://download.pytorch.org/whl/cu121
这个命令告诉pip从https://pypi.nvidia.com和https://download.pytorch.org/whl/cu121这两个额外的索引URL中查找并安装tensorrt_llm包。同时,由于使用的CUDA版本是12.1,所以使用了cu121这个后缀的索引URL。
安装完成后,便能够导入tensorrt_llm模块并在Python中使用。通过运行以下Python代码来验证安装是否成功:
python -c “import tensorrt as trt; print(trt.__version__)”
如果输出显示了tensorrt_llm的版本号,那么说明安装成功。
【构建ChatWithRTX中文LLM】
01 模型编译及转换
在安装完TensorRT-LLM之后,便可以着手构建基于中文LLM的ChatWithRTX应用。
以Baichuan模型为例,整个流程如下:
首先,访问huggingface,下载Baichuan2-7B-Chat对齐模型:https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat,下载完成后,将模型文件放置在TensorRT-LLM的examples文件夹中。
接下来,将进行TensorRT的编译及模型转换。在此过程中,TensorRT将对原始7B模型进行优化,并应用4BT量化技术,以提升模型在NVIDIA GPU上的运行效率。由于这是一个涉及大量计算和优化的过程,因此编译和转换需要花费一定的时间来完成。
命令如下:
python build.py –model_version v2_7b –model_dir Baichuan2-7B-Chat –dtype float16 –use_gemm_plugin float16 –use_gpt_attention_plugin float16 –use_weight_only –weight_only_precision int4 –max_input_len 3900 –output_dir ./tmp/baichuan_v2_7b/trt_engines/int4_weight_only/1-gpu/
此命令通过使用build 构建TensorRT模型,并针对Baichuan2-7B-chat模型进行优化及配置。
命令解读:
1、–model_version v2_7b:指定模型版本为v2_7b。
2、–model_dir Baichuan2-7B-Chat:指定模型文件所在的目录,即Baichuan2-7B-Chat模型的下载和解压后的路径。
3、–dtype float16:设置模型的数据类型为半精度浮点数(float16),加速推理并减少GPU内存使用。
4、–use_gemm_plugin float16:使用TensorRT的GEMM(General Matrix Multiply)插件,并指定其数据类型为float16。GEMM插件用于优化矩阵乘法操作,可提升性能。
5、–use_gpt_attention_plugin float16:使用TensorRT为GPT模型注意力机制优化的插件,并指定其数据类型为float16。用于加速GPT模型中的注意力层计算。
6、–use_weight_only:仅使用模型的权重进行构建,而不包括激活值(如中间层的输出)。这可以减少模型的大小和加载时间。
7、–weight_only_precision int4:设置权重的精度为int4(即4位整数量化)。
8、–max_input_len 3900:设置模型的最大输入长度为3900个tokens。这限制了模型可以处理的文本长度。
9、–output_dir./tmp/baichuan_v2_7b/trt_engines/int4_weight_only/1-gpu/:指定构建后TensorRT引擎的输出目录。构建完成的引擎文件将保存在此目录下。
完成模型编译和转换后,将拥有一个经过TensorRT优化加速的模型,该模型可以在TensorRT-LLM框架下运行,并可为ChatWithRTX应用提供的中文LLM支持。
02 模型目录安装
通过以下步骤,将编译好的Baichuan模型集成到ChatWithRTX中,如下:
1、在ChatWithRTX项目的model/baichuan目录下,创建一个新的目录baichuan2_7b_int4_engine,用于存放TensorRT构建输出的文件。
2、将之前通过build生成的TensorRT引擎文件(通常是.engine文件)复制到新创建的baichuan2_7b_int4_engine目录中。这些文件是模型优化后的产物,用于在TensorRT框架下快速执行推理。
3、创建baichuan2_7b_init4_hf目录,并放置Baichuan模型的分词器(tokenizer)和config.json文件。
03 ChatWithRTX配置更新
在ChatWithRTX的配置文件中,需要通过更新模型路径、分词器路径和TensorRT引擎路径,以指向新创建的目录和文件。
1、修改config.json
编辑config.json文件,添加以下包含Baichuan模型的相关信息:
确保model_path、tokenizer_path和trt_engine_path指向之前创建的目录和文件。max_input_length值与–max_input_len命令值对应。
2、修改app_config.json
编辑app_config.json文件,切换为中文的embedded_model。
确保name字段设置为正确的模型名称或ID,这样应用就能够从Hugging Face模型库中自动下载所需的模型。
完成这些修改后,保存config.json和app_config.json文件,并重新启动ChatWithRTX应用。应用会加载并使用Baichuan模型进行中文LLM推理,并且使用了新的中文embedded_model。
至此,ChatWithRTX的中文LLM能力便以构建完成。
参考文章
https://github.com/NVIDIA/TensorRT-LLM/blob/main/docs/source/blogs/quantization-in-TRT-LLM.md
https://github.com/NVIDIA/TensorRT-LLM/blob/rel/windows/README.md#tensorrt-llm-for-windows
https://www.nvidia.cn/ai-on-rtx/chat-with-rtx-generative-ai/
https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat
【END】
往期精彩合集
● 浅析常见加密算法
长
按
关
注
联想GIC全球安全实验室(中国)
原文始发于微信公众号(联想全球安全实验室):为NVDIA_ChatWithRTX构建中文LLM