ChatGLM2-6B本地化部署

ChatGLM2-6B本地化部署

一. 背景介绍

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:

  1. 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。

  2. 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练。对于更长的上下文,我们发布了 ChatGLM2-6B-32K 模型。LongBench 的测评结果表明,在等量级的开源模型中,ChatGLM2-6B-32K 有着较为明显的竞争优势。

  3. 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。

  4. 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用

二. 本地化部署工作

2.1 基础了解

transformers 大模型中的github,通过如下方式可以自动下载模型实现和参数

//对应的实际地址为 huggingface.co/THUDM/chatglm2-6b
AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

cuda(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。
pytorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。

2.2 版本选择和适配
2.2.1 确认本地环境可以运行的模型量化等级

注意该项目的说明:https://github.com/THUDM/ChatGLM-6B/blob/main/README.md,结合本地机器的显存大小(gpu运行)或内存大小(cpu运行),选择本地部署的模型的量化等级

Multi-Query Attention 同时也降低了生成过程中 KV Cache 的显存占用,此外,ChatGLM2-6B 采用 Causal Mask 进行对话训练,连续对话时可复用前面轮次的 KV Cache,进一步优化了显存占用。因此,使用 6GB 显存的显卡进行 INT4 量化的推理时,初代的 ChatGLM-6B 模型最多能够生成 1119 个字符就会提示显存耗尽,而 ChatGLM2-6B 能够生成至少 8192 个字符。  
量化等级编码 2048 长度的最小显存生成 8192 长度的最小显存
FP16 / BF1613.1 GB12.8 GB
INT88.2 GB8.1 GB
INT45.5 GB5.1 GB
2.2.2 版本适配

访问pytorch官网 ,根据自身的情况选择pytorch适配版本
在这里插入图片描述

注意说明:

  1. 如上windows系统,显卡是amd显卡,不支持,可以选择CPU运行,不过较慢;或者选择基于容器或者虚拟机等形式搭建linux环境
  2. 注意先后顺序,需要先安装cuda对应的版本(确认当前的系统的N卡是否支持对应的版本)
  3. 安装对应的torch版本
2.3 本地运行问题处理
2.3.1 选择的模型太大,下载中断

安装git LFS,先下载,然后本地运行

# chatglm2-6b 15G左右
git clone https://huggingface.co/THUDM/chatglm2-6b
# chatglm2-6b-int4 4G左右
git clone https://huggingface.co/THUDM/codegeex2-6b-int4

下载完成之后,选择加载本地模型运行

# 本地加载模型,因为是笔记本,只有6G显存,所以选择加载运行chatglm2-6b-int4模型
tokenizer = AutoTokenizer.from_pretrained("E:\\ChatGLM2-6B\\models\\chatglm2-6b-int4", trust_remote_code=True)  
model = AutoModel.from_pretrained("E:\\ChatGLM2-6B\\models\\chatglm2-6b-int4", trust_remote_code=True).cuda()
2.3.2 版本问题,无法运行

AssertionError: Torch not compiled with CUDA enabled
说明:主要为Torch版本和CUDA版本不适配问题
不匹配前,操作为先卸载torch,然后根据2.2.2版本适配,重新下载适配的版本,注意先安装cuda,然后pip安装对应的torch版本

import torch  
print(torch.__version__)  
print(torch.cuda.is_available())  
2.0.1+cpu  
False

匹配后

import torch  
print(torch.__version__)  
print(torch.cuda.is_available())  
2.0.1+cu117
True
2.3.2 选择web_demo.py运行

初步看,可以简单的聊天,并能写程序。
在这里插入图片描述

三. 简单聊聊场景

3.1 结合LangChain实现本地知识库

实现过程:包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答

3.2 ai编程助手

https://github.com/THUDM/CodeGeeX2

CodeGeeX2 是多语言代码生成模型 CodeGeeX (KDD’23) 的第二代模型。不同于一代 CodeGeeX(完全在国产华为昇腾芯片平台训练) ,CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现,得益于 ChatGLM2 的更优性能,CodeGeeX2 在多项指标上取得性能提升(+107% > CodeGeeX;仅60亿参数即超过150亿参数的 StarCoder-15B 近10%),更多特性包括:

  • 更强大的代码能力:基于 ChatGLM2-6B 基座语言模型,CodeGeeX2-6B 进一步经过了 600B 代码数据预训练,相比一代模型,在代码能力上全面提升,HumanEval-X 评测集的六种编程语言均大幅提升 (Python +57%, C++ +71%, Java +54%, JavaScript +83%, Go +56%, Rust +321%),在Python上达到 35.9% 的 Pass@1 一次通过率,超越规模更大的 StarCoder-15B。
  • 更优秀的模型特性:继承 ChatGLM2-6B 模型特性,CodeGeeX2-6B 更好支持中英文输入,支持最大 8192 序列长度,推理速度较一代 CodeGeeX-13B 大幅提升,量化后仅需6GB显存即可运行,支持轻量级本地化部署。
  • 更全面的AI编程助手:CodeGeeX插件(VS Code, Jetbrains)后端升级,支持超过100种编程语言,新增上下文补全、跨文件补全等实用功能。结合 Ask CodeGeeX 交互式AI编程助手,支持中英文对话解决各种编程问题,包括且不限于代码解释、代码翻译、代码纠错、文档生成等,帮助程序员更高效开发。
  • 更开放的协议:CodeGeeX2-6B 权重对学术研究完全开放,填写登记表申请商业使用。

CodeGeeX插件测试使用:

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了将ChatGPT模型本地化部署,您可以按照以下步骤进行操作: 1. 下载模型: 首先,您需要从OpenAI获取ChatGPT模型的权重文件。您可以在OpenAI平台上订阅并下载所需模型的权重文件。 2. 设置运行环境: 在本地部署之前,请确保您的系统符合所需的运行环境。ChatGPT模型通常需要较高的计算资源和内存。您可以根据OpenAI提供的要求设置并配置系统。 3. 安装依赖项: ChatGPT模型的本地化部署可能需要一些依赖项。请确保您安装了相关的Python库和其他必要的软件包。您可以参考OpenAI提供的文档来获取所需的依赖项列表。 4. 加载模型: 使用适当的库和函数加载ChatGPT模型的权重文件。您可以使用Python中的TensorFlow或PyTorch等深度学习框架来加载和使用模型。 5. 配置输入输出: 确定与ChatGPT模型交互的输入和输出格式。根据您的需求,可能需要将输入数据进行预处理或后处理。 6. 进行推理: 使用加载的模型对输入数据进行推理。根据ChatGPT模型的设计,您可以使用生成对话或回答问题等方式与其进行交互。 7. 优化性能: 根据需要,您可以对部署ChatGPT模型进行性能优化。例如,使用批处理推理、并行化计算或模型压缩等技术来提高模型的效率。 请注意,这只是一个概述了ChatGPT模型本地化部署的一般步骤。具体的实现细节可能因您使用的框架、模型配置和目标平台而有所不同。确保参考OpenAI的文档、示例代码和其他资源以获取更详细的指导和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值