【LLM模型篇】LLaMA2 | Vicuna | EcomGPT等(更新中)

news2024/12/22 23:01:23

文章目录

  • 一、Base model
  • chatglm2模型
  • Vicuna模型
  • LLaMA2模型
    • 1. 训练细节
    • 2. Evaluation Results
    • 3. 更多参考
  • alpaca模型
  • 其他大模型和peft高效参数微调
  • 二、垂直领域大模型
  • MedicalGPT:医疗大模型
  • TransGPT:交通大模型
  • ​EcomGPT:电商领域大模型
    • 1. sft数据
    • 2. 模型微调
    • 3. 评测数据集和评测结果
  • llama变体
  • 三、微调场景
    • 1. fine-tune的目的和场景
    • 2. LLM微调的相关参数
  • Reference

一、Base model

chatglm2模型

ChatGLM2-6B 训练参数解释
ChatGLM-6B 的部署与微调以及过程中涉及知识总结(7.26更新)
ChatGLM P-Tuning v2 避坑指南

小样本(100条)微调,建议 num_train_epochs(最大迭代轮数) =20 才能稳定拟合任务要求
百度文心千帆推荐:100条数据时, Epoch为15,1000条数据时, Epoch为10,10000条数据时, Epoch为2。

Vicuna模型

Vicuna开源代码地址:https://github.com/lm-sys/FastChat

Vicuna在线demo地址:https://chat.lmsys.org/

LLaMA2模型

LLaMA2的开源地址:https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md
LLaMA2的下载地址:https://ai.meta.com/resources/models-and-libraries/llama-downloads/
LLaMA2的官方博客地址:https://ai.meta.com/resources/models-and-libraries/llama/

  • Llama-2-Chat:三个版本,7B,13B,70B
    • input:text only
    • ouput:text only
    • 同样是基于transformer架构的自回归模型,使用SFT(supervised fine-tuning)和RLHF(human feedback)
  • 70B版本推理:Grouped-Query Attention (GQA) 来优化
  • 训练数据:截止到2022年9月的数据,一些微调数据是2023年7月前的

1. 训练细节

  • transformer architecture (Vaswani et al., 2017),
  • 使用RMSNorm(Root Mean Square Layer Normalization)方法对transformer每层的输入进行归约(norm)操作,代替了transformer之前对输出进行归约(norm):apply pre-normalization using RMSNorm (Zhang and Sennrich, 2019),
  • SwiGLU激活函数:use the SwiGLU activation function (Shazeer, 2020),
  • 旋转位置编码:rotary positional embeddings(RoPE, Su et al. 2022).
  • 上下文长度和分组查询注意力(GQA):The primary architectural differences from Llama 1 include increased context length and grouped-query attention (GQA).

训练65B参数的模型,使用了2048块80G显存大小的A100卡,处理对应380 tokens/sec/GPU,1.4T个token训练了有21天。训练loss如下:
在这里插入图片描述
参数设置:

  • 使用AdamW优化器,对应超参beta1=0.9, beta2=0.95; 使用cosine学习率调度,最终学习率是最大学习率的10%;weight decay为0.1, gradient clipping为0.1。
  • 训练使用前2000个step进行warmup

2. Evaluation Results

Llama 1 and Llama 2评测结果:

ModelSizeCodeCommonsense ReasoningWorld KnowledgeReading ComprehensionMathMMLUBBHAGI Eval
Llama 17B14.160.846.258.56.9535.130.323.9
Llama 113B18.966.152.662.310.946.937.033.9
Llama 133B26.070.058.467.621.457.839.841.7
Llama 165B30.770.760.568.630.863.443.547.6
Llama 27B16.863.948.961.314.645.332.629.3
Llama 213B24.566.955.465.828.754.839.439.1
Llama 270B37.571.963.669.435.268.951.254.2

3. 更多参考

[1] Llama 2 官方公告:https://ai.meta.com/llama/

[2] Llama 2 官方论文:https://huggingface.co/papers/2307.09288

[3] “GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints” by Google Research:https://arxiv.org/pdf/2305.13245.pdf

[4] “Llama 2: an incredible open LLM” by Nathan Lambert: https://www.interconnects.ai/p/llama-2-from-meta

[5] Llama 2 models: https://huggingface.co/meta-llama

[6] Text generation web UI github: https://github.com/oobabooga/text-generation-webu

alpaca模型

standford-alpaca微调记录

注意:从0写个gpt简易版可以参考——极简PicoGPT
https://github.com/jaymody/picoGPT/tree/29e78cc52b58ed2c1c483ffea2eb46ff6bdec785
介绍:60行代码就能构建GPT!网友:比之前的教程都要清晰|附代码

