ptuning v2 的 chatglm垂直领域训练记录

这篇具有很好参考价值的文章主要介绍了ptuning v2 的 chatglm垂直领域训练记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

thunlp chatglm 6B是一款基于海量高质量中英文语料训练的面向文本对话场景的语言模型。

THUDM/ChatGLM-6B: ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model (github.com)

国内的一位大佬把chatglm ptuning 的训练改成了多层多卡并行训练的实现

zero_nlp/Chatglm6b_ModelParallel_ptuning at main · yuanzhoulvpi2017/zero_nlp (github.com)

用到了神秘的perf库

希望大家能支持一下我的工作

用我的专用邀请链接,注册 OpenBayes,双方各获得 60 分钟 RTX 3090 使用时长,支持累积,永久有效:

注册 - OpenBayes

通过我的链接注册并充值openbayes平台。

找到了一些中国大百科的一对一对的数据集来ptuning chatglm 6B的对话模型。

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

在双卡3080环境中进行了训练后。二十五个小时二十九分钟训练了3000次迭代。多卡分层ptuning的效果感觉并不理想。可能是因为训练的轮次太少了。loss竟然高达4.1447。那我们扩大100倍步数来等一下看看拟合效果。

把我们双3080训练的参数摆出来

 
 

PRE_SEQ_LEN=8 LR=1e-2 CUDA_VISIBLE_DEVICES=0,1 python3 main_parallel.py \ --do_train \ --train_file AdvertiseGen/train.json \ --validation_file AdvertiseGen/dev.json \ --prompt_column content \ --response_column summary \ --overwrite_cache \ --model_name_or_path /root/autodl-tmp/zero_nlp/Chatglm6b_ModelParallel_ptuning/output/adgen-chatglm-6b-pt-8-1e-2/checkpoint-3000 \ --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \ --overwrite_output_dir \ --max_source_length 256 \ --max_target_length 512 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 16 \ --predict_with_generate \ --max_steps 30000 \ --logging_steps 10 \ --save_steps 2000 \ --learning_rate $LR \ --pre_seq_len $PRE_SEQ_LEN

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

双卡3080训练31个小时损失及学习率相关情况截图。

60小时双卡3080训练一万六千步,形成了8个训练节点checkpoint。开始面向最新一轮的展开模型效果测试。

 
 

import os import platform import signal from transformers import AutoTokenizer, AutoModel import json os_name = platform.system() clear_command = 'cls' if os_name == 'Windows' else 'clear' stop_stream = False def build_prompt(history): prompt = "欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序" for query, response in history: prompt += f"\n\n用户:{query}" prompt += f"\n\nChatGLM-6B:{response}" return prompt def signal_handler(signal, frame): global stop_stream stop_stream = True def main(): global stop_stream print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序") tokenizer = AutoTokenizer.from_pretrained("/root/autodl-tmp/zero_nlp/Chatglm6b_ModelParallel_ptuning/output/adgen-chatglm-6b-pt-8-1e-2/checkpoint-16000", trust_remote_code=True) model = AutoModel.from_pretrained("/root/autodl-tmp/zero_nlp/Chatglm6b_ModelParallel_ptuning/output/adgen-chatglm-6b-pt-8-1e-2/checkpoint-16000", trust_remote_code=True).quantize(4).half().cuda() model = model.eval() AdvertiseGen = json.load(open("/root/autodl-tmp/zero_nlp/Chatglm6b_ModelParallel_ptuning/AdvertiseGen/dev.json")) for AdvertiseGen_one in AdvertiseGen: history = [] count = 0 response, history = model.chat(tokenizer, AdvertiseGen_one['content'], history=history) print(AdvertiseGen_one) print(response) if __name__ == "__main__": main()

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

所以这里面我感觉是因为我的数据集长短分布差异较大导致的问题。于是痛定思痛。决定下一步从两个方向改进,第一输入输出长度设置为64、128。第二我要减小十倍的学习率,观察一下减小十倍的学习率能不能提升ptuning的效果。

在预测推理阶段发生了形状错误问题。 已经解决。本来是想着tokenizer部分要用原来的tockenizer,后来发现换成了训练好的tokenizer之后才不报错。

 
 

