模型:

dbmdz/bert-small-historic-multilingual-cased

英文

历史语言模型(HLMs)

语言

我们的历史语言模型库支持以下语言 - 包括它们的训练数据来源:

Language Training data Size
German 1234321 13-28GB (filtered)
French 1234321 11-31GB (filtered)
English 1236321 24GB (year filtered)
Finnish 1234321 1.2GB
Swedish 1234321 1.1GB

模型

目前在模型中心提供以下模型:

Model identifier Model Hub link
dbmdz/bert-base-historic-multilingual-cased 1239321
dbmdz/bert-base-historic-english-cased 12310321
dbmdz/bert-base-finnish-europeana-cased 12311321
dbmdz/bert-base-swedish-europeana-cased 12312321

我们还发布了多语言模型的较小模型:

Model identifier Model Hub link
dbmdz/bert-tiny-historic-multilingual-cased 12313321
dbmdz/bert-mini-historic-multilingual-cased 12314321
dbmdz/bert-small-historic-multilingual-cased 12315321
dbmdz/bert-medium-historic-multilingual-cased 1239321

注意:我们先前基于更嘈杂的数据发布了德语和法语历史语言模型 - 有关更多信息,请参见 this repo :

Model identifier Model Hub link
dbmdz/bert-base-german-europeana-cased 12318321
dbmdz/bert-base-french-europeana-cased 12319321

语料库统计

德国欧洲文化遗产语料库

我们提供使用不同的ocr置信度阈值的一些统计数据,以缩小语料库的规模并使用更少噪音的数据:

OCR confidence Size
0.60 28GB
0.65 18GB
0.70 13GB

对于最终语料库,我们使用了0.6的OCR置信度(28GB)。以下图显示了每年的令牌分布:

法国欧洲文化遗产语料库

与德语类似,我们使用不同的ocr置信度阈值:

OCR confidence Size
0.60 31GB
0.65 27GB
0.70 27GB
0.75 23GB
0.80 11GB

对于最终语料库,我们使用了0.7的OCR置信度(27GB)。以下图显示了每年的令牌分布:

英国图书馆语料库

元数据来自 here 。包括年份筛选的统计数据:

Years Size
ALL 24GB
>= 1800 && < 1900 24GB

我们使用经过年份筛选的变体。以下图显示了每年的令牌分布:

芬兰欧洲文化遗产语料库

OCR confidence Size
0.60 1.2GB

以下图显示了每年的令牌分布:

瑞典欧洲文化遗产语料库

OCR confidence Size
0.60 1.1GB

以下图显示了每年的令牌分布:

所有语料库

以下图显示了完整训练语料库每年的令牌分布:

多语言词汇生成

首次尝试,我们使用每个预训练语料库的前10GB。我们对芬兰语和瑞典语进行了上采样,使其接近10GB。以下表格显示了用于生成32k和64k子词汇的确切大小:

Language Size
German 10GB
French 10GB
English 10GB
Finnish 9.5GB
Swedish 9.7GB

然后,我们计算以下NER语料库中子词生育率和[UNK]的占比:

Language NER corpora
German CLEF-HIPE, NewsEye
French CLEF-HIPE, NewsEye
English CLEF-HIPE
Finnish NewsEye
Swedish NewsEye

32k词汇的每种语言的子词生育率和未知占比细分:

Language Subword fertility Unknown portion
German 1.43 0.0004
French 1.25 0.0001
English 1.25 0.0
Finnish 1.69 0.0007
Swedish 1.43 0.0

64k词汇的每种语言的子词生育率和未知占比细分:

Language Subword fertility Unknown portion
German 1.31 0.0004
French 1.16 0.0001
English 1.17 0.0
Finnish 1.54 0.0007
Swedish 1.32 0.0

最终预训练语料库

我们将瑞典语和芬兰语上采样到约27GB。所有预训练语料库的最终统计数据可以在这里看到:

Language Size
German 28GB
French 27GB
English 24GB
Finnish 27GB
Swedish 27GB

总大小为130GB。

较小的多语言模型

"Well-Read Students Learn Better: On the Importance of Pre-training Compact Models" 论文的启发,我们使用较小模型(不同的层数和隐藏大小)进行训练,并报告参数数量和预训练成本:

Model (Layer / Hidden size) Parameters Pre-Training time
hmBERT Tiny ( 2/128) 4.58M 4.3 sec / 1,000 steps
hmBERT Mini ( 4/256) 11.55M 10.5 sec / 1,000 steps
hmBERT Small ( 4/512) 29.52M 20.7 sec / 1,000 steps
hmBERT Medium ( 8/512) 42.13M 35.0 sec / 1,000 steps
hmBERT Base (12/768) 110.62M 80.0 sec / 1,000 steps

