• 聊聊ChatGLM-6B部署与微调的深入理解


    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的相关配置及初始化信息。

    总结

  • 相关阅读:
    [附源码]SSM计算机毕业设计班级风采网站JAVA
    Golang源码:singleflight分析(二)
    分布式系列分布式计算框架Hadoop核心组件概述
    List执行remove操作间歇性报错UnsupportedOperationException
    Python 视频编辑教程之用几行 Python 代码自动创建 NBA 集锦,利用开源计算机视觉模型生成篮球亮点
    牛客网专项练习30天Pytnon篇第16天
    DPDK-A1:Centos配置MLX5驱动
    程序员是怎么把自己从高端人士变成民工的
    CAN总线负载及CANoe查看总线负载率
    离职,问题就解决了吗?
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/17940832