📑

[週次報告] 第4回 Team ビジネス

2024/05/02に公開

開発テーマ・概要

  • ビジネスで利用可能なLLMの開発

    下記6点の実施。

    • データの前処理によるハルシネーションの抑制(前処理チーム)

      • 東工大Swallowと同様の処理を実施
    • 日本語向けトークナイザーの開発(前処理チーム)

      • 日本語データ全量を使用したトークナイザーの学習
    • 継続事前学習の実施(データセットチーム)

      • 英語、コードデータ(slimpaja, stack v2)で学習後、日本語データで学習
    • ビジネス向け日本語データセットの利用(データセットチーム)

      • 白書、国会答弁、議事録等のデータセットを利用
    • ファインチューニング、アラインメントデータの検討(データセットチーム)

      • コンペ・ビジネス向けのデータセットを利用
    • LLaMAモデルの実装(アーキテクチャー & 学習・評価チーム)

      • 多くの企業で検証済みのLLaMAの利用

チーム全体の開発状況

  • 前処理コードの作成
  • 重複削除コードの作成
  • データのクリーニング
  • トークン数の確認
  • データ割合決定
  • LLaMAモデルの学習

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

サブチーム1(ドキュメント)

やったこと:ドキュメント班で発表時のスライド構成を検討
      定例MTGのURLをNotionのhomeに

分かったこと:

次やること: 複数GPUを試す会(5/25-26)を検討

サブチーム2(前処理)

やったこと:

  • wiki40bに対して、クリーニング

分かったこと:

  • 109MBのファイルに対して、1.5分でクリーニング可能

次やること:

  • 畠山さんのCommon Crawlに対して、クリーニング(300GB:4500分)
    • 75時間 = 3日間

サブチーム3(データセット)

やったこと

  • データセットをDLし、jsonlに変換後、順次格納中
    • /persistentshare/storage/team_kawagoshi/datasets/final/jsonl
  • クリーニング・重複削除のコード動作確認
  • 白書のDL
    • 約5時間でスクレイピング終了
  • 日本語トークン数のカウント(作業中)
    • 明日中には数字が出そう
  • 評価データセットの調査(作業中)

分かったこと

  • データセットの変換に関して

    • クリーニングのコードの関係上、jsonl形式で保存するのが良いということでHuggingFaceからjsonlで保存

      from datasets import load_dataset
      import json
      from time import sleep
      
      dataset = load_dataset('uonlp/CulturaX', 'ja', split='train', streaming=True, token='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')
      
      for data in dataset:
          data['text'] = data['text'].strip()
          with open('CulturaX-ja.jsonl', 'a', encoding='utf-8') as f:
              json.dump(data, f, ensure_ascii=False)
              f.write('\n')
      
      • 大規模なデータセットを読み込むとメモリ不足になったり途中経過が確認できず、何度もjsonlへの変換をやり直し、現在はstreamingで読み込むことで対応したが、計算ノードのアクセス可能時間内(6時間?)だと足りない
      • 畠山チームからCCが保存されてあるgcloudへのアクセス権限をもらったが、計算ノードからではアクセスできない(ログインノードからならできる。計算ノードでもdockerを立ててもいけるのではとアドバイスをもらった)
    • 分かりたいこと

      • —time指定なしだと何時間までOKか?時間制限のないログインノードを使っても良いのか?データセットの楽な保存方法は?
  • クリーニングに関して

    • 前処理チームのクリーニングコードで処理すると、英文対応していないので、markdown含めて崩れる。
      • wiki40bに適用した結果
        • /persistentshare/storage/team_kawagoshi/ekunish/preprocessing_test
        • 計算時間は109MBのこのjsonlファイルに対して1.5min程度

次やること

  • 引き続きデータセットのjsonl化(江國・吉野)

    • CC-100_ja
    • ✔︎ wiki40b_ja
    • ✔︎ CulturaX
    • CC
    • 各自データセット
  • クリーニング・重複処理(江國・吉野・和田)

  • 日本語トークン数のカウント(和田)

    • wikipedia-ja-20230720
      • 737,004,907 tokens

    token_count_wikipedia-ja-20230720.csv

  • 評価データセットの調査(濱田)

サブチーム4(アーキテクチャー & 学習・評価)

やったこと:

  • LLaMA2周りのコードの確認
  • TP, PPについて、10Bクラスで適切なものを調査
  • ハイパーパラメータ調査

開発のマイルストーン

前処理チーム:

  • 済)前処理コードの完成
  • 重複処理
  • クリーニング後、日本語データの完成
  • 日本語トークナイザーの作成

データセットチーム:

  • 済) 使用データ決定
  • 日本語データのトークン数確認
  • 英語 & コードデータのトークン数確認
  • 日、英、コードデータの割合決定
  • 日本語データのマージ完了
  • 英語データのマージ完了
  • 評価データの調査
  • インストラクション、アラインメントデータの方向性決定
  • インストラクションデータの完成(数万件)
  • アラインメントデータ完成

アーキテクチャーチーム & 学習・評価チーム:

  • 済)モデルの調査
  • 済)モデルの決定
  • 済)LLaMAモデルの実装
  • 済)deepspeedの理解
  • 済)deepspeedからHuggingfaceへのパラメータ変換
  • deepspeedの設定確認
  • 済)小さいモデルでの実行
  • データセットshuffle機能の削除
  • 学習チェックポイントの作成
  • GPU停止時のアラート作成(wandb)
  • コマンドワンライン(bash OO.sh)で動かせるコード作成
  • ハイパーパラメータの決定
  • 10B学習

スケジュール

  • Phase1 コンペ開始日時:4/22(月)
  • Phase1 コンペ終了日時:5/26(日)

Phase1 スケジュール (1)

事前学習

Phase1:4/22~5/26 の35日間

境準備:4/22~4/24(3日間)

事前学習:4/25~5/13(19日間)11*19 = 209Bトークンの学習。

ABEJA 100Bモデル 384GPU (H100) 17.8Bトークン/day
Preferred Elements 100Bモデル 400GPU (H100) 24Bトークン/day
Stockmark 100Bモデル 384GPU (H100) 23.8Bトークン/day
私たち 10Bモデル 24GPU (H100) 17.8/16*10=約11Bトークン/day

ファインチューニング:5/14~5/18(5日間)

DPO:5/19~5/23(5日間)

バッファ:5/24(1日)

学びの期間:5/25~26(2日間)(全員がモデル学習できる期間にしたい)

Discussion