🐴

Qwen/Qwen1.5-0.5Bを継続事前学習してみた【Tokara-0.5B】

2024/05/08に公開

要約

以下の3モデルを作成・公開しました。
小規模ながら比較的性能の高いモデルになっていると思います。

目的

前回のLiteLlama-460Mはそもそもの言語能力があまり高くなかったので、能力自体が高く、日本語も学習しているであろうQwen1.5-0.5Bを継続事前学習することにしました。

実施内容

モデル・データセット

  • ベースモデル: Qwen/Qwen1.5-0.5B
  • トークナイザー: 語彙拡張は行わず、Qwenのトークナイザーをそのまま使用
  • 学習データ:
    • izumi-lab/wikipedia-ja-20230720
    • oscar-corpus/OSCAR-2301(日本語を対象に品質フィルタリングしたもの、HF上で約15GB)
    • aixsatoshi/cosmopedia-japanese-100k
    • BEE-spoke-data/wikipedia-20230901.en-deduped
  • 1epoch: 約7.3Bトークン(今回は約5B学習したチェックポイントを使用)

ハイパーパラメーター

パラメーター
attn_implementation flash_attention_2
scheduler cosine_schedule_with_warmup
per_device_train_batch_size 1
gradient_accumulation_steps 512
lr 3e-4
weight_decay 0.1
warmup_rate 0.01
num_train_epoch 1

実行環境

PCスペック

項目 スペック
CPU i9-14900K
RAM 96GB
GPU RTX-4090

その他

  • WSL2のDocker上で実行
  • transformersのTrainerを使用
  • 学習データは4098トークンごとにチャンク分け

結果

ベースモデルについて

継続事前学習を行ったモデルはTokara-0.5B-v0.1として公開しています。
7.3Bトークンの学習には166時間(丸1週間)かかりました。
Qwenモデルをベースにしているため、ライセンスがQwenのものになっている点にご留意ください。
https://huggingface.co/Kendamarron/Tokara-0.5B-v0.1

ベンチマーク結果

Stability-AI/lm-evaluation-harnessの3項目で評価

モデル jsquad(1-shot) jcommonsenseqa(1-shot) jnli(1-shot)
Kendamarron/Tokara-0.5B-v0.1 26.4295 0.2663 0.5509
Qwen/Qwen1.5-0.5B 31.3597 0.2556 0.5534

ベースにしたQwen1.5-0.5Bと比べると性能低下が見られました。
これは個人的に悔しい結果になりましたが、データセットのクリーニングが不十分だったことが原因と考えています。

Instructモデルについて

Tokara-0.5Bをベースにした以下の2種類のInstructモデルを作成・公開しました。
0.5Bという最近のLLMの中では小規模なものですが、両モデルともに、ある程度対話が行えるモデルになっています。

Kendamarron/Tokara-0.5B-Chat-dolly-jimba

まずはTokara-0.5B-v0.1を対話データセットでファインチューニングしたモデルです。
https://huggingface.co/Kendamarron/Tokara-0.5B-Chat-dolly-jimba
使用したデータセットは以下の通りです。

  • kunishou/databricks-dolly-15k-ja
  • Kendamarron/jimba-instuction-1k-beta
  • Kendamarron/pret-a-porter-instruction-v0.1
  • Kendamarron/jimba-oasst2(公開準備中)

jimba-oasst2-jaはoasst2のinstructionを起点にSwallow-MXを使って作成したマルチターン合成データセットです。

Kendamarron/Tokara-0.5B-Chat-chatvector-v0.1

続いて、上記モデルとQwen/Qwen1.5-0.5B-Chatのchat vectorをTokara-0.5B-v0.1に加えたモデルです。

https://huggingface.co/Kendamarron/Tokara-0.5B-Chat-v0.1

当初はベースモデルにQwen-0.5B-Chatのchat vectorを加えてInstructモデルを作ろうと考えていたのですが、それだけだと中国語が頻繁の混ざるようになってしまいました。
そこで、上記のTokara-0.5B-Chat-dolly-jimbaを作成したことで、日本語を出力する能力を保ったまま、英語や中国語では性能が高いであろうQwen-0.5B-Chatの能力も獲得できるようにしています。

レシピ

Japanese MT-benchでの性能比較

Japanese MT-benchの6カテゴリをシングルターンで評価

Extraction Humanities Reasoning Roleplay STEM Writing
1.3 2.6 2.5 3.8 2.3 3.2

実際の出力例

Tokara-0.5B-Chat-v0.1の出力例をいくつか紹介します。

プロンプト 出力
大規模言語モデルとはなんですか? 大規模言語モデル(Big Neural Network)は、複数の自然言語工学者と異なる多様な学習要因を組み合わせて生成される言語処理技術であり、AIやNLP分野では主流となっています。
大規模言語モデルには以下のような特徴があります:
- 多要素非同期:大量の音声信号から発生し得る人工知能が得意であるため、これらの信号を時系列形式に移行させながら深層化することで高度な文法分析や熟考性のある理解ができるようになります。
- モジュール化された可視的特性:各タグや意味域に至った合体した「エビリティ」を指す言語構造は、大規模言語モデルにおいて重要視されています。一般的には100以上個以上の符号が存在している状態を代表しています。
- 動力的な制御:大規模言語モデルは、人間と同様に動機付けて動作します。そのため、特定の条件を満たせば効率的にアルゴリズムを検証して改善することが可能となります。
- 具体性と信頼度:大規模言語模型は、元々の言語体系を踏まえて独自の表現やルーツを持っています。そのため、予測精度や可用性は高いと言えます。
大学受験に向けた心構えを5つ教えて 1. 自分なりの志望校や学部名を明確にする。
2. 進路目標(就活、卒業)について理解する。
3. 学校・教科書等の重要性と体系化された授業内容について把握する。
4. 重視すべき能力像 (人間力、コミュニケーション能力、問題解決能力) を定義し、それを磨く方法を考える。
5. 適切な参考書、教材、模試などで自分の成績分析を行い、改善策を見出す。
あなたはドラえもんです。5分以内に東京から大阪まで移動しなければならないとしたらどうしますか? こんにちは! まずは、目的地を確認しましょう。
1. 公式通勤ルート:https://www.mhlw.go.jp/ueda/koukoku_0439.html
2. 東京都方面の新幹線や高速鉄道の停留所名:http://www.sogo.com/jp/nagoya_1/
3. 大阪府方面の新幹線や高速鉄道の停留所名:https://www.sogo.com/jp/sapporo_1/
4. 規定時間内に行ける交通機関(公共交通機関)の名称:https://www.sogo.com/midori/tokyo_1/
次に、「天気予報」アプリを使用し、目的地に到着した直後に通知されるように配信されますので、チェックしてみてください。また「Google Maps」が活用可能です。

【注意】 天候状況によって、指示通りの移動方法になる可能性がありますので、事前に周囲の風向・雨量を把握することが重要です。

モデルが小さいこともあり、知識を問うタスクは苦手そうです。
また、MT-benchでスコアが比較的高かったロールプレイもうまく出来ていません。

色々と試した中では、2つ目の案出しのようなタスクには比較的強い印象があります。

課題

  • OSCARのデータクリーニングが不十分だった可能性がある
  • 日本語でのSFTを十分に行えていない(jimba-oasst2の中身を確認せずにそのまま使ったため、ノイジーなデータが混ざっている可能性がある)

TODO

  • 次は1~2Bクラスの学習を行ってみたい
  • Megatron-LMを扱えるようになりたい

Discussion