😽

東大LLM開発プロジェクト進捗状況|日本語特化チーム

2024/05/23に公開

第1回:週次報告

1. 開発テーマ・概要

記載者: 中村 仁

  • 本プロジェクトでは、日本語の特性を適切に捉えられる大規模言語モデル(LLM)の開発を目指します。
  • この目標達成に向けて、以下の3つの領域に対し、重点的に注力しております。
    1. データセット
      • 良質な日本語データセットの構築が語理解の質を大きく左右する
      • 本プロジェクトでは以下のデータを収集し、最適化を図る
        • 政府文書
          • 国会答弁
        • 学術論文
        • 知識転移を見据えた独自データセット
          • ヒンディー語
    2. モデル構造
      • モデル構造の革新が鍵となる
      • 以下の検討を行っている
        • 従来のTransformerに代わる新構造の検討
          • Mamba等のSSM
        • Mixtures of Experts(MoE)の活用
    3. 学習手法
      • 人間とAIの学習プロセスには大きな隔たりがある
      • 以下の新しい学習手法の導入により、人間に近い学習を実現し理解力向上を目指す
        • 「繰り返し学習」
        • 「人間的カリキュラム学習」

加えて、以下のプロジェクト運営面での工夫も行っています。

  • トップダウンとボトムアップの両立
  • Notionを活用したプロジェクト管理の最適化
  • チームメンバーの心理的安全性の確保
  • コミュニケーションの活性化

プロジェクトの目標を達成できれば、以下の成果が期待できると考えています。

  1. チームメンバーによる共同執筆での論文発表
  2. NoteやGitHubを通じた積極的な情報公開とLLM人材の育成

日本が世界に誇れるAI技術を持つためには、日本語の豊かな表現を捉えられるLLMの実現が不可欠です。

本プロジェクトはその実現に向け、全力を尽くしてまいります。

2. チーム全体の開発状況

記載者: 中村 仁

  • チーム組成が完了し、各サブチームにおける開発が開始しました。
    • 現在は、「リサーチと方針策定」の段階であり、各サブチームにおける模索が進められています。
    • チーム全体としては、次のような問題点が発生し、その各々に対処を行っています。
      • 【問題1】各サブチームにおける「縦割り」化が進んだ
        • 各チームから各チームへのメンバー派遣(複数のMTGに参加するメンバーの設置)を実施
      • 【問題2】モデル構造とそれに対応する学習方法についてのメンバーを、異なるチームに設置していた
        • チーム内の編成による、類似タスクに対する指揮系統の一元化を実施
  • 各サブチームにおける活動をサポートし、チーム全体としての調整をする活動も行っています。
    • 次のマネジメントチームの発足を発足させました。
      1. 情報調査チーム
        1. 情報収集、情報分析、情報の可視化
      2. 外務チーム
        1. 情報の発信、文書の公開範囲設定
      3. 内務チーム
        1. チーム内の方(及びチームへ加入される予定の方)の方に対するマネジメント、勉強会の調整
    • マネジメントチームにより、Notionにおける情報管理や、コミュニティメンバーの加入についてのフローの確立への進んでおり、
      よりよい開発環境とするために活動が進展中です。

3. サブチームからの情報共有

3.1 データ班

記載者: @あとりンゴ @佐藤紘基

3.1.1 やったこと

  • 日本語wikipediaを基にsentencepiecce tokenizer v0.1を作成
  • 国会議事録のデータセット化
  • 標準コード(data_management)のドキュメント作成
  • Common Crowlの収集(畠山Tに協力する形)

3.1.2 分かったこと

  • 時間がないため(畠山Tなど他Tと)協力するところと差分を出すところを明確にしていくことが重要

3.1.3 次やること

  • MeCabを活用したtokenizer v0.2を作成
  • 標準コードをプレ環境で実行し知見を溜めていく
  • 利用可能なデータセットのサーベイ
  • ヒンディー語のクリーニング

3.2 学習・コード班

記載者: @佐藤紘基 @あとりンゴ @Shoji Iwanaga

3.2.1 やったこと

  • 標準コード(学習部分)のドキュメント作成
  • 標準コードの実行
  • mergekitの調査とドキュメント作成

3.2.2 分かったこと

  • 全体コード作成メンバー + モデル班への派遣メンバー + データ班への派遣メンバーという構成にする

3.2.3 次やること

  • MoE-recipeの調査
  • 標準コード改造についての案出し
  • カリキュラム学習の調査
  • GitHubのオーガナイゼーションの作成
  • wandbの勉強会の実施

3.3 モデル班

記載者: @KoikeKaito

3.3.1 やったこと

  • MoEに関するメンバー間での知識共有
  • MoEを実装する場合のコード調査
  • 各種活用候補のモデルについての調査

3.3.2 分かったこと

  • MoE作成コードの理解
  • 学習・コード班とのすみ分けの明確化

3.3.3 次やること

  • Mambaに関する勉強会の実施、実装調査
  • MoE実装への着手

第2回:週次報告

チーム全体の開発状況

記載者: 中村 仁

  • チーム組成が完了し、各サブチームにおける開発が開始しました。
    現在は、「リサーチと方針策定」の段階であり、各サブチームにおける模索が進められています。
  • 各サブチームにおける活動をサポートし、チーム全体としての調整をする活動も行っています。
    • 次のマネジメントチームの発足させました。
      1. 情報調査チーム
        • 情報収集、情報分析、情報の可視化
      2. 外務チーム
      • 情報の発信、文書の公開範囲設定
      1. 内務チーム
        • チーム内の方(及びチームへ加入される予定の方)に対するマネジメント、勉強会の調整
    • マネジメントチームにより、Notionにおける情報管理や、コミュニティメンバーの加入についてのフローの確立へ進んでおり、よりよい開発環境とするために活動が進展中です。

サブチームからの情報共有

データ班

記載者: @toshiki_nakashima, @堀江吏将, @元谷崇

やったこと

  • 事前学習に利用可能な日本語データセットの調査
    • 事前学習データのクリーニング,準備
  • 本番データセットにおける,ブレンドの割合(日本語,英語,ヒンディー,他ドメインなど)
  • 事後学習データセットで使えそうなものの調査
  • ヒンディー語データセットのサーベイ、共有
  • 収集済みデータセットを利用した、小規模実験
  • トークナイザーv0.2の構築・公開
  • トークナイザーv1.0構築に向けた勉強会の開催
  • HFデータセットのアップロード用コードの標準化を実施
  • モデル班・コード班と連携しデータセットの受け渡し方法等を検討

