chatglm3-6b小试

原本想在VMware中装个unbutu,再搞chatglm,但经过调研发现业内都是采用双系统来搞chat的开发。于是只好用rufus制作了一个ubuntu22.04的系统盘,你需要准备8G,因为制作好镜像后是7个多G。安装这里就不说了。
1 ubuntu环境
安装好ubuntu后,先更新apt的源

# vim是vi的扩展版本
sudo apt install vim
cd /etc/apt
sudo cp sources.list sources.list.backup
sudo vim sources.list
# 将下面的文件写入到sources.list末尾
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# 验证源是否生效
sudo apt update
# 执行更新所有可更新的软件包
sudo apt upgrade
# 注意汉化后,应该采用英文路径名称
export LANG=en_US
xdg-user-dirs-gtk-update

安装依赖包

sudo apt install gcc
sudo apt install g++
sudo apt install make
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
# 禁用自带的Nouveau驱动,这个模型可以满足桌面和基本3D渲染,但大模型是针对3090以上的显卡。
sudo vim /etc/modprobe.d/blacklist.conf 
# 在最后一样添加上
blacklist nouveau
# 生效
sudo update-initramfs -u

通过ubuntu自身的软件更新,安装nvidia显卡驱动。安装好后nvidia-smi,说明显卡驱动安装成功。开发一般不需要自己去安装cuda,因为安装torch的时候他自己就会全装

2 aneconda
之所说安装aneconda,因为大模型里面很多程序不是对应的版本,容易出错,就需要想nvm一样采用不同的环境。

bash Anaconda3-2024.02-1-Linux-x86_64.sh
vim ~/.bashrc
# 在文件最后添加
export PATH=/home/dj/anaconda3/bin:$PATH
# 生效
source ~/.bashrc
# 中间有一步不小写直接回车了,就按照下面的脚本修正
echo $SHELL
eval "$(/home/dj/anaconda3/bin/conda shell.bash hook)"
conda init
source ~/.bashrc
conda config --set auto_activate_base false
source ~/.bashrc
# 创建python环境
conda create -n chatglm3_test python==3.11
conda activate chatglm3_test 
conda env list
conda install pytorch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 pytorch-cuda=12.1 -c pytorch -c nvidia
python -m -pip install --upgrade pip


3 chatglm3-6b
有人购买pigcha加速器,以及安装git-lfsHugging Face。,虽然模型比较大,但国内有对应的景象,奇怪这个模型不是我们自己人研究的吗,怎么还要科学上网。在魔塔社区可以下载到对应的模型,不需要花冤枉钱。

mkdir -p /home/dj/workspace
cd workspace
sudo git clone https://github.com/THUDM/ChatGLM3.git
# 下载代码
cd ChatGLM3
conda activate chatglm3_test 
# 安装项目依赖
pip install -r requirements.txt
# 安装juptyer
conda install ipykernel
python -m ipykernel install --user --name=chatglm3_test --display-name="Python(chatglm3_test)"

运行模型,在basic_demo修正web_demo_gradio.py中从魔塔中的模型,不需要跟工程在同一个文件,因为这个模型文件就有12G。

ModelType = Union[PreTrainedModel, PeftModelForCausalLM]
TokenizerType = Union[PreTrainedTokenizer, PreTrainedTokenizerFast]

# MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
MODEL_PATH = os.environ.get('MODEL_PATH', r'/home/dj/models/chatglm3-6b')
TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)


def _resolve_path(path: Union[str, Path]) -> Path:
    return Path(path).expanduser().resolve()


接着运行python web_demo_gradio.py ,就可以了。我的拯救者显卡是RTX 4060,8G独显是不够的,生成有些慢。在ubuntu中安装了gnome-screenshot后,可以截图看到效果,好像这个chat机器人有点憨
1
采用streamlit启动,执行脚本streamlit run web_demo_streamlit.py,运行效果如下,界面风格有点差异,已经有点AI的意思了

在这里插入图片描述
查看GPU资源使用,看来8G的独显是不够的。
1
4 使用openai
因为又用到了bge-m3,这个模型,bge-m3,这里使用脚本下载一下,需要先pip install modelscope,接着按照文档中的描述下载模型,目测通过脚本,下载要比git下载要快

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('Xorbits/bge-m3')

在这里插入图片描述
下载之后同样要改模型路径后,运行

(chatglm3_test) dj@dj-Legion-Y9000P-IRX8:~/workspace/ChatGLM3/openai_api_demo$ python api_server.py 
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:01<00:00,  6.59it/s]
WARNING:root:Some parameters are on the meta device device because they were offloaded to the cpu.
Traceback (most recent call last):
  File "/home/dj/workspace/ChatGLM3/openai_api_demo/api_server.py", line 537, in <module>
    embedding_model = SentenceTransformer(EMBEDDING_PATH, device="cuda")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/sentence_transformers/SentenceTransformer.py", line 315, in __init__
    self.to(device)
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1173, in to
    return self._apply(convert)
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 779, in _apply
    module._apply(fn)
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 779, in _apply
    module._apply(fn)
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 779, in _apply
    module._apply(fn)
  [Previous line repeated 4 more times]
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 804, in _apply
    param_applied = fn(param)
                    ^^^^^^^^^
  File "/home/dj/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1159, in convert
    return t.to(
           ^^^^^
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 16.00 MiB. GPU

看来是GPU的显存不够,因此只好调整为cpu模式

  # embedding_model = SentenceTransformer(EMBEDDING_PATH, device="cuda")
    embedding_model = SentenceTransformer(EMBEDDING_PATH, device="cpu")

cpu的效果怎么样呢,使用jupyter lab 实测

import openai
openai.api_base = "http://0.0.0.0:8000/v1"
openai.api_key = "none"
res = openai.ChatCompletion.create(
    model = 'chatglm3-6b',
    messages = [
        {"role":"user","content":"提前折旧的凭证怎么做"}
    ]
)
print(res["choices"][0]["message"]["content"])

cpu虽然也能有结果,但是是一次性出来的,而且要等很久,看来没有GPU,用cpu是不行的。
1cpu计算要4分钟,这个估计别人抽烟都懒得等
1

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值