import os from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("/root/autodl-tmp/checkpoint-3000", trust_remote_code=True) model = AutoModel.from_pretrained("/root/autodl-tmp/checkpoint-3000", trust_remote_code=True).half().cuda() model = model.eval()

用这样的方式去加载已经ptuning训练好的模型就可以开始测试我们自己训练的数据集的效果了。

单卡官方原生ptuning训练

单卡A5000 Ptuning V2 chatglm 6B任务基于chatglm 6B官方开源ptuning V2版本代码运行。

在单卡A5000 混合精度训练推理。更改参数 --max_source_length 256 --max_target_length 512,个人感觉输入太短、输出太短,训练出来也没什么意义。所以把source和target的长度拉长到256、512。理论上只要长加起来不超过2048,就不会报错。我们把完整的训练参数show一下

 
 

PRE_SEQ_LEN=4 LR=1e-2 CUDA_VISIBLE_DEVICES=0 python3 main.py \ --do_train \ --train_file ./train.json \ --validation_file ./dev.json \ --prompt_column content \ --response_column summary \ --overwrite_cache \ --model_name_or_path THUDM/chatglm-6b \ --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR-dev \ --overwrite_output_dir \ --max_source_length 256 \ --max_target_length 512 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 16 \ --predict_with_generate \ --max_steps 30000000 \ --logging_steps 1000 \ --save_steps 10000\ --learning_rate $LR \ --pre_seq_len $PRE_SEQ_LEN \ --quantization_bit 8

那么按照这个参数,模型将会占用A5000多少显存呢?

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

显存占用10GB左右。

大家肯定很好奇10000步的时候ptuning V2 在chatglm 6B模型上的表现。

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

而结果中的损失依旧让人看起来比较窒息。损失一直降不下去。

2023 04 07 实验

控制语料严格符合输入长度小于128输出长度小于512、学习率1e-3。

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

前4000个epoch表现效果如上。依旧不理想。损失竟然变得更大了。

把官方代码通过修改bash为多卡运行。

 
 

PRE_SEQ_LEN=128 LR=2e-2 CUDA_VISIBLE_DEVICES=0,1 python3 main.py \ --do_train \ --train_file AdvertiseGen/train.json \ --validation_file AdvertiseGen/dev.json \ --prompt_column content \ --response_column summary \ --overwrite_cache \ --model_name_or_path THUDM/chatglm-6b \ --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \ --overwrite_output_dir \ --max_source_length 64 \ --max_target_length 64 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 16 \ --predict_with_generate \ --max_steps 3000 \ --logging_steps 10 \ --save_steps 1000 \ --learning_rate $LR \ --pre_seq_len $PRE_SEQ_LEN \ --quantization_bit 8

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

不过目前看如果是简单的将训练代码中的显卡序号添加为多卡。

ptuning v2 的 chatglm垂直领域训练记录

单卡训练需要两个小时

ptuning v2 的 chatglm垂直领域训练记录

多卡需要30个小时

单卡两小时训练完,多卡30个小时训练完成。而多卡的显卡利用率竟然是百分之百。所以简单的将模型横向并行在某些设备上是不可取的。

20230408,zero_nlp的多卡分层并行训练目前出现了一些小问题。

痛定思痛,为什么官方的数据集表现得很好,但是我的数据集表现得并不是那么好呢。于是我准备给我的数据集截图看一看到底是哪里出现了问题。

ptuning v2 的 chatglm垂直领域训练记录

添加图片注释,不超过 140 字(可选)

从中国大百科爬下来的数据,有一些标题的输入是比较短的。那么好,接下来我准备加入数据最短长度的限制。

喜欢大模型的小伙伴可以加我的 15246115202 一起交流训练大模型所需要的细节都有哪些。

目前官方给了三个交互解决方案。基于终端的交互,基于简单界面的交互,基于fastapi框架提供的接口进行交互。文章来源地址https://www.toymoban.com/news/detail-461939.html

