🚀

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

2024/05/02に公開

01. 開発テーマ・概要

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

    下記6点の実施。

    1. データの前処理によるハルシネーションの抑制(前処理チーム)
      • 東工大Swallowと同様の処理を実施
    2. 日本語向けトークナイザーの開発(前処理チーム)
      • 日本語データ全量を使用したトークナイザーの学習
    3. 継続事前学習の実施(データセットチーム)
      • 英語、コードデータ(slimpaja, stack v2)で学習後、日本語データで学習
    4. ビジネス向け日本語データセットの利用(データセットチーム)
      • 白書、国会答弁、議事録等のデータセットを利用
    5. ファインチューニング、アラインメントデータの検討(データセットチーム)
      • コンペ・ビジネス向けのデータセットを利用
    6. LLaMAモデルの実装(アーキテクチャー & 学習・評価チーム)
      • 多くの企業で検証済みのLLaMAの利用

02. チーム全体の開発状況

  • 前処理コードの実装(クリーニング、重複削除)
  • トークナイザーの調査
  • LLaMAコード確認
  • 分散処理学習について調査

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

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

やったこと:

  • 事務局と執筆チームでのMTG(4/11)
    • 週次報告と外部発信を分ける方向で。
  • リーダーと外部発信用MTG録画などの打合せ(4/13)

次やること:

  • フェーズ0の原稿着手

サブチーム2(前処理)

やっていること

  • ローカル環境でCC100のクリーニング
  • range3/cc100-ja at main
    https://huggingface.co/datasets/range3/cc100-ja/tree/main
    • 分担
      • ローカルで動くコード作成 | 塚本さん
      • 0-5 | 小川
      • 6-10 | 志賀さん
      • 11-15 | 許さん
      • 16-20 | 角谷さん
  • 許さんと角谷さんは,松尾研環境に正式に登録できた

分かったこと

  • 語彙サイズの調査
    • 語彙サイズは32000以上
    • nekomataは15万(中国語LLM Qwenベースだからか)
  • トークナイザーの学習実行時間
    • 学習対象ファイルが1GBの場合,処理がkillされて実行できない
    • 100MB=1140秒
  • 英語と日本語を学習した既存のトークナイザーを使うか

次やること

  • 引き続き語彙サイズの調査
    • rinna社
    • StabilityAI

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

やったこと

  • データセットをjsonlに変換し、ストレージ・HFに保存
  • クリーニング・重複削除のコード修正
    • クリーニング
      • 逐次処理・レジューム機能追加
  • 日本語トークン数のカウント(確認中)
  • 評価データセットの調査

分かったこと

  • 日本語トークナイザー
    • Llama系でオープンライセンス
      • pfnet/plamo-13b
      • cyberagent/calm2-7b
  • 評価データセット
    • llm-jp-evalは完全一致のクイズみたいな感じのベンチマーク, これに特化しすぎると能力が劣化する可能性がある
    • jmt-benchは複数ジャンル, マルチターンの質問に対するllmの回答を評価するベンチマーク. 適切に指示に従って解答する必要があり難しい
    • hatakeyamaさんチームの試験対策の方針について調査
      • 今回のフェーズで開発するモデルでは, いずれの評価データセットに関してもチューニングなしで回答することはほぼ無理っぽい
      • いかに, 質の良い, かつ形式が似ているようなデータセットを探すか構築するかに注目して作業をしている

次やること

  • 前処理チームのクリーニングが実装でき次第、処理のヘルプ
  • インストラクションデータの準備?

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

※「04.開発のマイルストーン」にも記述済み

やったこと

  • 済)モデルの調査
  • 済)モデルの決定
  • 済)LLaMAモデルの実装
  • 済)deepspeedの理解進が悪いみたい。tensorbordは削除
  • 済)小さいモデルでの実行
  • 済)学習チェックポイントの作成

分かったこと

次やること

  • データセットshuffle機能の削除

    https://note.com/kan_hatakeyama/n/na8c7d9c58e88
    
  • GPU停止時のアラート作成(wandb)

    slackとの連携は可能。運営要領は別途制定が必要。

  • コマンドワンライン(bash OO.sh)で動かせるコード作成 (mekwさん)

  • ハイパーパラメータの決定(松永さん)

    • バッチ数1024,
    • seqlen 4096,
    • adamw(beta1=0.9, beta2=0.95)
    • lr1.00E-04 minlr3.30E-06 decay 1.00E-01
  • https://docs.google.com/spreadsheets/d/14vbBbuRMEHoqeuMHkTfw3uiZVmyXNuoSp8s-aHvfvZk/edit

https://docs.google.com/spreadsheets/d/1NHt5vgrgiH7jFDWg218rKX4FSoLYiRI0SDRMucg-flM/edit?usp=sharing

  • 10Bクラスのハイパーパラメータの準備

(8B, 9B, 10B)

  • 10B学習(everyone)

  • 本番環境での実験項目

    ノード数が何個?

    誰が環境構築するの?

    輪番制どうする?

  • Lossスパイク対策(everyone)

A11-2.pdf (anlp.jp)

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

前処理チーム:

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

