モデル概要
モデル特徴
モデル能力
使用事例
🚀 BERTIN
BERTINは、スペイン語向けのBERTベースのモデルシリーズです。現在のモデルハブは、Flaxを使用してmC4のスペイン語部分でゼロから学習されたRoBERTa-baseモデルの中で最良のものを指しています。すべてのコードとスクリプトが含まれています。
このプロジェクトは、HuggingFaceによって主催され、Google CloudによってTPUの使用が支援されたFlax/Jax Community Weekの一環です。
このプロジェクトの目的は、Flax/JAX Community Event中にRoBERTa-baseモデルをゼロから事前学習することでした。このイベントでは、Google CloudがHuggingfaceのFlaxライブラリを使用して学習を行うための無料のTPUv3-8を提供しました。
🚀 クイックスタート
バージョン情報
- Version v2 (default): 2022年4月28日
- Version v1: 2021年7月26日
- Version v1 - 512: 2021年7月26日
- Version beta: 2021年7月15日

✨ 主な機能
BERTINは、スペイン語の自然言語処理タスクに特化したモデルです。以下のような機能を提供します。
- スペイン語のマスク言語モデルタスクにおいて高い精度を達成。
- スペイン語の下流タスク(品詞タグ付け、固有表現認識など)にも適用可能。
- 学習に使用するデータサイズと学習時間を削減するための独自のサンプリング手法(perplexity sampling)を採用。
🔧 技術詳細
チームメンバー
- 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)
引用と関連情報
このモデルを引用するには、以下のBibTeXを使用してください。
@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 も参照してください。
モチベーション
Wikipediaによると、スペイン語は母語話者数で世界第2位(4億7000万人以上)の言語で、中国語に次いでいます。第二言語として話す人も含めると世界第4位です。しかし、ほとんどの自然言語処理研究は依然として主に英語で行われています。BERT、XLNet、GPT2などの重要な貢献は、スペイン語で利用可能になるまでに数年かかることがあり、利用可能になった場合でも、多くの場合、英語版ほど性能が高くない多言語版を通じて提供されます。
イベントの時点では、スペイン語のRoBERTaモデルは存在しませんでした。したがって、このようなモデルをリリースすることが、私たちのプロジェクトの主な目標でした。Flax/JAX Community Event中に、私たちはモデルのベータ版をリリースしました。これはスペイン語で最初のRoBERTaモデルでした。その後、イベントの最終日に、バルセロナスーパーコンピューティングセンターが独自のRoBERTaモデルをリリースしました。正確なタイミングから、私たちの作業が彼らの論文の公開を促したと考えられます。このような競争の激化は、私たちのプロジェクトの望ましい結果です。彼らが論文にBERTINを含める努力に感謝し、彼ら自身の貢献の価値を認識し、実験でも彼らの貢献を認めています。
単言語のスペイン語モデルは入手が困難で、入手できた場合でも、多くの場合、独自のデータセットで大量のリソースを使って学習されています。実際には、これは多くの関連するアルゴリズムや技術が大きなテクノロジー企業や組織に独占されたままであることを意味します。これが、私たちのプロジェクトの第2の目標、つまりRoBERTaのような大規模モデルの学習を小さなグループに近づけることの動機となりました。私たちは、これらのアーキテクチャの学習を容易かつ高速にする技術を探索し、大規模言語モデルの民主化に貢献したいと考えています。
スペイン語mC4
データセットmC4は、C4(Common Crawlのウェブクロールコーパスの巨大でクリーンなバージョン)の多言語バリアントです。C4はT5テキスト対テキストTransformerモデルの学習に使用されましたが、mC4はCommon Crawlの公開ウェブスクレイプから抽出された101言語の自然テキストを含み、mT5(T5の多言語版)の学習に使用されました。
mC4のスペイン語部分(mC4-es)は、約4億1600万のサンプルと2兆3500億語を含み、約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 Community Eventの時間制約内で言語モデルを学習することを困難にします。このため、データセットの約8分の1(約5000万サンプル)で、学習ステップの約半分で高性能なモデルを学習できるサブセットを作成するために、サンプリング手法の探索を行いました。
このデータのサブセットを効率的に構築するために、私たちは「パープレキシティサンプリング」と呼ぶ手法を利用することにしました。この手法の起源は、CCNet(Wenzek et al., 2020)の構築と、ウェブクロールデータからの高品質な単言語データセットの作成に遡ることができます。彼らの研究では、Wikipediaなどの高品質データで学習された高速言語モデルを適用して、言語の正しい表現から大きく逸脱するテキストをフィルタリングする可能性が示唆されています(図1参照)。彼らはまた、KenLMライブラリ(Heafield, 2011)で実装され、それぞれのWikipediaで学習された100言語(スペイン語を含む)のKneser - Neyモデルを公開しています。
この研究では、パープレキシティサンプリングが学習データサイズと学習時間を削減し、最終的なモデルの性能を維持するのに役立つという仮説を検証しました。
方法論
この仮説を検証するために、まずmC4-esのランダムサブセット(データの約4分の1)の各文書のパープレキシティを計算し、その分布と四分位数を抽出しました(図2参照)。
抽出したパープレキシティパーセンタイルを使用して、中央の四分位数をオーバーサンプリングする2つの関数を作成しました。これは、短い繰り返しテキストや潜在的に低品質な長いテキストなど、極端なサンプルに対するバイアスを減らすためです(図3参照)。
最初の関数はStepwise
で、四分位数の境界と各四分位数のサンプリング頻度を指定するfactor
を使用して、中央の四分位数をオーバーサンプリングします。明らかに、中央の四分位数にはより高い頻度を与え(Q2、Q3をオーバーサンプリング、Q1、Q4をサブサンプリング)ます。
2番目の関数は、パープレキシティ分布にガウス関数のような重みを付けて、Stepwise
関数の急激な境界を平滑化し、目的の基礎分布により近い近似を得ます(図4参照)。
Stepwise
関数のfactor
パラメータと、Gaussian
関数のfactor
とwidth
パラメータを調整して、mC4-esの4億1600万サンプルから約5000万サンプルをサンプリングできるようにしました(図4参照)。比較のために、mC4-esからランダムに5000万サンプルをサンプリングすることも行いました。データサイズは、1TBから約200GBに減少しました。私たちは、bertin-project/mc4-sampling
データセットで、任意の言語でストリーミング時にmC4からサンプリングするコードを公開しています。
図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
「Random」サンプリングは、図6に見られるように、基礎となる真の分布と同じパープレキシティ分布を示しました。
これは包括的な分析ではありませんが、学習コーパスのパープレキシティ分布を調べました。簡単なt - SNEグラフは、異なるトピックや文書のクラスターに対して分布が均一であることを示唆しているように見えます。インタラクティブプロットは、多言語USEの蒸留バージョンを使用して20,000のランダムサブセットの例を埋め込み、各例をそのパープレキシティに基づいて着色して生成されました。これは重要です。なぜなら、原則として、パープレキシティにバイアスのあるサンプリング方法を導入すると、パープレキシティがデータの他の品質と相関する場合、望ましくないバイアスが導入される可能性があるからです。このプロットを再現するために必要なコードは、tsne_plot.py
スクリプトで利用可能で、HTMLファイルはimages/perplexity_colored_embeddings.html
にあります。
学習詳細
次に、Liu et al. (2019)と同じ設定とハイパーパラメータを使用しましたが、シーケンス長128で半分のステップ数(25万ステップ)だけ学習しました。具体的には、Gaussian
とStepwise
は25万ステップ学習し、Random
は23万ステップで停止しました。Stepwise
は、下流テスト(シーケンス長128)を行うために最初は18万ステップで停止する必要がありましたが、後で再開して25万ステップを完了しました。シーケンス長512のテスト時には20.4万ステップに達し、性能が大幅に向上しました。
その後、最も有望なモデルを、シーケンス長128で23万ステップのチェックポイントから、シーケンス長512でさらに数ステップ(約5万ステップ)学習しました。文献では、この手順に関する明確な詳細が見つからないため、2つの戦略を試しました。この決定は最終的な性能に大きな影響を与えることがわかりました。
「Random」サンプリングでは、学習ステップ25万ステップの最後の2.5万ステップでシーケンス長512で学習し、オプティマイザーの状態をそのままにしました。この結果はあまり良くありませんでした(図7参照)。
「Gaussian」サンプリングでは、シーケンス長128で23万ステップ後に新しいオプティマイザーを開始し、短いウォームアップ期間を使用しました。この手順を使用すると、結果ははるかに良くなりました。学習を何度も再開する必要があったためグラフはありませんが、最終的な精度は「Random」(512)の0.5907に対して0.6873で、それぞれの-128モデルの差(「Random」が0.6520、「Gaussian」が0.6608)よりもはるかに大きな差です。同じ手順に従って、「Stepwise」はシーケンス長512で学習を続け、3.1万ステップでMLM精度0.6744を達成しました。
バッチサイズは、シーケンス長128での学習では2048(8つのTPUコア x バッチサイズ256)、シーケンス長512では384(8 x 48)で、学習率は変更しませんでした。シーケンス長512のウォームアップステップは500でした。
結果
下流タスクの学習スクリプトについては、evaluationフォルダを参照してください。
このリポジトリでbeta
とタグ付けされた最初のテストは、シーケンス長128でStepwise
を使用し、小さなfactor
を10に設定して21万ステップ学習した初期実験を指します。リポジトリflax-community/bertin-roberta-large-spanish
にはほぼ同じバージョンが含まれていますが、現在は廃止されています。コミュニティイベント中に、バルセロナスーパーコンピューティングセンター(BSC)はスペイン国立図書館と協力して、2億件の文書(570GB)の高品質データを使用してRoBERTa baseとlargeモデルを学習しました。このデータは、MareNostrum 4の48 CPUコアを持つ100ノードを使用して96時間かけてクリーニングされました。プロセスの最後に、文書レベルで2TBのクリーンデータが残り、最終的に570GBにクリーニングされました。これは、私たち自身のリソース(クリーニング、サンプリング、学習、評価に10日間で3つのTPUv3 - 8を使用)と興味深い対照をなし、貴重な参照になります。BSCチームは、私たちのモデルの初期リリースbeta
を評価し、結果は表1に示されています。
私たちの最終的なモデルは、異なるステップ数とシーケンス長で学習され、異なる(より高い)マスク言語モデル精度を達成しました。これらの制限にもかかわらず、私たちのモデルの初期バージョンを使用して得られた結果を見るのは興味深いです。なお、BSCが評価に使用したデータセットの一部は自由に利用できないため、数値を検証することはできません。
私たちのすべてのモデルは、マスク言語モデルタスクの学習中に良好な精度値(0.65程度)を達成しました。表2に示すように:
📄 ライセンス
このプロジェクトは、CC BY 4.0ライセンスの下で公開されています。
免責事項
このリポジトリに公開されているモデルは、一般的な目的で作成されており、第三者に利用可能です。これらのモデルにはバイアスやその他の望ましくない歪みが含まれている可能性があります。第三者がこれらのモデルのいずれかを使用してシステムやサービスを展開または提供する場合、またはモデルのユーザーになる場合、その使用に伴うリスクを軽減し、いかなる場合も、適用される規制(人工知能の使用に関する規制を含む)を遵守することは、それらの第三者の責任です。いかなる場合も、モデルの所有者は、第三者によるこれらのモデルの使用に起因する結果について責任を負いません。



