[週次報告] 第9回 Team JINIAC (5月23日)

2024/06/06に公開
  • チーム名:JINIAC
  • 日時:2024年 5月 23日
  • 参加者:
    • リーダー:中村 仁
    • サブリーダー:nakashi104,佐野敏幸(外務)
    • コアメンバー:菊池満帆
    • メンバー:西前和隆,中川雄大

1. 開発テーマ・概要

記載者: 中村 仁

  • 本プロジェクトでは、日本語の特性を適切に捉えられる大規模言語モデル(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の合間を縫って学習
    • 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→コードデータ→高品質データ→ヒンディー語→アライメント」
      6. (完了)過学習の可能性に関する調査

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

      8. SFTやDPOについての調査・実装

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

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

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

    • 新しいメンバー4名の受け入れやについても順調に進み、40名ほどのメンバーが各々の興味に基づいて開発できる環境の整備を進めています。
  • 内部での調整や、外部との連絡についても順調に進んでいます。

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

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

3.1 データ班

記載者:y_morinaga

3.1.1 やったこと

  • 事後学習用データ(数学データ、文科省指導要領等)、データ準備、事後学習用データのサーベイ
  • oasst1_2、dolly、mixtralに加え、事後学習データの一覧表や中村チームで独自に作成したデータを使用したSFTを3種類のデータの組み合わせconfiguration-1(357711件), 2(480508件), 3(480508件)で実施
  • DPOの実施
  • 自動翻訳したデータを修正して、修正前のデータをreject、修正後のデータをchosenとしてDPO用のデータを作成。さらに省庁記者会見のデータセットなど、日本語の綺麗なデータセットの現在のデータをchosenとし、rejectを日→英→日でデータを逆翻訳し、DPO用のデータを作成した。

3.1.2 分かったこと

  • 用意した事後学習用データ(dolly、oasst)でフルファインチューニングを実施したところ、回答が自動翻訳ぽさが出て、日本語として不自然な形となった。自動翻訳したデータをすべて使用すると出力に影響がでるため、KenLMで日本語文章の品質スコアリングを行い、使用するデータの選別を行うことにしました。
  • SFT,DPOの学習実行時に/var/tmpに一時ファイルが大量に生成されることによる容量不足により、ノード11のSTATEがdrainedとなった。/var/tmpの一時ファイルを削除し、松尾研のインフラ担当の方へノード11の再起動を依頼し解決しました。
  • SFTについてはデータ量が一番多いconfiguration-3よりconfiguration-1のほうがスコアが良く、データ量を増やすことによる性能向上が頭打ちになっている。
  • DPOが本番環境でエラーが出て実施できませんでしたが、accelerateの設定とdeepspeedをインストールしたところ、実施できるようになりました。
  • DPOもhuggigface上のデータを使用しましたが、英語のデータを日本語に自動翻訳したデータであるため、品質が良くないです。
  • DPO用データは人手で作成するとかなりの手間がかかりました。

3.1.3 次やること

  • SFTにおいて、データの量よりも質とバランスを重視したconfiguration-4を実施し、性能向上を確認する
  • 事後学習で使用するデータを決定する
  • 文科省指導要領のデータをQAの形にして事後学習で使用できるようにする
  • DPO用に作成したデータでDPOを実施する

3.2 学習・コード班

記載者: @Shoji Iwanaga

3.2.1 やったこと

  • DPOの実装についての再確認
  • DPOとSFTの人員整理
  • 評価の依頼があがった時点で、各自分担して評価を行う。
  • Lossスパイクの検出を自動で行うコードの作成

3.2.2 分かったこと

  • 学習の仕方を工夫して、評価を行う。
  • 評価の手順書の整備が必要。
  • colabのT4、L24、A100と松尾研のH100では環境の違いで、思わぬトラブル発生する可能性あるため、本番環境でも評価は試したほうがいい。

3.2.3 次やること

  • 本番環境の構築と評価。
  • 事後学習の調査・実装(エラーが解決次第)

3.3 モデル班

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

3.3.1 やったこと

  • パターン1:deepseekmoeについて、CulturaXを入れた後に、日本語高品質データの学習を実行(青空→wiki→国会→法律→判例)。その後codeを学習させる。
  • パターン2:deepseekmoeについて、CulturaXを入れた後にcodeの学習を実行。その後、日本語高品質データを学習させる(青空→wiki→国会→法律→判例)
  • パターン3:deepseekmoeについて、ヒンディー語を学習させたものも作成しチェックポイントをアップ。余力があれば知識転移を検証する.

3.3.2 分かったこと

  • SFTを行うとavg_jasterにて5倍ほど性能が上がる。
  • jcommonsenceseqaがほとんど解けていない。回答形式(1や2)を答えられていないのと、そもそも回答する内容があっていないことが多い。
  • 事前学習で2epoch目をやるなどして知識を補強する必要あり?(fine tuningでは知識を引き出す役割だと考えている)

3.3.3 次やること

  • DPO等を行っていく(データ班)
  • code dataの追加や日本語高品質データの再学習を行う

4. ディスカッション


<コミュニティ外の方とのディスカッションなどあればここに記入>

  • Phase2におけるモデルのアーキテクチャについて、ディスカッションを行っていきたいと考えています。
    • LLMコミュニティへご参加いただき、gen_nakamura_01_generalにて @Jin Nakamura までお声がけください。

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

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

  • データ準備

    記載者: y_morinaga

    • 事後学習、DPOで使用するデータを5/24(金)までに準備する
    • dollyのデータを修正中。DPO用については人手で修正したデータは、40件程度修正。また、省庁の記者会見のデータセットを日→英→日と逆翻訳をし、DPO用のデータ(rejectの部分)を約1,300件作成。
  • モデル学習コード準備

    記載者: @菊池満帆

    • code dataの追加や日本語高品質データの再学習を行う。
  • シングルGPUでの稼働確認、実績

    記載者: @佐野敏幸

  • マルチノードでの稼働確認、実績

    記載者: @佐野敏幸

  • うまくいきそうか計画の確信度

    記載者: 中村 仁

    • 過学習を起こしている可能性が低いことわかりました。
    • そのため、用意したデータセットの学習は完了させることができると強く確信している。

6.その他

特になし

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

記載者: 中村 仁

  • データ班:事後学習用データの準備、サーベイ、SFTとDPOの実施およびデータ修正が行われました。
  • 学習・コード班:DPOとSFTの人員整理、評価手順書整備、Lossスパイク検出コード作成が完了しました。
  • モデル班:deepseekmoeでの日本語高品質データとコードの学習の実行が完了しました。知識転移の検証は今後行います。

Discussion