【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。

这篇具有很好参考价值的文章主要介绍了【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,项目地址

https://github.com/li-plus/chatglm.cpp.git

这个项目和llama.cpp 项目类似,使用C++ 去运行模型的。
项目使用了 ggml 这个核心模块,去运行的。
可以支持在 cpu 上面跑模型。

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

更强大的性能: 基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
更长的上下文: 基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
更高效的推理: 基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。

2,准备环境,使用python的docker进行安装

下载代码:

git clone --recursive https://github.com/li-plus/chatglm.cpp.git

要是超时可以分开下载:

git clone  https://github.com/li-plus/chatglm.cpp.git
cd chatglm.cpp/third_party

git clone https://github.com/ggerganov/ggml.git
git clone https://github.com/pybind/pybind11.git
git clone https://github.com/google/sentencepiece.git

要是网络不好可以这样下载,速度也快:

git clone  https://ghproxy.com/https://github.com/li-plus/chatglm.cpp.git
cd chatglm.cpp/third_party

git clone https://ghproxy.com/https://github.com/ggerganov/ggml.git
git clone https://ghproxy.com/https://github.com/pybind/pybind11.git
git clone https://ghproxy.com/https://github.com/google/sentencepiece.git

然后运行docker 并配置python 的源:

docker run -itd --name python -p 8000:8000 -p 7860:7860 -v `pwd`/chatglm.cpp:/data python:slim-bullseye

docker exec -it python bash

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com/pypi/simple/
 

echo "deb https://mirrors.aliyun.com/debian/ bullseye main contrib non-free" > /etc/apt/sources.list && \
echo "deb https://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \
echo "deb https://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list && \
echo "deb https://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list 

3,安装依赖包,使用特殊命令安装pytorch的cpu版本

只安装 cpu 版本的 pytorch ,可以减少镜像大小。
特别注意pytorch2.0 只支持 3.10 的最低版本,其他版本安装不上。

apt-get update && apt-get -y install g++ cmake

# 只是安装 cpu 的版本:
pip3 install torch==2.0.1+cpu torchvision==0.15.2+cpu torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cpu


pip3 install uvicorn fastapi==0.92.0 sse_starlette chatglm-cpp tabulate tqdm gradio transformers==4.30.2

4,进行模型转换,把chatglm2-6b模型转换下

需要下载模型,安装git-lfs 把模型下载即可

cd /data
apt-get install git-lfs
# 下载模型
git clone https://huggingface.co/THUDM/chatglm2-6b-int4

# 然后就可以转换模型了,chatglm2-6b-int4 是下载的模型文件夹
python3 convert.py -i chatglm2-6b-int4 -t q4_0 -o chatglm2-ggml.bin

# 稍等下,如果没有报错信息,说明转换成功。会有个  chatglm2-ggml.bin 文件

3.3G  chatglm-ggml.bin # 说明转换成了。

ChatGLM2-6B,各种尺寸的模型,需要消耗的资源:

Q4_0 Q4_1 Q5_0 Q5_1 Q8_0 F16 F32
ms/token (CPU @ Platinum 8260) 64 71 79 83 106 189 372
ms/token (CUDA @ V100 SXM2) 9.7 9.4 10.3 10.2 14.0 19.1 33.0
ms/token (MPS @ M2 Ultra) 11.0 11.7 N/A N/A N/A 32.1 N/A
file size 3.3GB 3.7GB 4.0GB 4.4GB 6.2GB 12GB 24GB
mem usage 3.4GB 3.8GB 4.1GB 4.5GB 6.2GB 12GB 23GB

5,启动web demo 界面,启动api 接口

需要修改下 web_demo.py 的最后一行:
因为是docker 做端口映射,需要把 IP 修改成 0.0.0.0 本机就可以访问了。


demo.queue().launch(share=False, inbrowser=True,server_name="0.0.0.0", server_port=7860)
cd /data/examples
python3 web_demo.py 

Running on local URL:  http://0.0.0.0:7860
To create a public link, set `share=True` in `launch()`.

【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。,chatgpt,python,人工智能,开发语言

如果没有报错,说明启动成功了,端口是7860 ,直接通过web访问即可。

启动 api 接口:

