前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >chatglm.cpp使用手记

chatglm.cpp使用手记

作者头像
菩提树下的杨过
发布2023-08-13 11:18:52
1.5K0
发布2023-08-13 11:18:52
举报

目前绝大多数LLM模型都是python实现的,运行速度有限(包括ChatGLM2-6b),幸好有大神将其用C++重写了一遍,让运行速度大大提高。

项目地址:li-plus/chatglm.cpp: C++ implementation of ChatGLM-6B & ChatGLM2-6B (github.com)

部署过程如下(环境:WSL 2 ubuntu 22.04,显卡: N卡RTX 4060) - 注:无显卡,纯CPU也行

1、克隆项目

代码语言:javascript
复制
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp

2、编译

注:执行下面操作前,请先确保ubuntu环境里有make, cmake环境(没有请自行google或baidu)

纯CPU环境: 

代码语言:javascript
复制
cmake -B build
cmake --build build -j --config Release

有(nvidia cuda) GPU 环境:

代码语言:javascript
复制
cmake -B build -DGGML_CUBLAS=ON && cmake --build build -j --config Release

3、模型转换

原生的ChatGLM2-6B模型无法直接使用,需要将其转换成ggml的bin文件,假如我们已提前下载了 THUDM/chatglm2-6b-int4 · Hugging Face,放在windows主系统的e:\chatglm2-6b-in4目录

代码语言:javascript
复制
python3 convert.py -i /mnt/e/chatglm2-6b-int4 -t q4_0 -o chatglm2-6b-int4.bin

执行完后,将在当前目录下,得到1个名为chatglm2-6b-int4.bin

4、CLI 验证

代码语言:javascript
复制
 ./build/bin/main -m /home/jimmy/code/models/chatglm2-6b-int4.bin -i

 有显卡的情况下,c++版本与python版本速度的区别不太明显,但在纯CPU环境下,c++版本明显快很多。

5、python绑定

纯CPU环境:

代码语言:javascript
复制
pip install -U chatglm-cpp

nvidia CUDA环境: 

代码语言:javascript
复制
CMAKE_ARGS="-DGGML_CUBLAS=ON" pip install -U chatglm-cpp

Mac环境:

代码语言:javascript
复制
CMAKE_ARGS="-DGGML_METAL=ON" pip install -U chatglm-cpp

安装好以后,cd examples目录:

  • CLI模式验证
代码语言:javascript
复制
 python cli_chat.py -m /home/jimmy/code/models/chatglm2-6b-int4.bin -i
  • web_demo
  • api-demo

 先安装

代码语言:javascript
复制
pip install 'chatglm-cpp[api]'

然后就可以验证了:

代码语言:javascript
复制
MODEL=/home/jimmy/code/models/chatglm2-6b-int4.bin uvicorn api_demo:app --host 127.0.0.1 --port 8080

MODEL=后面的路径,大家根据情况换成模型的实际路径,这里的api_demo.app,实际是在examples/api_demo.py里指定的

同时从源码里可以看到,对外暴露了2个url,如果顺利的话,启动后将看到类似以下输出:

如果启动过程中报错:

pandas PydanticImportError:`BaseSettings`已移动到`pydantic-settings`包中

可以尝试:

代码语言:javascript
复制
pip install ydata-profiling

启动成功 后,用ApiPost验证一下:

  •  longchain-api

先启动

代码语言:javascript
复制
MODEL=/home/jimmy/code/models/chatglm2-6b-int4.bin uvicorn chatglm_cpp.langchain_api:app --host 127.0.0.1 --port 8000

然后测试longchain-client

代码语言:javascript
复制
python langchain_client.py

源代码如下:

代码语言:javascript
复制
from langchain.llms import ChatGLM

llm = ChatGLM(endpoint_url="http://127.0.0.1:8000", max_token=2048, top_p=0.7, temperature=0.95, with_history=False)
print(llm.predict("你好"))

如果运行过程中报错 PydanticUserError: If you use `@root_validator` with pre=False (the default) you MUST specify `skip_on_failure=True`. Note that `@root_validator` is deprecated and should be replaced with `@model_validator`. For further information visit https://errors.pydantic.dev/2.0.2/u/root-validator-pre-skip

 尝试:

代码语言:javascript
复制
pip install ydata-profiling

参考文章:

ChatGLM | 🦜️🔗 Langchain

langchain.llms.chatglm.ChatGLM — 🦜🔗 LangChain 0.0.262

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档