四畳半のオフィスで70億パラメータのLLMを事前学習した話

こちらの記事は、noteに投稿した記事の再掲となります。

はじめに

こんにちは、Lightblueの樋口です。

大規模言語モデル(LLM)は大変注目を集めていますが、日本語で事前学習された公開モデルは限定的です。LLMの事前学習は大きなコストがかかるとされており、公開されているモデルは海外のビッグテックが中心で、国内では2件しか例がありません。

■サイバーエージェント
OpenCALM GPT (small, medium, large, 1.4b2.7b6.8b)
日本語 Wikipedia + Jpanese mC4+ Japanese CC-100
■rinna
rinna GPT GPT (xsmall, small, medium, 1b, neox-small, neox-3.6b)
日本語 Wikipedia + Japanese CC-100 (1b 以降のモデルではさらに Japanese mC4 を追加)
その他、日本語の大規模モデルについてはオープンソースの日本語LLMまとめに詳しいです。

https://github.com/llm-jp/awesome-japanese-llm#autoencoding-general

そこで、MosaicMLが開発したMPT-7B(MosaicML Pretrained Transformer 7B)を日本語で事前学習させたモデルを作成し、公開しました。具体的には、多言語データで学習済みのチェックポイントに対し日本語データで追加で事前学習したモデルlightblue/japanese-mpt-7bと0から日本語データで追加で事前学習したモデルを作成しました。

先行リリースとして、まずは、lightblue/japanese-mpt-7bを公開しています。

この記事では、開発手順とモデルの性能評価、さらに実際にかかったコストについて説明します。

4畳半のオフィスでのLLM開発

ChatGPT-4がリリースされた2023年3月以降、AIスタートアップだけでなく社会全体を巻き込んだ大きなうねりが発生しています。

Lightblueでも、社員合宿でChatGPTの活用ハッカソンや、社内文書の活用を支援する検索botのカスタマイズ対応など社内、社外問わず取り組んできました。

一方で、デモはうまくいってもセキュリティ上の理由で活用に進まない企業や、専門用語への対応が不十分であるなどいくつかの課題が見えてきました。

社内のChatGPT活用ハッカソンでも、promptは英語の方がいい結果が得られるといった指摘もあり、事前学習時点で日本語のデータによる学習を強化することは重要であると考えています。

一方で、日本語で事前学習されたLLMというのはほとんど公開されておらず、政府もOpenAIに真っ向から勝負する日本語LLMを作るのは難しいと諦めている節もあります。

そこで、4畳半のオフィスしか持たないLightblueのようなスタートアップが工夫することで、効率的に事前学習も行えることを示すことで、国内のNLPコミュニティに対し貢献し、日本語で事前学習されたよりよいLLMの開発が進むと期待できます。

英語ができないとChatGPTを最大限活用できないというのは、Lightblueが目指すAIの民主化からは外れていると考えており、誰でも等しくこの技術革新の恩恵を受けられるようにしたいと考えています。

開発手順

画像
開発環境

モデル・データ概要

本記事では、先行リリースする多言語データで学習済みのチェックポイントに対し日本語データで追加で事前学習したモデルlightblue/japanese-mpt-7bについて説明します。

多言語モデルは数多く公開されており、一部のモデルは開発情報も詳しく公開されていますが、多言語データの中に含まれている日本語の割合は一般的に少ないという課題があります。そこで、多言語データで事前学習したモデルから、日本語データのみで追加学習を行うことで、低コストで高性能な日本語LLMの開発を目指しました。

0から学習した場合と多言語データで学習済みのモデルに追加で学習した場合の性能比較やコスト比較は別記事でまとめます。

モデルとして、Mosaic Pretrained Transformers(MPT)を選択しました。MPTはMosaicMLが開発したGPTベースのオープンソースLLMで、商用利用が可能な上に、LLaMA-7Bと同等の性能を有しているとされています。記事執筆時点で、7Bおよび30Bの多言語データセットで事前学習したモデルが公開されており、日本語も対応しています。

画像
MPTのモデル一覧

追加学習に利用した日本語データは、mC4の日本語サブセットを選択しました。これはHuggingFaceのデータセットとして公開されています。また、データ量は830GBと非常に多いため、このデータセットを使用することにしました。

トレーニング

学習ステップ(max_duration)については、出力を確認し3,000バッチで改善が見られたのでそこで止めています。

画像
学習パラメータ。約6.3億トークンを学習

評価方法

定性評価として、次の3つの日本語入力に対する出力結果を評価しました。

黒は英語でなに?
Q: 赤は英語でなんという?
A: red
Q: 白は英語でなんという?
A: white
Q: 黒は英語でなんという?
A:

好きな食べ物はなに?
A: こんにちは
B: こんにちは
A: 好きなスポーツは何ですか?
B: サッカーです
A: 好きな食べ物は何ですか?
B:

Wikipediaのりんごの説明
リンゴ(林檎[5]、学名:Malus domestica, Malus pumila)は、バラ科リンゴ属の落葉高木、またはその果実のこと。植物学上ではセイヨウリンゴと呼ぶ。春、白または薄紅の花が咲く。人との関わりは古く、紀元前から栽培されていたと見られ、