然后对多语言 NewsEye 数据集进行下游评估:

预训练

多语言模型 - hmBERT Base

我们使用32k词汇通过官方的BERT实现在v3-32 TPU上训练了一个多语言BERT模型,使用以下参数:

python3 run_pretraining.py --input_file gs://histolectra/historic-multilingual-tfrecords/*.tfrecord \
--output_dir gs://histolectra/bert-base-historic-multilingual-cased \
--bert_config_file ./config.json \
--max_seq_length=512 \
--max_predictions_per_seq=75 \
--do_train=True \
--train_batch_size=128 \
--num_train_steps=3000000 \
--learning_rate=1e-4 \
--save_checkpoints_steps=100000 \
--keep_checkpoint_max=20 \
--use_tpu=True \
--tpu_name=electra-2 \
--num_tpu_cores=32

以下图显示了预训练损失曲线:

较小的多语言模型

我们使用与训练基本模型时相同的参数。

hmBERT Tiny

以下图显示了微型模型的预训练损失曲线:

hmBERT Mini

以下图显示了Mini模型的预训练损失曲线:

hmBERT Small

以下图显示了小型模型的预训练损失曲线:

hmBERT Medium

以下图显示了中型模型的预训练损失曲线:

英语模型

英语BERT模型 - 使用来自英国图书馆语料库的文本 - 使用Hugging Face JAX/FLAX实现,在v3-8 TPU上进行了10个时期(约1M步)的训练,使用以下命令:

python3 run_mlm_flax.py --model_type bert \
--config_name /mnt/datasets/bert-base-historic-english-cased/ \
--tokenizer_name /mnt/datasets/bert-base-historic-english-cased/ \
--train_file /mnt/datasets/bl-corpus/bl_1800-1900_extracted.txt \
--validation_file /mnt/datasets/bl-corpus/english_validation.txt \
--max_seq_length 512 \
--per_device_train_batch_size 16 \
--learning_rate 1e-4 \
--num_train_epochs 10 \
--preprocessing_num_workers 96 \
--output_dir /mnt/datasets/bert-base-historic-english-cased-512-noadafactor-10e \
--save_steps 2500 \
--eval_steps 2500 \
--warmup_steps 10000 \
--line_by_line \
--pad_to_max_length

以下图显示了预训练损失曲线:

芬兰语模型

芬兰部分欧洲文化遗产的BERT模型 - 使用Hugging Face JAX/FLAX实现,在v3-8 TPU上进行了40个时期(约1M步)的训练,使用以下命令:

python3 run_mlm_flax.py --model_type bert \
--config_name /mnt/datasets/bert-base-finnish-europeana-cased/ \
--tokenizer_name /mnt/datasets/bert-base-finnish-europeana-cased/ \
--train_file /mnt/datasets/hlms/extracted_content_Finnish_0.6.txt \
--validation_file /mnt/datasets/hlms/finnish_validation.txt \
--max_seq_length 512 \
--per_device_train_batch_size 16 \
--learning_rate 1e-4 \
--num_train_epochs 40 \
--preprocessing_num_workers 96 \
--output_dir /mnt/datasets/bert-base-finnish-europeana-cased-512-dupe1-noadafactor-40e \
--save_steps 2500 \
--eval_steps 2500 \
--warmup_steps 10000 \
--line_by_line \
--pad_to_max_length

以下图显示了预训练损失曲线:

瑞典语模型

瑞典部分欧洲文化遗产的BERT模型 - 使用Hugging Face JAX/FLAX实现,在v3-8 TPU上进行了40个时期(约660K步)的训练,使用以下命令:

python3 run_mlm_flax.py --model_type bert \
--config_name /mnt/datasets/bert-base-swedish-europeana-cased/ \
--tokenizer_name /mnt/datasets/bert-base-swedish-europeana-cased/ \
--train_file /mnt/datasets/hlms/extracted_content_Swedish_0.6.txt \
--validation_file /mnt/datasets/hlms/swedish_validation.txt \
--max_seq_length 512 \
--per_device_train_batch_size 16 \
--learning_rate 1e-4 \
--num_train_epochs 40 \
--preprocessing_num_workers 96 \
--output_dir /mnt/datasets/bert-base-swedish-europeana-cased-512-dupe1-noadafactor-40e \
--save_steps 2500 \
--eval_steps 2500 \
--warmup_steps 10000 \
--line_by_line \
--pad_to_max_length

以下图显示了预训练损失曲线:

致谢

感谢谷歌TPU研究云(TRC)计划提供的云TPUs支持,以前被称为TensorFlow研究云(TFRC)。非常感谢提供TRC的访问权 ❤️

感谢 Hugging Face 团队的慷慨支持,可以从他们的S3存储下载大小写模型?