👏

[週次報告] 第10回 Team JINIAC (5月30日)

2024/06/06に公開
  • チーム名:JINIAC
  • 日時:2024年 5月 30日

1. JINIACチームにおける開発テーマ・概要

記載者: 中村 仁

  • 本プロジェクトでは、日本語の特性を適切に捉えられる大規模言語モデル(LLM)の開発を目指します。

  • この目標達成に向けて、以下の3つの領域に対し、重点的に注力しております。

    1. データセット
      • 良質な日本語データセットの構築が日本語理解の質を大きく左右する。
      • 本プロジェクトでは以下のデータを収集し、最適化を図る。
        • 政府文書
          • 国会答弁
        • 学術論文
        • 知識転移を見据えた独自データセット
          • ヒンディー語
    2. モデル構造
      • Mixtures of Experts(MoE)を活用する。
    3. 学習手法
      • データの学習順序の変更等の導入により、モデルの理解力向上を目指す。
  • 加えて、以下のプロジェクト運営面での工夫も行っています。

    • トップダウンとボトムアップの両立
    • Notionを活用したプロジェクト管理の最適化
    • チームメンバーの心理的安全性の確保
    • コミュニケーションの活性化
  • プロジェクトの目標を達成できれば、以下の成果が期待できると考えています。

    • NoteやGitHubを通じた積極的な情報公開
    • LLM人材の育成
  • 日本が世界に誇れるAI技術を持つためには、日本語の豊かな表現を捉えられるLLMの実現が不可欠です。

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

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


記載者: 中村 仁

  • チーム組成が完了し、各サブチームにおける本格的な開発が開始しました。

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

    • データ班により、従来のデータセットよりも高品質なデータセットが準備されつつあります。
    • モデル班により、モデルの選定と実装、シングルノードでの実行確認が行われました。マルチノードでの実行検証が進行中です。
    • 学習班により、インフラ周りのセッティングが行われました。評価班の発足が進行中です。
  • 2024年4月22日(月)経済産業省・NEDOにより「本番環境」が提供されました。

    • 本番環境の時間を無駄にしないため、「本番環境」提供後の3~4日間については次の方針を定め、開発を進めて参りました。
      • 標準コードの事前学習を実行する
        1. 概要
          1. (当初)データチーム、モデルチーム、学習チームからの少人数の「遊撃隊」を組成し、松尾研から提供されている「標準コード」を事前学習させる
        2. 期間
          1. 4月22日(月)~ 5月10日(金)
        3. 目的
          1. 「プレ環境」において行うことができなったマルチノードでの実行を確認する必要があるため
          2. 標準コードを学習させておくことで、本命のMoEにおける学習がうまくいかなかった際、継続事前学習を実行するセーフティネットとしての活用できるようにしておくため
          3. Google Cloudの特性を把握し、本線での学習をスムーズに行うための知見を収集するため
        4. 流れ
          1. (完了)本番環境へのログイン、実行までの手順の確認
          2. (完了)標準コード実行のための環境構築
          3. (完了)標準コード学習に必要なデータの転送
          4. (完了)マルチノードでの実行確認
          5. (完了)実行確認後のモデルのHuggingfaceへのアップロードテスト
          6. (完了)提供されている3ノード中の2ノードでの学習を継続
          7. (完了)Deepseekmoeの合間を縫って学習
          8. (完了)Huggingfece上へのアップロード
    • MoEの事前学習の実行
      1. (完了)モデルをDeepSeekMoEに定め、4月25日(木)までに実装

      2. (完了)マルチノードでのエラーは、提供されている3ノード中の1ノードを用いて解消

        1. トークナイザーにおいて、シングルGPUでキャッシュを作成しておき、それをマルチノードでの実行することで解消
        2. jsonを20ファイル程度に分割し、メモリエラーに対処
      3. (完了)5/16に英語・日本語の事前学習を終了

        1. CulturaXを5分割中の5番目を学習させた際のlossの描画
      4. (完了)コードデータの追加事前学習の方法について考える

        1. 「culturaX→高品質データ→コードデータ→アライメント」 vs 「culturaX→コードデータ→高品質データ→アライメント」を行い、 追加事前学習の方法について考える
      5. (完了)ヒンディー語における追加事前学習を行ったモデルを採用するかについての検討を行う

        1. 「culturaX→コードデータ→高品質データ→アライメント」(勝ち抜き)vs「vsculturaX→コードデータ→高品質データ→ヒンディー語→アライメント」
        2. 使用せず
      6. (完了)過学習の可能性に関する調査

      7. (完了)モデル学習の推移監視を自動で行う

      8. (完了)SFTやDPOについての調査・実装

      9. (完了)wandbとSlackの連帯等、本番環境のメンテナンス対応では問題なく進行

      10. (完了)SFT,DPOの実行、評価完了

      11. (完了)Huggingfece上へのアップロード

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

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

  • 内部での調整や、外部との連絡についても順調に進んでいます。

    • ヒンディー語のデータセット構築の際には、大阪大学大学院人文学研究科の虫賀幹華先生によるご協力を賜りつつ、構築が完了しました。

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


