Code前端首页关于Code前端联系我们

ChatGLM2-6B 开源大型模型部署指南

terry 2年前 (2023-09-23) 阅读数 73 #AI人工智能

1. ChatGLM2-6B

关于ChatGLM2-6B,开源项目中的介绍如下:ChatGLM2-6B[1][1]二代源码中文- 英语双语对话模型ChatGLM-6BChatGLM2-6B在保持第一代机型对话流畅、部署门槛低等诸多优良特性的基础上,引入了以下新特性:

  • • 更高性能:基于业界开发经验第一代ChatGLM模型,基础模型ChatGLM2-6B已全面升级。 ChatGLM2-6B使用混合GLM目标函数,并使用1.4T中英文标识符进行预训练,并针对人类偏好对齐进行训练。评估结果显示,相比第一代模型,ChatGLM2-6B在MMLU(+23%)、CEval(+33%)、GSM8K(+571%)和BBH(+60)等数据集上的表现%) 有了显着的提升,在同规模的开源模型中具有很强的竞争力。
  • •更长的上下文:基于Flash Attention技术,基础模型的上下文长度(Context Length)从ChatGLM-6B 2K扩展到32K,并在对话阶段使用8K的上下文长度进行训练。对于更长的上下文,开发团队还发布了 ChatGLM2-6B-32K 模型。 LongBench评测结果表明,ChatGLM2-6B-32K在同尺寸的开源模型中具有明显的竞争优势。
  • • 更高效的推理:ChatGLM2-6B 基于 Multi-Query Attention 技术,推理速度更高效,内存占用更低:根据模型官方实现,推理速度较原版提升 42%第一代,6G显存支持的INT4会话长度从1K定量增加到8K。
  • • 更开放的协议:ChatGLM2-6B余额完全开放给学术研究,完成注册问卷后允许免费商业使用。

当然,您还可以通过chatglm.cn[2]体验更多ChatGLM。另外,如果您将其用于商业用途,请务必遵守其同意。 开源大模型ChatGLM2-6B部署指南

2。准备部署

本文中的部署基于Windows Server。如果您的设备是Linux或Mac,可以参考项目文档进行部署。

在部署ChatGLM2-2b模型之前,您必须首先确保系统上已安装python版本3.9.x或更高版本。如果你还没有安装,可以使用Anaconda或者直接从python官网下载[3]。

然后我们使用git将ChatGLM2-6b项目下载到本地

git clone https://github.com/THUDM/ChatGLM2-6B.git
cd ChatGLM2-6B

下载完成后,安装依赖

pip install -r requirements.txt

transformers推荐库版本为‸.20,tor ch 为了获得最佳推理性能,建议使用版本 2.0 及更高版本。

在Windows安装过程中,很可能会因为找不到C++库而出现异常导入_sentencepiece时无法加载DLL。这时候建议去Microsoft[4]安装C++库来解决这个问题。安装完开源大模型ChatGLM2-6B部署指南DLL

后,我迫不及待地想体验一下大模型,于是直接通过命令想要体验一下

python  web_demo.py

,但是失败了。首先,它将在运行时使用变压器自动下载模型实现和参数。完整的模型在 Hugging Face Hub[5] 中实现。我的网络环境不好,所以决定先下载模型,让ChatGLM2-6B在本地加载模型。下载大约需要一个小时。编辑本地要加载的模型,将from_pretrained()路径更改为本地模型路径:

tokenizer = AutoTokenizer.from_pretrained("D:\codespace\LLM\model\chatglm2-6b", trust_remote_code=True)
# GPU推理
# model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

# cpu推理
model = AutoModel.from_pretrained("D:\codespace\LLM\model\chatglm2-6b", trust_remote_code=True).float()

如果您使用的是Windows操作系统,可以打开任务管理器,查看硬件是否有一个GPU。如果是,建议您选择以下GPU部署方式来尝试大型ChatGLM2-6B模型。 开源大模型ChatGLM2-6B部署指南GPU

