東大LLM開発プロジェクト進捗状況|日本語出力品質特化チーム
第1回:週次報告
開発テーマ・概要
- 私たちは、日本語での大規模言語モデルの開発をしています。
- テーマ:メンバー全員で作り上げるボトムアップ型開発
チーム全体の開発状況
- メンバー全員と面談を行い、希望を聴取し、各チーム(全体統括チーム、データチーム、事前・事後学習チーム)へのチーム割りを行いました。以下の課題が浮き彫りとなり、解決策を検討しました。
- 課題と解決策
- 課題1:稼働時間の短いメンバーのキャッチアップの難しさ(1日2時間程度の稼働時間のうち、1時間はキャッチアップで溶けてしまう)
- 「ここを見てね」という場所を作る
- どこを見ればよいか?はslackのcanvasに記載
- キャッチアップで見るべき場所は、slackのピン留めアイテムとnotionの更新履歴
- 「ここを見てね」という場所を作る
- 課題2:他チームの動きが見づらい
- notionページのチームホームの記載の統一化(スケジュール、メンバー一覧、週次報告内容はここでわかるようにする)
- チーム内週次MTGの開催(リーダーからの共有事項や、各チームからの共有事項はここに集約)
- 課題3:気軽に相談できる相手がなかなか見つからない(オンラインのため親睦が深まりにくい)
- カジュアル会(録画なし、雑談メイン)の不定期開催
- 希望者は一定数いたものの、任意かつ希望者全員の予定が合わず、1回あたりの参加者は少なかった(ただ、その分深く話すことができたため、親睦は深まった)
- notionにて、各自の稼働可能時間の見える化
- チェックインという場を作り、今反応できるよ〜という状態が見えるようにするもの
- 任意という位置付けのため、活用者がやや少ない&各人も毎度使っているわけではなく、活用には課題あり
- カジュアル会(録画なし、雑談メイン)の不定期開催
- 課題1:稼働時間の短いメンバーのキャッチアップの難しさ(1日2時間程度の稼働時間のうち、1時間はキャッチアップで溶けてしまう)
- 課題と解決策
- これまで、Githubなどの開発環境を構築し、チーム開発の進め方を整え、データセットとモデルの準備方針の策定を行ってきました。主要な課題と解決策は以下の通りです。
- 課題と解決策
- 課題1:Github開発で複数のリポジトリを作成する必要がある可能性があり、単一リポの共有では足りない
- Organization機能を用いたgithub整備を行った
- ただし、リポの乱立を防ぎ、メインリポで成果物の修正履歴を確認する観点から、学習に関するメインソースコードについては、単一リポの方針とした(スクレイピング用のコードなど、別コードについては別リポとした)
- 課題2:縦割りで検討を行うことの限界(データと学習の接続的タスクやスケジュールについては、サブチーム横断的に検討する必要があった)
- 全体課題を整理するページを用意し、週次定例MTGでそれらの課題を議論し、タスクとして落とし込む仕組みとした
- 課題1:Github開発で複数のリポジトリを作成する必要がある可能性があり、単一リポの共有では足りない
- 課題と解決策
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- 開発環境(主にGithub)の運用ルール決め
- github organization機能の利用の決定
- 利用ルールの作成
- 開発環境(主にGithub)の運用ルール決め
- ネクストステップ
- 技術総括チームの顔合わせ実施(3/22予定)
事務的総括T
- 今週の進捗
- キックオフMTG
- 著作権に関する基本情報や暫定版ルールの共有
- 今後のタスク割振り方針の決定
- 使用予定データ・モデルの検討
- 1件処理済み
- キックオフMTG
- ネクストステップ
- 使用予定データ・モデルの登録があり次第、確認を行う
データT
全体
- 今週の進捗
- GCP環境のセットアップ
- mc4のダウンロード
- ABEJAさんとの勉強会
事前学習用データ
- 今週の進捗
- フィルタリング方針の相談 ⇒ 基本方針だけ決めて各自で
- ネクストステップ
- 基本方針の共有
- ダウンロード済みデータセットリストページの作成
学習T
- 今週の進捗
-
ベースラインとするモデルの候補は以下の3つに確定
「GPT3」「Llama2」「Mistral」
-
環境が提供されたので各自が実行することが大目標
- 現状, 動かせた人と動かせてない人がいる。
-
標準コードT
-
Mistral T
- 大体の実装が終わりつつある (Slide Window Attentionの実装は済)
- ローリングバッファの実装難易度高いので、割愛するかも
-
Llama2 T
- wandbでモニタリングができるようになったので、現在に事前学習を進行中
-
- ネクストステップ
- 標準コードT
- MegatronDeepspeed内のexampleにbashスクリプトがあるので、内容の使い方を調べる
- GPU間の通信オーバーヘッドが多いがZeROのそれぞれの違いを調べて、効率の良い方法を模索したい
- ログ周りの集計方法、チェックポイントからの学習の再開などの調査を行う(来週火曜日ぐらい目途)
- Mistral T
- モデルの改善はそろそろ目途をつけて、スクリプト側の方に着手したい
- Llama2 T
- exampleのbashのパラメータの差分をチェックして、試行錯誤が必要
- 1回は実験してもらいたい
- 標準コードT
- 相談事項等
- 提供された環境を効率的に使えるような仕組みを考えたい
- モデルサイズの決定について
- 一般的なモデルサイズをベースにデータセットのサイズを決める方が安全か?
- 1:20くらいを想定
- データチームのデータサイズはどのくらいか?
- 最低200Bを想定
- 一般的なモデルサイズをベースにデータセットのサイズを決める方が安全か?
第2回:週次報告
チーム全体の開発状況
- メンバーの希望を聴取し、各チームのチーム割りを行った。
- Githubなどの開発環境を構築し、チーム開発の進め方を整えた。
- データセットとモデルの準備方針の策定を行った。
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- Subチーム内でのMTG実施
- プロジェクト前半の行動について共有
- Phase0前半は、各Subチーム内の役割を優先して習熟する
- 技術総括Tの定期ミーティングは毎週水曜日19:00からの週次定例
- 技術総括Tとして、個別に報告事案(担当タスク)がなければ参加は任意
- 勉強会(基礎)の実施
- ネクストステップ
- コード習熟
事務的総括T
- ネクストステップ
- 使用予定データセット/モデルの登録があり次第確認を行う
データT
事前学習用データ
- 今週の進捗
- 重複除去の実験を行いました ⇒ 重複処理
- ローカル環境では 1B トークンあたり 30 分 くらいの処理時間になっています.
- プレ環境では極端に遅いので調査中です.
- フィルタリングの準備中
- フィルタリングの基本ルールをまとめました ⇒ フィルタリング
- 武藤さんが実装ルールをまとめてくださっています ⇒ フィルタリング共通ルール(案)
- ただこれだけだと動きづらいと思われるので,プレ環境に繋いでフィルターを実装し,実際に jsonl ファイルを処理してみる会を開こうと考えています.
- フィルタリングの基本ルールをまとめました ⇒ フィルタリング
- 重複除去の実験を行いました ⇒ 重複処理
- ネクストステップ
- フィルター実装チュートリアルを開催する
- プレ環境で dedep 関数がまともに動くようにする
- 相談事項等
- チーム内への相談事項
- 3/29まで山内が動けないので,フィルターのデモを実装してくれる方募集(山内)
- プレ環境で dedup が遅い理由を究明してくれる方募集(山内)
- チーム内への相談事項
事後学習用データ
- 今週の進捗
- コンセプト決定
- 日本文学や俳句に強い
- やわらかい言葉で傾聴力がある
- データセットデザイン、データ収集
- データ収集のワークフローを組み、動き出した
- 事後学習に必要なデータ
- コンセプト決定
- ネクストステップ
- データ作成ワークフロー決定(3/28話し合い)
- データ作成開始
- コンセプト実現用データの収集
- 相談事項等
- チーム内への相談事項
- データセット収集やLLMに解かせたいタスクの書き出しなどをもっと進めていきたいです。よろしくお願いします。
- 事後学習データ作成のワークフローの話し合いにぜひご参加ください。(3/28 19:00)
- チーム内への相談事項
学習T
-
今週の進捗
全体
- メンバーと所属サブチームをnotionにまとめました
標準コードT
-
→ カスタマイズ性の拡張
-
→ logに関する処理をいじれるようになった。
-
→ modelにおけるZeRO stageの選択意思決定が可能
- Llama2実装における様々な実験 (上記リンクが見やすい)
Mistral
- Mistralの実装が完了
- sliding window attentionを有効にするためにwindow_sizeのargをflash attentionに追加
- paged QK cacheを有効にするためにblock tableのargをflash attentionに追加
- これは最近flash attentionに追加されたもので、コミュニティでまだあまり使われていないので、学習がうまく行くか不明なのでリスクがありそう
- どちらもtransformer.pyのFlashSelfAttention クラスにconfigを渡す形で実装
-
ネクストステップ
- 標準コードT
-
Megatron Deepspeedには様々な実装例が存在するのでそれを片っ端から解析したり, 動かしたりしてみる
ex)
- ds_pretrain_gpt125M_MoE128.sh
- ds_pretrain_gpt125M_dense_cl_kd.sh
-
- Llama2 T
- hugging face modelへの変換
- 他のLlama2実装例との比較
- Mistral T
- まず標準コードでGPTを回す
- adress already in useというエラーが出てて事前学習のところで詰まっている
- 学習コードが回ることを確認したらsliding windowをテスト
- 次にpaged QK cacheをテスト
- huggingfaceへの変換を確認
- GPT3との比較実験
- 標準コードT
第3回:週次報告
チーム全体の開発状況
- メンバーの希望を聴取し、各チームのチーム割りを行った。
- Githubなどの開発環境を構築し、チーム開発の進め方を整えた。
- データセットとモデルの準備方針の策定を行った。
- 当チームでは、研究に裏打ちされた手堅い手法をベースとした開発を行い、質の良い日本語の出力が可能なLLMの開発を目指す。具体的には、GPT3, Llama2, Mistralのモデルを実験し、比較的精度の高かったMistralモデルを採用することとした。
- 事前学習に用いるデータはJapanese mC4とWikipediaから構成される日本語データなどを用い、ファインチューニングに用いるデータセットはチーム内で作成する。事後学習用データセットについては、余裕があれば①やわらかい言葉を使い傾聴力を持つ、②日本文学などに詳しく俳句を詠めるといった独自コンセプトを意識したデータセットを追加的に用意する。
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- 情報のキャッチアップ
- ネクストステップ
- 計算リソースのジョブ利用ルールの検討、運用
事務的総括T
- ネクストステップ
- 使用データセットとソースコードの一覧作成
データT
事前学習用データ
- 今週の進捗
- データセットの決定
- ‣
- 学習Tに聞きたいこと
- phase0で動かすモデルの規模
- LLM-jp corpus のスクリプトを用いたフィルタリング
- wikipedia (2.2GB) に対して実験
- 手元のノート PC で2分程度
- mC4 に対する処理を開始
- したものの,実際の処理に入る前にノードに入れなくなった
- 全員が動かし始めたせい?
- 今確認したら自分のミスでした
- 手元 or colab で処理したほうが早いかもしれない
- 全員が動かし始めたせい?
- したものの,実際の処理に入る前にノードに入れなくなった
- wikipedia (2.2GB) に対して実験
- 機械学習フィルタの実装方針を決める
- 機械学習&手作り特徴量でデータにメタデータを付ける
- データの選別(やわらかい日本語,論理構成がしっかりしている,など)
- 重複処理の負担を減らす
- カリキュラムラーニングに利用
- 簡単な文から学習する
- これは可能なのか学習Tに聞く ⇒ できる
- 簡単な文から学習する
- 機械的に判定できないところはアノテーションしてモデル作る
- ‣
- メタデータを先頭に着けることで生成文を制御できないか?
- 理論的には出来る.続きから生成させればよい.
- 許されるかどうか微妙
- 機械学習&手作り特徴量でデータにメタデータを付ける
- データセットの決定
- ネクストステップ
- フィルタリングを進める
- これから1週間で最低限のフィルタリングは行いたい
- 機械学習フィルタ作成
- アノテーション
- テキストのベクトル化
- フィルタリングを進める
事後学習用データ
- 今週の進捗
- データ加工のワークフローを決定し、一部動き始めた
- LLMでllm-jp-eval対策用データセット作成を行う
- llm-jp-evalのデータをダウンロードして内容を確認
- データ作成用のcolabの構築中
- Japanese MTbechや幅広いタスクに対応するデータセットの作成
- evol instructによる多様性のある指示データの作成を行うことで決定
- 指示に対応する回答データの作成方法は議論中
- 数学・コーディングデータの調査
- 開発DBに追加した
- その他高品質なデータセットの調査
- 開発DBに追加した
- LLMでllm-jp-eval対策用データセット作成を行う
- データ加工のワークフローを決定し、一部動き始めた
- ネクストステップ
- llm-jp-eval用データセット
- データ作成用のcolabの整備(~4/8)
- データ作成(4/9~)
- Japanese MTbech用データセット
- evol instructに用いる指示データの収集とevol instructの実行(~4/9)
- evol instructしたデータに対する回答作成(4/10~)
- MTbechで高得点をマークしているモデルに使用しているデータセットの調査(~4/5)
- データセットのフィルタリング方法の検討
- コンセプト実現をしようとすると精度が下がるかもしれない問題への対処方法の検討
- 古語と現代語を使い分けられるか?
- 柔らかい言葉を使うと要約タスクの性能が下がらないか?
- llm-jp-eval用データセット
- 相談事項等
- チーム内への相談事項
- データ作成を来週から始めるのでよろしくお願いします。
- コミュニティ外の方とのディスカッションなど
- コンセプト実現をどうするか
- 俳句は諦めて川柳にするなど妥協案を試みる
- データセットはつくるがフェーズ1では学習に使わない
- コンセプト実現をどうするか
- チーム内への相談事項
学習T
-
今週の進捗
標準コード:- ZeROのstageについて
- ZeROは番号が若い方が速いので, memoryが足りなくなったらstageをあげるという方針
Llama2 Team:
- ZeROは番号が若い方が速いので, memoryが足りなくなったらstageをあげるという方針
- スモールサイズでの学習実験は完了
- HuggingFaceへの変換手法の完了
Mistral
-
GQA&SWAを用いた学習は完了
→ Llama2での実験と比較し, Lossが下がっているので有望 -
Switch MLPでのMoEの実験も完了
→ 良さそう?
全体的にMistralの精度が良さそうなので, Mistralに動きをシフトし始めた形になります。
- ZeROのstageについて
-
ネクストステップ
- Mistralのhuggingfaceへの変換
- MoEモデルのSwitch MLPの改善
- その他ablationに関する実験
- マルチGPUでの実行
第4回:週次報告
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- 計算リソースのジョブ利用ルールの検討、運用(ルールはこちらです)
- ネクストステップ
-
W&Bの設定について
W&B→チームを作成して、学習の推移などのモニタリングに使用するW&BのSlack通知→Slackに通知用のチャネルを作成して監視する。
→運営よりW&Bチームアカウントについてアナウンスあり
-
新規加入メンバーとのキャッチアップ支援
-
- 相談事項等
- チーム内への相談事項
- ソースコードのコミット(共有)をお願いしたい。
- ツールの再現性や継続性、紛失防止のため。
- ドキュメント化。
- Phase1の環境構築に向けた手順などの実験したい。(協力者求)
- MiniCondaの環境は共有できるはずなので、Phase0のうちに実験および手順を確立したい。
- 期待できる効果
- 最初に一人がビルド等を行えば、残りの人はビルド不要。
- 全員が手順に則れば、環境差異による障害は防げる。
- Phase1のユーザはどうなるのか?例えばチーム内共通アカウントとなれば、手順としては不要。
- ソースコードのコミット(共有)をお願いしたい。
- チーム内への相談事項
データT
事前学習用データ
- 今週の進捗
- mC4 フィルタリング完了
- https://matsuokenllmcommunity.slack.com/archives/C06MZ5L3FPU/p1712678084713459
- ちょっと基準を厳しくしすぎて 120B token くらい.
- 結果を眺めながらもう少しデータを救う方法を検討中.
- この基準でやると全体で 180B token くらいになる.
- OSCAR, cc100 の処理に移る
- llm-corpus のフィルタを調整した現行のフィルタが割と性能が良いので同様の基準で処理を進める予定
- sbatch で処理を投げるもすぐプロセスが kill されてしまう現象が発生していて原因調査中
- リソース制限に引っかかっている?
- 機械学習ベースのテキスト選別
- ‣
- ‣
- ‣
- mC4 フィルタリング完了
- ネクストステップ
- 全データ前処理を終わらせる(oscar, cc100)
事後学習用データ
- 今週の進捗
- llm-jp-eval用データセット作成
- 7bモデル(rakuten以外)では厳しい
- Japanese MT bench用データセット作成
- 実行するとMTbechのデータを取ってくるcolab
- 7bモデルではevol instructは厳しかった
- プロンプトの工夫でデータつくるのも厳しい
- llm-jp-eval用データセット作成
- ネクストステップ
- llm-jp-eval用データセット作成
- rakuten7b+プロンプトでデータ作ってみる
- 多分上記厳しいので手動でデータ作成
- Japanese MT bench用データセット作成
- 手動でデータ作成
- 既存データセット選定・フィルタリング
- 4/10(本日)開催のMTGで方法を議論
- llm-jp-eval用データセット作成
- 相談事項等
- チーム内への相談事項
- llm-jp-eval用、MT-bech用データを手動で作るのに協力いただきたいです
- コミュニティ外の方とのディスカッションなど
- To 事前学習・事後学習チーム
- 事前学習データの学習の最後の20%?くらいから事後学習データを混ぜていくと精度が上がるという手法みたいです。こういった手法を検討される場合は、優先的にそれ用のデータを準備します。
- チーム内への相談事項
トークナイゼーション
- 今週の進捗
- sentensepieceのオプションを調査
- ネクストステップ
- sentence piece用のデータ作成
- 使うオプションとその選定理由リストを公開し、合意をとる
学習T
-
今週の進捗
- モデルサイズについて
- 初動: Mixtral 7*8B > Mistral 13B(Llama2のparameter) > Mistral 7B
- Phase 1環境 (Python 3.11)
- Mixtralについて実装は完了
- マルチGPUでの実験も済
- モデルサイズについて
-
ネクストステップ
- 課題: Hugging Faceへの変換, 重みの検証が課題。実行中
- その他, ZeROなどstageの検証
- 事後学習, RLHFにシフトしていくと思います
- データの学習のさせ方等について議論必要
- 事前・事後の学習期間の決定について
開発のマイルストーン
<開発マイルストーンの確認>
-
事前学習データ準備
-
使用するデータセットの選定【済】
-
使用するデータセットのダウンロード【済】
-
データセットの簡易フィルタリング(目標:4/15)
-
テキストのアノテーション(目標:4/12)
→ラストエポックに質の良いデータやラベル付きデータを持ってくるというのもあり得るので、初動に間に合わない場合は、そこまでに間に合わせたい
-
事前学習データの重複処理
-
事前学習データセット完成(期限:4/20)
-
-
トークナイザ学習(予定:4/21)
※作成された事前学習データセットで学習(所要時間は半日程度を想定)
→サブセットで学習可能なので、早めることは可能かも -
事後学習データ準備
- LLMコンセプトの決定【済】
- 既存データセット選定・フィルタリング(目標:4/20)
- llm-jp-eval用データセット作成(elに絞る?)(目標:4/30)
- Japanese MT bench用データセット作成(簡単なタスクを中心とした20件に絞る)(目標:4/30)
- チームで1日40件×15日
- コンセプト用データセット(目標:5/8)
- 川柳:200件
- 傾聴:200件
-
事前学習モデル準備
- 検討するモデル案の選定【済】
- 検討するモデルの実装と実験 【済】(目標:4月13日)
- 採用するモデルの決定【済】(目標:4月13日)
- データの学習のさせ方(エポック数や用いるデータセットを途中で変更するかなど)
- パラメータサイズの決定(目標:4月23日?)
-
事後学習モデル準備
※事前学習モデル準備が落ち着き次第整備
第5回:週次報告
チーム全体の開発状況
- small版でのモデルの稼働確認を行い、本番環境での初動計画を策定した。
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- 新規参加者のスタートアップ支援
- 標準コードの解説ほか
- 新規参加者のスタートアップ支援
- ネクストステップ
- Phase1に向けたモデルの学習管理
データT
事前学習用データ
- 今週の進捗
- mC4/cc100/OSCAR でのフィルタリングが完了
- mC4 120B, OSCAR 60B くらい
- OSCAR は基準を緩めて,その代わりにフィルタリングに使う各種スコアをメタデータとしてデータに付与するようにした
- なのでより厳しくサンプリングすることは低コストでできる
- OSCAR の entity 数が多かったため,LLM-jp corpus のフィルタリング関数を抜本的に高速かして5倍くらい速くした
- おそらく全データもう一回フィルタリング回す余裕がある
- 青空文庫の前処理と,形態素解析人工データの作成
- どちらもメンバーへ依頼中
- 青空文庫:
- 青空文庫は綺麗なデータだが分量が長い.そのためコンテクスト長内に収まらないが,できれば全部使いたい.
- 青空文庫に入っているようなデータは有名なので丸暗記してしまってもよい(と判断)
- そこで,青空文庫を適当にだぶらせながら分割し,データ全体の文章のつながりを LLM が知ることができるように
- 学習Tに相談:コンテクスト長は結局どのくらいになるのか?
- Mistralは8000までいける
- 学習Tに相談:コンテクスト長は結局どのくらいになるのか?
- こちらコードは完成済
- 形態素解析人工データ
- LLM が漢字と読みの関係,文節などを理解できるように,「テキスト⇒形態素解析結果」というデータを一定量作って事前学習データに加えることを検討中
- データ分類器の作成
- メンバーへ依頼中
- BERT によるデータの特徴量化に結構時間がかかるので,学習開始時点には間に合わないかもしれない.
- 文章のアノテーション
- 割とがっつりフィルタリングしたつもりだったのだが,広告が思った以上に多い.
- コードデータ
- データセットはダウンロードして解凍済み
- 英語データについて
- とくに前処理なく使えそうなデータセットがあるので,ひとまずダウンロード済
- mC4/cc100/OSCAR でのフィルタリングが完了
- ネクストステップ
- 重複処理
- とりあえず重複処理用のハッシュ値を全データに対して計算しておく
- python で実装したところめちゃ時間かかったので,以前参照した c++ 実装のハッシュ値計算の部分を切り出してフィルタリングコードに統合中.今夜回し始められるか.
- とりあえず重複処理用のハッシュ値を全データに対して計算しておく
- 高品質データの先頭にメタデータ付与
- 全データの統合
- 重複処理
事後学習用データ
- 今週の進捗
- データセット選定とフィルタリングの役割分担決定
- llm jp eval用データ作成
- 自動作成も手動作成も厳しいので、対策に有効なデータを調査しデーセットを決定
- JMT-bench用データ作成
- 自動作成方法を複数試みたがどれもうまく行っていない
- ネクストステップ
- JMT-bench用データ作成
- 指示データを厳密に再現してなくても、類似のタスクや形式のデータを自動作成できないか試みる
- データセットフィルタリングを各自進める
- JMT-bench用データ作成
トークナイゼーション
- 今週の進捗
- トークナイザのパラメタ決定
- mc4/cc100データでのトークナイザ学習
- 決定したパラメータでの学習を実験中
- 事前学習データ全量は不可能なので,サブサンプリングする必要あり.
- LLM-jp tokenizer の訓練方法をベースに複数言語をマージする方法を調査
- ネクストステップ
- 語彙の決定
- 記号,python/C++の予約語など
- その他1トークンとして扱いたい文字列
- 実際の学習 ~ 04/22
- 語彙の決定
学習T
- 今週の進捗
- 事前学習モデルの実装は完了。残りはHuggingFaceへの変換を残すのみ。
- RLHF, DPOといったHuman Alignmentは行わない旨を決定
- 事後学習への取り組みの方針決定
- ネクストステップ
- 事後学習への取り組み
- HF変換の完了 (別チームとの協力の可能性あり)
ディスカッション
- 特になし
開発のマイルストーン
- データ準備
- [事前学習関係] mC4/cc100/OSCAR でのフィルタリングが完了
- [事前学習関係] コードデータダウンロード済(これから選別予定)
- [事後学習関係] データセット選定とフィルタリングの役割分担決定
- モデル学習コード準備
- [事前学習関係] Mixtral, Mistral, Llama2の実装完了(HFへの変換の確度は要確認)
- シングルGPUでの稼働確認、実績
- [事前学習関係] プレ環境では上記いずれも稼働確認済み
- マルチノードでの稼働確認、実績
- [事前学習関係] プレ環境では標準コード、小規模 mixtral について稼働確認済み
その他
- 特になし
第6回:週次報告
チーム全体の開発状況
- small版でのモデルの稼働確認を行い、本番環境での初動計画を策定した。
- 本番環境でのセットアップを行なっている最中。
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- Phase1見守りに向けたドキュメント整備
- 見守りの体制構築
- ネクストステップ
- 見守り運用
- 不具合の対応
- 相談事項等
- チーム内への相談事項
- 見守り運用ルール等についての相談
- コミュニティ外の方とのディスカッションなど
- 特になし
- チーム内への相談事項
事務的総括T
- 今週の進捗
- 事後学習に用いる可能性のあるデータのライセンスチェック
- ネクストステップ
- 使用データ、モデルの確認一覧のまとめ
- 松尾研への報告シートへの転記
データT
トークナイゼーション
- 今週の進捗
- 日本語40k, コード15kのトークナイザを作成
- 日本語だと 1.95 char / token
- コードだと 2.3 char / token
- 日本語40k, コード15kのトークナイザを作成
事前学習用データ
- 今週の進捗
- mC4, OSCAR, cc100 の前処理終了
- 重複処理まで.だいたい 1/7 が重複.
- Python / C++ / HTML / CSS / Markdown の抽出完了
- ライセンス問題ないものだけ
- 青空文庫
- chunk化完了
- アノテーションのモデル完成
- mC4, OSCAR, cc100 の前処理終了
- ネクストステップ
- 統合して1つのファイルにする
事後学習用データ
- 今週の進捗
- 既存データセットのフィルタリング
- 一旦完了したが、品質に問題あり。より細かいフィルタリングや修正をした方が良い。
- 例:「より簡単な日本語にして」という問題と例文が与えらえて、例文と全く同じ文を出力する、など。
- 一旦完了したが、品質に問題あり。より細かいフィルタリングや修正をした方が良い。
- llm-jp-eval対策用データの選定
- llm-jp-eval対策用データを一から作るのは難しいので、llm-jp-eval対策に有効と思われるデータを収集し、フィルタリングを実行。
- FLAN
- jp-effective-instructions
- llm-jp-eval対策用データを一から作るのは難しいので、llm-jp-eval対策に有効と思われるデータを収集し、フィルタリングを実行。
- 既存データセットのフィルタリング
- ネクストステップ
- 既存データセットの品質を高める
- 各データセットの担当の方を中心にフィルタリングや修正を行う。
- llm-jp-eval対策用データ
- FLANの翻訳
- JMT-bench対策用データ
- データ作成用にチューニングしたLLMを作り、それで作成できるか実験
- 汎用的な能力を獲得するためのデータセット作成
- JMT-benchと同じく、データ作成用にチューニングしたLLMを作り、それで作成できるか実験
- 既存データセットの品質を高める
学習T
- 今週の進捗
-
決定事項
- Mixtral 7*8B > Qwen = Mistral13B / 7Bの優先度で実験
-
モデルの決定基準
- モデルごとの学習速度に焦点を当てて議論する
- 特にモデルがvramに乗るかどうか
- 事後学習
- サーベイが進行中
-
モデルに関して
- 全てのモデルがout-of-memoryになってのらない状況
- global batch, sequence lengthなど変更して試みても解決せず, 苦戦中
-
決定事項
- ネクストステップ
- 決定したモデルのhugging face変換コードの完成
- 事後学習のサーベイ, 実装
ディスカッション
- 特になし
開発のマイルストーン
- データ準備
- [事前学習関係] mC4/cc100/OSCAR でのフィルタリングが完了
- [事前学習関係] コードデータフィルタリング完了
- [事前学習関係] 本番環境へのデータセット移行終了
- モデル学習コード準備
- [事前学習関係] Mixtral, Mistral, Llama2の実装完了(HFへの変換の確度は要確認)
- シングルGPUでの稼働確認、実績
- [事前学習関係] プレ環境では上記いずれも稼働確認済み
- [事前学習関係] 本番環境ではMistral 125M稼働確認済
- マルチノードでの稼働確認、実績
- [事前学習関係] プレ環境では標準コード、小規模 mixtral について稼働確認済み
- [事前学習関係] 本番環境ではMistral 125M稼働確認済
その他
- 特になし
第7回:週次報告
チーム全体の開発状況
- H100×8gpus×2nodesを用い、Mistral 9Bモデルにて、本番環境での学習をスタート。
- 事前学習用データセットは、mC4, wiki, OSCAR, CC100のデータを用い、120Bトークン程度のデータを準備し、用いている。
- 本番環境使用開始直後は、VRAM制約やTflopsがうまく出ない問題に直面したものの、ハイパラ探索を行うことにより、最終的には391.339Tflopsで学習を開始。
- 4/30に2000itrあたりでloss spikeが発生。同日夜より再始動; bf16の活用等によって対処し、loss spike問題を回避。
- 現在、事後学習に向けた準備や、モデルのHF変換といった課題への対応に取り組み中。
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- 学習の見守り体制運用
- 見守りドキュメント整備
- ネクストステップ
- 見守り運用の継続
- 必要な知識の共有(検討中)
※一旦補助的な動画をチーム内に共有済み - 監視ツールの稼働
事務的総括T
- 今週の進捗
- DeepL利用規約の確認
- Flanのライセンス確認
- Flan Collection (Flan 2021).jsonはncにつき、コンペで利用不可
- DbCL v1.0ライセンス
- DbCLライセンスは、OKライセンスの中に入っているODbLに内包されているライセンスと考えられるのでOK
- ネクストステップ
- DeepLへの確認(引き続き)
- そのほかのライセンス確認
データT
事前学習用データ
- 今週の進捗
- 事前学習用データセットの完成
- 形態素解析データ&青空文庫データ追加
- 機械学習モデルによるデータ選別
- 準備は大体できたが環境がない ⇒ node 7 を使いたい
- 事前学習用データセットの完成
- ネクストステップ
- 選別モデルを走らせる
事後学習用データ
- 今週の進捗
- 既存データセット選定・フィルタリング
- 完了。これからファインチューニングして能力を測る
- シードデータ作成開始
- self instruct等でデータを増やす元となるデータの作成を開始
- 既存データセット選定・フィルタリング
- ネクストステップ
- 既存データで7b程度のモデルをファンチューニングして能力を図る
- シードデータ作成
- 類似指示データ作成用LLMの作成
- インストラクションチューニングデータ作成
- データ作成体制を構築する
- シードデータ作成、データ自動生成、outputの作成・人手改善、FTによる能力検証の4つをチーム内で分担して行う
学習T
- 今週の進捗
- 本番学習に用いる事前学習モデルやハイパラの設定
- ネクストステップ
- 事後学習の方針検討
- hfへのモデル変換
開発のマイルストーン
- データ準備
- [事前学習関係] mC4/cc100/OSCAR でのフィルタリングが完了
- [事前学習関係] コードデータフィルタリング完了
- [事前学習関係] 本番環境へのデータセット移行終了
- [事前学習関係] 本番学習の準備完了
- モデル学習コード準備
- [事前学習関係] Mixtral, Mistral, Llama2の実装完了(HFへの変換の確度は要確認)
- シングルGPUでの稼働確認、実績
- [事前学習関係] プレ環境では上記いずれも稼働確認済み
- [事前学習関係] 本番環境ではMistral 125M稼働確認済
- マルチノードでの稼働確認、実績
- [事前学習関係] プレ環境では標準コード、小規模 mixtral について稼働確認済み
- [事前学習関係] 本番環境ではMistral 3.8B, 5B, 7B, 9B 稼働確認済
- [事前学習関係] 本番学習ではMistral 9B(2 nodes)を採用
- うまくいきそうか計画の確信度
- 今の学習がこのままうまくいけば、5/18には事前学習が終了する予定です。
- 本番環境利用が始まってから、VRAM不足問題、学習速度不足問題、loss spike問題とトラブルが続きましたが、運営の方々や他チームの方々のお力添えもあり、チーム一丸となって一つ一つを乗り越えてきております。これからもトラブルは発生するかと思いますが、このメンバーであれば、最後までうまく走り切ることができると確信しております。
第8回:週次報告
チーム全体の開発状況
- H100×8gpus×2nodesを用い、Mistral 9Bモデルにて、本番環境での学習をスタート。
- 事前学習用データセットは、mC4, wiki, OSCAR, CC100のデータを用い、120Bトークン程度のデータを準備し、用いている。
- 本番環境使用開始直後は、VRAM制約やTflopsがうまく出ない問題に直面したものの、ハイパラ探索を行うことにより、最終的には391.339Tflopsで学習を開始。
- 4/30に2000itrあたりでloss spikeが発生。同日夜より再始動; bf16の活用等によって対処し、loss spike問題を回避。
- 現在、事後学習に向けた準備や、モデルのHF変換といった課題への対応に取り組み中。
サブチームからの情報共有
全体統括T
技術的総括T
- 今週の進捗
- 学習の見守り継続(各位の協力で問題なくローテーションも機能)
- ネクストステップ
- 見守りに必要な事前知識(Slurmや学習環境など)の展開
事務的総括T
- 今週の進捗
- 使用予定データセット・モデルリストの更新
- Google 翻訳の使用可否の確認
- ネクストステップ
- NVIDIAの承継ライセンスの適用範囲の調査
データT
事前学習用データ
- 今週の進捗
- sentence bert によるデータセットの特徴量化 & モデルによる推論
事後学習用データ
- 今週の進捗
- データセット追加
- FTと評価の練習
- 役割分担を決めて試しに適当なデータとモデルで練習。5/9に進捗報告
- 5/9以降の事後学習データ作成の流れのたたき台作成
- ネクストステップ
- 5/9以降に実際のデータセットと7b(理想)のモデルでSFTしてみる
- データ作成と修正を行う
学習T
-
今週の進捗
- HF変換に関して
- 形だけは出来上がっている
- 変換が確実に行われることの検証は未実施
- 事後学習について
- サーベイは落ち着いている
- 実装にこれから移る
- 3 node実験について
-
現状の課題:
no_pp = true
になっていた。(bf16にする関連で変更した)- no_pp=trueだと…
- HF変換の手法がかなり変わってきてしまう(困難)
- 2 nodeの学習を引き継げない
- no_pp=trueだと…
-
今後
-
3 nodeにするとiterationが28万→19万に減少する
-
学習に関する見積もり
200,000,000,000 / 177,600 / (606024) = 13.03 days 3ノード200,000,000,000 / 127,109 / (606024) = 18.21 days 2ノード
→ 3 nodeで0から行いたいという考え。
-
-
- HF変換に関して
-
ネクストステップ
- 事後学習
開発のマイルストーン
- データ準備
- [事前学習関係] mC4/cc100/OSCAR でのフィルタリングが完了
- [事前学習関係] コードデータフィルタリング完了
- [事前学習関係] 本番環境へのデータセット移行終了
- [事前学習関係] 本番学習の準備完了
- モデル学習コード準備
- [事前学習関係] Mixtral, Mistral, Llama2の実装完了(HFへの変換は確認中)
- シングルGPUでの稼働確認、実績
- [事前学習関係] プレ環境では上記いずれも稼働確認済み
- [事前学習関係] 本番環境ではMistral 125M稼働確認済
- マルチノードでの稼働確認、実績
- [事前学習関係] プレ環境では標準コード、小規模 mixtral について稼働確認済み
- [事前学習関係] 本番環境ではMistral 3.8B, 5B, 7B, 9B 稼働確認済
- [事前学習関係] 本番学習ではMistral 9B(3 nodes)を採用
- うまくいきそうか計画の確信度
- 5/7にNode7の環境的問題が解消され、5/8に3nodesにて学習を行うことができるようになりました。
- 本番環境利用が始まってから、VRAM不足問題、学習速度不足問題、loss spike問題とトラブルが続きましたが、運営の方々や他チームの方々のお力添えもあり、チーム一丸となって一つ一つを乗り越えてきております。これからもトラブルは発生するかと思いますが、このメンバーであれば、最後までうまく走り切ることができると確信しております。
この成果は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)の助成事業「ポスト5G情報通信システム基盤強化研究開発事業」(JPNP20017)の結果得られたものです。
松尾研LLMコミュニティへのご案内
Slack参加リンクを始めとして、GENIACの概要やLLMコミュニティ主催各イベント等、関連リンクはこちらにまとめられております。
ぜひご覧ください!!
東京大学 松尾・岩澤研究室が運営する松尾研LLMコミュニティのLLM開発プロジェクト[GENIAC] の開発記録、情報発信になります。 各種リンクはこちら linktr.ee/matsuolab_community
Discussion