python3 api_demo.py 
INFO:     Started server process [5843]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

执行命令测试接口,和chatgpt 的接口是一样的。

curl http://127.0.0.1:8000/v1/completions -H 'Content-Type: application/json' -d '{"prompt": "你好"}'
{
    "object":"text_completion",
    "response":"你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。",
    "model":"chatglm2-6b",
    "choices":[
        {
            "text":"你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。",
            "index":0,
            "finish_reason":"stop"
        }
    ],
    "usage":{

    }
}

6,使用docker 把镜像的运行打包,在CPU下运行环境搭建

dockerfile

# 构建 python 
# FROM python:slim-bullseye 使用最新的slim 版本。
# docker build . -t chatglm.cpp:latest
FROM python:slim-bullseye as builder


RUN echo "deb https://mirrors.aliyun.com/debian/ bullseye main contrib non-free" > /etc/apt/sources.list && \
echo "deb https://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \
echo "deb https://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list && \
echo "deb https://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/  && \
pip config set install.trusted-host mirrors.aliyun.com/pypi/simple/

RUN apt-get update && apt-get -y install g++ cmake && \
 pip3 install torch==2.0.1+cpu torchvision==0.15.2+cpu torchaudio==2.0.2 \
 --index-url https://download.pytorch.org/whl/cpu && \
 pip3 install uvicorn fastapi==0.92.0 sse_starlette chatglm-cpp tabulate tqdm gradio transformers==4.30.2

# 拷贝本地文件到目录
COPY . /data

# service
FROM python:slim-bullseye

# 直接使用基础镜像然后拷贝 site-packages 安装包即可。
COPY --from=builder /data/examples /data/examples
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages


WORKDIR /data
# 设置python 的环境变量和 fask app文件。
ENV LC_ALL="C.UTF-8" LANG="C.UTF-8"
ENV PYTHONPATH="/data"

EXPOSE 8000 7860

ENTRYPOINT ["/data/examples/docker-entrypoint.sh"]

CMD ["/bin/sh"]

其中启动脚本 docker-entrypoint.sh 是:

#!/bin/sh

ls -lh

echo "############# start python3 web_demo.py #############"
cd /data/examples
python3 web_demo.py
sleep 99999d

执行打包命令:

docker build . -t chatglm.cpp:latest

然后就可以启动了,必须注意不能挂载当前的源代码文件夹了,否则会报错:
ModuleNotFoundError: No module named ‘chatglm_cpp._C’
https://github.com/li-plus/chatglm.cpp/issues/91
尝试下cd到别的路径下运行,在chatglm.cpp目录下执行,包名会跟仓库里的chatglm_cpp文件夹冲突

这样启动就可以了:

docker run -itd --name chatglm -p 8000:8000 -p 7860:7860 -v `pwd`/chatglm.cpp/chatglm-ggml.bin:/data/chatglm-ggml.bin chatglm.cpp:latest

然后就可以访问web 界面了。

7,总结

也可以支持英文,但是最后几个字有点问题。最后有点乱码,不知道是不是因为模型裁剪的问题。
同时也有可能是原始素材就有这个问题。
【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。,chatgpt,python,人工智能,开发语言
可以使用docker 在 CPU上面运行 chatglm ,同时安装了 pytorch 的CPU 版本,镜像缩小到 1.5 G了。
并且速度也是非常的快了。可以在非GPU的机器上面运行了。可以解决很多问题呢。文章来源地址https://www.toymoban.com/news/detail-721470.html

