- [2022.09.13] 更新ErLangShen系列DeBERTa预训练代码
- [2022.09.13] 更新RanDeng系列Bart预训练代码
- [2022.09.13] 更新ErLangShen系列Bert预训练代码
- [2022.05.11] 更新TaiYi系列VIT多模态模型及下游任务示例
- [2022.05.11] 更新BiGan系列Transformer-XL去噪模型及下游任务示例
- [2022.05.11] 更新ErLangShen系列下游任务示例
FengShen训练框架是封神榜大模型开源计划的重要一环,在大模型的生产和应用中起到至关重要的作用。FengShen可以应用在基于海量数据的预训练以及各种下游任务的finetune中。封神榜专注于NLP大模型开源,然而模型的增大带来不仅仅是训练的问题,在使用上也存在诸多不便。为了解决训练和使用的问题,FengShen参考了目前开源的优秀方案并且重新设计了Pipeline,用户可以根据自己的需求,从封神榜中选取丰富的预训练模型,同时利用FengShen快速微调下游任务。
目前所有实例以及文档可以查看我们的Wiki 所有的模型可以在Huggingface主页找到
通过我们的框架,你可以快速享受到:
- 比原生torch更强的性能,训练速度提升300%
- 支持更大的模型,支持百亿级别内模型训练及微调
- 支持TB级以上的数据集,在家用主机上即可享受预训练模型带来的效果提升
- 丰富的预训练、下游任务示例,一键开始训练
- 适应各种设备环境,支持在CPU、GPU、TPU等不同设备上运行
- 集成主流的分布式训练逻辑,无需修改代码即可支持DDP、Zero Optimizer等分布式优化技术
- Python >= 3.8
- torch >= 1.8
- transformers >= 3.2.0
- pytorch-lightning >= 1.5.10
在Fengshenbang-LM根目录下 pip install --editable ./
├── data # 支持多种数据处理方式以及数据集
│ ├── cbart_dataloader
| ├── fs_datasets # 基于transformers datasets的封装,新增中文数据集(开源计划中)
| ├── universal_datamodule # 打通fs_datasets与lightning datamodule,减少重复开发工作量
│ ├── megatron_dataloader # 支持基于Megatron实现的TB级别数据集处理、训练
│ ├── mmap_dataloader # 通用的Memmap形式的数据加载
│ └── task_dataloader # 支持多种下游任务
├── examples # 丰富的示例,从预训练到下游任务,应有尽有。
├── metric # 提供各种metric计算,支持用户自定义metric
├── losses # 同样支持loss自定义,满足定制化需求
├── tokenizer # 支持自定义tokenizer,比如我们使用的SentencePiece训练代码等
├── models # 模型库
│ ├── auto # 支持自动导入对应的模型
│ ├── bart
│ ├── longformer
│ ├── megatron_t5
│ └── roformer
└── utils # 实用函数
FengShen框架目前整体基于Pytorch-Lightning & Transformer进行开发,在底层框架上不断开源基于中文的预训练模型,同时提供丰富的examples,每一个封神榜的模型都能找到对应的预训练、下游任务代码。
在FengShen上开发,整体可以按照下面的三个步骤进行:
- 封装数据处理流程 -> pytorch_lightning.LightningDataModule
- 封装模型结构 -> pytorch_lightning.LightningModule
- 配置一些插件,比如log_monitor,checkpoint_callback等等。
一个完整的DEMO可以看Randeng-BART系列实例 -> 文档 代码
在examples/classification目录下,我们提供丰富的分类任务的示例,其中我们提供三个一键式运行的示例。
- demo_classification_afqmc_roberta.sh 使用DDP微调roberta
- demo_classification_afqmc_roberta_deepspeed.sh 结合deepspeed微调roberta,获得更快的运算速度
- demo_classification_afqmc_erlangshen_offload.sh 仅需7G显存即可微调我们效果最好的二郎神系列模型
上述示例均采用AFQMC的数据集,关于数据集的介绍可以在这里找到。 同时我们处理过的数据文件已经放在Huggingface上,点击这里直达源文件。 仅需要按我们的格式稍微处理一下数据集,即可适配下游不同的分类任务。 在脚本示例中,仅需要修改如下参数即可适配本地文件
--dataset_name IDEA-CCNL/AFQMC \
-------> 修改为
--data_dir $DATA_DIR \ # 数据目录
--train_data train.json \ # 数据文件
--valid_data dev.json \
--test_data test.json \