12G显存/Chat with RTX中文语言模型配置及使用体验

本文转载自知乎文章 https://zhuanlan.zhihu.com/p/689447958

image.png

一 、 Chat with RTX概述

Chat with RTX 是 Nvidia 发布的一款 Demo 应用程序,以此可以个性化 GPT 大语言模型 (LLM),使其连接到您自己的内容(文档、笔记、视频或其他数据),快速获得上下文相关答案。由于 Chat with RTX 全部在 Windows RTX PC 或工作站上本地运行,因此可以获得快速、安全的结果。

1. Chat with RTX 的优势

本地处理:隐私和性能的飞跃

Chat with RTX 的最重要优势之一是其本地处理功能。它利用 Nvidia RTX GPU 的强大计算能力,直接在用户的 PC 上运行,在 AI 交互中提供前所未有的速度和响应能力。这种本地执行模型可确保敏感数据保留在用户设备的范围内,从而提供云上人工智能服务无法比拟的隐私和数据安全级别。

高级内容分析:深入内部

Chat with RTX 包括.txt、.pdf、.doc/.docx 和 .xml 在内的多种文件格式以及 YouTube 视频。它采用复杂的人工智能模型来消化大量信息,提取相关见解并以极高的准确性总结复杂的数据。Chat with RTX 提供的深度分析超出了单纯的关键字匹配;它理解上下文,提取相关信息,并以连贯、简洁的方式呈现它。

2. Chat with RTX 的核心技术

Chat with RTX 功能的核心基于 Mistral / Llama 2 等先进的 AI 模型,借助检索增强生成 (RAG)、NVIDIA TensorRT-LLM 软件及 NVIDIA RTX 加速技术,使模型与 Nvidia Tensor 核心的计算能力相结合,可以促进快速、准确的数据查询,将生成式 AI 功能引入由NVIDIA 赋能的本地 Windows PC。硬件和软件之间的这种协同不仅体现了NVIDIA 致力于突破人工智能技术界限的承诺,而且还让我们得以一睹个人计算的未来,其中人工智能在提高生产力和实现新形式的创造力方面发挥着核心作用。

二 、 Chat with RTX安装

1. 软件安装及注意事项

首先来看官网软件运行系统需求:

image.png

本人电脑是今年刚配置的i5-13400F,内存32G,GPU是RTX 4070Ti 12G,满足上述需求,可以体验!从官网Build a Custom LLM with ChatRTX下载安装包NVIDIA_ChatWithRTX_Demo.zip,解压得到下图所示文件列表:

image.png

点击setup安装,首先是Software license agreement :

image.png

然后是安装选项页(下面的图和自己实际的不完全匹配,当时不知道啥原因,Llama2 13B INT4的选项是灰的,装不了,想想反正还有Mistral 7B INT4可以用,就先继续了。当然后面自己进行了定制和补救)

image.png

image.png

在安装前,根据网友们的提示,做了一些准备:

  1. 在安装过程中需要联网下载miniconda、python、及相应的依赖包,以及一些模型包,要确保网络能访问conda、github和Python仓库。
  2. 使用默认安装路径。如果选择将应用程序安装在默认安装位置之外的其他文件夹,请确保文件夹路径或文件夹名称中没有空格。
  3. 关闭杀毒软件,防止其干扰安装过程。

整个安装比较费时间,当你看到下述页面时,表示已经成功安装好了。

image.png

2. 离线使用

虽然模型的推理是利用TensorRT-LLM在本地进行,但是在使用中还是需要链接一下互联网(需要科学上网)。接下来我们就介绍下如何完全离线运行.

image.png
image.png
这里就要求去HF网站下载“WhereIsAI/UAE-Large-V1"这个模型。我们可以提前直接从HF下载(地址:https://huggingface.co/WhereIsAI/UAE-Large-V1/tree/main),然后将这个选项修改为本地路径就好。当然,对于无法访问HF的朋友,可以搜索百度云盘地址。

当然,如果你已经正常联网使用了一次,那么就可以将上述UAE-Large-V1地址改成本地缓存路径(我这里就使用了缓存的UAE-Large-V1模型):

image.png

三、中文大语言模型配置和Llama2补救

由于在Chat With RTX安装过程中没有成功安装Llama2模型,并且内置的两个语言模型对中文支持不是很好,因此需要增加中文模型,并将Llama2重新配置。