其他大模型和peft高效参数微调

参考之前的:【LLM大模型】指令微调、peft高效参数微调

二、垂直领域大模型

MedicalGPT:医疗大模型

MedicalGPT项目:https://github.com/shibing624/MedicalGPT/tree/main

基于ChatGPT Training Pipeline,本项目实现了领域模型–医疗模型的四阶段训练:

  • 第一阶段:PT(Continue PreTraining)增量预训练,在海量领域文档数据上二次预训练GPT模型,以注入领域知识
  • 第二阶段:SFT(Supervised Fine-tuning)有监督微调,构造指令微调数据集,在预训练模型基础上做指令精调,以对齐指令意图
  • 第三阶段:RM(Reward Model)奖励模型建模,构造人类偏好排序数据集,训练奖励模型,用来对齐人类偏好,主要是"HHH"原则,具体是"helpful, honest, harmless"
  • 第四阶段:RL(Reinforcement Learning)基于人类反馈的强化学习(RLHF),用奖励模型来训练SFT模型,生成模型使用奖励或惩罚来更新其策略,以便生成更高质量、更符合人类偏好的文本

TransGPT:交通大模型

https://github.com/DUOMO/TransGPT

pt训练代码:采用了MedicalGPT提供的pretraining.py代码。
sft训练代码:采用了MedicalGPT提供的supervised_finetuning.py代码。

​EcomGPT:电商领域大模型

解决问题:解决电商场景任务(如品牌识别,评价解析,广告文案生成等)
论文链接:https://arxiv.org/abs/2308.06966
GitHub链接:https://github.com/Alibaba-NLP/EcomGPT

1. sft数据

  • 从学术论文或竞赛平台等开放数据源收集了共65个各种电商任务数据集,包括命名实体识别、评论问答、商品类目预测、多轮对话等传统的自然语言处理任务。这些开源数据集的任务都是由领域专家设计,然后由受过培训的人工标注,数据质量很高。
  • 电商领域的商品item虽然变化很快,但是电商数据类型相对稳定,包括产品信息、用户对话、用户评论和搜索查询等,所以EcomGPT对基础数据构建大量原子任务(如实体片段识别、实体分类等),即任务链任务(Chain of tasks)。原子任务的标注答案尽可能从公开任务原始的标注构造,以保证准确性。实在无法构造的,借助ChatGPT帮助生成。

在这里插入图片描述

2. 模型微调

  • 多任务的指令微调
  • 将特定数据集的任务指令与数据样本结合起来,构造了大规模的指令调优数据,然后基于这个指令数据集采用标准的因果语言模型(Causal Language Model)的训练范式训练。指令包含三个部分:任务描述、任务指令、输入句子。任务描述给出任务名称,任务指令描述具体的任务需求,输入句子则是具体需要分析的句子。

在这里插入图片描述

3. 评测数据集和评测结果

  • 在12个训练时没见过的数据集中进行测试,使用Rouge指标,对于分类、实体识别等任务也使用F1指标。

在这里插入图片描述

  • 分析:微调后的模型能够理解电商任务

在这里插入图片描述

  • 从下图中看到,数据越多样化(每个任务的训练数据越多),模型效果越好(ROUGE-L指标越高)。

在这里插入图片描述

llama变体

中文BiLLa: A Bilingual LLaMA with Enhanced Reasoning Ability,参考

  • 第一阶段:扩充中文词表,使用中文预训练语料Wudao、英文预训练语料PILE、翻译语料WMT的中英数据进行二次预训练。
  • 第二阶段:训练数据在第一阶段基础上增加任务型数据,训练过程中两部分数据保持1:1的比例混合。任务型数据均为NLP各任务的主流开源数据,包含有数学解题、阅读理解、开放域问答、摘要、代码生成等,利用ChatGPT API为数据标签生成解析,用于训练提升模型对任务求解逻辑的理解。
  • 第三阶段:保留第二阶段任务型数据,并转化为对话格式,增加其他指令数据(如Dolly 2.0、Alpaca GPT4、COIG等),进行对齐阶段的微调。

三、微调场景

