一、环境准备
百度飞桨网址
相比其他可以免费试用的gpu环境,百度飞桨更为大方,提供了最大128GB显存的免费算力,每天免费8点算力卡。(看飞桨后续是否会调整)
- V100四卡 4*32GB显存,16c/128gb
- A100 40GB,12c/96gb
- V100 32GB,4c/32gb
- V100 16GB, 2c/16gb
- DCU 16GB, 2c/16gb
创建项目
创建一个个人项目,需要注意如果是提前下载好model,需要在创建项目时挂载数据集。
速度会快很多
挂载飞桨已有glm > 提前下载model > 在飞桨的环境里git lfs clone
模型下载
启动环境
这里我只做部署推理6b模型,预计需要12-13GB显存,选择小一点的就够了。
用的是 V100 16GB,0.5点/小时,一天可以16个小时,足够测试用了。
确认显卡
nvidia-smi
二、模型和代码准备
python
conda create -n py310 python=3.10
conda init
conda activate py310
python -V
model
下载+挂载模型文件(模型实现在变动中,固定模型版本162b620,保证后续操作的兼容性)
下载模型文件(除模型权重lfs大文件)
cd work
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b
方式一,直接挂载百度飞桨上已有的glm2模型
cd ~/data/dataxxxx
unzip chatglm2-6b.zip
mv pytorch* ~/work/chatglm2-6b/
mv
方式二,自己下载上传glm2模型
先把模型下载到本地,再上传到自己的百度云盘。
模型下载
从百度云盘上传数据集到百度飞桨(速度很快)
飞桨挂载数据集
code
代码commit号877ef10d85c93ddfcfe945fcdc764393a52541b8 (https://github.com/THUDM/ChatGLM2-6B/tree/877ef10d85c93ddfcfe945fcdc764393a52541b8)
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
备份package (避免每次重新install,可选操作)
mkdir -p ~/work/pip/lib/python310/site-packages
cp -r /home/aistudio/.conda/envs/py310/lib/python3.10/site-packages/* /home/aistudio/work/pip/lib/python310/site-packages/
vi /home/aistudio/.conda/envs/py310/lib/python3.10/site.py
# Enable per user site-packages directory
# set it to False to disable the feature or True to force the feature
ENABLE_USER_SITE = True
# for distutils.commands.install
# These values are initialized by the getuserbase() and getusersitepackages()
# functions, through the main() function when Python starts.
USER_SITE = "/home/aistudio/work/pip/lib/python310/site-packages"
USER_BASE = None
python -m site --user-site
模型推理
cd ~/work/ChatGLM2-6B
vi helloworld_glm2.py
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/home/aistudio/chatglm2-6b", trust_remote_code=True, revision="")
model = AutoModel.from_pretrained("/home/aistudio/chatglm2-6b", trust_remote_code=True, revision="").half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
python helloworld_glm2.py