分かったこと

  • 事前学習用データセットはまだ収集が必要(量的不足)
    • 加えて,ある程度綺麗にする必要があり
  • 日本語LLMとはいえ、他言語やコードの学習は有用
    • 比較実験より,コードを混ぜたときのロスがいい具合に下がった
  • 事後学習用のデータセット収集を進める必要あり。
  • 既存のトークナイザーを追加サーベイする必要がある(語彙数は適切か)。
    • トークナイザ―における語彙数も調べる必要がある
  • HFデータセットにしておけばとりあえずよいので,やはりここをゴールとして目指す.

次やること

  • 本番投入事前学習データセットの計画策定
  • データセットの共有環境構築、手順整理
  • 日本語データセットを極力増やすため,著作フリーかつ綺麗なデータの調査
    • 場合によってはデータセットのクリーニング,キュレーション
  • 行政系データの共有
  • トークナイザの構築,語彙数の適切値の検討

学習・コード班

記載者: @Shoji Iwanaga

やったこと

  • 学習・コード班からそのほかの班への派遣メンバーの決定
  • 情報の共有他を行うため
  • 標準コード改造に向けた勉強会の開催
  • 標準コードのシェルスクリプト化
  • moe-recipes の理解
  • GitHubオーガナイゼーションを用いて標準コード改造

分かったこと

  • moe-recipes のライセンス問題
  • moe-recipes をもう少し深堀する必要がある

次やること

  • WandBによる実験管理の勉強会
  • 論文:LLMサーベイの勉強会
  • 事後学習についての調査

モデル班

記載者: @佐野敏幸

やったこと

  • MoEの勉強会とMambaの勉強会を開催
  • moe-recipes の調査
  • MoEの実装

分かったこと

  • 標準コードにMoE用の設定を追加し、チェックポイントが作成されることを確認した。ただし、Huggingface形式に変換するスクリプトがない。
  • moe-recipes を利用して、MoEモデルのスクラッチ事前学習が動作することを確認した。
  • moe-recipes にはライセンスの表示がないため、今回のプロジェクトでは使用できない可能性がある。

次やること

  • moe-recipes の使用可能性検討。状況により、moe-recipes 以外でのMoE実装方法を検討。
  • MoE ハイパーパラメータのチューニング方法検討。
  • MoE ゲーティングの工夫を調査。特にコードに落とし込めるものを重視。
  • MoE ファインチューニングについての調査。

ディスカッション

特になし

開発のマイルストーン

データ班

記載者: y_morinaga

  • 主要なマイルストーン
    • 事前学習用データの準備
    • 事後学習用データの準備
    • トークナイザの作成
  • 現在地
    • 事前学習用のデータ準備
      • データおよびクリーニング方法の調査中
      • 国会議事録のデータ準備中
    • 事後学習用データの準備
      • データの調査中
    • トークナイザの作成
      • 暫定バージョン(v0.2)の作成・公開

学習・コード班

記載者: 加藤万理子

  • 主要なマイルストーン
    • 他班の方策に合わせて使用ライブラリを勉強・検証
    • プレ環境・本番環境での実験実施
    • 標準コードの理解
    • 標準コードを本チームが取る方策に合わせ改造
    • WandBを用いた実験管理の勉強・実践
    • 他班で追いきれない方策の調査
  • 現在地
    • 標準コードスクリプトの改造
      • シェルスクリプトの分割・configやargparseの使用
      • WandBに関する項目追加
      • 改造結果の動作確認
    • WandBに関する勉強会実施
    • その他LLMに関する勉強会を複数実施

モデル班

記載者: 白石尽誠

  • 主要なマイルストーン
    • MoEモデルの基礎原理を理解する.
    • MoEモデルの事前学習が可能であることを検証する.
    • MoEモデルを実践的なデータで事前学習させ,lossが下がるのをみる.
    • MoEモデルに対し工夫を加える.
    • mambaモデルの理解,実装を行う(optional)
  • 現在地
    • MoE勉強会により,基本事項について学習した.
    • MoE-recipeライブラリにより,Mixtralの小規模版の事前学習ループをシングルノードシングルGPUで動作させた.検証事項が多数存在.
      • チェックポイントのHugging face形式への変換,アップロードに成功.(トークナイザ除く)
      • シングルノード2GPUで学習ループが回せるのを確認.
    • 上記と並行して実施予定.
    • 現在,ゲーティング工夫及び実装法を調査中.
    • mamba勉強会は済.現在,実装法を調査中.

第3回:週次報告

チーム全体の開発状況

記載者: 中村 仁

  • NEDOにより「本番環境」が提供されるまでの間に、松尾・岩澤研究室より提供されている「プレ環境」において、大規模モデル開発開始のための準備を進めています。

      • データセットの準備や、トークナイザーの構築は順調に進展しており、「プレ環境」においてはMoEモデルが動作することを確認しました。
    • wandb等、学習をモニタリングするツール等についての勉強会や、トークナイザーに関する勉強会も行っています。その他、有志での勉強会や調査会も行われています。
    • さらに、GitHub等の準備についても順調に進んでおり、安定した開発を行えるよう準備中です。
  • 本番環境のメンテナンス対応や、モデルのアライメント等についての調査・検討は今後の課題ですが、現在行うべき課題については順調に対処できていると考え羅れます。

  • 開発とは別に、各サブチームにおける活動をサポートし、チーム全体としての調整をする活動も行っています。

    • 次のマネジメントチームの発足させました。
      1. 情報調査チーム
        • 情報収集、情報分析、情報の可視化
      2. 外務チーム
        • 情報の発信、文書の公開範囲設定
      3. 内務チーム
        • チーム内の方(及びチームへ加入される予定の方)に対するマネジメント、勉強会の調整
  • マネジメントチームにより、Notionにおける情報管理や、コミュニティメンバーの加入についてのフローの確立へ進んでおり、よりよい開発環境とするために活動が進展中です。

    • 新しいメンバー5名の受け入れや、新たなメンバーのリクルーティングも進行中です。
    • 内部での調整や、外部との連絡についても順調に進んでいます。

サブチームからの情報共有

データ班

記載者: @toshiki_nakashima

