Hugging Face DeDLOC: 通过互联网进行语言模型的协作训练

Hugging Face 推出了 DeDLOC (Distributed Deep Learning in Open Collaborations),这是一种全新的协作式分布式训练方法,允许多个参与者通过互联网结合其计算资源来预训练大型语言模型。这种方法克服了与高性能 GPU 超级计算机相比互联网连接速度慢的传统瓶颈,使更广泛的机器学习社区能够在无需集中式、昂贵硬件的情况下训练高质量模型。

DeDLOC: 实现通过互联网进行分布式训练

DeDLOC 解决了在大型数据集上训练 Transformers 的挑战,这通常需要个人或小型组织无法企及的硬件资源。虽然数据并行分布式深度学习通常涉及将数据分配给各个工作节点并对梯度进行平均,但由于连接不稳定和带宽有限,这一过程在互联网环境下通常会失败。

容错梯度累积

为了应对基于志愿者的计算的不稳定性,DeDLOC 在执行优化器步骤之前,会在所有参与设备上累积一个非常大的 batch,然后进行操作。这种方法提供了内置的容错能力:

  • Peer Disconnection: 如果参与者断开连接,他们的贡献将直接从当前累积的 batch size 中扣除,其他参与者将进行补偿。
  • Scalability: 随着更多 peer 的加入,目标 batch size 会更快达到,从而自然地加快了训练过程。

自适应平均策略

为了防止中央服务器过载并考虑到硬件的多样性,DeDLOC 使用了一种基于 All-Reduce 原语的自适应平均算法。系统通过根据每个 peer 的互联网速度将梯度向量拆分为多个部分,从而实现实时数据传输优化:

  • High-speed peers 聚合了梯度中最大的部分。
  • Firewalled peers 发送其数据进行聚合,但不亲自进行平均计算。

这些核心的去中心化训练技术已在 Hivemind 库中实现。

案例研究: 预训练 sahajBERT

为了证明 DeDLOC 的有效性,研究人员通过一次包含 40 名志愿者的协作活动,预训练了孟加拉语的掩码语言模型 sahajBERT

模型架构与分词器

研究人员选择了 ALBERT (A Lite BERT) 架构,因为其权重共享机制具有参数效率,可以减少 peer 之间交换的数据量。该模型拥有约 1800 万个可训练参数。

对于孟加拉语,研究人员使用 Unigram Language Model 方法开发了一个自定义分词器,其词表大小为 32k。预处理流水线包括:

  • Normalization: NMT 和 NFKC 归一化,移除多余空格,并统一重复的 Unicode 字符,同时特别保留了孟加拉语元音所需的重音符号。
  • Pretokenization: 隔离标点符号和数字,并使用特殊字符 (▁) 来标记单词的开头。

数据集流式传输

为了避免要求志愿者需要庞大的本地存储空间,团队实施了 dataset streaming。这允许参与者在训练过程中并行地从 Bengali Wikipedia dump 和 OSCAR 数据集下载并转换训练样本,而不是预先下载整个语料库。

协作执行与结果

该训练活动从 5 月 12 日持续到 5 月 21 日,共有 40 名参与者(30 名孟加拉语使用者志愿者和 10 名来自作者组织的成员)。实验利用了 600 个不同的 session,以及 16 个可抢占的 T4 云实例以保证稳定性,累计运行时间总计 234 天。

性能评估

sahajBERT 在两个下游任务上进行了评估:WikiANN 上的命名实体识别 (NER) 和 Soham articles dataset 上的新闻类别分类 (NCC)。尽管只有约 18M 参数,sahajBERT 取得了与规模大得多的模型相当的结果:

Model NER F1 (mean ± std) NCC Accuracy (mean ± std)
sahajBERT 95.45 ± 0.53 91.97 ± 0.47
XLM-R-large 96.48 ± 0.22 90.05 ± 0.38
IndicBert 92.52 ± 0.45 74.46 ± 1.91
bnRoBERTa 82.32 ± 0.67 80.94 ± 0.45

值得注意的是,sahajBERT 的性能可以与 XLM-R-large 相媲美,后者拥有约 559M 参数,并在数百个 V100 GPU 上进行了训练。

Sources

相关