1. fine-tune的目的和场景

  • 垂直领域(如英文类微调到中文):可以用无监督的继续预训练,构造带标注的指令微调数据(多场景、不同任务的数据,指令的描述形式也应该多样化,同时为了防止知识遗忘,需要引入通用领域预料)
    • BloomBerg尽量让通用语料与金融语料达到1:1的混合比例
    • 度小满将数据按照是否通用、是否带标注的指令数据等特性切分成块,包括通用无监督语料、金融无监督语料、通用标注指令语料、金融标注指令语料。然后将这些语料块打散随机组成训练的batch。
  • 下游任务场景:
    • faq对话类任务:知识库的具体内容问答,在6b、7b模型很难微调,如果模型较小,更适合结合langchain、autogpt等方式,将本地知识库的访问工具化,让模型不直接回答,而是做用户意图理解、知识检索与整合等
    • 文本分类、抽取、摘要等传统nlp任务: 一般来说不需要太多数据,甚至不需要微调,直接在prompt加入一些样例,用few-shot激发大模型的in-context learning能力。但由于大模型的输入context长度通常有限制,而样例涉及的上下文通常也比较长,所以很多时候还是要做微调(微调方法借鉴第二大点)

2. LLM微调的相关参数

以firefly模型全参微调为例:
进行全量参数微调:

deepspeed --num_gpus={num_gpus} train.py --train_args_file train_args/sft.json

train_args/sft.json中的主要参数说明如下,以下参数可以根据需求进行修改,其他参数建议不做修改:

  • output_dir:训练输出目录,存储checkpoint、tokenizer、tensorboard等
  • model_name_or_path:预训练模型的本地目录,或者在huggingface上的模型名称。
  • train_file:训练数据集路径。可以使用data/dummy_data.jsonl进行debug。
  • num_train_epochs:训练的轮次。如果数据量足够大,一般建议只训一个epoch。
  • per_device_train_batch_size:每张显卡的batch size。
  • gradient_accumulation_steps:梯度累计步数。global batch=num_gpus * per_device_train_batch_size * gradient_accumulation_steps。
  • gradient_checkpointing:如果显存捉襟见肘,可以开启。以时间换空间,模型不缓存激活状态,会进行两次forward计算,以节省显存。
  • learning_rate:学习率。全量参数微调的时候,建议小一些,1e-5或5e-6。
  • max_seq_length:训练时的最大长度。按照自己的设备进行设置,越长需要占用越多显存。
  • logging_steps:每隔多少步统计一次train loss。
  • save_steps:每隔多少步保存一个模型。
  • save_total_limit:output_dir目录中最多保存多少个checkpoint,超出则会将最旧的删除。
  • lr_scheduler_type:学习率变化策略。
  • warmup_steps:warm up步数。学习率经过多少步,增长到指定的数值。
  • optim:优化器。如果是全量参数微调,建议使用adamw_hf。
  • seed:随机种子,用于复现实验结果。
  • fp16:使用使用fp16混合精度。V100建议开启。
  • bf16:使用使用fp16混合精度。A100建议开启。

Reference

[1] 论文:Instruction Tuning for Large Language Models: A Survey
[2] 地址:https://arxiv.org/pdf/2308.10792.pdf
[3] 论文链接:https://arxiv.org/abs/2308.06966
[4] GitHub链接:https://github.com/Alibaba-NLP/EcomGPT
[5] Llama 2:最强开源大模型简单体验及原理分析

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF Material Design 初次使用

文章目录 前言相关资源快速开始快速开始说明地址 吐槽一下 前言 MD全称MaterialDesignInXamlToolkit,MaterialDesign和Bootstrap一样,都是一个UI风格库。相当于衣服中的休闲服,汉服,牛仔裤一样,就是风格不一样的Ui框架…

【包过滤防火墙-iptables】的简单使用

文章目录 规则链的分类--五链处理的动作iptables常用参数和作用 防火墙就是堵和通的作用 iptables :包过滤防火墙,是内核防火墙netfilter的管理工具 核心:四表五链 规则链的分类–五链 在进行路由选择前处理的数据包:PREROUTIN…

财报解读:成功通过“期中考”,创维多元布局产生多大协同效应?

2023年以来,在下游市场需求仍在复苏以及存量市场竞争加剧的背景之下,消费电子行业的发展受到不小挑战。不过,从中期业绩来看,可以发现一些企业还是具备一定的风险抵御能力,发展韧性显著,创维就是其中一员。…

十大管理——项目成本管理

目录 1.成本管理概念 2.成本管理的四个过程域 2.1四个过程的整体理解 ​2.2四个过程的ITO口诀版记忆 2.3过程1——制定项目管理计划 ​2.4过程2——项目成本估算​ 2.5过程3——项目成本预算 2.5过程4——项目成本控制 3计算题 1.成本管理概念 项目成本管理就是要确保…

window 常用基础命令

0、起步 0-1) 获取命令的参数指引 netstat /? 0-2) 关于两个斜杠: window 文件路径中使用反斜杠:\ linux 文件路径中使用:/ 1、开关机类指令 shutdown /s # 关机shutdown /r # 重启shutdown /l …

设备数据采集的挑战与机遇