やったこと

  • 使用データセットのサーベイと,大枠の決定
  • 必要トークン数の見積もり
  • 個人情報フィルタリング手法の検討と実行
  • ヒンディーデータセットのライセンス確認、huggingface にアップデート

分かったこと

  • CulturaX,slimpajamaを中心に,wikiや国会議事録といったデータをミックスする
  • フィルタリングにはhojicharなどを使用予定
  • json変換、継続してアップデート

次やること

  • フィルタリングコードの実装
  • 開発環境にデータを移行

学習・コード班

記載者: @佐藤紘基

やったこと

  • データセットにおける日本語および,英語データのドメイン割合の調査
  • GitHubオーガナイゼーション・WandBに関するルールの決定
  • moe-recipesと標準コード改造後の動作確認
  • AI・LLM・NLP分野の知識を深める
    • 各メンバーが個々に興味関心のあることを調べ持ち寄る勉強会実施
    • LLMサーベイを読みまとめて発表する発表会実施

分かったこと

  • データセットの割合は,検証結果と既存の文献から本番用の設定を考える
  • どのハイパーパラメータを調整するか調査が必要

次やること

  • 他班が追いきれていない方策の調査
    • LoRA
    • 学習データの最適なエポック数調査
    • lossスパイクへの対処・schedulerに関する高速化手法の検討
  • 標準コード改造検討
    • argparseに書き換え

モデル班

記載者: @佐野敏幸

やったこと

moe-recipes を活用し,wikipedia と pythonコード を混ぜたデータセットを用いた学習。
moe-recipes 作者の東工大藤井様にライセンスについて問い合わせ。
moe-recipes 以外によるモデルを検討。

分かったこと

moe-recipes を活用し,wikipedia と pythonコードを混ぜたデータセットを用いて学習に成功,huggingface にアップロードできた。
moe-recipes は、産総研との共同プロジェクトのものなので、東工大藤井様からライセンス付与は現状できない。
transformers は使い勝手が良い。
openmoe はこちらで用意したカスタムモデルに置換するのに手間取りそうでやめた。

次やること

Mixtral (に z-loss および noisy gating を加えたもの)をベースモデルとする.
本番パラメータサイズの決定する。
その他の活用できるMoEのコードをさらに検討する。

ディスカッション

特になし

開発のマイルストーン

データ班

記載者: y_morinaga

  • 主要なマイルストーン
    • 事前学習
      • 使用データセットのサーベイ
      • 使用データセットの選定
      • 使用データセットのクリーニング
    • 事後学習
      • どのようなデータを使う,作るかサーベイ
    • トークナイザ
      • トークナイザの作成・公開
  • 現在地
    • 事前学習用のデータ準備
      • データおよびクリーニング方法の決定
      • 学習データの環境移行
    • 事後学習用データの準備
      • データの調査中
    • トークナイザの作成
      • 暫定バージョン(v0.2)の作成・公開

学習・コード班

記載者: 加藤万理子

  • 主要なマイルストーン
    • 他班の方策に合わせて使用ライブラリを勉強・検証
    • プレ環境・本番環境での実験実施
    • 標準コードの理解
    • 標準コードを本チームが取る方策に合わせ改造
    • WandBを用いた実験管理の勉強・実践
    • 他班で追いきれない方策の調査
  • 現在地
    • MoE実装のためのコード模索
      • moe-recipes の動作確認
      • 他コードの検討
    • プレ環境での実験実施
      • 標準コードのスクリプト分割後の動作実験
      • トークナイザーに関する予備実験
    • 達成済み
    • 複数の方策を模索中
      • lossスパイクへの対処方法を模索
      • 各データの学習エポック数を調整
      • 学習率に関する高速化手法を導入するか検討
    • WandBを用いた実験管理の実施
      • 他班が行う予備実験をWandBにて実施、管理
    • 他班で追いきれないLoRAなどを検討中

モデル班

記載者: 白石尽誠

  • 主要なマイルストーン
    • MoEモデルの基礎原理を理解する.
    • MoEモデルの事前学習が可能であることを検証する.
    • MoEモデルを実践的なデータで事前学習させ,lossが下がるのをみる.
    • MoEモデルに対し工夫を加える.
    • mambaモデルの理解,実装を行う(optional)
  • 現在地
    • 達成済
    • moe-recipesはライセンスの都合上本番の学習では使用できないため,急遽TransformersとDeepspeedで事前学習を行うパイプラインを構築する方針へと切り替えた.
      • 現在,zero stage 2での学習は行えている.
      • マルチノード学習は,現在プレ環境での使用ができないため,その可否が検証できていない.
    • wikipediaとpythonコードを混ぜたデータセットで学習が行えることを確認した(カスタムデータセットが利用可能であることの検証).
    • z-lossおよびnoisy gatingを実装したCustomMixtralForCausalLMを作成.
      • これらがoriginalのMixtralと比較してうまく学習できるか検証する必要がある.
  • kotomambaのベンチマーキングを行うjupyter notebookを作成.
    • 現状は学習ができることを第一の目標としているため,TramsformerベースのMoEモデルを使用する方針である.mambaモデルの活用(やTramsformerベースモデルとの融合)は,Phase2に進むことができた場合,検討材料になる可能性がある.

その他

  • 特になし

第4回:週次報告

チーム全体の開発状況


記載者: 中村 仁

  • NEDOにより「本番環境」が提供されるまでの期間に提供される「プレ環境」において、大規模モデル開発開始のための準備を進めています。

    • データセットの準備や、トークナイザーの構築は順調に進展しており、「プレ環境」においてはMoEモデルが動作することを確認しました。
    • wandb等、学習をモニタリングするツール等についての勉強会や、トークナイザーに関する勉強会も行っています。その他、有志での勉強会や調査会も行われています。
    • さらに、GitHub等の準備についても順調に進んでおり、安定した開発を行えるよう準備中です。
  • 本番環境のメンテナンス対応や、モデルのアライメント等についての調査・検討は今後の課題ですが、現在行うべき課題については順調に対処できていると考え羅れます。

  • 開発とは別に、各サブチームにおける活動をサポートし、チーム全体としての調整をする活動も行っています。

    • 次のマネジメントチームの発足させました。
      1. 情報調査チーム
        • 情報収集、情報分析、情報の可視化
      2. 外務チーム
        • 情報の発信、文書の公開範囲設定
      3. 内務チーム
        • チーム内の方(及びチームへ加入される予定の方)に対するマネジメント、勉強会の調整
  • マネジメントチームにより、Notionにおける情報管理や、コミュニティメンバーの加入についてのフローの確立へ進んでおり、よりよい開発環境とするために活動が進展中です。

    • 新しいメンバー5名の受け入れや、新たなメンバーのリクルーティングも進行中です。
    • 内部での調整や、外部との連絡についても順調に進んでいます。