2.CPU部署

CPU部署ChatGLM2-6B,建议需要32G内存。由于我刚刚尝试了ChatGLM2-6B,所以我按照官方标准配置了服务器。改成:

model = AutoModel.from_pretrained("D:\codespace\LLM\model\chatglm2-6b", trust_remote_code=True).float()

要运行基于Gradio的demo网页版,运行以下命令:

python web_demo.py

其实是可以运行的,但是不知道为什么,即使按照项目文档,加上了run 改为方法share = Fasle,改为True后,仍然无法通过外网访问。

demo.queue().launch(share=True, inbrowser=True)

所以我用的是网页版的demo,经过官方测试,运行起来比较流畅。

streamlit run web_demo2.py

好的,运行起来了,给同事试了一下,但是CPU推理速度确实很低。拍个小视频,附上截图大家试试:

python api.py

回想起来,服务器的CPU资源直接被羞死了。 开源大模型ChatGLM2-6B部署指南CPU资源

首先我使用8核,然后16核,最后32核。虽然推理速度略有提升,但仍然不够流畅,CPU 资源仍然占满。

所以我还是不建议你使用CPU部署。太费力了,折磨机器和人!

3。部署GPU

有些朋友可能从来没有部署或者使用过GPU学习,没关系!我会告诉你如何使用GPU。确认您的设备支持 GPU 后,安装驱动程序,前往 Nvidia[6]下载驱动并安装开源大模型ChatGLM2-6B部署指南安装 Windows 11 的 GPU 驱动

安装 GPU 驱动 GPU驱动

需要注意的一点,别忘了检查touch和cuda对应的版本,不然很可能会报错

AssertionError: Torch not compiled with CUDA enabled

安装完成后,我们进入项目运行streamlit运行web_demo2.py,体验一下!让它为我们写一首诗吧! 开源大模型ChatGLM2-6B部署指南AIGC

4.API 部署

ChatGLM2-6B 还支持交互式命令行对话框和 API 部署。由于API部署使用较多,所以这里展示一下API的使用方法。穿

首先需要安装其他依赖项pip install fastapi uvicorn然后在存储库中运行api.py

python api.py

。默认通过 POST 方法部署在本地 8000 端口,调用

curl -X POST "http://127.0.0.1:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'

得到的返回值为

{
  "response":"你好?!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。",
  "history":[["你好","你好?!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。"]],
  "status":200,
  "time":"2023-03-23 21:38:40"
}

python,运行仓库❙⓹python 实现。以 OpenAI 格式进行流式 API 部署,并可用作任何基于 GPT 的应用程序的后端。通过这个demo和优化不就可以实现商业应用了吗?不过,不要忘记请求令牌! 开源大模型ChatGLM2-6B部署指南chatglm2-6b

5。感想

大ChatGPT模型自2、3月份流行以来,一鸣惊人,如今遍地开花。它看起来就像一场猛烈的风暴,将吞噬生活的各个领域并带来颠覆性的变化。目前大模型的应用还不完善和普及,但相信很多公司已经在基于开源大模型和一些积累的数据做机器学习和数据集训练,来完善自己原有的产品。还有雕塑,相信垂直领域全行业通用的大模型很快就会到来...

我个人的一些看法:

未来大模型的发展不仅仅是在云端,而是在本地和本地云环境共同成长。不仅越大越好,还应考虑轻型部署。大模型不应该是高科技公司的专利,也不应该是云服务商的专属服务,而是一场惠及所有大中小型企业的人工智能革命。大型模型包含数据保护,因此对于许多公司来说,本地化和轻量级部署可能是首选的最终解决方案。此外,企业对小规模数据集进行针对性训练的需求非常迫切,因此去权重和本地化应该是大规模模型未来发展的长期可持续趋势。

我最关心的是中小企业如何在这场GPT风暴中掌舵并扬帆远航?

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门