微立顶科技

新闻资讯

创新 服务 价值

  ChatGLM-6B 微调:P-Tuning,LoRA,Full parameter

发布日期:2023/6/20 23:19:57      浏览量:

本视频的分点摘要:

1. 本报告将从头到尾手把手教大家如何翻译ChatGLM6B模型。

2. GLM模型是一个语言模型,其预训练过程与GPT有所不同。

3. GLM模型包括GLM、GLM 130B和GLM 6B等不同规模的模型,需要不同算力来实现高效微调或全量微调。

4. Finetune过程中,介绍了Mixed Precision和ZeRO优化器等基础知识,以及P tuning和Lora等高效微调方法。

5. 借助Gradio,可以将模型前端部署,实现与用户的交互。

6. 使用Finetune方法,4bit量化的情况下可以用7GB,否则需要十几个GB,全量微调的话需要50多个GB,使用4张A100可以跑起来。

7. 借助NVIDIA Pytorch,可在Linux机器上起一个Torch container,方便快捷地进行环境配置。

8. 下载checkpoint可以参考hugging face view,需首先下载git-lfs并按照操作系统进行操作。手动下载也可通过github repo内的方法来实现。

9. 下载checkpoint时需注意镜像的源问题,建议使用三条命令来快速放远。若从hugging face下载,则需注意LFS运行过程没有回显的问题。

10. 手动下载checkpoint文件时,推荐使用清华cloud downloader工具,可以快速下载。

11. 下载完checkpoint后,需要克隆官方的源代码并手动安装适合的torch,然后install requirements。

12. 在web demo和CL demo中,需要把tokenizer和model的相对路径改成自己的路径才能运行。

13. 可以通过量化支持来减小模型的显存占用。

14. 在CL demo中,可以通过指定显存大小来避免显存不足的情况。

15. 可以使用cli或webdemo进行推理,简化前端开发。

16. 通过使用半精度浮点数(如FP16或Brain Flow16)可以提高模型训练效率,节约显存,但可能会丢失精度。

17. 在训练中将参数、Momentum和Variance这三个参数都用高精度来表示,以避免出现非常小的gradients 而影响模型训练。

18. Gradio是一种非常适合深度学习模型展示和推理的前后端框架。

19. 在使用demo时需要注意路径修改和显存不足的解决方法。

20. 使用半精度浮点数可以提升模型训练效率,但需要注意Dynamic Loss Scaling技术,避免训练过程中出现下溢情况。

21. 推荐使用Gradio框架进行前端开发和模型推理,需要注意demo使用时的细节。

22. Zero Redundancy是一种可以帮助省略显存的技术,结合数据并行和模型并行可以有效提高训练效率。

23. Mono parallel技术可以实现模型并行,在不同的GPUs上分别运行不同分块的计算,并在训练的过程中进行数据交换。

24. 拆分模型到多张卡上可能会导致慢速和内存问题,不建议用CPU训练。

25. Model parallel的通信太慢,而data parallel有较大冗余,Zero Redundancy 提出了拆分optimizer state的解决方案。

26. Pgminv2 是一种高效微调方法,通过在每层添加 learnable parameter 来节约GPU memory和训练时间,且具有较好的性能。

27. Pgminv2 在大型模型上的表现不错。

28. 前文介绍了Pgminv2的高效微调方法和Zero Redundancy的optimizer state拆分方案,用于多卡训练中的内存和通信效率问题。

29. 本段内容是关于一个广告数据集的例子,用于描述模型将一组属性转化为易于阅读的广告词的过程。

30. 在运行这个例子时,需要下载并安装相关依赖,可以设置quantization bet参数以控制量化程度。

31. 问题包括灾难性遗忘和过拟合,可以通过各种数据增强和减少训练epoch等方式缓解。

32. 最后,可以使用已经训练好的模型的checkpoint文件进行评估,设置do predict参数指示训练还是推理,提供prompt和response列指示训练数据中的相关信息。

33. 可以通过override cache来节约debug时间;

34. 在evaluate的时候,可以开启output directory来保存结果;

35. 可以通过max source/target length来限制token的长度并进行padding;

36. 需要使用accumulation state来模拟大的batch size来进行高效微调;

37. evaluate函数可以增加prompt输出让结果更明确。