サブチームからの情報共有


データ班

記載者: @toshiki_nakashima

やったこと

  • 使用データセットのサーベイと,大枠の決定
  • 必要トークン数の見積もり
  • 個人情報フィルタリング手法の検討と実行
  • ヒンディーデータセットのライセンス確認、huggingface にアップデート

分かったこと

  • CulturaX,slimpajamaを中心に,wikiや国会議事録といったデータをミックスする
  • フィルタリングにはhojicharなどを使用予定
  • json変換、継続してアップデート

次やること

  • フィルタリングコードの実装
  • 開発環境にデータを移行

学習・コード班

記載者: @佐藤紘基

やったこと

  • データセットにおける日本語および,英語データのドメイン割合の調査
  • GitHubオーガナイゼーション・WandBに関するルールの決定
  • moe-recipesと標準コード改造後の動作確認
  • AI・LLM・NLP分野の知識を深める
    • 各メンバーが個々に興味関心のあることを調べ持ち寄る勉強会実施
    • LLMサーベイを読みまとめて発表する発表会実施

分かったこと

  • データセットの割合は,検証結果と既存の文献から本番用の設定を考える
  • どのハイパーパラメータを調整するか調査が必要

次やること

  • 他班が追いきれていない方策の調査
    • LoRA
    • 学習データの最適なエポック数調査
    • lossスパイクへの対処・schedulerに関する高速化手法の検討
  • 標準コード改造検討
    • argparseに書き換え

モデル班

記載者: @佐野敏幸

やったこと

  • moe-recipes を活用し,wikipedia と pythonコード を混ぜたデータセットを用いた学習。
  • moe-recipes 作者の東工大藤井様にライセンスについて問い合わせ。
  • moe-recipes 以外によるモデルを検討。

分かったこと

  • moe-recipes を活用し,wikipedia と pythonコードを混ぜたデータセットを用いて学習に成功,huggingface にアップロードできた。
  • moe-recipes は、産総研との共同プロジェクトのものなので、東工大藤井様からライセンス付与は現状できない。
  • transformers は使い勝手が良い。
  • openmoe はこちらで用意したカスタムモデルに置換するのに手間取りそうでやめた。

次やること

  • Mixtral (に z-loss および noisy gating を加えたもの)をベースモデルとする.
  • 本番パラメータサイズの決定する。
  • その他の活用できるMoEのコードをさらに検討する。

ディスカッション


特になし

開発のマイルストーン

データ班

記載者: y_morinaga

  • 主要なマイルストーン
    • 事前学習
      • 使用データセットのサーベイ
      • 使用データセットの選定
      • 使用データセットのクリーニング
    • 事後学習
      • どのようなデータを使う,作るかサーベイ
    • トークナイザ
      • トークナイザの作成・公開
  • 現在地
    • 事前学習用のデータ準備
      • データおよびクリーニング方法の決定
      • 学習データの環境移行
    • 事後学習用データの準備
      • データの調査中
    • トークナイザの作成
      • 暫定バージョン(v0.2)の作成・公開

学習・コード班

記載者: 加藤万理子

  • 主要なマイルストーン
    • 他班の方策に合わせて使用ライブラリを勉強・検証
    • プレ環境・本番環境での実験実施
    • 標準コードの理解
    • 標準コードを本チームが取る方策に合わせ改造
    • WandBを用いた実験管理の勉強・実践
    • 他班で追いきれない方策の調査
  • 現在地
    • MoE実装のためのコード模索
      • moe-recipes の動作確認
      • 他コードの検討
    • プレ環境での実験実施
      • 標準コードのスクリプト分割後の動作実験
      • トークナイザーに関する予備実験
    • 達成済み
    • 複数の方策を模索中
      • lossスパイクへの対処方法を模索
      • 各データの学習エポック数を調整
      • 学習率に関する高速化手法を導入するか検討
    • WandBを用いた実験管理の実施
      • 他班が行う予備実験をWandBにて実施、管理
    • 他班で追いきれないLoRAなどを検討中

モデル班

記載者: 白石尽誠

  • 主要なマイルストーン
    • MoEモデルの基礎原理を理解する.
    • MoEモデルの事前学習が可能であることを検証する.
    • MoEモデルを実践的なデータで事前学習させ,lossが下がるのをみる.
    • MoEモデルに対し工夫を加える.
    • mambaモデルの理解,実装を行う(optional)
  • 現在地
    • 達成済
    • moe-recipesはライセンスの都合上本番の学習では使用できないため,急遽TransformersとDeepspeedで事前学習を行うパイプラインを構築する方針へと切り替えた.
      • 現在,zero stage 2での学習は行えている.
      • マルチノード学習は,現在プレ環境での使用ができないため,その可否が検証できていない.
    • wikipediaとpythonコードを混ぜたデータセットで学習が行えることを確認した(カスタムデータセットが利用可能であることの検証).
    • z-lossおよびnoisy gatingを実装したCustomMixtralForCausalLMを作成.
      • これらがoriginalのMixtralと比較してうまく学習できるか検証する必要がある.
    • kotomambaのベンチマーキングを行うjupyter notebookを作成.
      • 現状は学習ができることを第一の目標としているため,TramsformerベースのMoEモデルを使用する方針である.mambaモデルの活用(やTramsformerベースモデルとの融合)は,Phase2に進むことができた場合,検討材料になる可能性がある.

その他


  • 特になし

第5回:週次報告

チーム全体の開発状況

