jq8205 / Fengshenbang-LM

封神榜大模型是IDEA研究院认知计算与自然语言研究中心主导的大模型开源计划

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fengshenbang-LM

最近两年,预训练逐渐成为整个认知智能的基础,自然语言和计算机视觉的算法全方面的依赖于预训练模型来构建。

预训练模型的规模从最初的1亿参数BERT到一千多亿参数的GTP-3,正在以每年10倍的速度增加。针对不同的下游任务,我们需要不同的结构,不同的尺寸和不同的专业领域的预训练模型。 这个世界需要更多更大的模型。但是,有限的算力资源是限制整个领域进一步发展的瓶颈。尤其是高校、小公司和一些传统公司,根本不具备足够的算力来训练和使用大规模预训练模型。这些都阻碍了整个人工智能技术更进一步的落地。

这个世界需要一个答案。

IDEA研究院正式宣布,我们开启 “封神榜”大模型开源计划。在这个计划中,我们全方面的开源一系列的自然语言预训练大模型,它们将覆盖不同的模型结构、不同的模型尺寸、不同的专业领域。而且我们承诺,我们将对这些模型做持续的升级,不断融合最新的数据和最新的训练算法。通过我们IDEA研究院的努力,我们打造中文认知智能的通用基础设施,避免重复建设,我们为全社会节省算力。

avatar

同时,我们也希望各个公司、高校、机构加入到这个开源计划中,一起共建大模型开源体系。未来,当我们需要一个新的预训练模型,都应该是首先从这些开源大模型中选取一个最接近的,做继续训练,然后再把新的模型开源回这个体系。这样,每个人用最少的算力,就能得到自己的模型,同时这个开源大模型体系也能越来越大。

avatar

为了更好的体验,拥抱开源社区,封神榜的所有模型都转化并同步到了Huggingface社区,你可以通过几行代码就能轻松使用封神榜的所有模型,欢迎来IDEA-CCNL的huggingface社区下载。

二郎神系列

Encoder结构为主的双向语言模型,专注于解决各种自然语言理解任务。 13亿参数的二郎神-1.3B大模型,采用280G数据,32张A100训练14天,是最大的开源中文Bert大模型。2021年11月10日在中文语言理解权威评测基准FewCLUE 榜单上登顶。其中,CHID(成语填空)、TNEWS(新闻分类)超过人类,CHID(成语填空)、CSLDCP(学科文献分类)、OCNLI(自然语言推理)单任务第一,刷新小样本学习记录。二郎神系列会持续在模型规模、知识融入、监督任务辅助等方向不断优化。

image

模型下载地址

Huggingface 二郎神-1.3B

模型加载

from transformers import MegatronBertConfig, MegatronBertModel
from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained("IDEA-CCNL/Erlangshen-1.3B")
config = MegatronBertConfig.from_pretrained("IDEA-CCNL/Erlangshen-1.3B")
model = MegatronBertModel.from_pretrained("IDEA-CCNL/Erlangshen-1.3B")

使用示例

为了便于开发者快速使用我们的开源模型,这里提供了一个下游任务的finetune示例脚本,使用的CLUE上的afqmc语义匹配任务数据,运行脚本如下。其中DATA_PATH为数据路径,afqmc任务数据的下载地址,PRETRAINED_MODEL_PATH为预训练模型的路径。你可以从HuggingFace把模型下载到本地路径,然后令PRETRAINED_MODEL_PATH等于你的模型存储路径。若你不想下载模型,可以令PRETRAINED_MODEL_PATH="IDEA-CCNL/Erlangshen-1.3B",提供的脚本会自动下载模型到本地。

python example/finetune.py " \
        --train_data_path $TRAIN_DATA_PATH \
        --dev_data_path $DEV_DATA_PATH \
        --test_data_path $TSET_DATA_PATH \
        --pretrained_model_path $PRETRAINED_MODEL_PATH \
        --checkpoints ./model.pth \
        --output_path ./afqmc_predict.json \
        --log_file_path ./finetune.log \
        --batch_size 32 \
        --learning_rate 0.00002 \
        --max_length 64 \
        --epoch 7 \
        --model_type megatron \
            "

为了便于开发者在开源模型的基础上继续做任务相关的预训练,这里提供了一个继续预训练的pretraining脚本,运行脚本如下:

python example/pretraining.py " \
        --train_data_path $TRAIN_DATA_PATH \
        --dev_data_path $DEV_DATA_PATH \
        --test_data_path $TSET_DATA_PATH \
        --pretrained_model_path $PRETRAINED_MODEL_PATH \
        --checkpoints ./model.pth \
        --output_path ./afqmc_predict.json \
        --log_file_path ./pretraining.log \
        --batch_size 128 \
        --learning_rate 0.00002 \
        --max_length 64 \
        --epoch 135 \
        --model_type megatron \
            "

下游效果

模型 afqmc tnews iflytek ocnli cmnli wsc csl
roberta-wwm-ext-large 0.7514 0.5872 0.6152 0.777 0.814 0.8914 0.86
二郎神-1.3B 0.7608 0.5996 0.6234 0.7917 0.81 0.9243 0.872

周文王系列

