🐙

[週次報告] 第4回 Team たぬき

2024/05/03に公開

動画

https://zoom.us/rec/share/fQRAYltRF_bmoPy2W8N2AENw96wEdXHS04xjgLAK-fwr27gGplZqw81UhtrvTs8g.dqax6eADTv4r_cFH
パスコード: *.41J%nQ

開発テーマ・概要

当チームでは、上質な日本語データベースの構築と活用に焦点を当てた開発を行っています。具体的には、高品質な日本語テキストデータを大規模に収集・加工し、大規模言語モデルの学習に適したデータセットを作成することを目指しています。

データ収集においては、CommonCrawlをはじめとする大規模ウェブデータから日本語テキストを抽出し、ルールベースのフィルタリングに加え、人手によるアノテーションを行うことで、クリーンで高品質なデータを選別します。また、学術論文や書籍など、ウェブ以外の日本語データも積極的に取り入れ、多様性に富んだデータベースの構築を目指します。

収集したデータは、先進的な自然言語処理技術を駆使して加工・統合し、大規模言語モデルの学習に最適化します。具体的には、文書のクラスタリングや重複除去、カリキュラム学習に対応したデータの順序付けなどを行います。

さらに、構築したデータベースを用いて、最先端の大規模言語モデルを学習・評価し、日本語処理タスクにおける性能向上を図ります。

チーム全体の開発状況

  • 日本語400GB、英語300GBまでクリーニング済み (dedup後)
  • モデル学習コードはほぼ完了。来週微調整して動かす予定
  • マルチGPUで2.7Bモデルを30B tokenで動かした。マルチノードでの動作も確認済み
  • 計画はおおむね順調。多分大丈夫な見込み

開発のマイルストーン

  • データ準備
    • [回答]dedup前で日本語800gbまでクリーニング済み
    • [回答]英語も準備済み300gb
  • モデル学習コード準備
    • [回答]ほぼ完了。来週微調整して動かすだけ
  • シングルGPUでの稼働確認、実績
    • [回答]マルチgpuで2.7bmodelを30b tokenほど動かした
  • マルチノードでの稼働確認、実績
    • [回答]動作確認済み
  • うまくいきそうか計画の確信度
    • [回答]多分大丈夫

直近1週間でやったこと

  • 指示データセット
    • 投稿サイトhttps://minnade.chat/ がオープン
  • 事前学習
    • データセットの作成完了&tokenize済み(200b)
  • コード
    • パイプラインの動作確認、ROPEの導入

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

サブチーム1: 指示データセット

やったこと

  • 新しいサイト名 MinnadeChat でウェブサイトを作成 (shu)
  • mtbenchをベースとしたインストラクションデータセットの作成を開始
    • チームメンバーにより指示データセットを数十件の規模で作成頂いた。
      • 作成データと元データでの類似性からカンニングの指摘を懸念
        • 類似度評価システムを導入し、低類似度でデータを作成する。

分かったこと

  • コンペ用のためだけのデータを作成をすることに長期的に見て意味性がないため、評価指標にとらわれない日本語LLMモデル用のインストラクションデータセットの作成を開始予定

次やること

  • MinnadeChat の投稿体験の改善 (shu)
    • 質問タイトルを不要にするなど
  • MinnadeChat上にデータセットを作成していく。

サブチーム2: 事前学習データセット

やったこと

  • クリーニング、dedup、トークナイズまでの処理(畠山)
    • アノテーションできるところまでアノテーション進めた
      • 4/10 10時までに6800件をアノテーションした
  • mC4+日本語データのクリーニングパイプラインの進捗

・日本語クリーニングコードの共有、クリーニング回して“jsonl”形式で保存(内藤さん)
https://github.com/KanHatakeyama/JapaneseWarcParser/tree/main/mc4s
  ・日本語の事前学習データセットは、以下のコーパスで構成されており、それぞれを統合しつつ、クリーニング中 (https://github.com/hatakeyama-llm-team/Dataset_for_BTM)(レポの一番下に、使っているものをまとめ)
  ・形態素解析によるクリーニングプログラムを作成(Komurasaki様)
  ・Eluther-AIの方々からcode以下のコードデータの推薦を受け、the stack v2の代わりに使用

分かったこと

  • (クリーニングコードは)突貫で作ったコードのため、同じテキストに対して何度も形態素解析を行うなど、処理上の無駄が多い

次やること

  • ファインチューニングへとフェーズが移行
  • 50bに向けて、日本語スクリプトをブラッシュアップ
  • 雑多なTODOとして、
     ・mdpiというオープンアクセス論文からごっそり落としてきた論文のhtmlデータの解析
  • リンクの除去、機械学習ベース(アノテーションしてもらってるやつ)でのクリーニング、遊撃部隊的に課題の発見など

サブチーム3: Code

やったこと:

  • 2.7bモデルのカリキュラム学習(カテゴリごとにクラス分け)
  • llmのデモサーバー設置

https://docs.google.com/spreadsheets/d/1Od3GgZ6RHjJ6ltqxxcL6GLQIEEJ-4l3gCqw2PyO4mQE/edit#gid=0

分かったこと: 特に問題なく動く

次やること: 10bモデルの学習

ディスカッション

  • 相談したい事項(畠山)

    • 10bモデルの運用体制
      • 環境設定・モデルパラメータ類の設定など: 畠山が主に担当、随時メンバーが協力、でOKか?
        • どういうjobシステムなのかがまだわからないので、なんとも言えない
        • 見守り体制は少し考えたい
      • 細々とした設定
        • モデルサイズ: データは0.5T-1TB程度(100-300b token?)
          • この学習が2,3weekで終わるようなモデルサイズに設定 (余裕があるなら、13bー20bモデルくらいにする?)
        • 保存するsnapshotの頻度: ストレージ次第
      • ZeRo関連の設定
  • 事前学習データセットの方針

    • できれば分散・分業型の処理体制を作りたい
    • しかし、commoncrawlが膨大すぎるので、意外と分散処理が難しい
      • 未圧縮状態で数TB、しかも重複多数。
      • あらかじめ、commoncrawlなどを一括で処理&カテゴライズして、カテゴリごとに分担処理するなどは有り?
    • 新たに入れたいデータ
      • 数学ソルバー出力
  • ファインチューニングデータセットの方針

    • 50-100bモデルを見据えた、高度なデータセットにしたい?

Discussion