記載者: 中村 仁

  • 経済産業省・NEDOにより「本番環境」が提供されるまでの期間に提供される「プレ環境」において、大規模モデル開発開始のための準備を進めて参りました。

  • データ班により、従来のデータセットよりも高品質なデータセットが準備されつつあります。

  • モデル班により、モデルの選定と実装、シングルノードでの実行確認が行われました。

  • 学習班により、インフラ周りのセッティングを行われました。
    2024年4月22日(月)経済産業省・NEDOにより「本番環境」が提供されました。

  • 本番環境の時間を無駄にしないため、「本番環境」提供後の3~4日間については次の方針を定めました。

    • 標準コードの事前学習を実行する
      • 概要
        • データチーム、モデルチーム、学習チームからの少人数の「遊撃隊」を組成し、松尾研から提供されている「標準コード」を事前学習させる
      • 期間
        • 4月22日(月)~ 4月25日(木)
        • 延長の可能性あり
      • 目的
        • 「プレ環境」において行うことができなったマルチノードでの実行を確認する必要があるため
        • 標準コードを学習させておくことで、本命のMoEにおける学習がうまくいかなかった際、継続事前学習を実行するセーフティネットとしての活用できるようにしておくため
        • Google Cloudの特性を把握し、本線での学習をスムーズに行うための知見を収集するため
      • 流れ
        • 本番環境へのログイン、実行までの手順の確認
        • 標準コード実行のための環境構築
        • 標準コード学習に必要なデータの転送
        • 実行確認後のモデルのHuggingfaceへのアップロード
      • 標準コードの事前学習の後、MoEの事前学習を実行する
        • モデルをDeepSeekMoEに定め、4月25日(木)までを目標として実装中
        • 終わり次第、実行
    • wandb等、学習をモニタリングするツール等についての勉強会や、トークナイザーに関する勉強会も行っています。その他、有志での勉強会や調査会も行われています。
      • GitHub等の準備についても順調に進んでおり、安定した開発を行えるよう準備中です。
      • wandbとSlackの連帯等、本番環境のメンテナンス対応についても同時に進行中です。
    • 現在行うべき課題については順調に対処できていますが、モデルの実装に遅れがみられているため、標準コードの事前学習を少し長引かせる等で対処して参りたいと考えています。
  • ヒンディー語のデータセット構築の際には、大阪大学大学院人文学研究科の虫賀幹華先生によるご協力を賜りつつ、構築を進めています。

サブチームからの情報共有

データ班

記載者: y_morinaga, 佐野敏幸

やったこと

CulturaX,slimpajamaを中心に,wikiや国会議事録さらにヒンディーのデータをプレ環境の共有領域に準備し、slimpajamaを本番環境へ移行させた
CulturaXに個人情報が含まれていたため、hojicharでフィルタリング
ヒンディー語データセットを外部有識者(大阪大学 虫賀幹華 助教)に確認いただき評価

分かったこと

開発環境のstrageが5TBで、モデルのチェックポイントの保存領域の確保を考えると、用意する予定のコードデータを含めると全て移行できない。学習が終わったデータを削除する必要がある。
フィルタリングを行いたいデータがあるが、開発環境は学習優先のため、使用できないので、他の方法を検討する必要あり
ヒンディーのデータを学習に使用するかはディスカッションが必要
ヒンディー語データセット8個それぞれの品質

次やること

Slimpajama以外の事前学習用データの本番環境への移行
事後学習用データの準備
コードデータのフィルタリング、移行
北九州市のデータ、HuggingFaceFW/finewebなど品質が高いデータを事前学習用に準備
ヒンディー語データセットのうち良質なものの選択

学習・コード班

記載者: @Shoji Iwanaga

やったこと

モデル班に対するメンバーの応援および補助
WandBのアラートを導入
トークナイザーの語彙数調査

分かったこと

データセットチームから学習チームへのデータの受け渡し方法をjsonl形式に指定
トークナイザーの語彙数調査
32000以上の語彙数で、学習速度に5%程度の影響あり
推論速度は影響ない
WandBのアラート
Runがクラッシュした場合にSlackへアラートが飛ぶようになった
Lossを監視し、アラートを出せるように今後実装を重ねる

次やること

モデル評価班を発足
ファインチューニング手法に関する調査、実装
WandBのアラート管理
プロジェクト管理用ページの作成

モデル班

記載者: @菊池満帆 @尽誠 白石

やったこと

条件⓵:1node8GPUにて2×300millionで学習させた(deepspeed zero stage3を使用)
条件②:1node8GPUにて4×300millionで学習させた(deepspeed zero stage3を使用)

分かったこと

条件⓵でGPUメモリの占有率はギリギリ
条件②ではOOM

次やること

本番環境が始まる前までに、deepseekmoeのgatingの実装を試みる(間に合えば本番環境に組み込む)
本番環境では、まず標準コード1~2日で立ち上げ動作確認し、その後deepseekmoeモデルを実行する
ハイパーパラメータは、モデルの論文を参考にしながら、学習班と共同し決めていく。

ディスカッション

特になし

開発のマイルストーン

  • データ準備
    記載者: @morikoromori(y_morinaga)
    • 事前学習
      • データとして以下のデータを準備
        • 日本語
          • CommonCrawlPDFJa
          • japanese2010
          • wikipedia-20240101
          • CulturaX
          • 国会議事録
          • 法律データ
          • 判例データ(ja)
          • 青空文庫
          • Syosetu711K
        • 英語
          • open-web-math
          • Slimpajama
          • JINIAC/en_wiki_20220301
          • loubnabnl/github-code-more-filtering(準備中)
        • ヒンディー
      • 現在Slimpajamaを学習中
      • 次の学習データに関して議論中
    • 事後学習
      • 事後学習に必要なデータ量を見積もり
      • 事後学習データセットに関してはメンバーが特色あるデータセットを各々用意しています.
  • モデル学習コード準備
    記載者: @尽誠 白石
    • 本番開始直前に急遽DeepSeekMoEアーキテクチャを採用する方針に転換.急ピッチで実装を進めた.
    • pretrainのためのGithubリポジトリの整備を進めて,円滑に事前学習ができるよう準備している.
    • セーフティネットとして標準コードもMoEの前に実行,ハイパラ調整やRoPEの検討などを行う.
  • シングルGPUでの稼働確認、実績
    記載者: @尽誠 白石
    • MoE
      • mixtralについて,小規模のものはプレ環境で動くことを確認した.
        • DeepSeekMoEの実装・学習に失敗した場合に用いる可能性がある.
      • DeepSeekMoEは,本番環境において1.5B程度のものの動作はひとまず確認できた.あとは,うまくスケールできるよう調整を加える.
    • 標準コード
      • プレ環境では、トークナイザーの語彙数による性能の違いを評価
      • 本番環境では、モデルサイズアップ、バッチサイズの調整、最適なCPU数の探索などを実施中
    • マルチノードでの稼働確認、実績
      記載者: 堀江
      • プレ環境では,マルチノードでの検証は行なっていない.
      • 本番環境では、実施に向けた環境構築中
    • うまくいきそうか計画の確信度
      • 計画・準備は順調だが、達成への不確実性は依然として高い
        6.その他
  • 特になし

