🙌

[週次報告] 第8回 Team JINIAC (5月16日)

2024/05/19に公開

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. コードデータの追加事前学習
      5. 過学習の可能性に関する調査
      6. SFTやDPO
    • wandbとSlackの連帯等、本番環境のメンテナンス対応では問題なく進行
  • 開発とは別に、各サブチームにおける活動をサポートし、チーム全体としての調整をする活動も行っています。

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

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

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

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


3.1 データ班

記載者: y_morinaga

3.1.1 やったこと

  • huggigfaceから事後学習データとして使用できそうなものをピックアップ
  • 省庁定例記者会見データセット(厚生労働省、文科省、総務省等)や数学のデータをhuggigfaceへアップロード
  • 準備した事後学習データ(マルチターン、数学)でファインチューニングを行った
  • DPOの手法の調査(学習班との共同作業)
  • 事前学習データとしてコードデータを準備
  • 学習班と事後学習データの種類や量について話し合い

3.1.2 分かったこと

  • Deep seek moeの論文には140万件学習させたと記載がある一方で、事後学習データについて著名な論文LIMA: Less Is More for Alignmentには、事後学習のデータは少なく(1000件程度)高品質のものがよいと書いてあり、事後学習データの量については2つの方向性があり、どちらの方向性で行くのか決める必要がある。
  • 数学の問題は算数のドリルを解くような形のデータであるが、これを学習させると数をちゃんと数えることができるようになった
  • Llama2でDPOを行ったが、アライメントが効いているのか、わからなかった。パラメータなどの工夫が必要かも

3.1.3 次やること

  • 事後学習のデータ量、使用するデータの決定
  • DPOの実装(学習班との共同作業)

3.2 学習・コード班

記載者: 佐野敏幸

3.2.1 やったこと

  • MoEの事後学習方法について調査。
  • DPOの実装の調査。
  • 学習は大きく分けて、英語データ ⇒ 品質の高くない日本語データ ⇒ 高品質日本語データ、の順で行っている。
  • モデル学習の推移監視チームをつくり、監視を行った。
  • モデル評価チームをつくり、チェックポイントを利用してLLM-jp-evalとMT-Benchによるモデル評価の実行。

3.2.2 分かったこと

  • 強化学習を用いないアラインメントの方が良い結果が出るとする報告がある。
  • MoEと強化学習の組み合わせに関する追加調査が必要。
  • DPOはhuggingfaceで便利に使えそう。
  • 日本語データの学習に入ってから、lossがlearning_rateのカーブと連動する様子が見られた。学習が飽和している可能性がある。
  • 高品質データの学習に入ってから、lossがlearning_rateの連動はなくなり、lossが逓減する様子が見られている。
  • モデル評価では、torch_dtypeの設定やGPUの選択に注意を要する。

3.2.3 次やること

  • MoEの事後学習用のコードの準備。
  • モデルの事後学習開始前に監視体制の整備。
  • 事前学習終了後のモデル評価を実施。事後学習開始後の評価タイミングの決定。
  • wandbの評価結果を基にデータを改善するための準備。

3.3 モデル班

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

3.3.1 やったこと

deepseekmoeについて

  • cultureX(日本語データ)の5分割したデータの内、2/5~5/5を学習させ、cultureXの学習を終了。
  • loss curveとlearning rateの動きが連動してlossが一時的に上がるの影響を緩和するため,lrを2e-4から1e-4に下げた
  • cultureXの学習終了後、青空→wiki→国会→法律→判例の順番で日本語を学習させた。
  • 5/16に英語・日本語の事前学習を終了した.

3.3.2 分かったこと

  • 青空文庫でlr=1e-4にしたらlossの下がり具合が少々悪くなった。なので,2e-4に戻した。ただlr=1e-4と比べて正直どちらがいいかはわからなかった(初動で振動するか否かの差程度)
  • コードデータを事前学習データに入れていなかったため,追加で事前学習させることで成績向上を狙える可能性がある.
  • 事前学習が終了した後のモデルを推論させたところ,日本語品質が向上したのと引き換えに英語の文章生成の品質が低下しているように見られた.
    • 追加の継続事前学習時に日本語性能を失わないよう工夫の必要がある(learning rateなど)

3.3.3 次やること

  • 判例データの時点からcultureXのコードデータを学習させる。データはデータ量の観点で3パターン用意し、まず小さいデータから学習させていく
  • コードデータの学習が終わり次第、SFTやDPOを行っていく(学習班)。コードを学習させた場合や学習させない場合等(コードを学習させることによって日本語を学習させたパラメータが崩れる可能性があるため)、何パターンも検証していく予定。
  • 知識転移の確認目的でヒンディー語を追加で学習させる可能性がある.

4. ディスカッション


  • 特になし

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

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

  • データ準備

    記載者: nakashima

    • 事後学習用で使用するデータの準備をしているが、どのデータをどれくらい使用するのか決める必要がある
    • SFT,DPOの実装を学習コード班と一緒に進めていく
  • モデル学習コード準備

    記載者: @尽誠 白石

  • シングルGPUでの稼働確認、実績

    記載者: @尽誠 白石

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

    記載者: @尽誠 白石

    • 事前学習が一旦完了した.
  • うまくいきそうか計画の確信度

    記載者: 中村 仁

    • 過学習を起こしている可能性等の調査にもよるが、用意したデータセットの学習は完了させることができると強く確信している。

6.その他

特になし

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

記載者: 中村 仁

  • 事後学習の手法についての議論と、データセットの構築
  • 学習データセットの順番等の検討
  • 過学習の可能性について調査のためのモデル評価についての検討

Discussion