微调实操一: 增量预训练(Pretraining)

1、前言

《微调入门篇:大模型微调的理论学习》我们对大模型微调理论有了基本了解,这篇结合我们现实中常见的场景,进行大模型微调实操部分的了解和学习,之前我有写过类似的文章《实践篇:大模型微调增量预训练实践(二)》利用的MedicalGPT的源码在colab进行操作, 由于MedicalGPT代码比较难以理解,而且模型只能从hugging face上下载,对于一些国内服务器无法访问,我重构了代码,让训练代码更有可读性,并参考LLAMAFactory的项目,增加了modelscope上下载模型,轻松在国内服务器运行.

2、微调领域参考

从0到1太难了,正所谓站在巨人的肩膀创新,我们可以学习其他人在各个领域的一些落地实践,从中得到自己的一些思考,以下是在《垂直领域大模型更亲民》中提到过垂直领域的落地:
在这里插入图片描述

特别是医学、金融等民生行业,已经开始落地,我相信这些行业和大模型的结合会让大模型走得更远和更稳.

3、微调大模型的基本思路

按方法来分:

(1)、Continue PreTraining(增量预训练): 一般垂直大模型是基于通用大模型进行二次的开发。为了给模型注入领域知识,就需要用领域内的语料进行继续预训练。

(2)、SFT( Supervised Finetuning,有监督微调): 通过SFT可以激发大模型理解领域内的各种问题并进行回答的能力(在有召回知识的基础上)

(3)、RLHF(奖励建模、强化学习训练): 通过RLHF可以让大模型的回答对齐人们的偏好,比如行文的风格。

(4)、DPO(直接偏好优化)

按阶段来分的话:

一般来说, 垂直领域的现状就是大家积累很多电子数据,从现实出发,第一步可以先做增量训练.所以会把模型分成3个阶段:

(1)、第一阶段:(Continue PreTraining)增量预训练,在海量领域文档数据上二次预训练GPT模型,以注入领域知识.

(2)、第二阶段: SFT(Supervised Fine-tuning)有监督微调,构造指令微调数据集,在预训练模型基础上做指令精调,以对齐指令意图

(3)、第三阶段 : RLHF和DPO二选一

RLHF(Reinforcement Learning from Human Feedback)基于人类反馈对语言模型进行强化学习,分为两步:RM(Reward Model)奖励模型建模,构造人类偏好排序数据集,训练奖励模型,用来建模人类偏好,主要是"HHH"原则RL(Reinforcement Learning)强化学习,用奖励模型来训练SFT模型,生成模型使用奖励或惩罚来更新其策略,以便生成更高质量、更符合人类偏好的文.

DPO(Direct Preference Optimization)直接偏好优化方法,DPO通过直接优化语言模型来实现对其行为的精确控制,而无需使用复杂的强化学习,也可以有效学习到人类偏好,DPO相较于RLHF更容易实现且易于训练,效果更好

4、Pretraining阶段数据集准备

这是非常在微调中非常关键的一步,领域的核心就是构建高质量的数据集,那么如何准备数据: 网上已有、企业私有、+chatgpt扩充. 这一步的数据集相对比较简单,上面说过, pretraining就是注入专业知识,其实就是一些垂直文章的内容,比如书籍、博客等. MedicalGPT的pretraining数据类似:
在这里插入图片描述

5、微调模型选择

微调模型选择的宗旨主要有3个:

自己有什么样的资源

模型的开源性

模型的开放性和所需的资源

在这里插入图片描述

本人使用kaggle、clolab等免费GPU平台,综合下来,选择bloomz-560m模型进行微调测试.

6、kaggle上微调bloomz-560m

为了快速实验, 依然用的还是MedicalGPT中的数据集,也方面后续对比效果, 验证重构代码的准确性