第6回:週次報告

サブチームからの情報共有


データ班

記載者: y_morinaga, 佐野敏幸

やったこと

  • CulturaX,slimpajamaを中心に,wikiや国会議事録さらにヒンディーのデータをプレ環境の共有領域に準備し、slimpajamaを本番環境へ移行させた
  • CulturaXに個人情報が含まれていたため、hojicharでフィルタリング
  • ヒンディー語データセットを外部有識者(大阪大学 虫賀幹華 助教)に確認いただき評価

分かったこと

  • 開発環境のstrageが5TBで、モデルのチェックポイントの保存領域の確保を考えると、用意する予定のコードデータを含めると全て移行できない。学習が終わったデータを削除する必要がある。
  • フィルタリングを行いたいデータがあるが、開発環境は学習優先のため、使用できないので、他の方法を検討する必要あり
  • ヒンディーのデータを学習に使用するかはディスカッションが必要
  • ヒンディー語データセット8個それぞれの品質

次やること

  • Slimpajama以外の事前学習用データの本番環境への移行
  • 事後学習用データの準備
  • コードデータのフィルタリング、移行
  • 北九州市のデータ、HuggingFaceFW/finewebなど品質が高いデータを事前学習用に準備
  • ヒンディー語データセットのうち良質なものの選択

学習・コード班

記載者: @Shoji Iwanaga

やったこと

  • モデル班に対するメンバーの応援および補助
  • WandBのアラートを導入
  • トークナイザーの語彙数調査

分かったこと

  • データセットチームから学習チームへのデータの受け渡し方法をjsonl形式に指定
  • トークナイザーの語彙数調査
    • 32000以上の語彙数で、学習速度に5%程度の影響あり
    • 推論速度は影響ない
  • WandBのアラート
    • Runがクラッシュした場合にSlackへアラートが飛ぶようになった
    • Lossを監視し、アラートを出せるように今後実装を重ねる

次やること

  • モデル評価班を発足
  • ファインチューニング手法に関する調査、実装
  • WandBのアラート管理
  • プロジェクト管理用ページの作成

モデル班

記載者: @菊池満帆 @尽誠 白石

やったこと

  • 条件⓵:1node8GPUにて2×300millionで学習させた(deepspeed zero stage3を使用)
  • 条件②:1node8GPUにて4×300millionで学習させた(deepspeed zero stage3を使用)

分かったこと

  • 条件⓵でGPUメモリの占有率はギリギリ
  • 条件②ではOOM

次やること

  • 本番環境が始まる前までに、deepseekmoeのgatingの実装を試みる(間に合えば本番環境に組み込む)
  • 本番環境では、まず標準コード1~2日で立ち上げ動作確認し、その後deepseekmoeモデルを実行する
  • ハイパーパラメータは、モデルの論文を参考にしながら、学習班と共同し決めていく。

ディスカッション


  • 特になし

開発のマイルストーン

  • データ準備
     記載者: @morikoromori(y_morinaga)
    • 事前学習
      • データとして以下のデータを準備
        • 日本語
          CommonCrawlPDFJa
          japanese2010
          wikipedia-20240101
          CulturaX
          国会議事録
          法律データ
          判例データ(ja)
          青空文庫
          Syosetu711K
        • 英語
          open-web-math
          Slimpajama
          JINIAC/en_wiki_20220301
          loubnabnl/github-code-more-filtering(準備中)
        • ヒンディー
      • 現在Slimpajamaを学習中
      • 次の学習データに関して議論中
    • 事後学習
      • 事後学習に必要なデータ量を見積もり
      • 事後学習データセットに関してはメンバーが特色あるデータセットを各々用意しています.
  • モデル学習コード準備
     記載者: @尽誠 白石
    • 本番開始直前に急遽DeepSeekMoEアーキテクチャを採用する方針に転換.急ピッチで実装を進めた.
    • pretrainのためのGithubリポジトリの整備を進めて,円滑に事前学習ができるよう準備している.
    • セーフティネットとして標準コードもMoEの前に実行,ハイパラ調整やRoPEの検討などを行う.
  • シングルGPUでの稼働確認、実績
     記載者: @尽誠 白石
    • MoE
      • mixtralについて,小規模のものはプレ環境で動くことを確認した.
        • DeepSeekMoEの実装・学習に失敗した場合に用いる可能性がある.
      • DeepSeekMoEは,本番環境において1.5B程度のものの動作はひとまず確認できた.あとは,うまくスケールできるよう調整を加える.
    • 標準コード
      • プレ環境では、トークナイザーの語彙数による性能の違いを評価
      • 本番環境では、モデルサイズアップ、バッチサイズの調整、最適なCPU数の探索などを実施中
  • マルチノードでの稼働確認、実績
    記載者: 堀江
    • プレ環境では,マルチノードでの検証は行なっていない.
    • 本番環境では、実施に向けた環境構築中
  • うまくいきそうか計画の確信度
    • 計画・準備は順調だが、達成への不確実性は依然として高い

第7回:週次報告

サブチームからの情報共有

遊撃隊(本番環境初動対応チーム)

遊撃隊は、本番環境が提供された後の数日のために結成した初動対応チームです。
データの転送や、環境構築、本命のモデルであるDeepSeekMoEがうまく学習されなかった場合のセーフティネットとして用いるコードの事前学習を行っていただきました。

各班から以下のメンバーにお願いしました。
データ班:

  • 堀江吏将
    モデル班:
  • 摂待陽生、岡修平
    学習班:
  • 恩田直登、kamada

記入者:堀江吏将

やったこと

  • 本番環境に標準コードが実装できる環境を構築
  • 処理速度を優先したモデルサイズの選定
    • 標準コードをセーフティーネットとしていつでも稼働できるよう、学習速度を優先して選定した。
  • 標準コードが、マルチノードマルチGPUで実行できるかの検証

分かったこと

  • プレ環境での準備ができている部分については、問題なく実装できた。
  • 一方、プレ環境で確認できなかった、マルチノードの実装に関しては時間を要した。
    • 特に、ノード間の同期に関するssh設定に苦労した。

