大規模言語モデルSwallowは東京工業大学情報理工学院の岡崎研究室と横田研究室、国立研究開発法人産業技術総合研究所の研究チームで開発された大規模言語モデルです。英語の言語理解や対話で高い能力を持つ大規模言語モデルLlama 2 7B, 13B, 70Bの日本語能力を拡張するため、研究チームは言語モデルに日本語の文字や単語などの語彙を追加したうえで、新たに開発した日本語データを用いてモデルの構築を継続的に行う継続事前学習を行いました。研究チームで実施した性能評価では、2023年12月現在オープンな大規模言語モデルの中で、日本語に関して最高性能を達成しました。今回公開したモデルは7B, 13B, 70Bの継続事前学習モデル(base)と、それぞれに指示チューニングを施した言語モデル(instruct)の計6種類で、Hugging Faceからモデルをダウンロードできます。
- Swallow 7B base: https://huggingface.co/tokyotech-llm/Swallow-7b-hf
- Swallow 7B instruct: https://huggingface.co/tokyotech-llm/Swallow-7b-instruct-hf
- Swallow 13B base: https://huggingface.co/tokyotech-llm/Swallow-13b-hf
- Swallow 13B instruct: https://huggingface.co/tokyotech-llm/Swallow-13b-instruct-hf
- Swallow 70B base: https://huggingface.co/tokyotech-llm/Swallow-70b-hf
- Swallow 70B instruct: https://huggingface.co/tokyotech-llm/Swallow-70b-instruct-hf
SwallowのライセンスはLlama 2のLLAMA 2 Community Licenseを継承しています。このライセンスに従う限りにおいては、研究および商業目的での利用が可能です。
Llama 2に継続事前学習を行ったモデルで日本語の性能を比較しました。ただし、13Bのモデルは比較対象が無いため、日本語でフルスクラッチで学習したモデルとの比較を含めました。この結果から、Swallowは継続事前学習で日本語の能力を着実に伸ばしたこと、フルスクラッチで事前学習したモデルよりも高い性能を持つことが分かります。また、Swallowの継続事前学習にあたり、日本語の語彙を追加していますが、他のモデルでは日本語の語彙追加で性能が落ちるという報告があったため、比較対象のモデルは語彙追加を行っていないものを採用しています。我々が行った比較実験においては、語彙追加の有無による評価スコアの差は僅かで、むしろ系列長が短くなることのメリットの方が大きいことから、語彙追加ありのモデルを採用しています。
続いて、英語の性能を示します。Swallowの英語の性能は元のモデルよりも若干低下しています。Swallowでは継続事前学習に日本語と英語のテキストを混ぜたデータを利用していますが、他のモデルでよく用いられる混合比1:1ではなく、日本語を重視した9:1を採用しています。これが英語の性能低下に繋がったのかどうかは、今後の追加実験で明らかにしていく予定です。
なお、ベンチマークのスコアを異なるデータセット間で比較することができないことに注意してください。例えば、70Bモデルの日本語の評価結果において、機械翻訳のスコアよりも数学のスコアの方が高いですが、これはSwallowが翻訳よりも数学が得意であることを示唆しているのではありません(問題の難易度や採点基準が全く異なる試験の結果を比較しているようなものです)。同様の理由により、日本語タスクのスコアの平均値よりも、英語タスクのスコアの平均値の方が高いからといって、Swallowは英語の方が得意、と結論付けることもできません。ベンチマークのデータセットによって評価尺度や難易度が異なるため、このレーダーチャートの形状だけからタスクの得意・不得意について議論することは不適切です。
最後に、研究チームで実施した日本語の評価ベンチマークでの比較実験結果を示します。この評価実験ではパラメータの重みが公開されているオープンなモデルの性能を測定しました。
モデル | 日本語平均 | JComQA | JEMHopQA | NIILC | JSQuAD | XL-Sum | 日英翻訳 | 英日翻訳 | MGSM |
---|---|---|---|---|---|---|---|---|---|
Japanese Stable LM Beta 7B (base, 語彙拡張あり) | 0.2937 | 0.2172 | 0.4482 | 0.4309 | 0.8202 | 0.0757 | 0.1453 | 0.1601 | 0.0520 |
CyberAgentLM2 (7B) | 0.3098 | 0.2198 | 0.5047 | 0.5066 | 0.7799 | 0.0233 | 0.1499 | 0.2345 | 0.0600 |
ELYZA-japanese-Llama-2-7b-fast | 0.3312 | 0.5308 | 0.4330 | 0.3898 | 0.8131 | 0.1289 | 0.1143 | 0.1678 | 0.0720 |
Japanese Stable LM Beta 7B (base, 語彙拡張なし) | 0.3366 | 0.3610 | 0.4478 | 0.4432 | 0.8318 | 0.2195 | 0.1226 | 0.1946 | 0.0720 |
ELYZA-japanese-Llama-2-7b (語彙拡張なし) | 0.3467 | 0.5791 | 0.4703 | 0.4019 | 0.8226 | 0.1312 | 0.1289 | 0.1795 | 0.0600 |
Mistral v0.1 (7B, base) | 0.3717 | 0.7301 | 0.4245 | 0.2722 | 0.8563 | 0.2006 | 0.1733 | 0.1405 | 0.1760 |
Japanese Stable LM Gamma (7B, base, 語彙拡張なし) | 0.4301 | 0.7364 | 0.4643 | 0.5568 | 0.8910 | 0.2293 | 0.1561 | 0.2390 | 0.1680 |
Llama 2 7B (base) | 0.3201 | 0.3852 | 0.4240 | 0.3410 | 0.7917 | 0.1905 | 0.1737 | 0.1783 | 0.0760 |
Swallow 7B (base) | 0.3940 | 0.4808 | 0.5078 | 0.5968 | 0.8573 | 0.1830 | 0.1511 | 0.2510 | 0.1240 |
Stockmark-13b | 0.2495 | 0.2216 | 0.0917 | 0.5021 | 0.7303 | 0.0773 | 0.0811 | 0.2040 | 0.0880 |
LLM-jp-13B | 0.2889 | 0.2261 | 0.4790 | 0.3857 | 0.7744 | 0.1082 | 0.1185 | 0.1955 | 0.0240 |
PLaMo-13B | 0.2923 | 0.2270 | 0.5189 | 0.4137 | 0.7621 | 0.1025 | 0.1196 | 0.1582 | 0.0360 |
Llama 2 13B (base) | 0.3963 | 0.6997 | 0.4415 | 0.417 | 0.8533 | 0.2139 | 0.1982 | 0.2146 | 0.1320 |
Swallow 13B (base) | 0.4625 | 0.7837 | 0.5063 | 0.6398 | 0.9005 | 0.2168 | 0.1771 | 0.2720 | 0.2040 |
Japanese Stable LM Beta 70B (base) | 0.5138 | 0.9115 | 0.4925 | 0.6042 | 0.9192 | 0.2573 | 0.2335 | 0.2765 | 0.4160 |
Llama 2 70B (base) | 0.4830 | 0.8686 | 0.4656 | 0.5256 | 0.9080 | 0.2361 | 0.2398 | 0.2643 | 0.3560 |
Swallow 70B (base) | 0.5528 | 0.9348 | 0.6290 | 0.696 | 0.9176 | 0.2266 | 0.2298 | 0.3043 | 0.4840 |
パラメータ数が7Bである他のモデルと比較すると、Swallow 7Bはフルスクラッチで学習されたモデルやLlama 2ベースの他のモデルを上回る性能を示しました。唯一、Japanese Stable LM Gamma 7B(Mistral 7B v0.1からの継続事前学習)を下回る結果となりましたが、これはベースとしているMistral 7B v0.1の性能が高いことが理由として考えられます。今後、Mistral v0.1をベースにした継続事前学習にも取り組みたいと考えています。
パラメータ数が13Bや70Bである他のモデルとの比較では、Swallowが最高性能を達成しています(2023年12月時点)。特に、13Bにおいてフルスクラッチで学習した他のモデルとの性能差が顕著に現れています。これらの実験結果から、性能の高い大規模言語モデルからの継続事前学習が効率的・効果的であることが示唆されますが、今後は大規模言語モデルのフルスクラッチでの学習において性能を高めるための方策や知見も探求していきたいと考えています。
評価ベンチマーク
日本語の評価ベンチマークとしてllm-jp-eval(v1.0.0)およびJP Language Model Evaluation Harness(commit #9b42d41)を用いました。内訳は以下の通りです。
- 多値選択式質問応答 (JCommonsenseQA [Kurihara+, 2022])
- 自由記述式質問応答 (JEMHopQA [石井+, 2023])
- 自由記述式質問応答 (NIILC [関根, 2003])
- 機械読解 (JSQuAD [Kurihara+, 2022])
- 自動要約 (XL-Sum [Hasan+, 2021])
- 機械翻訳 (WMT2020 ja-en [Barrault+, 2020])
- 機械翻訳 (WMT2020 en-ja [Barrault+, 2020])
- 数学 (MGSM [Shi+, 2023])
なお、大規模言語モデルの評価ベンチマークとしてよく用いられる自然言語推論(NLI)については、言語モデルがラベルを偏って予測する傾向があり、そのラベル予測の偏りが正解と偶然一致するとスコアが高くなるため、(特に7Bや13Bで)評価結果が安定しませんでした。そのため、今回は評価ベンチマークから除外しています。
英語の評価ベンチマークとしてLanguage Model Evaluation Harness(v.0.3.0)を用いました。内訳は以下の通りです。
- 多値選択式質問応答 (OpenBookQA [Mihaylov+, 2018])
- 自由記述式質問応答 (TriviaQA [Joshi+, 2017])
- 機械読解 (SQuAD 2.0 [Rajpurkar+, 2018])
- 常識推論 (XWINO [Tikhonov & Ryabinin, 2021])
- 自然言語推論 (HellaSwag [Zellers+, 2019])
- 数学 (GSM8k [Cobbe+, 2021])
継続事前学習によるLlama2の日本語の能力の大幅な改善
米Meta AI社が開発したLlama 2シリーズは、オープンかつ高性能な大規模言語モデルとして世界中から支持を集めています。また、日本語も含めて、複数の言語からなるデータで学習されているため、Llama 2は日本語にも対応しています。ところが、Llama 2の事前学習データの約90%は英語が占めており、日本語の割合は全体の約0.10%に留まっています。そのため、Llama 2は英語で高い性能を示すにも関わらず、日本語の読み書きは苦手という弱点がありました。
そこで、研究チームではLlama 2の7B, 13B, 70Bのモデルをベースに、大規模な日本語ウェブコーパスと英語のコーパスを9:1で混ぜたデータで継続事前学習を行い、元々の言語モデルの能力を活かしながら日本語能力の改善を目指しました。その結果、我々が採用した日本語に関するベンチマークデータにおいて、7B, 13B, 70Bの全てのモデルはベースモデルよりも高い性能を示しました。また、日本語コーパスのみで事前学習された同規模の日本語大規模言語モデルよりも高い性能を示すことから、継続事前学習の有効性が明らかになりました。
語彙拡張による大規模言語モデルの学習・推論効率の改善
Llama 2では、バイト対符号化(BPE; Byte-Pair Encoding)に基づいてテキストがトークン(token)に区切られています。ところが、Llama 2は英語を重視した多言語のモデルとして学習されているため、日本語の主要な単語や文字が語彙に含まれず、テキストが不自然な単位に区切られることがあります。例えば、「吾輩は猫である」という7文字のテキストは、<0xE5><0x90><0xBE><0xE8><0xBC><0xA9>は<0xE7><0x8C><0xAB>である
という、人間には理解しにくい13トークンに区切られます。これは、「吾」「輩」「猫」という漢字が語彙に収録されていないためで、バイトフォールバック(byte-fallback)によりUTF-8文字コードのバイト単位でこれらの漢字が表現されるからです。
日本語の語彙が不足している言語モデルは、日本語を不自然な単位で取り扱うことに加え、テキストをより多くのトークンで表現してしまうため、学習や生成の効率が低下します。大規模言語モデルの学習に必要な計算予算はトークン数に比例するので、逆に計算予算が一定である条件下では、テキストを少ないトークンで表現する方がより多くの情報を学習に詰め込めます。また、大規模言語モデルがテキストを生成するのに要する時間はトークン数に比例するため、同じテキストを生成するのであれば、より少ない数のトークンで表現できる方が短時間で結果を出力できます。さらに、大規模言語モデルの入力や出力には、一度に扱えるトークン長の上限があります。入力をより少ないトークンで表現できる方が、タスクの指示や解き方(few-shot事例)を多く詰め込めるので、下流タスクでの性能向上も期待できます。研究チームはLlama 2のトークナイザに16,000件の日本語のトークンを追加することで、日本語テキストのトークン長を56.2%に削減しました。
大規模な日本語のウェブコーパスの開発
大規模言語モデルの学習には膨大な言語データが必要です。その中でも、ウェブページを収集し、テキスト化したデータは、大規模言語モデルの構築の要です。従来、オープンな日本語大規模言語モデルの学習には、CC-100、mC4、OSCARなど既存のデータセットの日本語部分が用いられてきました。ところが、これらのデータセットでは、ウェブページのHTMLをテキスト化する際のノイズが混入していることや、最新の情報や知識を収録していないという問題がありました。また、これらは多言語のデータセットとして構築されているため、日本語に特化してデータの品質を高めるような工夫は取り入れられていません。
そこで、研究チームではCommon Crawl(用語8)から配布されているアーカイブ(2020年から2023年にかけて収集された21スナップショット分、約634億ページ)から日本語のテキストを独自に抽出・精錬し、約3,121億文字(約1.73億ページ)からなる日本語ウェブコーパスを構築しました。この規模は、CC-100 (約258億文字)、mC4(約2,397億文字)、OSCAR 23.10(約740億文字)を抜き、日本語の言語モデルの学習コーパスの中で、商用利用が可能なものとしては最大となります。
その他
Swallowの構築方法や実験結果については、言語処理学会第30回年次大会(NLP2024)で報告しました。
- 藤井一喜, 中村泰士, Mengsay Loem, 飯田大貴, 大井聖也, 服部翔, 平井翔太, 水木栄, 横田理央, 岡崎直観. 2024. 継続事前学習による日本語に強い大規模言語モデルの構築. 言語処理学会第30回年次大会(NLP2024), A8-5, pp. 2102-2107. (論文PDF)
- 水木栄, 飯田大貴, 藤井一喜, 中村泰士, Mengsay Loem, 大井聖也, 服部翔, 平井翔太, 横田理央, 岡崎直観. 2024. 大規模言語モデルの日本語能力の効率的な強化: 継続事前学習における語彙拡張と対訳コーパスの活用. 言語処理学会第30回年次大会(NLP2024), A6-4, pp. 1514-1519. (論文PDF)
- Swallow: LLaMA-2 日本語継続事前学習モデル
Swallowの研究開発は、産総研が構築・運用するAI橋渡しクラウド(ABCI: AI Bridging Cloud Infrastructure)の「大規模言語モデル構築支援プログラム」、国立研究開発法人新エネルギー・産業技術総合開発機構(NEDO)の「次世代人工知能・ロボットの中核となるインテグレート技術開発」プロジェクト (JPNP18002) の「熟練者観点に基づき、設計リスク評価業務における判断支援を行う人工知能適用技術の開発」、その他の支援によって実施されました。なお、本成果の一部は、大学共同利用機関法人情報・システム研究機構国立情報学研究所、産総研、東工大、NIIが主催する勉強会LLM-jp(NII、東北大学、東京大学、早稲田大学などが参加するLLM研究開発チーム)が2023年9月に共同で提案して採択された、産総研ABCIの一定部分(Aノードと呼ばれる高性能な計算ノード)を最大60日間占有利用する機会を提供する「大規模基盤モデル構築支援プログラム」によるものです。また、学習した大規模言語モデルの評価実験では、LLM-jp (LLM勉強会)で開発されているデータや知見を活用しました。