导 读 ( 文/ 1661 ) 在现代制造业中,数据是实现高效、质量和盈利的关键驱动力。工厂设备数据采集是一种通过收集、分析和利用设备和流程数据,以提高生产效率、质量和可靠性的方法。 工厂设备数据可以提供有关设备性能、效率、健康状况和生产状况的…

OS 段页结合的实际内存管理

虚拟内存承接段和页,从用户角度,虚拟内存提供段,从硬件角度,虚拟内存把段打散映射到页 先基于段的翻译,再基于页的翻译 p是pcb跟着进程换,64M一个段,set base就是建段表 因为每个进程虚拟地址…

Java智慧工地源码 智慧工地APP源码

Java智慧工地源码 智慧工地APP源码 系统定义: 智慧工地信息化管理平台是依托计算机信息、网络通讯、物联网、系统集成及云计算技术,通过数据采集、信息动态交互、智能分析,建立起来的一套集成的项目建设综合管理系统。实现项目管理信息化、网…

51单片机项目(8)——基于51单片机的DS1302时钟系统

本次做的设计,是利用DS1302时钟芯片,做了一个时钟,并且将实时时间通过串口发送到上位机进行显示。系统运行如下:(protues文件和相关keil代码会在文章最后给出!!!) DS1302…

使用 THREE.js 进行边界体积碰撞检测

推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 使用 Box3 和 Sphere 三.js具有表示数学体积和形状的对象 - 对于3D AABB和边界球体,我们可以使用Box3和Sphere对象。实例化后,它们具有可用于针对其他卷进行交集测试的方法。 实例化盒子 要创…

zabbix 部署

1.zabbix简介 Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用 户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据 提供出色的报表和数据可视化功能。这些功能使得 Zabbix…

Cmake qt ,vtkDataArray.cxx.obj: File too big

解决方法: Qt4 在pro 加入“QMAKE_CXXFLAGS -BigObj” 可以解决 Qt5 在网上用“-Wa,-mbig-obj” 不能解决,最后通过“QMAKE_CXXFLAGS -Ofast -flto”解决问题。 Qt4 在pro 加入“QMAKE_CXXFLAGS -BigObj” 可以解决Qt5 在网上用“-Wa,-mbig-obj” …

aop中获取@PathVariable参数

1.controller中的声明 2.aop中获取 RequestAttributes attributes RequestContextHolder.getRequestAttributes(); ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes)attributes; HttpServletRequest request servletRequestAttributes.getReq…

漏洞修复:在应用程序中发现不必要的 Http 响应头

描述 blablabla描述,一般是在返回的响应表头中出现了Server键值对,那我们要做的就是移除它,解决方案中提供了nginx的解决方案 解决方案 第一种解决方案 当前解决方案会隐藏nginx的版本号,但还是会返回nginx字样,如…

WordPress关注公众号可见内容插件源码

Wordpress公众号引流工具——关注公众号可见内容插件推荐 通过关注微信公众号,获取随机验证码从而获得隐藏文本的访问权限。 插件特点 隐藏内容扫码关注获取验证码 可以作为引流公众号 支持无必须API接口,无备案域名也可以 自定义验证接口URL 自定…

每天一道动态规划之第四天

一、与字符串相关的动态规划 1.1题目 给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来返回需要至少多少张贴纸可以完…

vue第1篇前端的发展历史

一 vue的发展历史 1.1 vue vue是一个渐进式的javascript框架,Vue 的核心库只关注视图层,方便与第三方库或既有项目整合。 1.2 前端知识核心快捷汇总 Soc原则:关注点分离原则 HTML CSS JS : 视图 : 刷新后端提供的数据展示…

经管博士科研基础【16】一元二次函数的解的公式

1. 一元二次函数的形式 2. 一元二次函数的图形与性质 一元二次函数的图像是一条抛物线,图像定点公式为(-b/2a,4ac-b*b/4a),对称轴位直线x-b/2a。 3. 求根公式 形如ax*xb*xc0的一元二次方程,其求根公式为: 4. 韦达定理 如果x1和…

财报解读:份额企稳、均价上浮,小米高端化驶入正轨?

时隔半个月,在雷军那场颇有反响的以“成长”为主题的个人演讲之后,小米发布了今年二季度财报。二季报中亮眼的财务数据,为雷军的演讲提供了一份更加有力的注解,小米经过三年探索,似乎已经找到了高端化的诀窍&#xff0…

C++:日期类

学习目标: 加深对四个默认构造函数的理解: 1.构造函数 2.析构函数 3.拷贝构造 4.运算符重载 实现功能 1.比较日期的大小 2.日期-天数 3.前/后置,-- 这里基本会使用运算符重载 定义一个日期类 class Date { public://1.全缺省参数的构造函数Da…