😸

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

2024/05/14に公開
  • チーム名:JINIAC
  • 日時:2024年 5月 9日
  • 参加者:
    • リーダー:中村 仁
    • サブリーダー:佐野敏幸(外務)
    • コアメンバー:nakashi104、菊池満帆
    • メンバー:西前

1. 開発テーマ・概要

記載者: 中村 仁

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

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

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

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

    1. チームメンバーによる共同執筆での論文発表
    2. 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ファイル程度に分割し、メモリエラーに対処
    • wandbとSlackの連帯等、本番環境のメンテナンス対応では問題なく進行
  • 現在行うべき課題については順調に対処できていますが、モデルの実装に遅れがみられているため、標準コードの事前学習を少し長引かせる等で対処して参りたいと考えています。

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

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

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

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

    • 5月16日(木)までに、MoEにおけるマルチノードでの学習が完了する予定
    • その後、事後学習の予定

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

3.1 データ班

記載者: y_morinaga

3.1.1 やったこと

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

3.1.2 分かったこと

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

3.1.3 次やること

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

3.2 学習・コード班

記載者: 中川 雄大

3.2.1 やったこと

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

3.2.2 分かったこと

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

3.2.3 次やること

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

3.3 モデル班

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

3.3.1 やったこと

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

3.3.2 分かったこと

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

3.3.3 次やること

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

4. ディスカッション

記載者: 佐野敏幸

日時: 5/5(日) 15:00〜16:00

参加者:たぬきチーム:林寛太さん、JINIACチーム:白石尽誠、中村仁

GCPにおけるDeepseekmoeのパフォーマンス最適化、高速化についてディスカッションを行った。GPUの使用率や温度、バッチサイズ、モデルサイズ等のパラメータ調整が重要であること、データセットの扱いやメモリの使用率も考慮すべきであることが指摘された。特に、JINIACチームではGPU Power Usageが50%にとどまっており、GPUをフルに活用できないとの指摘があった。GPU Power Usageを上げるように調整することが重要とみられる。

モデルの選択やパラメータのトレードオフ、判断基準についても議題となった。特に、モデルサイズとのトレードオフの調整については、モデルサイズが上がるほどtflopsが上がるのではないかと指摘された。

データセットについては、英語のデータセットを入れて、idxとbinを作る方法やメモリの使用率を確認する方法などが提案された。

メガトロン関連の勉強会を開催する提案もされた。

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

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

  • データ準備

    記載者: nakashi104

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

    記載者: 白石尽誠

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

    記載者: 白石尽誠

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

    記載者: 白石尽誠

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

記載者:中村 仁

  • 本命のDeepSeekMoEを用いた場合における事前学習の期日までの終了見込みは、高いと考えられる。
  • なお、標準コードにおける学習完了までの道筋も見えており、セーフティネットの構築における達成確信度も高い。

6.その他

  • 特になし

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

記載者: 中村 仁

  • 事後学習に用いるデータセットの準備が進行中です。
  • NEDOからご提供いただいた「本番環境」にて、標準コードとDeepSeekMoEのマルチノード実行が進行中です。
  • モデル評価についてのチームも発足しました。

Discussion