結果

出力結果一覧を示します。学習が進むに連れて自然な日本語が出力できていると思います。

黒は英語でなに?

すべてでblackと回答できています。
batchが進むについれて、より自然に会話の続きを生成できるようになっていそうです。

追加学習なし
A: black -[2] [3]

1,000batch
A: black 英語でいうと赤、 黒、白の文字はすべて同じ発音があります。他にも同じ発音がある色の色語があります。次の表には、英語のれぞれの色の色語や、れと同じ発音がある英語の色名、それとい の色名などを表にしました。 英語の色語 赤red(ハッ) 紫色 purple(プーリー) オレンジ orange(オーサンジー) 黒色 black(ブラック) 白色 white(ホワイト) 赤は同じ発音であっても発音が違う色名があります。英語でいうと、赤ちゃんもかわいいでしょう。 英語では赤ちゃんをハッという言

2,000batch
A: black Q:青は英語でなんという? A: blue Q:緑は英語でなんという? A: green Q:白黒緑は英語でどういう風に違う? A:色の略称には「red、white、backgrebue」などの名称が使わているが、「色」「cardinal」「sublime」「regal」「cubic」などのように他の色形容詞と似た特徴を持つ形容詞 も分かれて使われている。 Q:英語では「o×o?」になる場合がある。どのよう場合はそうなるの?(4個の頻度が、100×4=400回あります) A:たとえば、 100%の可能性。 すべてでない場合の事。 0 : 英語では 「o

3,000batch
A: black Q: 緑は英語でなんという? A: green Q: オレンジは英語でなんという? A: orange Q: 白と黒はいつ使われる? A: 服、車、家など Q: 緑と黄色と緑はいつ使われる? A: 家の窓に使われる Q: 赤とオレンジと白と黒はいつ使われる? A: 飲み物のラベルに使われる Q: 白と黒は使われる場所を教えて A: 白は食べ物、黒は文字 Q: 緑と赤とオレンジと白と黒はどこに使われる? A: 飲み物の飾り付け、車 Q: 白と黒は使われる時間を教えて A:

好きな食べ物はなに?

追加学習前は意味が通らない答えをしている一方で、学習が進むに連れて自然な応答ができていることがわかります。

追加学習なし
B:ガルジーでした B2:マップをほしい A:マップを持っていました B:マップを持っていないです A:何を勝ったか B: プレー中 A: スタッフさんは何をいました B:レストランとチェックアウト

1,000batch
B:ソルジャーとお酢のかかったものです B:ええ ごめんなさいね A:それじゃあね。今日もお疲れ B:おー いろいろ難しい話し合いです。。。 もいちろんこれも習い事のひとつなわけです。 子どもの自腹を切ってまでできるような習い事ならば、その習い事に対して愛着がもてます。 こうして子どもも自分の話をすることができるようになります。 それからもう一歩前に進もうという気持ちが生まれてきます。 子どもと話す際、 まずは自分の話はしたら後ろめたい! と思ったら、 必ず話し始めましょう。 それやらなければ子どもに喜ばれない!そして

2,000batch
B:ゆで卵です A:好きな言葉は何ですか? B:「ザマーラ」です A:日本語で苦労しましたか? B:そうです、 大変でした、 A:スペイン語で言いましたか? B:そうです、 多分ゴメンネ, と言う言葉にはあまり気が付きませんでした, A:スペイン語について聞きましたか? B:あまり聞きませんでした A:スペイン語がしっかりしていますか? B:多分,私は今まで読みと聞くのが苦手でした, A:もう一度お願いします。 A:あなたはスペイン語学習者ですか? B: あなたは間違いなくスペイン語圏で働いてる

3,000batch
B: カレーです A: 好きな色は何ですか? B: 赤です A: 好きな体の部位は何ですか? B: 顔です A: 好きなものを3つ答えてください A: 好きなスポーツはサッカーかスポーツかでしょうか? B: 私はスポーツが好きです A: それで、あなたは好きなスポーツを教えてください A: 好きな食べ物は何でお遊びしましょうか? B: ラーメンが好きです A: 好きな食べ物を3つ答えてください A: 好きな色は何でしょうか? B: 黒が一番好きです A: 好きな体の部位は何でしょうか? B: 手です A:

Wikipediaのりんごの説明

正確な知識が出力できているかは微妙ですが、日本語として出力できていそうです。

