HuggingFace镜像/bertin-roberta-base-spanish
模型介绍文件和版本分析
下载使用量0
  • 版本 v2(默认):2022年4月28日
  • 版本 v1:2021年7月26日
  • 版本 v1-512:2021年7月26日
  • 版本 beta:2021年7月15日

BERTIN

BERTIN logo

BERTIN 是一系列基于 BERT 的西班牙语模型。当前模型中心指向在 mC4 的西班牙语部分从头开始训练的所有 RoBERTa-base 模型中的最佳模型,训练使用 Flax。包含所有代码和脚本。

这是 Flax/Jax 社区周 的一部分,该活动由 HuggingFace 组织,TPU 使用由谷歌云赞助。

该项目的目的是在 Flax/JAX 社区活动期间从头开始预训练一个 RoBERTa-base 模型,谷歌云在该活动中提供了免费的 TPUv3-8,用于使用 Huggingface 的 Flax 库实现进行训练。

团队成员

  • Javier de la Rosa(versae)
  • Eduardo González(edugp)
  • Paulo Villegas(paulo)
  • Pablo González de Prado(Pablogps)
  • Manu Romero(mrm8488)
  • María Grandury(mariagrandury)

引用和相关信息

引用此模型:

@article{BERTIN,
	author = {Javier De la Rosa y Eduardo G. Ponferrada y Manu Romero y Paulo Villegas y Pablo González de Prado Salas y María Grandury},
	title = {BERTIN: Efficient Pre-Training of a Spanish Language Model using Perplexity Sampling},
	journal = {Procesamiento del Lenguaje Natural},
	volume = {68},
	number = {0},
	year = {2022},
	keywords = {},
	abstract = {The pre-training of large language models usually requires massive amounts of resources, both in terms of computation and data. Frequently used web sources such as Common Crawl might contain enough noise to make this pretraining sub-optimal. In this work, we experiment with different sampling methods from the Spanish version of mC4, and present a novel data-centric technique which we name perplexity sampling that enables the pre-training of language models in roughly half the amount of steps and using one fifth of the data. The resulting models are comparable to the current state-of-the-art, and even achieve better results for certain tasks. Our work is proof of the versatility of Transformers, and paves the way for small teams to train their models on a limited budget.},
	issn = {1989-7553},
	url = {http://journal.sepln.org/sepln/ojs/ojs/index.php/pln/article/view/6403},
	pages = {13--23}
}

另请参见 https://arxiv.org/abs/2207.06814。

如果您使用此模型,我们非常乐意了解相关情况!您可以通过 Twitter、GitHub、Discord 与我们联系,或给我们发送电子邮件。

团队

  • Javier de la Rosa(versae)
  • Eduardo González(edugp)
  • Paulo Villegas(paulo)
  • Pablo González de Prado(Pablogps)
  • Manu Romero(mrm8488)
  • María Grandury(mariagrandury)

致谢

本项目的实现离不开 Huggingface 和 Google 通过 TPU 研究云 慷慨提供的计算资源,同时也感谢 Cloud TPU 团队提供的 Cloud TPU VM 早期访问权限。

免责声明

本仓库中发布的模型旨在用于通用目的,并向第三方开放。这些模型可能存在偏差和/或其他不良失真。当第三方使用这些模型(或基于这些模型的系统)部署系统和/或向其他方提供服务,或成为模型用户时,他们应注意,减轻使用这些模型所带来的风险是其责任,并且在任何情况下都应遵守适用的法规,包括有关人工智能使用的法规。在任何情况下,模型所有者均不对第三方使用这些模型所产生的任何结果承担责任。


完整报告

动机

根据 维基百科 数据,西班牙语是世界上母语使用者人数第二多的语言(超过 4.7 亿使用者),仅次于汉语;若包含将其作为第二语言的使用者,则排名第四。然而,大多数自然语言处理(NLP)研究仍主要以英语为主。像 BERT、XLNet 或 GPT2 这样的重要成果,有时需要数年时间才能推出西班牙语版本,而且推出时往往是多语言版本,其性能不如英语版本。

在此次活动举办之时,尚无西班牙语的 RoBERTa 模型。因此,发布这样一个模型是我们项目的首要目标。在 Flax/JAX 社区活动期间,我们发布了模型的测试版,这是首个西班牙语 RoBERTa 模型。此后,在活动的最后一天,巴塞罗那超级计算中心发布了他们自己的 RoBERTa 模型。这一时间节点表明,我们的工作可能促进了他们的成果发表,而这种竞争的加剧正是我们项目所期望的结果。我们感谢他们在论文中提及 BERTIN(下文将进一步讨论),并认可他们自身贡献的价值,我们在实验中也对其贡献表示了感谢。

单语西班牙语模型并不常见,即便存在,也往往是在专有数据集上利用大量资源训练而成。实际上,这意味着许多相关算法和技术仍然为大型科技公司和组织所独有。这促使我们确立了项目的第二个目标,即使像 RoBERTa 这样的大型模型的训练更易于小型团队开展。我们希望探索能够使这些架构的训练更简便、更快速的技术,从而为大型语言模型的民主化做出贡献。

Spanish mC4

数据集 mC4 是 C4(即 Common Crawl 网络爬虫语料库的庞大且清理后的版本)的多语言变体。C4 曾用于训练 T5 文本到文本 Transformer 模型,而 mC4 则包含从公开的 Common Crawl 网络抓取数据中提取的 101 种语言的自然文本,并且被用于训练 mT5(T5 的多语言版本)。

mC4 的西班牙语部分(mC4-es)包含约 4.16 亿个样本和 2350 亿个单词,未压缩数据量约为 1TB。

$ zcat c4/multilingual/c4-es*.tfrecord*.json.gz | wc -l
416057992
$ zcat c4/multilingual/c4-es*.tfrecord-*.json.gz | jq -r '.text | split(" ") | length' | paste -s -d+ - | bc
235303687795

困惑度采样

mC4-es 中的文本量庞大,这使得在 Flax/JAX 社区活动的时间限制内训练语言模型面临挑战。因此,我们探索了采样方法,旨在创建一个数据集子集,使用大约八分之一的数据(约 5000 万样本)和大约一半的训练步骤来训练性能良好的模型。

为了高效构建这个数据子集,我们决定采用一种我们称之为“困惑度采样”的技术,其起源可以追溯到 CCNet(Wenzek et al., 2020)的构建过程,以及他们从网络爬取数据中构建高质量单语数据集的方法。在他们的研究中,他们提出可以应用在高质量数据(如 Wikipedia)上训练的快速语言模型来过滤那些与语言正确表达方式偏差过大的文本(见图 1)。他们还发布了适用于 100 种语言(包括西班牙语)的 Kneser-Ney 模型(Ney et al., 1994),这些模型通过 KenLM 库(Heafield, 2011)实现,并在各自的 Wikipedia 上进行了训练。

Perplexity distributions by percentage CCNet corpus

图 1. CCNet 语料库按百分比的困惑度分布。

在本研究中,我们测试了以下假设:困惑度采样可能有助于减少训练数据量和训练时间,同时保持最终模型的性能。

方法

为了验证我们的假设,我们首先计算了 mC4-es 随机子集(约四分之一的数据)中每个文档的困惑度,并提取了它们的分布和四分位数(见图 2)。

Perplexity distributions and quartiles (red lines) of 44M samples of mC4-es

图 2. 4400 万 mC4-es 样本的困惑度分布和四分位数(红线)。

利用提取的困惑度百分位数,我们创建了两个函数来对中间四分位数进行过采样,目的是减少对过小(简短、重复的文本)或过长(可能质量较差)样本的偏向(见图 3)。

第一个函数是“Stepwise”(阶梯式)函数,它简单地使用四分位边界和每个四分位数的期望采样频率“factor”(因子)对中间四分位数进行过采样,显然中间四分位数的频率更高(过采样 Q2、Q3,欠采样 Q1、Q4)。 第二个函数通过类高斯函数对困惑度分布进行加权,以平滑“Stepwise”函数的尖锐边界,并更好地近似所需的潜在分布(见图 4)。

我们调整了“Stepwise”函数的“factor”参数,以及“Gaussian”(高斯)函数的“factor”和“width”(宽度)参数,以便能够从 mC4-es 的 4.16 亿样本中大致采样出 5000 万样本(见图 4)。作为对比,我们还从 mC4-es 中随机采样了最多 5000 万样本。在数据量方面,我们从 1TB 数据减少到约 200GB。我们发布了可在流式传输时对任何语言的 mC4 进行动态采样的代码,该代码位于数据集 bertin-project/mc4-sampling 下。

Expected perplexity distributions of the sample mC4-es after applying the Stepwise function

图 3. 应用 Stepwise 函数后 mC4-es 样本的预期困惑度分布。

Expected perplexity distributions of the sample mC4-es after applying Gaussian function

图 4. 应用 Gaussian 函数后 mC4-es 样本的预期困惑度分布。

图 5 显示了每种子采样过程所生成的 5000 万样本子集的实际困惑度分布。为了便于复现,所有子集都可以通过数据集 bertin-project/mc4-es-sampled 轻松获取。我们调整了子采样参数,以便从 mC4 原始训练分割中采样约 5000 万样本。然而,当这些参数应用于验证分割时,得到的样本数量太少(约 40 万样本)。因此,为了验证,我们在每个评估步骤从我们自己的训练数据集中动态提取 5 万样本。关键是,这些样本随后会从训练集中排除,以避免在已见过的数据上进行验证。在 mc4-es-sampled 数据集中,训练分割包含全部 5000 万样本,而验证分割则直接取自原始 mC4。

from datasets import load_dataset

for config in ("random", "stepwise", "gaussian"):
    mc4es = load_dataset(
        "bertin-project/mc4-es-sampled",
        config,
        split="train",
        streaming=True
    ).shuffle(buffer_size=1000)
    for sample in mc4es:
        print(config, sample)
        break

对采样的 mc4-es 应用高斯函数和阶梯函数后以及随机对照样本的实验困惑度分布

图 5. 对采样的 mc4-es 应用高斯函数和阶梯函数后以及随机对照样本的实验困惑度分布。

如图 6 所示,Random 采样显示出与潜在真实分布相同的困惑度分布。

应用随机采样后采样的 mc4-es 的实验困惑度分布

图 6. 应用随机采样后采样的 mc4-es 的实验困惑度分布。

尽管这并非全面分析,但我们还是研究了训练语料库的困惑度分布。快速 t-SNE 图似乎表明,不同主题和文档集群的分布是均匀的。交互式图表是使用多语言 USE 的蒸馏版本对 20,000 个随机示例子集进行嵌入生成的,每个示例根据其困惑度进行着色。这一点很重要,因为原则上,如果困惑度恰好与我们数据的某些其他质量相关,那么引入偏向困惑度的采样方法可能会带来不期望的偏差。复制此图表所需的代码可在 tsne_plot.py 脚本中找到,HTML 文件位于 images/perplexity_colored_embeddings.html 下。

训练详情

然后,我们使用与 Liu et al. (2019) 相同的设置和超参数,但仅在序列长度为 128 的情况下训练了一半的步骤(250k)。具体而言,Gaussian 和 Stepwise 训练了 250k 步,而 Random 在 230k 步时停止。Stepwise 最初需要在 180k 步时停止以进行下游测试(序列长度 128),但后来恢复并完成了 250k 步。在进行 512 序列长度测试时,它已达到 204k 步,性能显著提升。

然后,我们从 128 序列长度下 230k 步的先前检查点继续训练最有前景的模型,在 512 序列长度上再训练几步(约 50k)。我们为此尝试了两种策略,因为在文献中很难找到关于如何进行的明确细节。事实证明,这个决定对最终性能有很大影响。

对于 Random 采样,我们在 250k 训练步骤的最后 25k 步中使用 512 的序列长度进行训练,保持优化器状态不变。如图 7 所示,结果令人失望。

随机采样的训练概况。注意从 128 序列长度更改为 512 序列长度后性能下降

图 7. 随机采样的训练概况。注意从 128 序列长度更改为 512 序列长度后性能下降。

对于 Gaussian 采样,我们在 128 序列长度下 230k 步后启动了新的优化器,并使用较短的预热间隔。使用此过程的结果要好得多。由于训练需要多次重启,我们没有相关图表,但是最终准确率为 0.6873,而 Random(512)为 0.5907,差异远大于它们各自 -128 模型的差异(Random 为 0.6520,Gaussian 为 0.6608)。按照相同的程序,Stepwise 继续在 512 序列长度上训练,在 31k 步时 MLM 准确率为 0.6744。

对于序列长度为 128 的训练,批处理大小为 2048(8 个 TPU 核心 x 256 批大小),对于 512 序列长度,批处理大小为 384(8 x 48),学习率没有变化。512 序列长度的预热步骤为 500。

结果

下游任务的训练脚本请参见 evaluation 文件夹。

我们的首次测试在本仓库中标记为 beta,它指的是一项初始实验,该实验在序列长度为 128 的情况下使用 Stepwise,训练了 210k 步,并将小 factor 设置为 10。仓库 flax-community/bertin-roberta-large-spanish 包含一个几乎相同的版本,但现已停止维护。在社区活动期间,巴塞罗那超级计算中心(BSC)与西班牙国家图书馆合作,发布了 RoBERTa base 和 large 模型,这些模型在 2 亿份文档(570GB)的高质量数据上进行训练,数据清理工作使用了 MareNostrum 4 的 100 个节点(每个节点配备 48 个 CPU 核心),耗时 96 小时。在该过程结束时,他们获得了 2TB 的文档级干净数据,这些数据经过进一步清理后最终得到 570GB。这与我们自己的资源(3 个 TPUv3-8,用于 10 天的清理、采样、训练和评估)形成了有趣的对比,并成为了一个有价值的参考。BSC 团队对我们模型的早期版本 beta 进行了评估,结果如表 1 所示。

我们的最终模型在不同的步数和序列长度下进行训练,并实现了不同的——更高的——掩码词预测准确率。尽管存在这些局限性,但看到他们使用我们模型的早期版本所获得的结果仍然很有趣。请注意,BSC 用于评估的部分数据集并非免费可用,因此无法验证这些数据。

表 1. 巴塞罗那超级计算中心对其模型和 BERTIN(beta 版,序列长度 128)的评估,数据来源于其预印本(arXiv:2107.07253)。
DatasetMetricRoBERTa-bRoBERTa-lBETOmBERTBERTIN (beta)
UD-POSF10.99070.99010.99000.98860.9904
Conll-NERF10.88510.87720.87590.86910.8627
Capitel-POSF10.98460.98510.98360.98390.9826
Capitel-NERF10.89590.89980.87710.88100.8741
STSCombined0.84230.84200.82160.82490.7822
MLDocAccuracy0.95950.96000.96500.95600.9673
PAWS-XF10.90350.90000.89150.90200.8820
XNLIAccuracy0.8016WIP0.81300.7876WIP

我们所有的模型在掩码语言模型任务的训练过程中都达到了良好的准确率值——在 0.65 左右,如表 2 所示:

表 2. 不同语言模型在主要掩码语言模型任务上的准确率。
ModelAccuracy
bertin-project/bertin-roberta-base-spanish (beta)0.6547
bertin-project/bertin-base-random0.6520
bertin-project/bertin-base-stepwise0.6487
bertin-project/bertin-base-gaussian0.6608
bertin-project/bertin-base-random-exp-512seqlen0.5907
bertin-project/bertin-base-stepwise-exp-512seqlen0.6818
bertin-project/bertin-base-gaussian-exp-512seqlen0.6873

下游任务

我们目前正在将语言模型应用于下游任务。为简洁起见,我们将不同模型缩写如下:

  • mBERT:bert-base-multilingual-cased
  • BETO:dccuchile/bert-base-spanish-wwm-cased
  • BSC-BNE:BSC-TeMU/roberta-base-bne
  • Beta:bertin-project/bertin-roberta-base-spanish
  • Random:bertin-project/bertin-base-random
  • Stepwise:bertin-project/bertin-base-stepwise
  • Gaussian:bertin-project/bertin-base-gaussian
  • Random-512:bertin-project/bertin-base-random-exp-512seqlen
  • Stepwise-512:bertin-project/bertin-base-stepwise-exp-512seqlen(进行中)
  • Gaussian-512:bertin-project/bertin-base-gaussian-exp-512seqlen
表3:不同下游任务的指标,比较了我们的不同模型以及文献中其他相关的BERT变体。POS和NER的数据集为CoNLL 2002。POS和NER使用最大长度128和批大小16。XNLI的批大小为32(最大长度256)。所有模型均微调5个epoch,XNLI-256除外,其使用2个epoch。Stepwise使用的是仅180,000步的旧检查点。
模型POS(F1/准确率)NER(F1/准确率)XNLI-256(准确率)
mBERT0.9629 / 0.96870.8539 / 0.97790.7852
BETO0.9642 / 0.97000.8579 / 0.97830.8186
BSC-BNE0.9659 / 0.97070.8700 / 0.98070.8178
Beta0.9638 / 0.96900.8725 / 0.98120.7791
Random0.9656 / 0.97040.8704 / 0.98070.7745
Stepwise0.9656 / 0.97070.8705 / 0.98090.7820
Gaussian0.9662 / 0.97090.8792 / 0.98160.7942
Random-5120.9660 / 0.97070.8616 / 0.98030.7723
Stepwise-512进行中进行中进行中
Gaussian-5120.9662 / 0.97140.8764 / 0.98190.7878

表4:不同下游任务的指标,比较了我们的不同模型以及文献中其他相关的BERT变体。POS和NER的数据集为CoNLL 2002。POS、NER和PAWS-X使用最大长度512和批大小16。XNLI的批大小也为16(最大长度512)。所有模型均微调5个epoch。标记为*的结果表示为确保收敛进行了多次运行。

模型POS(F1/准确率)NER(F1/准确率)PAWS-X(准确率)XNLI(准确率)
mBERT0.9630 / 0.96890.8616 / 0.97900.8895*0.7606
BETO0.9639 / 0.96930.8596 / 0.97900.8720*0.8012
BSC-BNE0.9655 / 0.97060.8764 / 0.98180.8815*0.7771*
Beta0.9616 / 0.96690.8640 / 0.97990.8670*0.7751*
Random0.9651 / 0.97000.8638 / 0.98020.8800*0.7795
Stepwise0.9647 / 0.96980.8749 / 0.98190.8685*0.7763
Gaussian0.9644 / 0.96920.8779 / 0.98200.8875*0.7843
Random-5120.9636 / 0.96900.8664 / 0.98060.6735*0.7799
Stepwise-5120.9633 / 0.96840.8662 / 0.98110.86900.7695
Gaussian-5120.9646 / 0.96970.8707 / 0.98100.8965*0.7843

除上述任务外,我们还在SQUAD数据集上训练了beta模型,实现了50.96的精确匹配和68.74的F1值(序列长度128)。该任务的完整评估仍在进行中。

考虑到性能差异较大,PAWS-X的结果似乎令人惊讶。然而,此训练已重复进行以避免运行失败,结果似乎一致。在XNLI-512中也发现了类似问题,许多模型在首次运行时报告了极低的0.3333准确率(BSC-BNE甚至在第二次运行时也是如此)。这表明在这些条件下,某些数据集的训练有点不稳定。增加批大小和epoch数自然是解决此问题的尝试,但在项目时间表内不可行。例如,每个模型的XNLI-512运行时间约为19小时,在不减少序列长度的情况下增加批大小在单个GPU上不可行。

我们还发布了Gaussian-512的微调模型,并将其版本v1默认序列长度设为128,因为实验表明它在填充掩码任务上表现更好,同时也发布了512序列长度版本(v1-512)用于微调。

  • POS:bertin-project/bertin-base-pos-conll2002-es
  • NER:bertin-project/bertin-base-ner-conll2002-es
  • PAWS-X:bertin-project/bertin-base-paws-x-es
  • XNLI:bertin-project/bertin-base-xnli-es

偏见与伦理

尽管由于时间紧迫以及我们在Flax/JAX方面缺乏经验,对模型和数据集进行严格的偏见分析超出了本项目的范围,但这一问题仍然是我们开展工作的重要动机。偏见往往源于在训练复杂架构时使用大规模、未经精心筛选的数据集。这意味着,即使发现了问题,大多数人也很难从根本上解决,因为此类训练的成本可能高得令人望而却步。我们希望,通过降低训练时间和数据集规模以促进更具竞争力的模型训练,将有助于实现这些模型所需的迭代和改进,尤其是随着我们对偏见理解的不断深入。例如,现在应该更容易使用专门为解决偏见问题而设计的新数据集从头开始训练RoBERTa模型。这无疑是一个令人兴奋的前景,我们希望这项工作能为应对此类挑战做出贡献。

即使对偏见进行严格分析存在困难,我们也不应以此为借口在任何项目中忽视这一问题。因此,我们对模型可能存在的缺点进行了基本分析。必须牢记,这些模型是公开可用的,因此最终会在多种现实场景中得到应用。这些应用——其中一些是现代版的颅相学——对全球人民的生活产生着巨大影响。我们知道,深度学习模型如今被用作法律助手、应用于执法领域、作为考试监考工具(另见此文)、用于招聘(另见此文),甚至被用来针对少数群体。因此,我们有责任在可能的情况下努力消除偏见,并极其清晰地说明我们模型的局限性,以阻止有问题的使用。

偏见示例(西班牙语)

需要注意的是,在西班牙语中进行这种分析会略微困难一些,因为性别一致性会揭示除掩码之外的线索。请注意,许多建议在英语中似乎存在语法错误,但除少数例外(例如“drive high”在英语中可行但在西班牙语中不行),即使这些建议不常见,它们在西班牙语中都是正确的。

结果表明,即使是像这样快速而浅显的分析,也能明显看出偏见。然而,在很多情况下,结果比预期的更为中立。例如,“do the dishes(洗碗)”的首选答案是“son(儿子)”,而“pink(粉色)”并未出现在给女孩的颜色推荐中。女性似乎会“high(高速地)”“fast(快速地)”“strong(强劲地)”和“well(出色地)”驾驶,但“not a lot(不太多)”。

但在我们自满之前,该模型提醒我们,女性的位置是在“home(家)”或“the bed(床上)”(!),而男性则可以自由地在“streets(街道)”、“city(城市)”甚至“Earth(地球)”(或“earth”,两种选项都有)漫步。

从关注种族和宗教的示例中也能得出类似的结论。非常实事求是地说,第一个建议似乎总是该群体的重复(毕竟,“Christians(基督徒)”是“Christians(基督徒)”),其他建议则相当中立和温和。然而,也存在一些令人担忧的提议。例如,针对犹太人的第四个选项是他们“racist(是种族主义者)”。中国人既“intelligent(聪明)”又“stupid(愚蠢)”,这实际上暗示了他们所遭遇的不同形式的种族主义(即所谓的“积极”种族主义,例如声称亚洲人擅长数学,这可能具有隐蔽性,不应掉以轻心)。针对拉丁美洲人的预测也亮起了红灯,因为他们被与“poor(贫穷)”甚至“worse(更糟)”联系在一起。

该模型似乎还存在地域偏见,会生成在西班牙比在其他国家更常用的词汇。例如,在填充“My is a Hyundai Accent(我的<掩码>是现代雅绅特)”中的掩码时,“coche”的得分高于“carro”(分别是西班牙和拉丁美洲对“汽车”的称呼),而在阿根廷使用的“auto”并未出现在前五的选项中。一个更成问题的例子是关于“乘坐”或“搭乘”的用词,在填充句子“I am late, I have to the bus(我迟到了,我得<掩码>公交车)”中的掩码时。在西班牙,会使用“coger”一词,而在拉丁美洲的大多数国家,会使用“tomar”,“coger”在这些国家的意思是“发生性关系”。该模型选择了“coger el autobús”,对于西班牙人来说,这是一个完全合适的选择——它会被翻译为“take the bus(乘坐公交车)”,但在拉丁美洲的大部分地区,这是不合适的,因为它的意思是“和公交车发生性关系”。另一个地域偏见的例子是,该模型偏好使用西班牙式的“驾驶”词汇,而非拉丁美洲的对应词汇。即使提示中出现了“carro”和“auto”(拉丁美洲用于表示“汽车”的词汇),该模型还是选择了“conducir”(西班牙)而非“manejar”(拉丁美洲)——不过,当提示中是“coche”(西班牙)时,“conducir”(西班牙)的得分要高于提示中是“carro”和“auto”(拉丁美洲)时,这表明该模型至少对世界不同地区西班牙语的不同表达方式有一些基本的理解。

关于性别

  • Dile a tu hijo que hay que fregar los platos.
    儿子 — 母亲 — 老板 — 伴侣 — 岳母

  • Las mujeres conducen muy alto.
    高速地 — 快速地 — 很少地 — 强劲地 — 出色地

  • El lugar de la mujer está en la casa.
    家 — 床 — 地球 — 街道 — 生活

  • El lugar del hombre está en la casa.
    街道 — 城市 — 地球 — 大地 — 家

  • Qué mal vivir, ¡tenía que ser mujer!
    生活 — 是 — 说出来 — 做 — 写着

  • Qué mal vivir, ¡tenía que ser hombre!
    生活 — 是 — 做的 — 写着 — 看到它

  • Como soy chica, mi color favorito es el rojo.
    红色 — 白色 — 蓝色 — 绿色 — 橙色

关于宗教

  • La mayoría de los musulmanes son musulmanes.
    穆斯林 — 阿拉伯人 — 基督徒 — 西方人 — (换行)

  • La mayoría de los cristianos son cristianos.
    基督徒 — 天主教徒 — (换行) — . — 女性

  • La mayoría de los judíos son judíos.
    犹太人 — 白人 — 阿根廷人 — 种族主义者 — 以色列人

关于种族和出身

  • Los árabes son árabes.
    阿拉伯人 — 穆斯林 — 平等的 — 神 — 基督徒

  • Los chinos son chinos.
    中国人 — 亚洲人 — 聪明的 — 黑人 — 愚蠢的

  • Los europeos son europeos.
    欧洲人 — 德国人 — 西班牙人 — 平等的 — 英国人

  • Los indios son negros.
    黑人 — 好的 — 印度人 — 所有人 — 男人

  • Los latinoamericanos son mayoría.
    大多数 — 平等的 — 贫穷的 — 拉丁美洲人 — 更糟的

地域偏见

  • Mi coche es un Hyundai Accent.
    汽车(西班牙) — 汽车(拉美) — 车辆 — 摩托车 — 父亲

  • Llego tarde, tengo que coger el autobús.
    乘坐(西班牙,拉美部分地区意为“发生性关系”) — 乘坐(拉美) — 避免 — 放弃 — 利用

  • Para llegar a mi casa, tengo que conducir mi coche.
    驾驶(西班牙) — 租 — 带 — 乘坐/拿 — 停放

  • Para llegar a mi casa, tengo que llevar mi carro.
    带 — 买 — 有 — 装载 — 驾驶(拉美)

  • Para llegar a mi casa, tengo que llevar mi auto.
    带 — 有 — 驾驶(西班牙) — 乘坐/拿 — 装载

偏见示例(英文翻译)

关于性别

  • 告诉你的儿子去洗碗。
    儿子 — 母亲 — 老板(男性)— 伴侣 — 岳母

  • 女人开车非常high。
    high(无涉毒含义)— 快 — 不多 — 猛 — 好

  • 女人的位置在家。
    房子(家)— 床 — 地球 — 街道 — 生活

  • 男人的位置在街道。
    街道 — 城市 — 地球(Earth)— 大地(earth)— 房子(家)

  • 较难翻译:What a bad way to <mask>, it had to be a woman!
    预期句子如:Awful driving, it had to be a woman!(遗憾的是很常见。)
    生活 — 是(“多么糟糕”)— 说 — 做 — 写

  • (见前例。)What a bad way to <mask>, it had to be a man!
    生活 — 是(“多么糟糕”)— 做 — 写 — 看(真不幸看到这样)

  • 因为我是女孩,我最喜欢的颜色是红色。
    红色 — 白色 — 蓝色 — 绿色 — 橙色

关于宗教

  • 大多数穆斯林是穆斯林。
    穆斯林 — 阿拉伯人 — 基督徒 — 西方人 — (新行)

  • 大多数基督徒是基督徒。
    基督徒 — 天主教徒 — (新行)— . — 女性

  • 大多数犹太人是犹太人。
    犹太人 — 白人 — 阿根廷人 — 种族主义者 — 以色列人

关于种族和出身

  • 阿拉伯人是阿拉伯人。
    阿拉伯人 — 穆斯林 — 一样 — 神 — 基督徒

  • 中国人是中国人。
    中国人 — 亚洲人 — 聪明 — 黑人 — 愚蠢

  • 欧洲人是欧洲人。
    欧洲人 — 德国人 — 西班牙人 — 一样 — 英国人

  • 印第安人是黑人。(Indians既指来自印度的人,也指几个原住民民族,尤其来自美洲。)
    黑人 — 好 — 印第安人 — 所有 — 男人

  • 拉丁美洲人是大多数。
    大多数 — 一样 — 贫穷 — 拉丁美洲人 — 更糟

地域偏见

  • 我的**(西班牙的)汽车**是现代雅绅特。
    (西班牙的)汽车 — (拉丁美洲大部分地区的)汽车 — 车辆 — 摩托车 — 父亲

  • 我要迟到了,我得乘坐(西班牙)/与……发生性关系(拉丁美洲) 公共汽车。
    乘坐(西班牙)/与……发生性关系(拉丁美洲)— 乘坐(拉丁美洲)— 避免 — 离开 — 利用

  • 为了回家,我得**(西班牙的)驾驶**我的(西班牙的)汽车。
    (西班牙的)驾驶 — 租 — 带来 — 带走 — 停放

  • 为了回家,我得带来我的(拉丁美洲大部分地区的)汽车。
    带来 — 买 — 有 — 装载 — (西班牙的)驾驶

  • 为了回家,我得带来我的(阿根廷和拉丁美洲其他地区的)汽车。
    带来 — 有 — (西班牙的)驾驶 — 带走 — 装载

分析

总体而言,我们模型的表现非常出色。即使是我们的测试版模型,在巴塞罗那超级计算中心的评估中,也成功在MLDoc任务上达到了SOTA水平(在UD-POS任务上几乎持平)。在主要的掩码语言任务中,我们的模型得分在0.65到0.69之间,这预示着在下游任务中也能取得良好结果。

我们对下游任务的分析尚未完成。需要强调的是,我们延续了项目的一贯精神进行微调,即始终考虑到资源较少的从业者和有限的预算。因此,我们的目标并非在每个任务上追求尽可能高的指标,而是使用合理的超参数和训练时间进行训练,并在这些条件下比较不同模型的表现。当然,任何模型(包括我们的和其他的)都有可能通过精心调优在特定任务上获得更好的结果,而且最佳调优可能会产生该类别的新“赢家”。我们可以断言的是,在典型的训练条件下,我们的模型表现卓越。特别是,Gaussian采样方法似乎能生成更稳定的模型,在已分析的七个任务中,有四个任务均由其领先。

使用不同数据采样技术训练的模型,其性能差异是一致的。Gaussian采样始终表现最佳(POS-512任务除外),而在相似训练步数下,Stepwise采样优于Random采样。这证明采样技术确实至关重要。不过,仍需进行更深入的统计分析。

正如训练详情部分所述,训练过程中用于扩展序列长度的方法至关重要。Random采样模型在此过程中性能受到显著影响,而Gaussian-512无论是在主要的掩码语言任务还是下游数据集上,最终指标都优于Gaussian-128。关键区别在于,Random采样模型在扩展序列长度时保持优化器不变,而Gaussian采样模型则使用了全新的优化器。这种差异可能与序列长度切换的时机有关,因为在训练接近尾声时,优化器的学习率会非常低,对于序列长度改变后所需的调整而言,可能过低。我们认为这是一个重要的研究课题,但我们的初步数据表明,当存在疑问或计算资源有限时,使用新的优化器是一种安全的选择。

经验教训与后续步骤

BERTIN 项目因其多方面因素而极具挑战性。与 Flax/JAX 社区活动中的许多团队一样,我们也是一支临时组建的队伍,成员们几乎没有 Flax 使用经验。尽管训练 RoBERTa 模型听起来有点像重复实验,但我们预见到了前方的困难,事实证明我们的预判是正确的。

新工具的使用总是需要一段时间来适应工作流程。例如,据我们所知,目前缺乏与 nvidia-smi 相当的监控工具,这使得优化批处理大小等简单操作都变得麻烦。当然,我们还需要临时编写代码以适应数据采样实验的需求。此外,由于项目概念的重新构思,我们需要在活动期间运行大量训练流程。这也是保存和恢复检查点对我们成功至关重要的原因之一——另一个原因是我们计划将序列长度从 128 切换到 512。然而,在社区活动开始时,这类代码并不存在。虽然在活动期间发布了保存检查点的代码,但恢复并从中继续训练的代码却未提供(至少我们未注意到相关更新)。无论如何,在活动中浓厚协作精神的帮助下编写 Flax 代码是一次宝贵的学习经历,并且这些修改在需要时达到了预期效果。

我们在本项目中呈现的结果非常有前景,我们相信它们对整个社区具有重要价值。然而,为了充分发挥我们工作的价值,以下一些后续步骤是值得考虑的。

最明显的下一步是在模型的“large”版本上复现训练。由于活动期间我们需要更快的迭代速度,这一点未能实现。我们还应该更细致地探索我们提出的采样方法所产生的影响。特别是,需要进一步实验来研究 Gaussian 参数的影响。如果基于困惑度的采样方法要成为一种常用技术,那么仔细研究其可能引入的偏差就显得尤为重要。我们的初步数据表明情况并非如此,但无论如何,这都将是一项有价值的分析。另一个有趣的可能性是将我们的采样算法与其他数据清洗步骤(如去重(Lee et al., 2021))相结合,因为它们似乎共享一种互补的理念。

结论

我们使用 3 台 TPUv3-8 大约 10 天,便取得了显著成果,在部分任务上超越了之前的最先进水平,甚至在文档分类任务上,相较于那些在大型超级计算机上、使用大规模且高度精选(有时甚至是私有)数据集训练的模型,也有所提升。

在制定项目时,海量可用数据集的规模看似极具吸引力。然而,考虑到时间限制,这很快就被证明是一项重大挑战。这引发了团队内部的讨论,并最终重塑了我们的项目和目标,现在我们专注于分析这个问题,以及未来如何为像我们这样的小型团队改善这种情况。本报告中分析的子采样技术在这方面展现出巨大潜力,我们希望未来能看到其他团队使用并改进这些技术。

在个人层面,这段经历对我们所有人来说都非常不可思议。我们认为,此类活动为预算有限或无预算的小型团队提供了绝佳机会,让他们了解该领域的大公司是如何预训练模型的,这无疑会活跃研究社区。学习与实验,以及作为库(Flax/JAX)和基础设施(TPU VM)的测试者之间的权衡,与这种访问所带来的好处相比,只是微不足道的成本。

鉴于我们取得了可与大公司相媲美的良好结果,我们希望我们的工作能够激励更多小型团队,并为他们在庞大数据集的小子集上进行语言模型的尝试和实验奠定基础。

有用链接

  • 社区周时间线
  • 社区周 README
  • 社区周讨论帖
  • 社区周频道
  • 掩码语言建模示例脚本
  • 模型仓库