データセットチーム:

  • 使用データ決定

    • 英語、コード
      • Slimpajama
      • The Stack v2
    • 日本語
      • CC-100
      • CultureX
      • wiki-40b
      • Common Crawl
      • 国会議事、国会答弁、白書、議事録
  • 日本語データのトークン数確認

    • 既存
      • CC-100:12Bトークン
      • wiki-ja:0.7Bトークン
      • CultureX:
      • Common Crawl: 角谷さんと塚本さん
    • ビジネス系(約2Bトークン) (1人)、重複削除(2人)
      • DietRecord: 1.04Bトークン
      • japanese_precedent:0.88Bトークン
      • gizi_tokyogikai: 0.098Bトークン
      • gizi_aitigikai: 0.029Bトークン
      • houkokusyo_tokyo: 0.015Bトークン
      • giji_hakusyo: 0.01Bトークン
      • chatwork: 0.003Bトークン
  • 英語 & コードデータのトークン数確認

    • Slimpajama:350Bトークン
    • The Stack v2(商用利用可ライセンス):1.1Bトークン
  • 日、英、コードデータの割合決定 10:5:1→ (120B:60B~:12B)

    (IBM参考:https://japan.zdnet.com/article/35215769/)
    
  • コード:(19.3Bトークン)

    • Slimpajama:18.2Bトークン
    • The Stack v2:1.1Bトークン
  • 英語:(331.8Bトークン)

    • Slimpajama:331.8Bトークン
  • 日本語データのマージ完了

  • 英語データのマージ完了

  • 評価データの調査

  • インストラクション、アラインメントデータの方向性決定

  • インストラクションデータの完成(数万件)

  • アラインメントデータ完成

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

  • 済)モデルの調査

  • 済)モデルの決定

  • 済)LLaMAモデルの実装

  • 済)deepspeedの理解進が悪いみたい。tensorbordは削除

  • 進)deepspeedからhuggingfaceへのパラメータ変換 (miwaさん、松永さん)

    1.モデルの一致の確認スクリプト調査

  • deepspeedの設定確認 (熊田さん)

どうやらtensorbordとの相性が悪いみたい。tensorbordは削除

exampleではgrad_accum_typeはfp32なので追記

Megatron-DeepSpeed/examples_deepspeed/universal_checkpointing/run_bf16.sh at 3c5f47563f697702c1e305fa01b7563f54b747fc · microsoft/Megatron-DeepSpeed (github.com)

{
  "train_batch_size" : $GLOBAL_BATCH_SIZE,
  "train_micro_batch_size_per_gpu": $MICRO_BATCH_SIZE,
  "steps_per_print": 10,
  "zero_optimization": {
    "stage": $zero_stage
  },
  "bf16": {
    "enabled": true
  },
  "data_types": {
    "grad_accum_dtype": "fp32" 
  },
  "wall_clock_breakdown" : false,
  "wandb": {
    "enabled": true,
    "project": "Llama_111_0414"
  }
}
  • 済)小さいモデルでの実行

  • データセットshuffle機能の削除

    https://note.com/kan_hatakeyama/n/na8c7d9c58e88
    
  • 済)学習チェックポイントの作成

  • GPU停止時のアラート作成(wandb)

    slackとの連携は可能。運営要領は別途制定が必要。

  • コマンドワンライン(bash OO.sh)で動かせるコード作成 (mekwさん)

  • ハイパーパラメータの決定(松永さん)

    • バッチ数1024,
    • seqlen 4096,
    • adamw(beta1=0.9, beta2=0.95)
    • lr1.00E-04 minlr3.30E-06 decay 1.00E-01

https://docs.google.com/spreadsheets/d/1NHt5vgrgiH7jFDWg218rKX4FSoLYiRI0SDRMucg-flM/edit?usp=sharing

  • 10Bクラスのハイパーパラメータの準備

(8B, 9B, 10B)

  • 10B学習(everyone)

  • 本番環境での実験項目

    ノード数が何個?

    誰が環境構築するの?

    輪番制どうする?

  • Lossスパイク対策(everyone)

A11-2.pdf (anlp.jp)

05. スケジュール

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

Phase1 スケジュール (2)

トークナイザー作成用コードGCPでの試走

データセットの前処理

事前学習

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

境準備: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( 3日)

06. タスク 4/20以降

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

  • 環境準備の方法共有
  • WandB確認方法の共有
  • 事前学習のバッチ実行方法共有
  • 事前学習のバッチ実行者決定
  • ロススパイク時の対処方法調査
  • ロススパイク時の対処方法共有
  • チェックポイントからの実行方法共有
  • 手動チェックポイント作成方法共有
  • 運営評価指標の実行
  • 自作評価指標の作成
  • 自作評価データの取得
  • 自作評価データの作成
  • ファインチューニング手法の調査
  • ファインチューニング手法の実装
  • ファインチューニングデータの調査
  • ファインチューニングデータの取得
  • ファインチューニングデータの作成
  • DPO手法の調査
  • DPO手法の実装
  • DPOデータの調査
  • DPOデータの取得
  • DPOデータの作成

07. その他

  • 特になし

Discussion