次やること

  • 実行監視(正式な班が組成されるまで)
  • セーフティーネットの事前学習(GPUの空き時間を活用)
  • 本番で実施するコードに関して、初期トラブル対応補助
    • ログの提供
    • エラー原因の推定

データ班

記載者:  佐野敏幸,元谷崇

やったこと

  • 使えそうなマルチターンデータセットの整理。
  • 事前学習用のcodeデータの準備。
  • 本番投入事前学習データセットについての計画 (JINIACブレンド)を策定。
  • 事後学習用に文部科学省の学習指導要領データを準備。

分かったこと

  • 今回のコンペで使用できそうなデータセットを選定し、一覧にまとめた。
  • 事前学習用のcodeデータは、個人情報削除が必要。
  • JINIACブレンドについておおよそ策定できた。
  • 学習指導要領データは、綺麗な日本語が多いことが分かった。

次やること

  • 話題が多様かつ品質が高いと思われるデータ(表中で優先度:高のデータ)を精査・変換していく。
  • 事前学習用のcodeデータの準備。特に個人情報の除去。
  • 事後学習用のデータを用意し、事後学習の評価を回す体制を整える。
  • 事後学習用は、質問と問いの関係とするか、形式を確認する。

学習・コード班

記載者: @Shoji Iwanaga

やったこと

  • モデル評価組の決定
  • 学習の推移監視要員の決定
    • アラートをSlackに送る。
  • ファインチューニング要員の決定

分かったこと

  • MoEではファインチューニングできないため、コンストラクションチューニングがメインなりそう。
  • エラーが起きた場合に、対応できる人に偏りがある。
    • マニュアルあるいはドキュメントが必要

次やること

  • 評価手順の確立
    • 任意のタイミングで評価し分析
  • 松尾研が提示している評価項目以外のものを調べる。
  • プロジェクト管理用のNotionページの作成
  • ファインチューニングの詳細を詰める。

モデル班

記載者: 白石尽誠

やったこと

  • MoEモデルを本番環境で動作させた.
    • 予備実験で,マルチノードでの検証を確認した.
  • 事前学習本番を開始.

分かったこと

  • 予備実験
    • メモリや速度を考慮すると,5B程度が限界(今回はモデル構造の都合などもあり,3D parallelism不使用).
    • 最終的にDeepSeekMoEの5Bの構成を採用.
    • 小規模なデータセットで,マルチノードで学習できることを確認.3ノードは1ノードの約2倍.
  • 学習本番
    • データセット一塊を処理しようとして,OOMになる→分割することで対応(継続事前学習の繰り返しのようになってしまった).
      • 対処法を検討中.
    • データセットを分割したはいいが,tokenizeやgroupingの処理でエラーが発生.
      • マルチノードで処理すると,なぜかNCCLエラーが出る.原因究明中.
      • そうはいっても時間がないので,tokenizeやgroupingだけシングルノードシングルGPUでして,キャッシュを作成する方針に
      • datasetのmap処理でnum_procを入れてるとエラーになるよう
      • 予備実験でうまくいったのは,すでに作成されたキャッシュを使用していたからか?
    • tokenizeやgroupingだけシングルノードシングルGPUでして,キャッシュを作成する,mapのnum_procを抜く→シングルノードで学習まで到達(ただし処理に時間がかかる)
      • 学習自体は今の所順調.lossは3前後まで加工,spikeなどはなし.

次やること

  • マルチノードでの学習を再開する.
  • データの確実かつ効率的な処理方法を検討する.

ディスカッション

  • 特になし

開発のマイルストーン

  1. データ準備 記載者: nakashi104
    • 事前学習
      • データとして以下のデータを準備
        • 日本語
          CommonCrawlPDFJa
          japanese2010
          wikipedia-20240101
          CulturaX
          国会議事録
          法律データ
          判例データ(ja)
          青空文庫
          Syosetu711K (使わない想定)

        • 英語
          open-web-math
          Slimpajama (現在学習中)
          JINIAC/en_wiki_20220301
          loubnabnl/github-code-more-filtering(準備中)

        • ヒンディー

      • 現在Slimpajamaを学習中
      • 次の学習データに関して議論中
        • データの学習順序のモデル精度への寄与を考慮
    • 事後学習
      • 事後学習に必要なデータ量を見積もり
      • 事後学習データセットに関してはメンバーが特色あるデータセットを各々用意しています.
  2. モデル学習コード準備
     記載者: 佐野敏幸
    • DeepSeekMoEを実装した。
    • セーフティネットの1つとしてMixtralも用意した。
  3. シングルGPUでの稼働確認、実績
     記載者: 堀江吏将
    • DeepSeekMoE、標準コードともに稼働確認済。
    • ただし、処理時間とphase1の残り時間を考えると、採用は困難。
  4. マルチノードでの稼働確認、実績
     記載者:堀江吏将
    • 標準コードについては、14日程度の事前学習で終了の見込みが立った。
  5. うまくいきそうか計画の確信度
     記載者:中村 仁
    • 本命のDeepSeekMoEを用いた場合での達成確率は不透明であるが、メンバーの強い頑張りにより、解決へと進行していると確信している。
    • 標準コードにおける学習完了までの道筋は見えており、セーフティネットの構築達成への確信度は高い。

第8回:週次報告

サブチームからの情報共有

データ班

記載者: y_morinaga

やったこと

  • 事前学習データの順番を決めた
  • Slimpajamaのデータ分割
  • 英語
    • SlimPajama→open-web-math
  • 日本語
    • CommonCrawlPDFJa→CultureX→青空文庫→wikipedia-20240101→国会議事録→法律データ→判例データ
  • 事後学習データの準備
    • 官公庁ホームページからのスクレイピグを行い、質問・回答の形式にしてhuggingfaceへアップ
    • huggingface上のデータセットから使えそうなものをピックアップ。データ量や形式(マルチターン等)をまとめている。
    • ビジネス系の事後学習データの調査
  • 強化学習を用いないアライメントについての調査
    • Moeに対して、DPOなどの手法を用いてアライメントを行った際の硬貨について調査

