[週次報告] 第5回 Team ビジネス
-
動画はこちらになります
パスワード: 9@x8.vV2Video Conferencing, Web Conferencing, Webinars, Screen Sharing
01. 開発テーマ・概要
-
ビジネスで利用可能なLLMの開発
下記6点の実施。
-
データの前処理によるハルシネーションの抑制(前処理チーム)
- 東工大Swallowと同様の処理を実施
-
日本語向けトークナイザーの開発(前処理チーム)
- 日本語データ全量を使用したトークナイザーの学習
-
継続事前学習の実施(データセットチーム)
- 英語、コードデータ(slimpaja, stack v2)で学習後、日本語データで学習
-
ビジネス向け日本語データセットの利用(データセットチーム)
- 白書、国会答弁、議事録等のデータセットを利用
-
ファインチューニング、アラインメントデータの検討(データセットチーム)
- コンペ・ビジネス向けのデータセットを利用
-
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に保存
- クリーニング・重複削除のコード修正
- クリーニング
- 逐次処理・レジューム機能追加
- クリーニング
- 日本語トークン数のカウント(確認中)
- 評価データセットの調査
分かったこと
- 日本語トークナイザー
- 評価データセット
- llm-jp-evalは完全一致のクイズみたいな感じのベンチマーク, これに特化しすぎると能力が劣化する可能性がある
- jmt-benchは複数ジャンル, マルチターンの質問に対するllmの回答を評価するベンチマーク. 適切に指示に従って解答する必要があり難しい
- hatakeyamaさんチームの試験対策の方針について調査
- 今回のフェーズで開発するモデルでは, いずれの評価データセットに関してもチューニングなしで回答することはほぼ無理っぽい
- いかに, 質の良い, かつ形式が似ているようなデータセットを探すか構築するかに注目して作業をしている
次やること
サブチーム4(アーキテクチャー & 学習・評価)
※「04.開発のマイルストーン」にも記述済み
やったこと
- 済)モデルの調査
- 済)モデルの決定
- 済)LLaMAモデルの実装
- 済)deepspeedの理解進が悪いみたい。tensorbordは削除
- 済)小さいモデルでの実行
- 済)学習チェックポイントの作成
分かったこと
- どうやらtensorbordとの相性が悪いみたい。tensorbordは削除
- exampleではgrad_accum_typeはfp32なので追記
- Megatron-DeepSpeed/examples_deepspeed/universal_checkpointing/run_bf16.sh at 3c5f47563f697702c1e305fa01b7563f54b747fc · microsoft/Megatron-DeepSpeed (github.com)
次やること
-
データセット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
- 10Bクラスのハイパーパラメータの準備
(8B, 9B, 10B)
-
10B学習(everyone)
-
本番環境での実験項目
ノード数が何個?
誰が環境構築するの?
輪番制どうする?
-
Lossスパイク対策(everyone)
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なので追記
{
"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
-
‣
- 10Bクラスのハイパーパラメータの準備
(8B, 9B, 10B)
-
10B学習(everyone)
-
本番環境での実験項目
ノード数が何個?
誰が環境構築するの?
輪番制どうする?
-
Lossスパイク対策(everyone)
05. スケジュール
- Phase1 コンペ開始日時:4/22(月)
- Phase1 コンペ終了日時:5/26(日)
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