前言
LLM该怎么度过时而快乐,时而迷茫的新手村呢,看看下面的教程对你有没有帮助/愉快:
以下是我在GLM4在本地部署实践流程(或者另有个名字:复现)
一、Autodl云服务器
1.打开官网https://www.autodl.com/home
注册登录
别忘了完善个人资料里绑定个人邮箱:大学邮箱可领取学生权益,后续在租用实例时是有优惠的!
2.充值(开始花钱)
小冲一波,50元入手新手村啦,也不知道咱这氪金啥时候是个头/哭唧唧
3.租用实例
提前预告一下咱后边的lora微调,由于基座模型(base)GLM-4-9B-Chat在GitHub的readme写的很明白啦,所以在租用实例时要注意至少租用24G的GPU才能进行单机单卡微调。(后面因为微调时不会kill process吃了爆显存然后实例开机关机重启的亏,有一次竟然提醒我还需要32MB的现存才能继续运行,额,32MB和24GB差了一个量级,因为32MB我又又又重启了),所以在最开始租用实例时越高越好,当下最便宜且能用的就是3090啦。
注:西北的便宜哦
另外,在选择琳琅满目的基础镜像时真的很容易犯选择困难症哎
可是有大神已经帮我们挑好了:详见https://github.com/datawhalechina/self-llm/blob/master/models/GLM-4/05-GLM-4-9B-chat%20Lora%20%E5%BE%AE%E8%B0%83.md
吃水别忘挖井人,谢谢大佬
租用的实例就在这咯,开机就意味着氪金开始。
4.数据存储
实例都选了西北了,这也肯定选西北哈,没啥悬念。第一次进入要点一下 初始化 哦。
二、GLM-4-9B-Chat(出于尊敬,这章的名字不加任何后缀)
1.下载基座模型(base LLM)
估计好多人看了好多教程,会疑问下载模型怎么会成为咱们教程第二阶段的第一步,好好解释一下,公司网太渣了,迫不得已只能采取下载本地然后再上传(通过Xshell和Xftp,详见autodl官方文档:https://www.autodl.com/docs/xshell/)
下载模型详见:https://hf-mirror.com/,拉到最下面
要安装的库有:huggingface_hub,还有hf-transfer,然后在cmd运行下列命令:
huggingface-cli download --resume-download THUDM/glm-4-9b-chat --local-dir d:
模型文件很多,上述命令的–resume-download参数是执行断点重连的指令,如果模型下载过程中runtime error,那就继续以上命令,这样下的模型又全又香,隔壁小孩都馋哭了(好老的梗)。
下载下来的模型就存在D盘的主目录下,不用检查全不全哦,必定是全的。
2.上传基座模型
推荐采用Xshell和Xftp方式,这样不会在这个界面产生缓存(亲试)
否则后续超过免费的20GB存储后会收费/哭
上传到/root/autodl-tmp
3.GLM-4-9B-Chat模型推理
提示:(重要)上述过程均可以通过实例的无卡模式开机完成,省钱
下面我们就要正式开机了,先关机(关掉无卡模式,即无GPU模式的待机状态),再开机。
1、激活虚拟环境(csdn站内教程多如牛毛,这里就省事了)建好环境逐行执行下列命令:
cd /root/autodl-tmp
git clone https://github.com/THUDM/GLM-4.git #区别于模型文件,这是模型运行文件
cd GLM-4-main/basic_demo
pip install -r requirements.txt #安装依赖)***注意修改torch,torchvision别下载哦,这是默认的CPU,我在总结里也详细写了,请移步总结
#在推理之前记得修改当前目录下的trans_cli_demo.py和trans_web_demo.py中的MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/glm-4-9b-chat')为MODEL_PATH = os.environ.get('MODEL_PATH', '/root/autodl-tmp/glm-4-9b-chat')
python trans_cli_demo.py #使用命令行与 GLM-4-9B 模型进行对话。
pip install peft #实测运行web端必须的包
python trans_web_demo.py #使用 Gradio 网页端与 GLM-4-9B 模型进行对话。
Gradio 网页端需要在输入命令后手动打开Autodl网页控制台的自定义服务就可以在网页端和GLM-4模型对话啦,模型推理结束。
2、ctrl+z退出推理过程,在命令行输入下列清空命令
bash
查看nvidia运行状态(nvidia-smi)保证至少22G的显存空间,不够的话请关机重启。
然后激活虚拟环境,逐行运行以下命令:
cd /root/autodl-tmp
git clone https://github.com/hiyouga/LLaMA-Factory.git #LLaMA-Factory是一个LLM集合了各种微调方法的框架,借用它可以很简单的实现LLM微调,而且现支持市面上绝大多数LLM的微调。
pip install --no-deps -e ".[torch,metrics]" #去除一切冲突的依赖包,还你本清的环境。事实上仅需要安装trl一个库就搞定了
3、增加自定义数据集将其命名为train.json,在dataset_info.json中增加如下图③的说明
附自定义数据集的构造形式,最基本的Alpaca格式,注意编码格式,开头中括号,数据来源:https://github.com/Facico/Chinese-Vicuna/tree/master(很珍贵,中文英文语料库)
4、做完上述步骤后,运行下列命令:
llamafactory-cli webui #LLaMA Board 可视化微调(由 Gradio 驱动)
采用Autodl云服务器(https://www.autodl.com/docs/ssh_proxy/)中提到的工具进行ssh隧道连接。
喏,like be it!,然后就可以利用网页端进行微调了。
网页端极度友好:
详细可查询小破站有关教程。保存退出,你就拥有了一个自己微调可食用的GLM-4小助手啦(为所欲为,想干啥就干啥,而且它还内置了表情包,简直太适合中国宝宝体质了,但是模型虽好,请不要贪杯哦/坏笑)
总结
1、过程中遇到很多很多的问题,徒耗了好多精力和时间,就比如这个
因为我是下载的最新权重参数模型,所以下载下来的transformers版本是最新最新的,导致LLaMA-Factory的一些文件虽然requirement是这么写的,
但是内部某个文件脚本更新不及时,就会在进行lora过程中报错,这个报错基本只能采用Ctrl+z退出进程,退出进程你以为就完啦,显卡process是占用的,要bash all,然后conda activate (your envs name),cd 到LLaMA-Factory,继续llamafactory-cli webui,修改代理端口,进入本地webui开始参数设置。
哦对了,出错的原因是
要改成大于号哦,然后就不会让你重装transformers了,如果你把4.42.4卸载了,重装了4.41.2,那就lora继续报错:
ValueError:too many values to unpack(expected 2),这时由于你下载的模型权重要求的是4.42.4,你回退到GLM-4-9B-Chat推理部分,大模型也不能和你对话了。
2、torch和torchvision一定要安装nvidia版本的,否则你懂的,Lora微调能怀疑人生,然后拉你下地狱,你也一块怀疑人生吧
虽然我们的nvidia cuda版本是12.2,但是我们可以安装12.1的,因为12.2可以兼容12.1
查询nvidia cuda 命令
nvidia-smi
最新的适合中国宝宝的LLM调教食用指南,可以助你新手村过的快快乐乐。
参考:
1、强烈推荐datawhale的repo,他们真的有在为llm-Chinese不断努力,每一个教程都很用心。https://github.com/datawhalechina/self-llm
2、来自于马勇强大佬的知乎专栏,LLaMA-Factory Quick Start一文帮你从头到尾梳理明白新手任务。https://zhuanlan.zhihu.com/p/695287607
3、Autodl云服务器官方文档,好多的教程帮你快速拥有一台
这么大的主机,虽然是云的,但是比你买台含智商税的笔记本电脑不好太多了吗?
到这里,本篇教程就圆满结束咯,新手任务已通关,接下来我们就要扬帆,启航(赏金猎人·厄运小姐的语气)