到了这里,关于【chatglm2】使用Python在CPU环境中运行 chatglm.cpp 可以实现本地使用CPU运行chatglm2模型,速度也特别的快可以本地部署,把现有项目进行AI的改造。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac(M1Pro)下运行ChatGLM2

          最近很多人都尝试在M1/M2芯片下跑chatglm/chatglm2,结果都不太理想,或者是说要32G内存才可以运行。本文使用cpu基于chatglm-cpp运行chatglm2的int4版本。开了多个网页及应用的情况下(包括chatglm2),总体内存占用9G左右。chatglm2可以流畅的运行了。虚拟环境为python 3.10,使用c

    2024年02月13日
    浏览(40)
  • LLMs之ChatGLM2:ChatGLM2-6B本地部署之单机推理(API/CLI/GUI)、低成本部署(GPU量化部署/CPU及其量化部署/Mac部署/多卡部署)、有限资源下高效微调(全参/P-t

    LLMs之ChatGLM2:ChatGLM2-6B本地部署之单机推理(API/CLI/GUI)、低成本部署(GPU量化部署/CPU及其量化部署/Mac部署/多卡部署)、有限资源下高效微调(全参/P-tuning v2)、模型评估和推理之图文教程之详细攻略 目录 一、配置基础环境及其注意事项 第一步、检测软硬件环境

    2024年02月07日
    浏览(40)
  • 基于MacBook Pro M1芯片运行chatglm2-6b大模型

    ChatGLM2-6B代码地址 chatglm2-6b模型地址 Mac M1芯片部署 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性: 更强大的性能。 更长的上下文。 更高效的推理。 更开放的协

    2024年01月25日
    浏览(47)
  • 使用 CPU 本地安装部署运行 ChatGLM-6B 获得自己的专属 AI 宠物

    ChatGLM-6B 是一个清华开源的、支持中英双语的对话语言模型,基于GLM架构,具有62亿参数。结合模型量化技术,ChatGLM-6B可以本地安装部署运行在消费级的显卡上做模型的推理和训练(全量仅需14GB显存,INT4 量化级别下最低只需 6GB 显存)虽然智商比不过 openAI 的 ChatGPT 模型,但

    2024年02月16日
    浏览(44)
  • 在矩池云使用ChatGLM-6B & ChatGLM2-6B

    ChatGLM-6B 和 ChatGLM2-6B都是基于 General Language Model (GLM) 架构的对话语言模型,是清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同发布的语言模型。模型有 62 亿参数,一经发布便受到了开源社区的欢迎,在中文语义理解和对话生成上有着不凡的表现。 ChatGLM-6B 可以在消费级的显卡

    2024年02月14日
    浏览(43)
  • 清华大学开源ChatGLM2-6B开源模型在anaconda下的虚拟环境详细部署及安装教程

    python版本要求:3.8以上 没有安装python的没有关系,我们在下面安装anaconda中会自动生成python,有了python的建议删除,通过anaconda安装python以便于后面创建虚拟环境。 windows系统:Windows 10 以上,推荐N卡(NVIDIA显卡20系列以上) 注意:处理器为AMD容易报错,intel的不容易报错,配

    2024年02月16日
    浏览(74)
  • Windows环境下搭建chatGLM2-6B-int4量化版模型(图文详解-成果案例)

    目录 一、ChatGLM2-6介绍 二、环境准备 1. 硬件环境 2. TDM-GCC安装 3.git安装 4.Anaconda安装 三、模型安装 1.下载ChatGLM2-6b和环境准备 方式一:git命令 方式二:手动下载  2.下载预训练模型 在Hugging Face HUb下载(挂VPN访问) (1)git命令行下载: (2)手动下载(建议) 3.模型使用(

    2024年03月13日
    浏览(40)
  • 使用Triton部署chatglm2-6b模型

    NVIDIA Triton Inference Server是一个针对CPU和GPU进行优化的云端和推理的解决方案。 支持的模型类型包括TensorRT、TensorFlow、PyTorch(meta-llama/Llama-2-7b)、Python(chatglm)、ONNX Runtime和OpenVino。 NVIDIA Triton Server是一个高性能的推断服务器,具有以下特点: 1. 高性能:Triton Server为使用GPU进行推

    2024年02月08日
    浏览(46)
  • 【chatgpt】使用docker运行chatglm3,原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务,可以本地运行啦

    https://github.com/THUDM/ChatGLM3 介绍 ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性: 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数

    2024年02月05日
    浏览(40)
  • 关于大模型ChatGLM3-6B在CPU下运行

            最近在调研市场上语言大模型,为公司的产品上虚拟人的推出做准备。各厂提供语言模型都很丰富,使用上也很方便,有API接口可以调用。但唯一的不足,对于提供给百万用户使用的产品,相比价格都比较贵。所以对ChatGLM3-6B的使用做了深入了解,特别只有CPU没有

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包