ABEJA Tech Blog

中の人の興味のある情報を発信していきます

国内最大規模で商用利用な日本語コーパス ABEJA-CC-JAの公開と使い方

ABEJAでデータサイエンティストをしている服部です。

ABEJAは経産省主催のGENIACプロジェクト1期に採択され、その中で大規模言語モデルの開発を行っていました。 その際にモデルの開発と同時に日本語用の学習コーパスを構築しました。

www.abejainc.com

そして、この構築した日本語用の大規模言語コーパス、すなわち言語モデル用の学習データセット ABEJA-CC-JA を公開しました! 商用利用も可能です。 ここでは、公開したデータセットについてご紹介します。

構築したデータセット ABEJA-CC-JAについて

  • 元データ: Common Crawl
    • 2019年から2023年までを対象に、計41のtimestamp
  • データセットのサイズ : 約430Bトークン
    • Mixtral8x7bのtokenizerでのtoken数
    • 約407B (4070億)文字

日本語公開コーパスとして有名なmC4, CC-100, OSCARあたりや、2023年に発表されたSwallow Corpusよりも大きく、商用利用可能なものでは最大規模かと思います。

データセット名 文字数
CC-100 約258億文字
mC4 約2,397億文字
OSCAR 約740億文字
Swallow Corpus 約3,121億文字
ABEJA-CC-JA 約4,070億文字

※参照元 Swallow Corpusより

(注)先日公開されたllm-jpのv3コーパスもかなり大きいもので、こちらとの比較はできていません。(そのため最大規模という言い方にしています) 公開しているモデル・コーパス・ツール - LLM 勉強会

またデータセット自体も機械学習でのフィルタリングなども含んだ複数のステップでの前処理を行っており、この規模のデータセットでは品質は良いほうかと思っています。 (ここは定量的に測れていないため、主観的な評価です。またCommon Crawlベースで、どうしても課題は残ります。)

コーパス作成までの手順・前処理、残課題については、こちらのブログにて公開していますので、ご覧いただけたらと思います。

tech-blog.abeja.asia

なぜ公開したか?

LLMの品質、特に事前学習や継続事前学習をする場合はデータセットの量・質に左右されます。 しかしながら、日本語のコーパスは英語に比べてかなり少ないです。

そして、大量のデータを確保しようとするとCommon Crawlから作る選択肢になるのですが、Common Crawlでのデータセット構築はかなり労力とコストがかかりますし、基本的な前処理は似たような処理になることが多いです。 似たような処理を日本のあちこちで繰り返しても勿体ないですし、また繰り返すにしてもより良い前処理を目指していくべきかと思います。

こういった状況を踏まえ日本語のLLM界隈の発展のためにも寄与できたらと思い、公開するに至りました。

また、完璧なコーパスは存在せず、このABEJA-CC-JAもまだまだ改善の余地はあると思っています。より良いデータセットを作りたい方が前処理のやり方とデータセットの中身を確認するなどして、より高品質が作られるよう、参考になればと思っています。

公開場所

今回公開するにあたり、AWSの オープンデータスポンサーシッププログラム に採択をされ、AWSのS3に格納しています。

AWSは「AWS オープンデータスポンサーシッププログラム」を通じて、世界中のユーザーがクラウド上でデータにアクセスし活用できるよう、高付加価値なデータセットの保存と送信コストを負担しています。 すなわち、オープンデータの公開にあたり、どうしてもストレージコストがかかるのですが、そこを肩代わりしてくれるというものです。

aws.amazon.com

AWS上のopen dataのページにも載っております。

registry.opendata.aws

データセットの中身

データセットはjsonl形式で保存されています。 jsonlファイルには2つのキーがあります。

  • url
    • Common Crawl上で対象データのクロール元のURLです
  • content
    • 学習用のテキストデータです。
{"url": "https://tech-blog.abeja.asia/xxx", "content": "こんにちは、ABEJAの服部です。今日は.....}
{"url": ".....", "content": ".....}
....

データサイズが大きかったため、その他のメタ情報や加工前のデータは含んでいません。

またjsonlファイルは1ファイルにつき約53GBで、全部で19ファイルで構成されています。 ストレージ容量には気をつけてください。

ダウンロード方法

S3上に公開されていますので、aws-cliを使うでも、curlなどによりダウンロードすることも可能です。

AWS-CLIの場合

aws-cliの設定方法 https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html

aws s3 cpもしくはsyncでダウンロードできます。

aws s3 sync s3://abeja-cc-ja/ ./ --exclude "*" --include "common_crawl_*.jsonl"
#!/bin/bash

for i in {0..18}
do
  aws s3 cp s3://abeja-cc-ja/common_crawl_${i}.jsonl ./
done

とりあえず1ファイルのみダウンロードする場合は

aws s3 cp s3://abeja-cc-ja/common_crawl_00.jsonl ./

で大丈夫です。

cURLの場合

cURLの場合も同様に、1ファイルずつダウンロードできます。

#!/bin/bash

for i in {0..18}
do
  curl https://abeja-cc-ja.s3.ap-northeast-1.amazonaws.com/common_crawl_${i}.jsonl -O common_crawl_${i}.jsonl
done

データセットの読み込み

これはただのjsonl形式なのでなんとでもなりますが、例えばpython pandasだと以下のように処理ができます。

import pandas as pd

filepath = "abeja_cc_0001.jsonl"
df = pd.read_json(filepath, lines=True)

# df.head(1)
# | url | content |
# | - | - |
# | https://tech-blog.abeja.asia | このブログは.... |

まとめ

新しく公開したABEJA-CC-JAに関しての情報と使い方について纏めました。 今回作成したデータセットが今後の日本語LLM開発に貢献できれば嬉しいです。 また、AWSの オープンデータスポンサーシッププログラムのおかげでこうして公開できており、こうしたプログラムにも感謝申し上げます。 もし利用する中での不明点などありましたら、こちらに記載のcontact先にご連絡いただけたらと思います。

この成果は、NEDOの助成事業(JPNP20017)の結果得られたものです。

We Are Hiring!

ABEJAは、テクノロジーの社会実装に取り組んでいます。 技術はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方は、下記採用ページからエントリーください! (新卒の方やインターンシップのエントリーもお待ちしております!)

careers.abejainc.com