到了这里,关于ptuning v2 的 chatglm垂直领域训练记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatBI- ChatGPT的垂直领域思考

    声明:本文将从技术角度对比几款商用BI产品的AI辅助功能。鉴于个人的认知水平,所描述的内容,若有不妥,请斧正。 从事大数据工作十余年,近两年负责制造业BI工作,总结了一些痛点问题: 技术挑战难度不大,繁杂重复事情较多,费时费力: 组织架构调整,营收历史数

    2023年04月25日
    浏览(43)
  • 千“垂”百炼:垂直领域与语言模型(1)

    微信公众号版本:https://mp.weixin.qq.com/s/G24skuUbyrSatxWczVxEAg 这一系列文章仍然坚持走“通俗理解”的风格,用尽量简短、简单、通俗的话来描述清楚每一件事情。本系列主要关注语言模型在垂直领域尝试的相关工作。 This series of articles still sticks to the \\\"general understanding\\\" style, des

    2023年04月09日
    浏览(38)
  • AI自动生成领域大牛?巧用文心千帆快速创建垂直领域专家

    目录 前言 模型搭建 1.数据导入 2.数据标注 3.数据处理 4.训练配置  5.发布模型 结尾 生成式AI一直是我所关注的技术,尤其现在集成多态大模型的基础之上,能否实际落地运用于各式各样的场景领域一直都是现今热点讨论的技术话题。对于如今比较成熟的生成式AI,如ChatGPT,

    2024年02月16日
    浏览(55)
  • 医疗最终会成为最大的AI垂直领域吗?

    在人工智能技术的推动下,医疗行业正迎来一场前所未有的变革。眼下正在举行的英伟达GTC大会上,90场活动与医疗保健/生命科学相关,数目位居所有行业之首,超过了汽车、云服务、硬件/半导体等一众热门领域。 全球最炙手可热的医药巨头诺和诺德,已经在GTC上官宣将与

    2024年04月13日
    浏览(40)
  • 垂直领域大模型——文档图像大模型的思考与探索

    12月1日,2023中国图象图形学学会青年科学家会议在广州召开。超1400名研究人员齐聚一堂,进行学术交流与研讨,共同探索促进图象图形领域“产学研”交流合作。 大会上,合合信息智能技术平台事业部副总经理、高级工程师丁凯博士在《垂直领域大模型》主题论坛上进行了

    2024年01月19日
    浏览(32)
  • LLM技术发展及在垂直领域中如何应用-经验学习大全

    语言建模(LM)是提高机器语言智能的主要方法之一。一般来说,LM旨在对词序列的生成概率进行建模,以预测未来tokens的概率。语言建模的研究在文献中受到了广泛关注,可以分为四个主要发展阶段: 统计语言模型(SLM) : 起源于 20世纪90年代。其基本思想是基于马尔可夫假

    2024年02月15日
    浏览(43)
  • 9款世界级垂直领域软件架构师Visio平替作图工具!

    一个基于HTML5的在线流程图绘制和协作应用平台,用户可以通过它方便快速的实现流程图表的绘制,同时还可以实现与他人进行实时的流程图绘制和修改功能,对需要群组协作功能的团队来说,这点非常方便。 由于LucidChart是基于HTML5开发,因此用户不需要下载本地应用程序,

    2024年03月09日
    浏览(47)
  • 基于 P-Tuning v2 进行 ChatGLM2-6B 微调实践

    1. SFT监督微调:适用于在源任务中具有较高性能的模型进行微调,学习率较小。常见任务包括中文实体识别、语言模型训练、UIE模型微调。优点是可以快速适应目标任务,但缺点是可能需要较长的训练时间和大量数据。 2. LoRA微调:通过高阶矩阵秩的分解减少微调参数量,不

    2024年02月08日
    浏览(57)
  • 【电商领域】Axure在线购物商城小程序原型图,抖音商城垂直电商APP原型

    页面数量:共 60+ 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:品牌自营商城、垂直电商、短视频社区商城 作品申明:页面内容仅用于功能演示,无实际功能 本作品为品牌自营在线商城小程序的原型图,属于垂直电商解决方案(以某药业为例);目前已实现功能包括:

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包