3.1 データ班

記載者: @佐野敏幸, @toshiki_nakashima

3.1.1 やったこと

  • 事後学習データの決定。
  • SFTで使う事前学習モデルの判断。
  • SFT後のモデルの性能比較。
    • データの組み合わせと最も良い精度が出たconfigの決定。
  • DPOの検討
    • 人手によるデータ修正。
    • 日本語のデータを日→英→日と翻訳してノイズをのせたものの使用。
  • 6月1日結果発表会に向けプレゼン資料作成。

3.1.2 分かったこと

  • config1~6 の 6 パターンでSFTを実行し、モデルを評価した結果、AVG-jaster と AVG-mtbenchのスコアが一番良い cofing3 のモデルを採用。
  • SFTの出力が自動翻訳っぽさがあるとのことだったので、人手によるデータ修正で望ましいデータ(chosen)と望ましくないデータ(reject)を、作ろうと試みるも時間間に合いそうになく不採用とした。
  • 省庁定例記者会見のデータを準備し、DPOを実施したが言い方が独特な言い回しになりすぎてしまい、不採用とした。
  • peftを使用している場合は、元のモデルとLoRaのモデルをマージさせる必要がある。
  • 日本語としての自然さ,流暢さと知識・数学的能力といった言語モデルとしての能力がトレードオフになってしまった。
  • KPOならDPOに比べ少ない手間で学習できそう。ただし、パラメータ調整に時間がかかりそう。

3.1.3 次やること

  • phase 1 での作業内容、知識、ノウハウ等のまとめを行う。
  • 最終提出版のコードの準備

3.2 学習・コード班

記載者: @佐野敏幸

3.2.1 やったこと

  • 推移自動監視の実装
  • Google Colaboratoryで、各モデルでLLM-jp-eval,mtbenchによる評価。
  • 評価結果に基づき、学習に投入するデータの順番を決定。
  • 本番環境での評価用環境構築、評価の実行。
  • 6月1日結果発表会に向けプレゼン資料作成。

3.2.2 分かったこと

  • 推移自動監視を実装できた。
  • 各モデルでのLLM-jp-eval,mtbenchの成績を把握。
  • 「日本語⇒ヒンディー語⇒事後学習」の順番で学習したモデルと「日本語⇒事後学習」の順番で学習したモデルの比較では、前者(日本語⇒ヒンディー語⇒事後学習)はAVG-jaster,AVG-mtbenchともに後者(日本語⇒事後学習)より劣っていた。そのため、コンペ用のモデルでのヒンディー語の使用を断念した。
  • 評価用メンバーアカウントでの本番環境の構築はうまくいかなかったため、別のメンバーが構築した環境を借りて本番環境での評価を行った。制限時間内に評価できたモデルから、最善モデルを選択し提出した。

3.2.3 次やること

  • phase 1 での作業内容、知識、ノウハウ等のまとめを行う。

3.3 モデル班

記載者: @菊池満帆

3.3.1 やったこと

  • 6月1日結果発表会に向けプレゼン資料作成
  • 3d parallelismに関する調査(今回は3d parallelismを採用しなかったため)
  • フェーズ1におけるモデル班の振り返りメモの作成

3.3.2 分かったこと

  • 色々なparallelismが整備されてる(らしい)ライブラリの発見
  • Transformer Engine によってAIトレーニングを加速することができる

3.3.3 次やること

  • phase 1 での作業内容、知識、ノウハウ等のまとめを行う。
  • pretrain repoをパブリックにする

4. ディスカッション


  • 特になし

5. 開発のマイルストーン

<主要なマイルストーンと現在地について記入>

  • データ準備

    記載者:

    • Phase1終了のため無し
  • モデル学習コード準備

    記載者:

    • Phase1終了のため無し
  • シングルGPUでの稼働確認、実績

    記載者:

    • Phase1終了のため無し
  • マルチノードでの稼働確認、実績

    記載者:

    • Phase1終了のため無し
  • うまくいきそうか計画の確信度

    • Phase1終了のため無し

6.その他

特になし

7.直近1週間でやったこと

記載者: @toshiki_nakashima

  • 事後学習のデータ組み合わせの決定
  • 最終決定版モデルの提出
  • プレゼン資料作り
  • Phase1後の活動まとめ

Discussion