ChatGLM2-6B部署

如何看待chatglm2?真实效果怎么样? - 知乎

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA - 知乎

GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型

清华大学开源ChatGLM2-6B开源模型在anaconda下的虚拟环境详细部署及安装教程_best_mimo的博客-CSDN博客

一、环境

  • python 3.10.11(使用anaconda就不需要运行)
  • git
  • PYTORCH 2.0.1(使用anaconda就不需要运行)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  • CUDA:11.8版本
    • GPU卡驱动的安装最好不要使用cuda自带的,最好单独安装,特别是需要安装使用多个版本CUDA时。要注意GPU卡驱动版本要高于CUDA所需版本。
    • 安装 NVIDIA 显卡驱动程序
      • 下载地址:http://www.nvidia.cn/Download/index.aspx?lang=cn
      • 默认安装路径: C:\NVIDIA\DisplayDriver\531.41\Win11_Win10-DCH_64\International
    • 安装CUDA 11.8
      • 下载CUDA前,先确认GPU显卡所支持的CUDA版本,
      • 下载地址:CUDA Toolkit 12.2 Update 2 Downloads | NVIDIA Developer
      • 控制面板-》NVIDIA控制面板-》帮助-》系统信息-》组件-》nvidia.dll后面的cuda参数详情:https://www.cnblogs.com/yingchuan-hxf/p/7710071.html
      • 默认安装目录在: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
      • 查看是否安装成功 cmd目录下 运行 nvcc -V
    • 安装cuDNN v8.6.0
      • 下载地址:https://developer.nvidia.com/rdp/cudnn-download下载cuDNN v8.6.0 ,需要注册才能下载。下载文件:cudnn-windows-x86_64-8.6.0.163_cuda11-archive.zip文件
      • 把cuda\bin目录下的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin 目录下.
      • 把\cuda\ include目录下的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include 目录下.
      • 把\cuda\lib\x64\目录下的文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64 目录下.
  • anaconda
    • Free Download | Anaconda
    • 在anaconda里建立一个环境,比如叫chatglm2-6b, 然后用activate 激活即可。
    • conda create --name chatglm2-6b python==3.11.4
    • conda activate chatglm2-6b
    • conda 配置清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
    • conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
    • pip config set global.index-url Simple Index
    • 激活以后,安装必须的轮子:pip install -r requirements.txt
    • 如果你前面没有装 CUDA11,那就没办法装 pytorch2.0,系统就会提示。请乖乖回去装 CUDA11和CUDNN。

二、源码和模型安装

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

下载的时候发现源代码很小,模型巨大,推荐直接去清华镜像站下载模型,Hugging Face太慢了:

清华大学云盘

https://huggingface.co/THUDM/chatglm2-6b/tree/main

ChatGLM2-6B部署_第1张图片

并将下载的文件替换到本地的 chatglm2-6b 目录下。

将模型下载到本地之后,将以上代码中的 THUDM/chatglm2-6b 替换为你本地的 chatglm2-6b 文件夹的路径,即可从本地加载模型。

模型的实现仍然处在变动中。如果希望固定使用的模型实现以保证兼容性,可以在 from_pretrained 的调用中增加 revision="v1.0" 参数。v1.0 是当前最新的版本号,完整的版本列表参见 Change Log。


下面的方法是用git的LFS管理,请安装后,从huggingface中下载模型(不推荐):

pip  install git-lfs
git lfs install
git clone https://huggingface.co/THUDM/chatglm2-6b 或者指定文件夹也行
git clone https://huggingface.co/THUDM/chatglm2-6b $PWD/chatglm2-6b

Git LFS(Large File Storage)是一个用于管理大文件的扩展,旨在解决 Git 仓库中大文件带来的问题。在传统的 Git 仓库中,大文件的版本控制可能会导致仓库变得庞大,下载和克隆仓库的速度变慢,同时也增加了存储和网络带宽的开销。Git LFS 通过将大文件存储在远程服务器上,而不是直接存储在 Git 仓库中,来解决这些问题。

Hugging Face 是一个致力于自然语言处理(NLP)领域的开发者社区和平台,他们提供了一系列优秀的 NLP 工具和库,以及预训练的语言模型,以帮助开发者在各种 NLP 任务上取得出色的成果。

我到这里就卡死了。科学方法或者不科学方法都不能正常clone这大约8G个的模型数据,没事,上Huggingface下载吧


搞定以后, 把这些bin文件拷贝到你放模型的文件夹下,比如我放在chatglm2-6b文件夹下。运行前,检查web_demo.py。反正是python源码,一条一条执行可以排错。也可以一气呵成先试试看能否运行。

我的显存为6G,所以我改为4 bit量化

tokenizer = AutoTokenizer.from_pretrained(r"C:\Users\40696\Desktop\Seafile\ChatGLM2\ChatGLM2-6B\model", trust_remote_code=True)
model = AutoModel.from_pretrained(r"C:\Users\40696\Desktop\Seafile\ChatGLM2\ChatGLM2-6B\model", trust_remote_code=True).half().quantize(4).cuda()

温馨提示,根据实际显卡显存 (如何看自己的显存,前面我已经讲过了,自己的显存要和下面代码对应,不对应就会报错并且烧坏显卡,注意注意!!),可以更改第6行关于model运行方式:

# 6G 显存可以 4 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()

# 10G 显存可以 8 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()

# 14G 以上显存可以直接不量化,博主显存为16G选择的就是这个
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().cuda()

pip3 install -r requirements.txt

python web_demo.py

三、API 部署

安装额外的依赖 pip install fastapi uvicorn

运行仓库中的 api.py:python api.py

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

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"
}

四、微调

GitHub - hiyouga/LLaMA-Efficient-Tuning: Easy-to-use LLM fine-tuning framework (LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, ChatGLM2)

你可能感兴趣的:(部署,python,人工智能,chatgpt)