Index-1.9B: 小巧精炼的B站大模型

NoSQL容器MySQL
前言

今天,B站大模型团队发布了Index-1.9B系列模型,是Index大语言模型系列中的19亿参数规模的模型,如下所示

  • Index-1.9B base : 基座模型,具有 19亿 非词嵌入参数量,在2.8T 中英文为主的语料上预训练,多个评测基准上与同级别模型比处于领先.
  • Index-1.9B pure : 基座模型的对照组,与base具有相同的参数和训练策略,不同之处在于严格过滤了该版本语料中所有指令相关的数据,以此来验证指令对benchmark的影响.
  • Index-1.9B chat : 基于index-1.9B base通过SFT和DPO对齐后的对话模型。
  • Index-1.9B character : 在SFT和DPO的基础上引入了RAG来实现fewshots角色扮演定制。
技术报告

B站大模型团队在github中发布了Index-1.9B的技术报告,以下是针对技术报告中内容的总结。

语料

  • 量级:2.8T的中英混合语料(4:5),代码占比6%。
  • 语料清洗和常见的清洗策略大同小异,值得注意的是报告中提到,B站实现了一种“支持任意长度、任意位置的文档内字符串去重方法”。

Tokenizer

  • BPE算法,基于SentencePiece进行训练
  • 中文独立训练,词表大小为65029
  • append后的tokenizer拥有优秀的压缩率picture.image

预训练

模型结构

模型结构上 Follow Llama 的设定,使用了更深的结构,并增加了norm-head 结构,支持更高的学习率进行学习。

参数取值
Hidden Size2048
FFN Size5888
n.Heads16
n.Layers36
Seq.4096
Max LR5E-04
Batch Size4M

训练过程

采用了目前比较常见的两阶段训练策略

  • 在stable阶段,使用通用语料,固定学习率 5e-4 进行训练
  • 在decay阶段(后10%),使用高质量语料数据(提高精选数据的浓度),通过学习率衰减(5e-4 -> 5e-6)进行训练

在decay阶段提高指令数据的浓度可以显著提升benchmark的成绩,因此B站大模型团队同步开源了Index-1.9B-Pure 模型,全程使用自然语言文本。

在Index-1.9B的训练过程中,观察到了一次模型性能的突涨,类似于GLM团队的论文Understanding Emergent Abilities of Language Models from the Loss Perspective中提到的涌现能力。

评测结果

Index-1.9B 通用理解能力的评测结果picture.image

对齐

  • 10M的高质量中英文指令数据,采用主流的聚类增强多样性和Reward Model打分策略对数据进行清洗和筛选,筛选出高质量且多样的子集。
  • 针对指令跟随,通过调整系统指令,能够引导模型给出不同设定和风格的回答,从而实现角色扮演,语言风格转化等能力。

DPO

  • 10w+条高质量的pair数据。
  • 主要针对写作类、指令遵循和安全进一步对齐。一方面,对于写作类任务,回答具备开放性,单一的目标文本并不一定是最优的回答,模型在DPO优化中能学会优劣的标准,从而生成更符合人类偏好的回答;另一方面,对于指令遵循和安全性任务,通过学习对比chosen和reject回答,模型能掌握指令的要求以及拒答的类型,从而更进一步对齐人类偏好,一个比较好的例子是指令遵循中的字数控制。
模型列表和下载链接

Github链接:https://github.com/bilibili/Index-1.9B【求star!!!】

huggingface链接:https://huggingface.co/IndexTeam

模型名称模型链接
Index-1.9Bhttps://huggingface.co/IndexTeam/Index-1.9B
Index-1.9B-Purehttps://huggingface.co/IndexTeam/Index-1.9B-Pure
Index-1.9B-Chathttps://huggingface.co/IndexTeam/Index-1.9B-Chat
Index-1.9B-Characterhttps://huggingface.co/IndexTeam/Index-1.9B-Character
模型推理

使用Transformers 推理,将参数model_path 替换为下载好的Index-1.9B-Chat路径即可体验。


        
          
import torch  
import argparse  
from transformers import AutoTokenizer, AutoModelForCausalLM  
  
parser = argparse.ArgumentParser()  
parser.add_argument('--model\_path', default="", type=str, help="")  
args = parser.parse_args()  
  
tokenizer = AutoTokenizer.from_pretrained(args.model_path, trust_remote_code=True)  
model = AutoModelForCausalLM.from_pretrained(args.model_path, torch_dtype=torch.bfloat16, trust_remote_code=True, device_map='auto')  
model = model.eval()  
print('model loaded', args.model_path, model.device)  
  
system_message = "你是由哔哩哔哩自主研发的大语言模型,名为“Index”。你能够根据用户传入的信息,帮助用户完成指定的任务,并生成恰当的、符合要求的回复。"  
query = "续写 天不生我金坷垃"  
model_input = []  
model_input.append({"role": "system", "content": system_message})  
model_input.append({"role": "user", "content": query})  
  
inputs = tokenizer.apply_chat_template(model_input, tokenize=False, add_generation_prompt=False)  
input_ids = tokenizer.encode(inputs, return_tensors="pt").to(model.device)  
history_outputs = model.generate(input_ids, max_new_tokens=300, top_k=5, top_p=0.8, temperature=0.3, repetition_penalty=1.1, do_sample=True)  
  
# 删除</s>  
if history_outputs[0][-1] == 2:  
    history_outputs = history_outputs[:, :-1]  
  
outputs = history_outputs[0][len(input_ids[0]):]  
print('User:', query)  
print('\nModel:', tokenizer.decode(outputs))  
  

      
Demo

官方仓库内提供了方便简洁的web_demo,依赖Gradio,安装命令:


        
          
pip install gradio==4.29.0  

      

通过以下代码启动一个web server,在浏览器输入访问地址后,可使用 Index-1.9B-Chat 模型进行对话:


        
          
python demo/web_demo.py --port='port' --model_path='/path/to/model/'  

      

使用默认的system messagepicture.image

picture.image

你也可以改变system message,让他扮演一位阴阳怪气的B站老哥picture.image

你也可以通过上传符合要求的角色对话语料,使用Index-1.9B-Character实现few shots角色定制picture.image

总结

以上是对B站大模型团队发布的Index-1.9B模型的简要介绍,详情可以访问官方github或者huggingface地址了解更多细节,求点赞Star!!!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
从 ClickHouse 到 ByteHouse
《从ClickHouse到ByteHouse》白皮书客观分析了当前 ClickHouse 作为一款优秀的开源 OLAP 数据库所展示出来的技术性能特点与其典型的应用场景。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论