前言
最近chatgpt比较火,正好看到国内有个类似开源的结构,那不得试试、
一、ChatGLM-6B是什么?
ChatGLM-6B是清华大学知识工程和数据发掘小组(Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University)发布的一个开源的对话机器人。依据官方介绍,这是一个千亿参数规划的中英文言语模型。并且对中文做了优化。本次开源的版别是其60亿参数的小规划版别,约60亿参数,本地布置仅需求6GB显存。
二、装置虚拟的python环境
ChatGLM-6B 代码中有一些python3.7支持的语法,所以要有python3.7+ 的环境。咱们运用conda来办理python环境 conda分为anaconda和miniconda。anaconda是包含一些常用包的版别,miniconda则是精简版.本文中咱们将运用anaconda
1.下载
能够在官网中找到自己需求的版别进行下载,假如你体系也是ubutu 64位的,也能够运用我下载的版别进行装置
2.装置
在上一步下载的装置包同级,运用指令行履行以下指令
# 此处需写实践下载称号
bash Anaconda3-2023.03-Linux-x86_64.sh
然后依据提示操作即可
3.设置国内源(风险)
能够参阅此文章。当然,假如不换源能够顺畅装一切的包的话,尽量不要履行此操作。我就由于换了源,导致后边出了许多小问题。
4.虚拟环境运用简介
# 创立虚拟环境
conda create -n xxx python=3.8
# 进入虚拟环境
conda activate xxx
# 退出当前虚拟环境
conda deactivate
# 检查本地虚拟环境
conda info --env
# 删除虚拟环境
conda remove -n xxx --all
三、布置ChatGLM-6B
1. clone代码
git clone https://github.com/THUDM/ChatGLM-6B.git
2. 运转
1.创立虚拟环境
# 新建chatglm环境
conda create -n chatglm python=3.8
# 激活chatglm环境
conda activate chatglm
2.装包
2.1 找到适宜的pytorch版别
咱们能够经过以下指令检查自己的cuda及cuda驱动版别
nvidia-smi
咱们能够看到,cuda版别是11.5,驱动版别是493.44,然后咱们去官网寻觅适宜的pytorch装包指令,官网链接如下: pytorch.org/get-started… pytorch.org/get-started… 假如找不到对应版别的话,能够参阅此链接,经过驱动找到适宜的cuda toolkit版别,然后再去官网寻觅适宜的装包指令 注:驱动是向下兼容的,其决定了可装置的CUDA Toolkit的最高版别。
2.1 装置依赖
# 依据上一步找到的装置指令进行装置:
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
# 装置gradio用于发动图形化web界面
pip install gradio
# 装置运转依赖
pip install -r requirement.txt
2.2 验证pytorch是否为GPU版别
import torch
torch.cuda.is_available() ## 输出应该是True
3.运转
在运转前,咱们需求修正一些文件内容
# web_demo.py
# 1. 新增mirror='https://mirrors.tuna.tsinghua.edu.cn/hugging-face-models,下载模型运用清华源
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True, mirror='https://mirrors.tuna.tsinghua.edu.cn/hugging-face-models')
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True, mirror='https://mirrors.tuna.tsinghua.edu.cn/hugging-face-models').half().cuda()
# 2. 增加server_name和server_port参数
demo.queue().launch(share=True,server_name="0.0.0.0",server_port=9234)
四、布置过程中遇到的问题
1. 问题1
报错如下:
ERROR: Could not find a version that satisfies the requirement protobuf<3.20.1,>=3.19.5 (from versions: none)
ERROR: No matching distribution found for protobuf<3.20.1,>=3.19.5
原因及解决方案: 是由于上一步换了国内的镜像源,所以只需求指定装包途径即可l sls
pip install -r requirements.txt -i https://pypi.Python.org/simple/
2.问题2
报错如下:
ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.
原因及解决方案: 是由于我在指令行设置了“科学上网”,关掉即可
# 由于我设置的是临时的,所以在指令行输入如下代码即可
unset http_proxy
unset https_proxy
3.问题3
报错如下:
RuntimeError: CUDA out of memory. Tried to allocate 128.00 MiB (GPU 0; 7.93 GiB total capacity; 7.40 GiB already allocated; 53.19 MiB free; 7.40 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
原因及解决方案: 默认情况下,模型以 FP16 精度加载,运转上述代码需求大概 13GB 显存。假如你的 GPU 显存有限,能够尝试以量化方式加载模型,运用方法如下:
# int4精度加载,需求6G显存
# web_demo.py
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()
4.问题4
报错如下:
RuntimeError: Library cudart is not initialized
原因及解决方案: 我是用conda办理的环境,此时应该是cudatoolkit有问题,参阅此issue
# 运用conda装置cudatoolkit
conda install cudatoolkit=11.3 -c nvidia
总结
例如:整个布置其实最难的应该仍是环境了,虽然项目的README写的比较简单,但是实在建立起来确实各种问题,希望此文章能给我们一些协助吧。
参阅文章
清华大学开源中文版ChatGPT模型——ChatGLM-6B发布
PyTorch、CUDA Toolkit 及显卡驱动版别对应联系
验证pytorch是否为GPU版别