1. 安装chatglm3_6b_32k

要增加一个模型,需要TensorRT-LLM编译构建模型引擎。TensorRT-LLM是专门为大语言模型推理而设计的,工具能够加速AI模型的推理速度,让我们的模型运行起来更快,更节省内存。

幸运的是,Chat With RTX已经替我们事先安装好了一个TensorRT-LLM(版本号0.7.0)。

接下来我们详细说明如何安装大语言模型,首先我们得确认一下这个语言模型是必须是TensorRT-LLM支持的,查看NVIDIA/TensorRT-LLM官方网站,查询支持的大语言模型,图中红色方框标记的是我们将要增加的中文模型:

image.png

接下来,我们来添加ChatGLM:

0)下载chatglm3_6b_32k模型包;

1)从启动菜单栏,点击Miniconda3 Power Shell,进入PS命令行窗口;

2)激活RAG环境:这一步是激活Chat With RTX的环境,意味着我们接下来的操作和我们运行Chat With RTX处于同一情形,避免出现因为某些包的版本不匹配而造成的错误;

conda activate  C:\Users\yourname\AppData\Local\NVIDIA\ChatWithRTX\env_nvd_rag

3)进入TensorRT-LLM的chatglm目录:

cd C:\Users\yourname\AppData\Local\NVIDIA\ChatWithRTX\TensorRT-LLM\TensorRT-LLM-0.7.0\examples\chatglm\

image.png

4)构建TensorRT-LLM模型,

python build.py -m chatglm3_6b_32k --model_dir c:\\2024\\chatglm3_6b_32k  --output_dir trt_engines/chatglm3_6b-32k/fp16/1-gpu --use_weight_only --weight_only_precision int4 --max_input_len 3900

不幸的是,在build过程中报错,如图:

image.png

[E] 4: Internal error: plugin node PLUGIN_V2_GPTAttention_1 requires 24182729088 bytes of scratch space, but only 12878086144 is available.

Try increasing the workspace size with IBuilderConfig::setMemoryPoolLimit().

从字面上理解是内存(显存)不够造成的,查找相关文献,一般建议下述方法:

IBuilderConfig config = new IBuilderConfig();config.setMemoryPoolLimit(1024);

但在build.py中如何应用这个配置,似乎没有入口。

后来,在TensoRT-LLM官方中的Failed to Build Llama-7b Engine Because of Insufficient Memory找到了解决方案,增加选项--enable_context_fmha,可以 It can save lots of memory。实践发现有效!

5)构建成功后, 我们就能在trt_engines/chatglm3_6b-32k/fp16/1-gpu目录下看到生成好的引擎:

image.png

接下来我们打开文件夹, 找到C:\Users\Yourname\AppData\Local\NVIDIA\ChatWithRTX\RAG\trt-llm-rag-windows-main\model目录,创建一个新的文件夹:chatglm

image.png

然后在chatglm里面分别创建chatglm_enginechatglm_hf文件夹:

image.png

把上面生成好的引擎和配置文件复制到chatglm_engine文件夹中:

image.png

把我们下载的c:\2024\chatglm3_6b_32k文件夹中的config.jsontokenization_chatglm.pytokenizer.modeltokenizer_config.json文件放到chatglm_hf文件夹中:

image.png

打开C:\Users\Yourname\AppData\Local\NVIDIA\ChatWithRTX\RAG\trt-llm-rag-windows-main\config文件夹中的config.json文件, 将我们新创建的chatglm模型的信息放在里面,如下图:

image.png

至此,chatglm3_6b_32k已成功接入,后面我们统一进行测试。

2. Llama2补救配置

Chat With RTX在安装过程中,会对硬件进行检测,在缺省情况下,如果显存小于15G时,将不安装Llma2。

一种方法是在安装前修改安装RAG文件夹中的llama13b.nvi文件里面的 <string name="MinSupportedVRAMSize" value="15"/> 数值修,将"15"这个数值,修改成本机显卡的内存值,例如12(当然如果显存小于8G,就没有必要改了,装了也不能用)。

另一种方法,则是在安装后构建和配置Llama2,这个方法和前述的chatglm3_6b_32k构建和配置方法是一样的。

0)下载llama2_13B模型包;

1)利用前述的conda环境 ,进入TensorRT-LLM的llama目录

cd C:\Users\Yourname\AppData\Local\NVIDIA\ChatWithRTX\TensorRT-LLM\TensorRT-LLM-0.7.0\examples\llama

