csg-wukong-1B模型:OpenCSG让高端AI技术走向大众

01 关于csg-wukong模型

csg-wukong是OpenCSG算法团队自研的预训练模型系列,其中base模型csg-wukong-1B是具有1B参数量的small language model(SLM)预训练模型。++csg-wukong-1B具有参数量小、推理成本低、性能强悍等优点,可支持多种适用场景并灵活适配下游微调任务。++

csg-wukong-1B模型在预训练阶段第一阶段采用了1T (3 epoch)tokens英文通用语料数据,其中包括了the pile、wikipedia、Commoncrawl、C4、StackExchange、Github、arxiv等数据集;在第二阶段训练使用了30B tokens合成数据,它们是通过gpt4、mixtral 8X7B、QWEN-72B 综合蒸馏得到的高质量训练数据,通过合适的数据配比完成了第二阶段的训练。

csg-wukong-1B在16张H800卡上进行了为期43天的预训练,这个消耗是很多研究者、企业、高校都可以接受的范围;同时由于模型仅有1B参数量,部署成本非常低,可以在个人PC、手机、各类IOT边端设备上进行部署,所以这是一个每个人都能负担得起的模型。

csg-wukong-1B模型下载与体验地址:

传神社区下载: https://opencsg.com/models/OpenCSG/csg-wukong-1B

传神社区模型在线体验: https://opencsg.com/spaces/OpenCSG/csg-wukong-1B

Huggingface社区: https://huggingface.co/opencsg/csg-wukong-1B

其中csg-wukong-1B在开源不到一周的时间内,已经在huggingface社区模型下载量直逼1K!!!

下面我们将从训练框架的选择及魔改、训练方法的优化、数据质量评估方法以及模型评测结果等多方面来介绍csg-wukong当前的工作情况。

02 高效的训练框架

OpenCSG采用了近期比较火热的pytorch-lightning框架对csg-wukong进行预训练,它的优点相比deepspeed、megatron更加轻量,在训练小参数量模型时候直接采用数据并行方法,如FSDP能获得极佳的训练速度,通信也相对较少,并且已经融合到Nvidia Nemo框架中,有较好的拓展性。

不仅如此,OpenCSG还对lightning框架进行了魔改,在训练前对数据量、显存、数据长度进行综合评估,配置当前硬件环境下最为合适的分词数据块,能够避免像huggingface tokenize api 容易造成显存分布不均以及显存碎片较多的问题。

lightning助力csg-wukong

批数据分词后显存占用均匀

预训练过程中,对GPU服务器的监控以及框架的稳定性非常重要,我们采用了wandb对lightning框架的训练过程进行监控,无论是GPU显存占用情况,还是GPU功耗,或者CPU、内存以及磁盘都可以实时监控。

另外,loss和ppl(困惑度)指标只能在训练前期阶段的时候满足我们对训练过程的分析,在loss和ppl曲线趋于平坦的时候,我们还需要监控benchmark评测指标,由于前期lightning版本没有融入lm-evaluation-harness,我们手动魔改了评测监控这部分功能,这样我们就能够清晰地看出在训练到哪一部分数据集时,相应的评测结果会变差,也能够为后面数据质量评估助力。后期我们会把魔改过的代码贡献给lightning项目,并会持续跟进该项目的发展。

03 进阶的训练方法

训练的方法对于大模型而言至关重要,尤其是SLM这个方向。目前已经有不少工作提出chinchilla optimal存在的局限性,训练数据规模和模型的比率可以放得更大。但是我们也尝试着用10M、30M、70M、120M的模型去跑scaling law实验,当数据价值比较高的时候,SLM性能仍然可以上升,也就是说scaling law没法衡量数据价值给模型带来的额外增益。

尽管如此,我们目前手上已经处理完的预训练数据还是较为有限,在OpenCSG以及huggingface社区上的开源数据集,经过自研的数据质量评估系统最终保留了1T (3epoch)tokens,在第二阶段的continue pretrain阶段采用高质量的合成数据,整个训练过程我们采用了两台8卡H800服务器进行了为期43天的训练。我们采用了常规训练参数设置以及在第二阶段预训练再次激活余弦学习率方式进行训练,这样做的目的是在模型与第一阶段的训练方法上和目前主流的预训练模型保持一致,以便于公平对比。除此之外,我们自研了一种模型增量训练的方法,可以使得模型在不遗忘先前知识的情况下持续训练,通过注入新的训练数据持续提高模型能力。

04 系统化的数据质量评估方法

值得一提的是,OpenCSG自研了一套数据质量评估的方法,它可以在训练前、训练中、训练后三个不同阶段评估出数据在不同阶段给训练带来的影响。

训练前我们通过一些常规的方案如Falcon工作中提到的多阶段的去重,数据采集时间的限制、通过开源大参数量的模型以及GPT4对数据质量和安全性进行打分筛选。

训练中,OpenCSG将训练数据shuffle后仍记录其所属数据集名称在训练过程中根据评估指标筛选出质量较低的数据。

训练后我们通过实际应用评测找出哪一类别问题模型的理解能力不够,从而在后一阶段训练时补强相关主题数据的训练。另外,我们还有一些比较特别的数据质量评估方案将会在不久的未来逐步公开。

05 csg-wukong-1B模型排名跻身前十

目前csg-wukong-1B在huggingface综合性榜单open_llm_leaderboard上排名第8,仅次于阿里Qwen1.5版本模型,另外随着新高质量数据的不断加入和数据质量评估方法的持续升级,我们将会进一步提升模型对不同问题的理解能力。

06 面对挑战 精益求精

由于csg-wukong-1B是OpenCSG首次进行大规模预训练,因此在数据类目、数据处理等方面的准备仍有很大的不足,未来我们会努力提升这方面的能力。同时因为资源限制等影响,算法模型的改进暂时未被考虑到,但我们会在后续阶段对SLM这类模型进行深入的调研,并努力在算法模型层面提出创新性的建议。

我们将在不久的未来再进一步提升csg-wukong-1B这个base模型的通用能力,并逐步开源csg-wukong-1B-chat对话模型、代码生成模型csgcoder以及多模态图文理解模型csg-wukong-1B-VL,以促进更广泛的应用和发展。届时我们会给大家带来详细的技术报告。

关注Opencsg

Huggingface社区:https://huggingface.co/opencsg

GitHub社区:https://github.com/OpenCSGs

相关推荐
胡耀超6 分钟前
知识图谱入门——3:工具分类与对比(知识建模工具:Protégé、 知识抽取工具:DeepDive、知识存储工具:Neo4j)
人工智能·知识图谱
陈苏同学14 分钟前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
吾名招财32 分钟前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
羊小猪~~1 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
我是哈哈hh1 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
鼠鼠龙年发大财1 小时前
【鼠鼠学AI代码合集#7】概率
人工智能
Tisfy1 小时前
LeetCode 2187.完成旅途的最少时间:二分查找
算法·leetcode·二分查找·题解·二分
龙的爹23331 小时前
论文 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·深度学习·语言模型·自然语言处理·prompt
工业机器视觉设计和实现1 小时前
cnn突破四(生成卷积核与固定核对比)
人工智能·深度学习·cnn
醒了就刷牙1 小时前
58 深层循环神经网络_by《李沐:动手学深度学习v2》pytorch版
pytorch·rnn·深度学习