为NVDIA_ChatWithRTX构建中文LLM

AI 1个月前 admin
66 0 0

点击蓝字 关注我们

为NVDIA_ChatWithRTX构建中文LLM



为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

为NVDIA_ChatWithRTX构建中文LLM




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

为NVDIA_ChatWithRTX构建中文LLM

这个命令告诉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__)”

为NVDIA_ChatWithRTX构建中文LLM

如果输出显示了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文件夹中。

为NVDIA_ChatWithRTX构建中文LLM

接下来,将进行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/

为NVDIA_ChatWithRTX构建中文LLM

此命令通过使用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框架下快速执行推理。

为NVDIA_ChatWithRTX构建中文LLM

3、创建baichuan2_7b_init4_hf目录,并放置Baichuan模型的分词器(tokenizer)和config.json文件。

为NVDIA_ChatWithRTX构建中文LLM




03 ChatWithRTX配置更新

在ChatWithRTX的配置文件中,需要通过更新模型路径、分词器路径和TensorRT引擎路径,以指向新创建的目录和文件。

1、修改config.json

编辑config.json文件,添加以下包含Baichuan模型的相关信息:

为NVDIA_ChatWithRTX构建中文LLM

确保model_path、tokenizer_path和trt_engine_path指向之前创建的目录和文件。max_input_length值与–max_input_len命令值对应。

2、修改app_config.json

编辑app_config.json文件,切换为中文的embedded_model。

为NVDIA_ChatWithRTX构建中文LLM

确保name字段设置为正确的模型名称或ID,这样应用就能够从Hugging Face模型库中自动下载所需的模型。

完成这些修改后,保存config.json和app_config.json文件,并重新启动ChatWithRTX应用。应用会加载并使用Baichuan模型进行中文LLM推理,并且使用了新的中文embedded_model。

为NVDIA_ChatWithRTX构建中文LLM

至此,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】



往期精彩合集



● AIGC产品内容安全测试浅析

● 浅析常见加密算法

● Android LocalSocket 安全风险探讨

● 企业漏洞管理实践分享

● 从OS到BIOS SMM

● A Day in the Life of a Cyber Threat Analyst 网络威胁分析员的一天

● LLM Prompt 安全

● 在没有ROOT的手机上抓HTTPS

● 项目管理中的高效会议秘籍

● 开源安全:构建数字未来的坚固堡垒


联想GIC全球安全实验室(中国)

[email protected]


为NVDIA_ChatWithRTX构建中文LLM


原文始发于微信公众号(联想全球安全实验室):为NVDIA_ChatWithRTX构建中文LLM

版权声明:admin 发表于 2024年3月7日 下午4:31。
转载请注明:为NVDIA_ChatWithRTX构建中文LLM | CTF导航

相关文章