LLM训练的大致介绍

部署运行你感兴趣的模型镜像

基于现有模型,继续pretrain大模型

PyTorch + Huggingface transformers的AutoModelForCausalLM和AutoTokenizer

预训练样本打成batch:

1. 假设有2个样本:

2. 拼接起来

3. 按照sequence length来切分

4. 丢弃掉末尾长度不够的那个:

------------------------------------------

<EOS>、<BOS>那种标签,是可以把前后2个doc隔离开的,各自的self-attention不会受到corss-doc的影响。例如,LLama3:

原文:https://ai.meta.com/blog/meta-llama-3/

------------------------------------------

不考虑doc边界那种,更popular。

考虑doc边界的,效果更好。

有人写了论文做了实验来对比:2402.13991

MIXChunk: 同一个chunk里的doc是随机选取的,可以跨来源。

UNIChunk: 同一个chunk里的doc是从同一个来源获取的(比如都从Wiki里)。

BM25Chunk: 同一个chunk里的doc是有相关性的doc组成的。

INTRADoc: 考虑了doc边界。即每个token只和本doc内,前面的tokens有关。(前面3种,是每个token和本chunk内所有前面的tokens有关)

Huggingface的Trainer类:

各种配置选项:

Huggingface accelerate来做并行训练:

大模型的能力,是在预训练阶段做好的。

如果直接使用预训练后的大模型,仍然是续写

解决:使用SFT微调,教会大模型做各种任务。

Chat Template:

每种大模型,有自己的ChatTemplate。使用自己的特殊token和格式,来填充input sequence。

在tokenizer_config.json里:

填充模板:

这个参数,控制填不填assistant标签:

为True,则填上:

loss mask

只对Answer计算loss, 对input不计算loss:

loss mask为0的,是将0加入到整个句子的总loss里,反向传播到不了他们那里。

删掉最后1个token的logits:

inputs左移1个位置,得到labels:

最后logits和labels,计算交叉熵corss_entropy,乘以loss_mask,加和,得到总loss。

使用Huggingface自带的trl库的SFTTrainer

SFTTrainer会自动使用tokenizer配置自带的template来对dataset样本进行填充。

collator是控制只对completion(即answer)部分的tokens计算loss的。传入completion开始的字符串即可。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值