7.4K Views
May 01, 24
スライド概要
mistralモデルをベースとした 日本語の大規模言語モデル 2024/05/01 ようさん
目次 1. 2. 3. 4. 5. 6. 自己紹介 背景 チームのゴール コーパスのクリーニング 学習内容の共有 まとめ 2
自己紹介 名前 : ようさん ● Unityエンジニア ○ ゲーム ○ (VR/MR) ● 趣味でTTSやLLM周り X(Twitter) @ayousanz 3
背景 loss:2.205 perplexity : 11.0228 4
背景
チームのゴール ● 事前学習用のクリーニング済みのコーパスの作成 ● 日本語のMistral事前学習モデルの作成
チームのゴール ● 事前学習用のクリーニング済みのコーパスの作成 ● 日本語のMistral事前学習モデルの作成
事前学習用のクリーニング済みコーパスの作成 以下の内容を実施 ● コーパスクリーニング用のC++ツールを実装 ● 各種日本語データセットをクリーニング
コーパスクリーニングの背景 ● wikipedia、cc100、oscarデータはノイズデータ (重複、低品質文書、広告)が多く、LLMの推論性能を下げる要因に ● コーパスクリーニングによりLLMの推論性能が向上する事例が報告されている (文献1、文献2) ● 既存のpythonクリーニングツール(Hojichar, DataTrove)は有用だが処理が遅い C++で高速にコーパスクリーニングするツールを実装し処理
作成したクリーニングツール リポジトリ :https://github.com/ce-lery/corpus-cleaner ドキュメント:https://ce-lery.github.io/corpus-cleaner/ 実装期間 :2024/2/15 〜 2024/4/24(約2.5ヶ月)
コーパスのクリーニング処理一覧 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Normalizer: 文の正規化(mecab-neologdをC++化し、NFKC正規化等実施) URL Remover: 正規表現にマッチするURLの削除 Special Characters Remover: 特定の特殊文字(☀, ♡, ☆など)の削除 Emoji Remover: \U0001F300(🌀)から\U0001F9FF(🧿)までの絵文字の削除 Quotes Remover: 引用符([1], {245})の削除 Length Filter: 長すぎる文章や短すぎる文章(4文字以下)の削除 Language Filter: 日本語の文章であるかどうかを判定し、日本語以外を削除 Minhash Deduplicator: Minhashを使用した重複文章排除 ZeroPunctuationFilter: 句読点のない文書の削除 Sentence Segmenter: ルールに基づいてコーパスを文に分割(今回不使用) Perplexity Filter: KenLMを使用した困惑度フィルター(40000超えを除去)
クリーニングにより除去されたデータの例 Minhashによる重複文書の除去(wikipedia dataset) Perplexity値による低品質文書の除去 & 句読点無し文書の削除
クリーニング済みデータセット 以下のクリーニング済みコーパスを公開 1. wiki & cc100 (クリーニングによる除去率50%): https://huggingface.co/datasets/ce-lery/mistral-3b-dataset 2. oscor: https://huggingface.co/datasets/ayousanz/OSCOR-2301-ja-cleaned 3. c4(一部のみ) : https://huggingface.co/datasets/ayousanz/c4-ja-cleaned
クリーニングツール残課題 ほぼ名詞で構成された文章が 除去できていない →形態素解析処理を追加し、 ほぼ名詞の文章を排除予定
チームのゴール ● 事前学習用のクリーニング済みのコーパスの作成 ● 日本語のMistral事前学習モデルの作成
クリーニング済データを用いた300M pretrain 3Bは作れなかったが、クリーニング済みwiki & cc100で300Mモデルを作成 2023/12 (文正規化のみ) ・生成言語に含まれる ノイズが大幅に減少 2024/4 (p.12記載の10種処理) ・学習時間も半減
学習時の知見共有 1. 大規模のモデル学習をdockerに学習時の 共有メモリの不足 2. 事前準備の時間不足
学習時の知見共有 大規模のモデル学習をdockerに学習時の共有メモリの不 足 「NCCL WARN Error while creating shared memory segment /dev/shm/nccl-SWCuLF (size 9637888)」 → 実行時に --shm-size=[size] のオプションで指定
まとめ ● ● ● ● クリーニングツールの公開 クリーニング済みのデータの公開 クリーニングデータを使った0.3bモデルの作成 3bクラスは未完成
今後の展望 ● 3bクラスの学習 ● 引き続きc4データセットのクリーニング
今後の展望 ● 3bクラスの学習 ● 引き続きc4データセットのクリーニング