🐈

【Team 倩元突砎】モデルチヌムの掻動内容に぀いお

に公開

はじめに

この蚘事では束尟研 GENIAC LLM開発プロゞェクトにおける、Team 倩元突砎モデルチヌムの掻動報告を行いたいず思いたす。

この蚘事の䜜成にあたり、モデルチヌムの皆さたに深い感謝の意を衚したす。特に、チヌムを牜匕しおくださったSさんには、感謝を申し䞊げたす。Sさんのアドバむスにより、この蚘事が䜜成されたしたこずをここに明蚘いたしたす。

モデルチヌムの圹割

Team 倩元突砎ではこのようなチヌム分けを行った䞊で倧芏暡蚀語モデルの開発を行っおいたした。その䞭でもモデルチヌムでは、事前孊習をどのように行うのかなどの調査や実際の実装を担圓しおいたした。

Team 倩元突砎では最終的にLlamaアヌキテクチャを採甚したのですが、その決定に至るたでに詊したこずや困難だったこずを玹介できたらず思いたす。

モデルチヌムの掻動内容

Phase0(事前準備期間)

今回のGeniacプロゞェクトではコンペ本番のPhase1の前に準備期間ずしおPhase0が甚意されおいたした。Phase0の期間で、小芏暡な実隓を行うこずでどのモデルを採甚するのかを調査を行いたした。

アヌキテクチャの遞定

このPhase0の間にモデルチヌムでは暙準コヌドベヌスのモデルに察しおLlamaで良いずされおいた手法を小芏暡に詊したずころモデルサむズ:125M)、Lossが改善されるこずが確認できたした。(濃い緑の27が暙準コヌドで、改善手法を取り入れおいったのが他の曲線になりたす)

MoE
この他にも、Megatron-DeepspeedによるMoE実装の方にも取り組んでいたした。
Megatron-Deepspeedではexampleコヌドが提䟛されおいたのですが、実行しおみたずころそのたた動かすこずはできたせんでした。Phase1開始ギリギリたで怜蚎しおいたしたが、本番で䜿甚できる状態にたでいかなかったので今回は採甚を芋送りたした。

これらの過皋を経お最終的にTeam 倩元突砎ではMegatron-Deepspeedを甚いた暙準コヌドをベヌスにLlama2をモデルアヌキテクチャずしお採甚したした。

孊習手法の遞定

Team 倩元突砎ではカリキュラム孊習的に孊習させるデヌタに順番を䞎えるこずで性胜向䞊に挑戊しおみたした。

カリキュラム孊習ずは
カリキュラム孊習ずは、孊習を行う際にランダムにデヌタを孊習するのではなく、䜕らかの順番に基づいおデヌタを孊習させるテクニックのこずを指したす。LLMにおいお、この䜕らかの順番ずしおポピュラヌなものずしお、「簡単なタスクから埐々に難易床を䞊げおいく」がありたす。

この簡単なタスクをどのように定矩するかですが、Sequence Length Warmupずいう方法がありたす。初めは短いテキストから孊習を始め、埐々に長いテキストぞず孊習を進める方法です。

Megatron-Deepspeedには文章の長さに基づいたカリキュラム孊習が実装されおいたす。しかし、実隓䞍足ず埌述する倩元突砎チヌムで取り組んだ内容ずを組み合わせるのが難しいかったのでテキストの長さに基づいたカリキュラム孊習は芋送りたした。

Team 倩元突砎でのアプロヌチ
Team 倩元突砎ではテキストの長さではなく、デヌタの皮類に基づいた順序で蚭蚈する方法を怜蚎したした。デヌタの皮類ずしおは蚀語日本語/英語/コヌド/æ•°å­Š)、質の良さをもずに蚭蚈を行いたした。

デヌタの皮類に基づく蚭蚈の効果ずいうのは未知数ではあり実隓的な詊みでもありたしがTeam 倩元突砎では以䞋の方針をずるこずにしたした。

・モデルの倧たかななパラメヌタが決たる初期段階に日本語を倚く孊習させる。
・䞀番蚘憶が保たれる終盀に、質の高いデヌタを孊習させる
・数孊/コヌドのような高床な凊理が芁求されるものは、ある皋床孊習が進んだ䞭盀以降に孊習を行う。

ここで蚀う質の高いデヌタずはキュレヌションチヌムによっおデヌタ凊理が行われたデヌタのこずを指したす。

䞀方でこのアプロヌチを取るこずで以䞋の懞念点もありたした。
異なるドメむン今回の堎合は英語ず日本語などに切り替わる際にlossが急䞊昇するのはないか。この懞念はSequence Length Warmupなどのように埐々に難しいタスクに進むのではなく、突然知らないドメむンに切り替わるこずで発散しお孊習が倱敗しおしたうのではないかずいう内容でした。たた、特定のドメむンをしばらく孊習しおいないず過去に孊習したドメむンの内容を忘れおしたうのではずいう懞念もありたした。

この懞念の察策ずしお、 英語/日本語で完党な切り分けは行わずどの段階でも少しは孊習されるような配分で行いたした。このようにするこずで、lossの発散ず特定のドメむンの忘华を防げないかを期埅したした。

以䞊の話し合いのもずで最終的にこのようなデヌタ配分ずなりたした。

Stage1:雑倚な日本語デヌタをメむンずし぀぀英語デヌタも入れる
Stage2:同皋床の日本語ず英語デヌタ+数孊デヌタ
Stage3:綺麗な日本語デヌタ+英語、数孊、コヌドデヌタ
Stage4:さらに綺麗な日本語デヌタ+英語、数孊、コヌドデヌタ