2)执行下述命令,构建llama语言引擎

python build.py --model_dir `C:\2024\Software\NVIDIA_ChatWithRTX_Demo\llama\llama13_hf --quant_ckpt_path C:\2024\Software\NVIDIA_ChatWithRTX_Demo\llama\llama13_int4_awq_weights\llama_tp1_rank0.npz --dtype float16 --remove_input_padding --use_gpt_attention_plugin float16 --enable_context_fmha --use_gemm_plugin float16 --use_weight_only --weight_only_precision int4_awq --per_group --output_dir C:\2024\llama13_int4_engine --world_size 1 --tp_size 1 --parallel_build --max_input_len 3900 --max_batch_size 1 --max_output_len 1024`

3)构建完成后,将相应模型引擎拷贝到的新建的llama目录中,并修改config.json文件。

3. 安装通义千问

安装流程与chatglm3_6b_32k构建和配置方法是一样,但新增下述要求,

首先要安装transformers_stream_generator和einops这两个包:

pip install transformers_stream_generator einops -i https://pypi.tuna.tsinghua.edu.cn/simple

然后执行下述命令构建:

python build.py --hf_model_dir C:\2024\Qwen_7B_Chat --dtype float16 --remove_input_padding --use_gpt_attention_plugin float16 --use_gemm_plugin float16 --use_weight_only --weight_only_precision int4 --output_dir ./Qwen/7B/trt_engines/int4_weight_only/1-gpu/ --max_input_len 2048

最后,复制模型目录D:\models\Qwen\Qwen-7B-Chat 的 config.json, tokenization_qwen.py,generation_config.json和tokenizer_config.json文件放到 E:\LLM\NVIDIA_ChatWithRTX\RAG\trt-llm-rag-windows-main\model\qwen\qwen_hf 文件夹中:

最后需要注意的是,qwen.tiktoken 这个不能缺。

四、不同语言模型测试

笔者以“模型抖动是什么原因”为题,分别使用上述语言模型,看看结果如何:

首先是Mistral,中文问题,英文回答(没有找到相关线索),显存占用7G左右。

image.png

image.png

其次,是Llama2,中文问题,英文回答(没有找到相关线索),显存占用12G左右(几乎满了)。

image.png

image.png

用英文问,回答的稍微好一点:

image.png

第三,是Chatglm,中文问题,中文回答,看似不错,显存占用9G左右。

image.png
image.png

五、体验小结

从个人测试和网友评价来看,Chat with RTX有这么几个不足:

一是预装的大模型Mistral和Llama2对中文语境支持比较差,这个可以增加优秀的中文模型来多个选择;

二是文档的读入速度比较慢,需要2分钟一篇的样子,如果没读完,程序禁止用户使用;

三是应用程序无法记住上下文,这意味着后续问题的回答不会基于先前问题的上下文;

四是响应中的源文件归属不一定正确。这将在以后的版本中改进。

另外,通义千问模型虽然编译构建配置成功了,但在使用时一直没有输出,不知道哪里出了问题,望有成功的高人可以指点指点。

Chat with RTX 向我们展示了个人 AI 的潜力,未来个人 AI 将成为我们数字生活不可或缺的一部分。Chat with RTX 标志着 AI 向更个性化、高效和安全的 AI 交互方式转变,赋予用户释放数据全部潜力的能力。当我们站在这个新时代的起点时,这种技术的意义深远,它不仅承诺提高我们对信息的理解和使用,还将激发我们在数字领域解决问题和抓住机遇方式上的创新。随着 Chat with RTX 的能力和应用的不断发展,我们将进入一个崭新的 AI 交互前沿,在这里个人数据分析变得更加容易访问、富有洞察力和安全。Chat with RTX 的旅程才刚刚开始,但它改革我们数字生活的潜力是不可否认的,标志着人工智能持续进化中的一个重要里程碑。

参考文献:

https://zhuanlan.zhihu.com/p/683494847

https://blog.csdn.net/jarodyv/article/details/136123162

https://blog.csdn.net/richardjung/article/details/136179448

https://zhuanlan.zhihu.com/p/683556790

作者:牛克思
原文:企业存储技术

推荐阅读

欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
5557
内容数
237
关注存储、服务器、图形工作站、AI硬件等方面技术。WeChat:490834312
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息