聊聊ChatGLM-6B部署与微调的深入理解
  zhNCThJtfE8g 2024年01月02日 17 0

ChatGLM的部署,主要是两个步骤:

  1. 在Github上下载chatglm的库文件
  2. 在Hugging Face上下载模型参数与配置文件

ChatGLM包

从Github上看ChatGLM项目文件的结构来看,仅仅是包含三种部署方式的py代码与微调的py代码
image.png
而相关的实现细节,比如神经网络、激活函数、损失函数等具体的实现,并不在该项目源码中。
不管以哪种方式部署,最核心就是三句代码,其作用是引入模型参数,初始化transformers配置;以web部署的方式为例:

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()

// 引入Gradio,实现web方式的使用

// 调用模型方法,开始进行对话推理
xx = model.stream_chat(xxxx);

web的调用是基于Gradio;
api的调用是基于fastapi;
cli的调用是基于python解释器;

Hugging Face

Hugging Face平台的模型库如下:
image.png
image.png
除去与训练后的模型参数(xxx.bin)外,其余的文件是huggingface的文件结构。

微调

微调的解决方案一般是P-Tuning或LoRA;ChatGLM-6B是基于P-Tuning v2实现的微调,P-Tuning v2是基于连续提示(continuous prompts)的思想。微调会生成新的模型参数文件,也称为checkpoint文件。
微调时可以选择全参数微调或是部分参数微调,其流程是训练+推理。训练生成新的checkpoint文件(模型参数);推理则是加载模型参数文件。
训练前,需要调整参数,一般修改train.sh脚本文件就行。
推理时,加载原模型文件与微调后生成的checkpoint文件。还是通过那三句代码。
输出的checkpoint文件如下:
image.png
checkpoint文件夹内的文件如下:
image.png

transformers的联系

目前的模型,都会对接到Hugging Face平台的transformers库中,通过transformers库来管控大模型。所以在推理阶段通过三句代码就能调用AI模型。在微调阶段,生成的checkpoint文件中,其结构是Hugging Face平台的文件结构,包含transformers的相关配置及初始化信息。

总结

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年01月02日 0

暂无评论

推荐阅读
  7B6SM42ujHWs   2024年04月10日   23   0   0 大模型
  eKreP5gc7PAg   2024年04月20日   22   0   0 大模型
zhNCThJtfE8g