分かったこと

  • SlimPajama→open-web-mathの学習完了でのチェックポイントで1+1の計算を行ったところ、11と回答した。事後学習で計算出来るように事後学習の工夫が必要ということがわかりました。
  • 事前学習用コードデータから個人情報除去をしようと、spacy、presidioなどのライブラリを使用したが、コードを個人情報として、誤検知があり、除去が出来なかった。
  • StarCoderと呼ばれるコーディングに特化したLLMのデータは、starpiiという個人情報除去に特化したモデルを使って個人情報除去してました。これを使用したところ、誤検知なく、除去できたものの、事前学習用としてデータを準備するのには間に合いませんでした。
  • 論文などを調査し、MoeでSFTを組み合わせて事後学習した場合より、DPOのみを使用した場合の方がベンチマークの評価が上がるのではとの考察が得られました。

次やること

  • 事後学習用データの調査
  • 事後学習データの必要量について調査
  • どの事後学習データを実際に使用するのか学習班とすりあわせを行う

学習・コード班

記載者: 中川 雄大

やったこと

  • W&BでNejumi LLMリーダーボードのモデル評価を実行。
    • ELYZAのモデルでは正常に動作したが、標準コードやMoEのモデルでエラーが発生。
  • DeepSeekMoEとMoELoRAの事後学習についてまとめた。

分かったこと

  • モデル評価のLLM-jp-evalの実行にOPEN_AI_KEYが必要。
  • 学習推移のアラートにグラフィックボードの動作監視が必要。
    • 何をもって動いていないと判断する指標が欲しい。

次やること

  • 現状出ているモデル評価エラーの解消。
  • モデル評価LLM-jp-evalを動かす。

モデル班

記載者: @菊池満帆 @尽誠 白石

やったこと

  • silmpajamaデータのtokenizeに約3日かかる推察となったため、jsonデータを分割
  • DeepSeekMoEにてマルチノード学習(3ノード)を行い、無事動作。ロスもしっかり下がってきている
  • silmpajama等の英語データの学習が終わったのでculturex(100B程度)の日本語データの学習を開始。予定では7~8日間で終了予定。silmpajamaとは異なり、データ分割せずまとめて学習→の予定だったが,キャッシュ消去作業を並行して行っていたところ学習が停止してしまい,分割データでやり直すことになった

分かったこと

  • silmpajamaデータについては、データ分割することでtokenizeの所要時間の短縮に成功。
  • 05/09時点で特にスパイク等は発生せず、DeepSeekMoEモデルの学習は順調にできている
  • openwebmathデータをいれたところ一気にロスが下がった。(500iterationで約3→2.3)。データサイズが大きくかつ品質が荒いデータの後に、良質なデータをいれるとロスが大きく下がる可能性が示唆された。
  • 一方で、GPU power usageが50%程度で、H100の性能の半分程度しか引き出せていない。稼働率を上げるために、microbatchsizeを下げたがむしろ稼働率は下がった。現状よりもあげることができないので、条件をもどし、このままの稼働率を維持。現状では稼働率は50%程度な理由はわからないが、3D Parallelismを使用しておらず、Data Parallelのみでやっているため、その点が影響しているのか等を今後いろいろ文献や論文等で調べていきたい

次やること

  • 情報調査チームと協同し、今までやってきたこと、こだわったこと、うまくいったこと、うまくいかなかったこと等をテックブログのような形でまとめる。
  • ロススパイク等が発生した場合は、batchskip等で対応予定(ここまで順調にロスが下がっているのでモデルには問題はないという判断。スパイクが起きた際は、勾配が著しく厳しいところに局所的に入ってしまったと考え、batchskipでずらすことで対応可能と考えている)
  • ここまで順調にきており、5/15日前後に終わる予定なので、その後はファインチューニングを行う(学習班および評価班)
  • 3D Parallelismに関する勉強会のようなものを(できれば横断で)やっていきたい

ディスカッション

記載者: 佐野敏幸
日時: 5/5(日) 15:00〜16:00
参加者:たぬきチーム:林寛太さん、JINIACチーム:白石尽誠、中村仁
GCPにおけるDeepseekmoeのパフォーマンス最適化、高速化についてディスカッションを行った。GPUの使用率や温度、バッチサイズ、モデルサイズ等のパラメータ調整が重要であること、データセットの扱いやメモリの使用率も考慮すべきであることが指摘された。特に、JINIACチームではGPU Power Usageが50%にとどまっており、GPUをフルに活用できないとの指摘があった。GPU Power Usageを上げるように調整することが重要とみられる。
モデルの選択やパラメータのトレードオフ、判断基準についても議題となった。特に、モデルサイズとのトレードオフの調整については、モデルサイズが上がるほどtflopsが上がるのではないかと指摘された。
データセットについては、英語のデータセットを入れて、idxとbinを作る方法やメモリの使用率を確認する方法などが提案された。
メガトロン関連の勉強会を開催する提案もされた。

開発のマイルストーン

  • データ準備
     記載者: nakashi104

    • 事前学習
      • 以下の投入順で進捗中
      • 英語
        • SlimPajama→open-web-math
      • 日本語
        • CommonCrawlPDFJa→CultureX→青空文庫→wikipedia-20240101→国会議事録→法律データ→判例データ
    • 事後学習
      • 一般的なSFT用データ,アライメント用データを用意する予定
      • 投入するドメインに関してはモデル評価後に適宜決める
  • モデル学習コード準備
     記載者: 白石尽誠

    • 学習コードは準備しているが,チームのGithubリポジトリに最新のコミットをプッシュしていないため学習が落ち着いたら行う.
  • シングルGPUでの稼働確認、実績
     記載者: 白石尽誠

    • 予備実験で確認済
  • マルチノードでの稼働確認、実績
    記載者: 白石尽誠

    • 現在,マルチノードでの学習が進行している.
  • うまくいきそうか計画の確信度
     記載者:中村 仁

  • 本命のDeepSeekMoEを用いた場合における事前学習の期日までの終了見込みは、高いと考えられる。

  • なお、標準コードにおける学習完了までの道筋も見えており、セーフティネットの構築における達成確信度も高い。

この成果は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)の助成事業「ポスト5G情報通信システム基盤強化研究開発事業」(JPNP20017)の結果得られたものです。

松尾研LLMコミュニティへのご案内

Slack参加リンクを始めとして、GENIACの概要やLLMコミュニティ主催各イベント等、関連リンクはこちらにまとめられております。
ぜひご覧ください!!
https://linktr.ee/matsuolab_community

東大松尾・岩澤研究室 | LLM開発 プロジェクト[GENIAC]

Discussion