IDEA研究院认知计算中心联合追一科技有限公司的新结构大模型。该模型在训练阶段就统一考虑LM(Language Model)和MLM(Mask Language Model)任务,增加了旋转位置编码技术,让模型同时具备生成和理解的能力。目前已有13亿参数的周文王-1.3B大模型,是中文领域同时做LM和MLM任务最大的模型,会持续在模型规模、知识融入、监督任务辅助等方向不断优化。

模型下载地址

Huggingface 周文王-1.3B
Huggingface 周文王-110M

模型加载

由于我们现在的周文王结构是在追一科技之前的roformer结构进行的修改,而HuggingFace还没有周文王的模型结构。因此需要从本仓库导入model文件夹到你自己的工程根目录下。导入之后,即可按照下面的脚本从huggingface下载并加载对应的模型:

from model.roformer.modeling_roformer import RoFormerModel            #从本仓库提供的roformer文件中导入roformer模型
from model.roformer.configuration_roformer import RoFormerConfig
from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('IDEA-CCNL/Zhouwenwang-110M')
config = RoFormerConfig.from_pretrained('IDEA-CCNL/Zhouwenwang-110M')
model = RoFormerModel.from_pretrained('IDEA-CCNL/Zhouwenwang-110M')

使用示例

python example/finetune.py " \
        --train_data_path $TRAIN_DATA_PATH \
        --dev_data_path $DEV_DATA_PATH \
        --test_data_path $TSET_DATA_PATH \
        --pretrained_model_path $PRETRAINED_MODEL_PATH \
        --checkpoints ./model.pth \
        --output_path ./afqmc_predict.json \
        --log_file_path ./finetune.log \
        --batch_size 32 \
        --learning_rate 0.00002 \
        --max_length 64 \
        --epoch 7 \
        --model_type roformer \
            "

下游效果

自然语言理解

使用周文王-1.3B模型进行自然语言理解任务时,需要将token_type全部设置为0。周文王的下游任务表现如下:

模型 afqmc tnews iflytek ocnli cmnli wsc csl
roberta-wwm-ext-large 0.7514 0.5872 0.6152 0.777 0.814 0.8914 0.86
周文王-1.3B 0.7463 0.6036 0.6288 0.7654 0.7741 0.8849 0. 8777

自然语言生成

使用周文王-1.3B模型进行自然语言生成任务时,需要将token_type全部设置为1。周文王的生成例子如下:

from model.roformer.modeling_roformer import RoFormerModel
from transformers import AutoTokenizer
import torch
import numpy as np

sentence = '清华大学位于'
max_length = 32

tokenizer = AutoTokenizer.from_pretrained('IDEA-CCNL/Zhouwenwang-110M')
model = RoFormerModel.from_pretrained('IDEA-CCNL/Zhouwenwang-110M')

for i in range(max_length):
    encode = torch.tensor(
        [[tokenizer.cls_token_id]+tokenizer.encode(sentence, add_special_tokens=False)]).long()
    logits = model(encode)[0]
    logits = torch.nn.functional.linear(
        logits, model.embeddings.word_embeddings.weight)
    logits = torch.nn.functional.softmax(
        logits, dim=-1).cpu().detach().numpy()[0]
    sentence = sentence + \
        tokenizer.decode(int(np.random.choice(logits.shape[1], p=logits[-1])))
    if sentence[-1] == '。':
        break
print(sentence)

闻仲系列

Decoder结构为主的单向语言模型,是一系列强大的生成模型。 35亿参数的闻仲-3.5B大模型,采用100G数据,256张A100训练28小时。

模型下载地址

Huggingface 闻仲-3.5B

load model

from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('IDEA-CCNL/Wenzhong-3.5B')
model = GPT2Model.from_pretrained('IDEA-CCNL/Wenzhong-3.5B')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)

generation

from transformers import pipeline, set_seed
set_seed(55)
generator = pipeline('text-generation', model='IDEA-CCNL/Wenzhong-3.5B')
generator("北京是**的", max_length=30, num_return_sequences=1)

燃灯

Transformer结构为主的编解码语言模型,7.7亿参数的燃灯-7.7B大模型,采用280G数据,16张A100训练14天。 即将开源,敬请期待。。。

余元

医学领域的余元系列,35亿参数余元-3.5B大模型,采用50G的医疗领域数据和知识,在已有的通用模型基础上继续训练,32张A100训练7天,是目前最大的开源GPT2医疗大模型。我们的模型在医学领域的事实判断中具有近90%的准确率。

我们利用余元-3.5B大模型实现事实判断,医学问答。更多的可能性等着你去发现。

模型下载地址

Huggingface 余元-3.5B

load model

from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('IDEA-CCNL/Yuyuan-3.5B')
model = GPT2Model.from_pretrained('IDEA-CCNL/Yuyuan-3.5B')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)

generation

from transformers import pipeline, set_seed
set_seed(55)
generator = pipeline('text-generation', model='IDEA-CCNL/Yuyuan-3.5B')
generator("Diabetics should not eat", max_length=30, num_return_sequences=1)

引用

@misc{Fengshenbang-LM,
  title={Fengshenbang-LM},
  author={IDEA-CCNL},
  year={2021},
  howpublished={\url{https://github.com/IDEA-CCNL/Fengshenbang-LM}},
}

联系我们

avartar

License

Apache License 2.0

About

封神榜大模型是IDEA研究院认知计算与自然语言研究中心主导的大模型开源计划

License:Apache License 2.0


Languages

Language:Python 100.0%