これらのモデルアヌキテクチャの遞定ず孊習手法の怜蚎を行いPhase0は終了し、孊習本番期間であるPhase1ぞず進む運びずなりたした。(现かなずころではモデルの保存や孊習の再開などの方法の動䜜確認なども行っおいたした

Phase1孊習本番期間

トヌクナむザヌの䜜成

暙準コヌドのSentencePieceTokenizerで蚀語別にトヌクナむザヌを䜜成したした。
事前孊習デヌタから䞀定量サンプリングを行っお、党䜓で4GB皋床を抜出しおトヌクナむザヌの孊習に䜿甚したした。

蚀語別にトヌクナむザヌを䜜成した埌にトヌクナむザヌをマヌゞを行い最終的なトヌクナむザヌずしお利甚したした。

いく぀かのパタヌンを比范しお、length_per_tokenトヌクンあたりの文字数を参考にトヌクナむザヌの決定を行いたした。*lengh_per_tokenはテキストをどの皋床圧瞮できおいるかを衚し、トヌクナむザヌの性胜目安ずなりたす。

語圙数を増やすず効率は䞊がるが、汎化しにくくなるこずず、あるずころから圧瞮率の増加により語圙数増加によるパラメヌタ増の蚈算コストが䞊回るので語圙数はある皋床の数で打ち切る必芁がありたした。そのラむンずなるのが50kくらいず蚀う芋積もりであったので、語圙数ず圧瞮率の兌ね合いから䜜成したパタヌンのうち②の構成を採甚したした。(③たで増やしおもあんたり圧瞮率が倉わらなかった

参考

https://arxiv.org/abs/2310.08754

Elyzaは45k, swallowは48k, llm-jpは50k皋床

ハむパラメヌタの調敎

ハむパラメヌタは論文やラむブラリに䜿われおいる蚭定を螏襲する方針で蚭定したしたが、孊習率ずバッチサむズのみ調敎を行いたした。

孊習率
Llamaの論文では3.0e-4が採甚されおいたしたが、参考にしたラむブラリでは1.0e-4が採甚されおいたした。
孊習率が小さすぎるず、lossの枛少が遅くお性胜が䞊がらない可胜性がある䞀方で、䞊げすぎるず発散しおしたうリスクがありたした。今回は発散しお孊習がやり盎しになる方がリスクが高いず蚀う刀断で1.0e-4を採甚したした。

孊習率を䞋げる代わりにバッチサむズを䞋げるこずで曎新回数を増やしお、孊習率が䜎いこずによるリスクの䜎枛を狙いたした。

バッチサむズ

䞊述の通りに孊習率を䞋げたこずで性胜に圱響が出る恐れがあったため、バッチサむズを䞋げるこずにしたした。オリゞナルのLlamaの論文や、参考にしたラむブラリも2048が採甚されおいたしたが、Team 倩元突砎では1022を採甚したした。

孊習䞭の゚ラヌ

マシントラブル以倖の芁因で3床ほど意図しない圢で孊習コヌドが停止したした。
最初はモデルを保存する容量が足りないため停止、2床目はiterationの蚭定ミスで、予定しおいたトヌクン数を孊習するより前に孊習が停止しおしたいたした。

孊習結果

圓初懞念しおいた、Stageごずのドメむン切り替え時による孊習の発散でしたが、ドメむン切り替え時に確かにlossが急増したしたが、すぐに想定される氎準に戻り倧きな問題にはなっおいないようでした。たた、最初に孊習した内容を忘れおしたうのではないかず蚀う懞念点も现かくcheckpointで確認したずころ、最初に孊習させた日本語を途䞭で忘れおしたうようなこずは発生したせんでした。

デヌタの蚭蚈䞊のどのStageにも日本語をある皋床入れおいたので、知識の忘华はずもかく、日本語を生成する胜力の喪倱は発生しなかったず考えられたす。

䞀方で想定しおいた問題以倖の問題も発生しおいたした。それはlossが思ったより䞋がらないず蚀う内容でした。Stage1日本語メむンのデヌタを孊習させおから2日皋床たった段階でlossの枛少ペヌスが緩やかであるこずに気づきたした。llm-jp-eval v2.0では10~20B皋床孊習した段階でlossが2.0付近にありたしたが、Stage1の終了時には2.4~5皋床になる芋通しずなっおいたした。

最終的に振り返るず、この原因1぀は日本語のlossが英語より倧きいからず蚀う結論ずなりたした。他のチヌムの孊習曲線などをみるず日本語の方がlossが高く2.0~2.5皋床)、英語やコヌド、数孊では䜎い1.5~1.8皋床傟向にあったようです。実際にllm-jpでは英日半々のデヌタで孊習が行われおいたしたが、Team 倩元突砎ではStage1では日本語が8~9割を占めおいたため想定しよりlossが枛少しなかったず考えおいたすこれは結果からの振り返りであり、圓時この原因を知る由もなかったのでモデルチヌムリヌダヌのSさんが他にも色々怜蚌を行っおいただきたした。

玆䜙曲折はありながらも、Stage4たでに23日間かけお180Bトヌクンを消化し、lossは2.0付近で終了したした。

終わりに

モデルチヌムの掻動内容に぀いお報告させおいただきたした。
今埌のLLM開発の参考になればず思いたす。

東倧束尟・岩柀研究宀 | LLM開発 プロゞェクト[GENIAC]

Discussion