# pretraining 训练
%cd /kaggle/working/autoorder
!git pull
!pip install -r algorithm/llm/requirements.txt
!pip install Logbook
import os
os.environ['RUN_PACKAGE'] = 'algorithm.llm.train.pretraining'
os.environ['RUN_CLASS'] = 'PreTraining'
print(os.getenv("RUN_PACKAGE"))
!python main.py \
    --model_type bloom \
    --model_name_or_path bigscience/bloomz-560m \
    --train_file_dir /kaggle/working/MedicalGPT/data/pretrain \
    --validation_file_dir /kaggle/working/MedicalGPT/data/pretrain \
    --per_device_train_batch_size 4 \
    --per_device_eval_batch_size 4 \
    --do_train \
    --do_eval \
    --use_peft True \
    --seed 42 \
    --max_train_samples 10000 \
    --max_eval_samples 10 \
    --num_train_epochs 0.5 \
    --learning_rate 2e-4 \
    --warmup_ratio 0.05 \
    --weight_decay 0.01 \
    --logging_strategy steps \
    --logging_steps 10 \
    --eval_steps 50 \
    --evaluation_strategy steps \
    --save_steps 500 \
    --save_strategy steps \
    --save_total_limit 13 \
    --gradient_accumulation_steps 1 \
    --preprocessing_num_workers 10 \
    --block_size 512 \
    --group_by_length True \
    --output_dir outputs-pt-bloom-v1 \
    --overwrite_output_dir \
    --ddp_timeout 30000 \
    --logging_first_step True \
    --target_modules all \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --torch_dtype bfloat16 \
    --device_map auto \
    --report_to tensorboard \
    --ddp_find_unused_parameters False \
    --gradient_checkpointing True \
    --cache_dir ./cache

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/366549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JS】基于React的Next.js环境配置与示例

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍基于React的Next.js环境配置与示例。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…

小迪安全24WEB 攻防-通用漏洞SQL 注入MYSQL 跨库ACCESS 偏移

#知识点: 1、脚本代码与数据库前置知识 2、Access 数据库注入-简易&偏移 3、MYSQL 数据库注入-简易&权限跨库 #前置知识: -SQL 注入漏洞产生原理分析 -SQL 注入漏洞危害利用分析 -脚本代码与数据库操作流程 -数据库名&#xff0c…

D3842——三极管驱动,专为脱线和Dc-Dc开关电源应用设计的保护电路芯片,具有 DIP8、 SOP8两种封装形式

B3842/43/44是专为脱线和Dc-Dc开关电源应用设计的恒频电流型Pwd控制器内部包含温度补偿精密基准、供精密占空比调节用的可调振荡器、高增益混放大器、电流传感比较器和适合作功率MOST驱动用的大电流推挽输出颇以及单周期徊滞式限流欠压锁定、死区可调、单脉冲计数拴锁等保护电路…

MySQL原理(三)锁定机制(2)表锁行锁与页锁

前面提到,mysql锁按照操作颗粒分类,一般认为有表级锁、行级锁、页面锁三种。其实还有一种特殊的全局锁。 锁场景问题全局锁全库逻辑备份加了全局锁之后,整个数据库都是【只读状态】,如果数据库里有很多数据,备份就会花…

基于springboot校园二手书交易管理系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括乐校园二手书交易管理系统的网络应用,在外国二手书交易管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…

Python 生成图片验证码

图片验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序。这种验证码通常以图片的形式出现,其中包含一些扭曲的字符或对象,用户需要识别这些字符或对象并输入正确的答案以通过验证。 通常情况下,图片验证码…

k8s中调整Pod数量限制的方法

一、介绍 Kubernetes节点每个默认允许最多创建110个pod,有时可能由于主机配置扩容的问题,从而需要修改节点pod运行数量的限制。 即:需要调整Node节点的最大可运行Pod数量。 一般来说,只需要在kubelet启动命令中增加–max-pods参数…

伯克利DeepMind联合研究,RaLMSpec让检索增强LLM速度提升2-7倍!

引言:知识密集型NLP任务中的挑战与RaLM的潜力 在知识密集型自然语言处理(NLP)任务中,传统的大语言模型面临着将海量知识编码进全参数化模型的巨大挑战。这不仅在训练和部署阶段需要大量的努力,而且在模型需要适应新数…