38. LoRa放在后面,使用另外一个仓库zeroNLP,节省仓库时间。

39. 使用full parameter时要用dbscript实现zero,指定模型名称或路径,使用4张卡进行训练。

40. 当使用dbc时,不要使用cuda-available-devices做设备排序,要使用include参数。

41. LoRa方法是加入一个d矩阵来模拟fine-tuning的效果,省去复杂计算。

42. LoRa在GPT上表现佳,在中国语料库chineseopaca上也有应用,词表已被删减以节约显存。

43. LoRa方法和应用。

44. china6166更新情况:删除icetk依赖,并在早期版本的基础上添加支持LoRa和avch数据集的修改。

45. 翻译使用无外乎就是需要一个prompt,模型识别prompt模式,输出response。

46. 能够仿造以上流程处理不同的数据集。

47. 对于训练新任务,数据量的要求会根据任务不同而有所不同,需要投入足够的数据才能学会。

48. P-tuning V2和Lower两种翻译方式都可以尝试,使用哪种方式要看实际情况。

49. 原始能力丢失不一定与P-tuning和Lower有关,Fine-tune过程中需要保持原始能力可以用预设的数据集进行微调。

50. 全量微调需要的配置较少,只需要改好模型路径和数据集位置即可。

51. 微调之后,Out-of-Distribution数据可能会回答不准确,如果出现卡死的情况可以设置Max Length或Max New Token。

52. 提供了关于训练新任务、翻译方式选择、原始能力丢失、全量微调配置和微调后回答出现错误等问题的具体建议和解决方案。

53. 介绍了一些成功案例和应对方法,如0nlp和Lora的使用。

54. 参考了前文提到的chinese alpaca的数据,构建了相应的数据集,进行了训练。

55. 在训练和数据处理过程中,需要注意代码修改和数据格式的处理。

56. 根据微调训练的具体情况,精细调整模型参数,避免出现过拟合和性能不佳的问题。

57. 在微调时可以使用高效微调和增加更多场景下的对话数据提升模型性能。

58. 训练时需要注意修改代码和处理数据格式,微调时需要精细调整避免性能不佳。

59. 在训练过程中,可以调整max step以减少训练时间,同时需要注意处理集大小与训练步数的关系。

60. 在微调过程中,通过使用统一的prompt和添加前置prompt来提升模型效果。

61. 在进行分类任务时,通过增加一个新的head可以实现输出分类标签和分类概率。

62. 在构建专业数据问答机器人时,需要准备大量的专业问答数据,并进行简单的数据增广和微调。

63. 对于max target length的设置,需要考虑硬件需求和截断的影响,以及使用logic processor等工具来保证稳定输出。

64. 通过减少fine tune step、加入明显的pattern或prompt等方式,可以缓解fine tune过程中原始能力丢失的问题。

65. 对于不同的任务,需要准备不同量级的数据,如专业问答需要大量的对话数据。

66. 对于训练有限的问答机器人,建议增加retrieval模块以提高准确率。

67. 训练过程中的关键点包括pre-sequence length和参数大小,应根据数据集大小进行调整。

68. 若需要在多个场景中微调模型,可考虑使用多个channel的GM6b模型。

69. instruction tuning的channelGM6b可根据具体数据集采用经典的instruction input,output形式。

70. 建议在知识库embedding时,将长文档拆分为多个段落,并将其作为prompt进行信息抽取。

71. 在构建问答机器人中应加强retrieval模块,以提高准确率。

72. 根据数据集大小调整pre-sequence length和参数大小。

73. 使用多个channel、instruction tuning的channelGM6b和知识库embedding等方法来提高机器人的表现。

74. 训练模型做混淆解密需要大量相关训练数据,且加入这些数据可能会降低机器人的对话能力。 作者:層林尽染 https://www.bilibili.com/read/cv24092488?jump_opus=1 出处:bilibili


  业务实施流程

需求调研 →

团队组建和动员 →

数据初始化 →

调试完善 →

解决方案和选型 →

硬件网络部署 →

系统部署试运行 →

系统正式上线 →

合作协议

系统开发/整合

制作文档和员工培训

售后服务

马上咨询: 如果您有业务方面的问题或者需求,欢迎您咨询!我们带来的不仅仅是技术,还有行业经验积累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     联系人:石先生/雷先生