追加学習なし
ノートではフランクリンゴという。 インドカーニエビリンゴ(Malus domestica accataはアジアの植物いゆるアイスゴう、も果実がまんま残るようである。果実は、赤みと、赤やあずまみの色が融合していて、紅黄色となる。いわゆるカーニエビリンゴの原種は「大梨や小梨などもあるが、大梨は植材のことである」ということである。 *本文を追記 *2019/11/27 初版に追記 *2021/1/14 植物名の正確化を修正

1,000batch
ノートルダムと呼び、果についてイーハトーブと呼ばれていた。 実に人に見えるようなものを形作する。実は多い。茎は立派に茂る。樹高は1.6〜2.2メートル。 果は4.7cm程度、赤や黄色を帯びた花も多数はしづき、滑らかで、 とても熟しやすい。 果汁は、 甘いタイプがあるが、辛味があるタイプもある。栽培は適地で、収穫期を迎えるための夏の渇水期を受けいれることで遅 まき、 果実の重量が増すことが多い。 果汁と果肉には食物繊維が多い。 果汁をたくわえると涙が止まらなくなる。

2,000batch
ノートルダム大聖堂(イモムラサキウエイタン、エジプトのクレオパトよる富の象徴とされたリンゴの寄贈が謡曲にも記された[15][19])に「リンゴの果」という意味の切抜文字がある。リンゴの果実は「果樹」と呼ばれることが多い。 2 果たんぱくとしてのリンゴの役割 3果実として 3.1 リンゴ リーフ 3.1.1リーフの形 3.2リンゴ 粒 3.2.1リーフ 3.2.2粒 3.3 リンゴ種子 3.3.1リーフ 3.3.2種子 3.4リンゴ茶 4 リンゴ 

3,000batch
古代ギリシャでは「若い命を与え、健康に保つ」特効薬として用いられた。中国では紀元前2世紀に栽培が確認されている。ヨーロッパやアメリカでは古くから栽培されており、ヘレニズム期からルネッサンス期にかけての多くの画家がそれらの花を描き続けるなど、重要な宗教的/美的花として重用され続けた。現代では食事用(特に、果実)と、薬用(特に消炎作用が称揚されるほどである)として用いられる。 4 収穫時期・果実 5 収穫時期・種類 6 収穫時期・産地 7 収穫時期・形状 8.1

学習にかかる時間・コスト

学習にかかる時間や1秒あたりに学習できるトークン数を以下に示します。

画像
学習にかかる時間

学習を開始してから約118時間後に学習を停止し、そのコストはおよそ66万円でした。

注意すべき点として、バリデーションデータに対するperplexityやlossの算出にも時間がかかりますので、評価ステップ数を増やしすぎるとコストが増えます。今回は重みの保存のみ行い、推論は別のインスタンスで実行し、出力結果の確認は目視で行いました。

画像
学習データに対する損失の学習曲線
画像
学習データに対するPerplexityの学習曲線。学習済モデルから開始しているので、最初からperplexityは10以下となる小さい値で開始しています。

結果まとめ

  • 多言語用に学習されたLLM(MPT-7B)の学習済みモデルに日本語の追加学習を行いました。
  • チャット形式の会話応答において、Instructionチューニングを行わなくても自然な日本語の出力が改善されることが確認できました。
  • 60万円のコストでも、70億パラメーターのモデルに関して、優位に日本語での性能が改善できることが確認できました。

今後のLLM開発

本記事では、多言語用に学習されたLLM(MPT-7B)の学習済みモデルに日本語で追加学習させたモデルの開発手順や性能を報告しました。

0から日本語で学習させたモデルも今後公開予定です。こちらは、本記事で紹介した追加学習の数十倍のコストがかかりますが、現在、開発中で性能の検証を続けているところです。0から日本語で学習させた場合と多言語モデルを追加学習した場合の性能比較も、今後進めていきます。さらに300億パラメータのモデルの開発も計画しています。
また、チャットbotとしてのファインチューニングについても行う予定です。

昨年末より盛り上がっているLLMですが、本当に面白い技術だと思います。もともと、BERTやT5のファインチューニングでメディア企業やコンサル企業へドメイン特化のNLPサービスを提供してきたLightblueですが、パラメータが増えてより性能が向上してきたことでさまざまなユースケースが出てきており、とてもワクワクしています。

AI業界にいて、かつてないほど技術的にできることが増えている印象です。

面白い時代に生きることができ、とてもハッピーですね。

さて、今後、Lightblueでは、プライベート環境でのドメイン特化型のLLMサービスと、SaaSとしての社内文書検索botの提供を強化していきます。

先行しているHuman Sensingのエッジでの提供のノウハウを活かし、LLMサービスもプライベート環境で提供することで、これまで二の足を踏んでいた企業様にもさまざまなユースケースを提案できると考えています。

今回、LLMの事前学習済みモデルの開発・提供を通して社内体制の見直しも図りました。

  • 生成AI特化チームとしてLLabを開設しました!チーム立ち上げメンバーを募集中です。
  • 4畳半(6人掛)から15人掛のオフィスに拡張しました!w
  • 2023年中にカスタマーサクセス、コンサルチームを立ち上げ予定です。こちらもチーム立ち上げメンバーを募集中です。

LLabチームでは、日本語で誰もが便利に使える基盤モデルの開発や提供基盤のGPU環境の整備に取り組んでいきます。これまでもジャーナル投稿や人工知能学会へ参加してきましたが、よりAIコミュニティへのコミットを強化していきます。

最後に、普通の人がみんなAIの恩恵を受けられる社会を作ることに興味を持ってくれた方は、ぜひ、連絡ください。