五款好用的在线去水印工具

我们都知道今年是AI大爆发的一年。在日常生活中,你是否经常在拍照时遇到照片中出现一些不必要的路人或其他元素的情况?通常,我们会使用PS软件或其他APP来处理这些问题。但是,对于一些不熟悉PS的朋友来说,这可能会是一种…

缓存击穿,商详页进不去了!!!

故事 对于小猫来讲,最近的一段日子是不好过的,纵使听着再有节拍的音乐,也换不起他对生活的热情。由于上一次“幂等事件”躺枪,他已经有几天没有休息好了。他感觉人生到了低谷。 当接手这个商城项目之后,他感觉他一直没…

嵌入式中C 语言中的三块技术难点

C 语言在嵌入式学习中是必备的知识,甚至大部分操作系统都要围绕 C 语言进行,而其中有三块技术难点,几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来,一定让你看明白了。 0x01 指针 指针是公认最难理…

纷享销客渠道伙伴答谢会苏皖站:共谋高质量增长,擘画合作新篇章

2024年1月31日,纷享销客在南京成功举办了“凝心聚力 勇立潮头”——2024纷享销客渠道伙伴答谢会暨业务启动会|苏皖站。活动邀请了苏皖地区10余家核心渠道伙伴的代表,其中30余位投资人、创始人、总经理和合伙人亲临现场,共同探讨渠道伙伴的共赢…

数据处理Job思路总结

对工作中遇到的数据处理Job做了一些梳理,这里试图总结一种通用的Job开发思路。 1. Job的构成 Job 的核心元素包含: 任务、数据、接口、结果。 1.1 任务 数据处理任务。有些业务场景下,Job与任务是绑定的,执行一次Job就对应一个任…

光耦合器的结构与原理解析

光耦合器是一种重要的电光转换器件,广泛应用于电子设备、通信系统以及工业控制等领域。本文将深入分析光耦合器的结构与原理,旨在为读者提供清晰而全面的了解。 光耦合器作为一种关键的电子元件,扮演着信号隔离和传输的重要角色。它的设计结构…

【GitHub项目推荐--开箱即用的直播聊天系统,高颜值,支持二次开发】【转载】

Owncast Owncast 是一个免费开源的实时视频和网络聊天服务器,可与现有流行的广播软件一起使用。 github源代码: https://github.com/owncast/owncast 国内镜像(中文) http://www.gitpp.com/samgoat/owncast-cn 项目介绍 Owncast 是一个开源的、可…

Pycharm安装插件

经常用Pycharm写代码的话,时不时的就会接触到一些好用的插件,如何安装插件呢?经常使用的是两种方式,分别是在线安装和离线安装。 在线安装 在线安装比较简单,打开Pycharm,在左上角【文件】->【设置】-…

Portainer访问远程Docker (TLS加密)

前言: docker的2375端口,出于安全性考虑即(Docker Remote API未授权访问漏洞),是不开放的,如果想要管理远程docker,可以使用TLS机制来进行访问,这里以Portainer访问连接为例 文章参考:https://b…

实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)

实习管理系统目录 目录 基于SSM的实习管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能介绍 (1)管理员登录 (2)实训方向管理 (3)公告信息管理 (4&#xff0…

笔记本键盘卸载或自动跳出字符故障或按键无效修复办法

首先,在Windows 10操作系统中,您可以在笔记本电脑桌面上找到"计算机"图标,并使用鼠标右键点击它。然后选择"属性"选项。 打开系统属性后,您会看到右上角有一个"设备管理器"选项。请点击它来打开设…

深掘开源安全需求,破解开源治理难题

当下,中国金融科技行业在数字支付、数字信贷、金融风控等领域取得了很多创新成果,大幅提升了金融数字化和智能化水平,已经在金融科技的全球竞争中走在前列。 在此进程中,开源技术发挥了不可或缺的重要作用,根据我国金…