Minillm 0.2B Base
MiniLLMは軽量言語モデルプロジェクトで、事前学習→命令微調整→報酬モデリング→強化学習の全プロセスを完全に実装し、経済効率的な方法で基礎的な対話能力を持つチャットモデルを構築します
ダウンロード数 41
リリース時間 : 3/16/2024
モデル概要
このプロジェクトは軽量言語モデルの構築に取り組んでおり、bert4torch訓練フレームワークを採用し、コードは簡潔で効率的です。訓練されたモデルは直接transformers推論エコシステムと互換性があります。現在の実験モデルは基本的な対話機能のみを備えています。
モデル特徴
軽量で効率的
bert4torch訓練フレームワークを採用し、コードは簡潔で効率的で、訓練プロセスのメモリ使用量を最適化します
高い互換性
訓練されたモデルは直接transformers推論エコシステムと互換性があります
全プロセス実装
事前学習→命令微調整→報酬モデリング→強化学習の全プロセスを完全に実装しています
モデル能力
中国語テキスト生成
基礎的な対話
テキスト継続
使用事例
教育
学習アシスタント
学生の基礎的な学習問題に回答します
基礎的な学習内容の説明と例を生成できます
エンターテインメント
簡単なチャット
日常的な会話をします
基本的な挨拶や簡単な話題について会話できます
🚀 小参数量LLMプロジェクト
このプロジェクトは、小さなパラメータ数のLLMを構築することを目的としています。事前学習
-> 命令微調整
-> 報酬モデル
-> 強化学習
の4つの段階を完全に経て、制御可能なコストで簡単なチャットタスクを実行できるチャットモデルを完成させます。
🚀 クイックスタート
環境のインストール
pip install bert4torch==0.4.9.post2 # 見つからない場合は -i https://pypi.org/simple を指定
スクリプトの説明
# terminalを閉じても実行を続けるには、nohup, tmux, screenを使用して起動します
# 例: nohup torchrun --standalone --nproc_per_node=4 pretrain.py --name baby > nohup.log&
# 事前学習
cd pretrain
torchrun --standalone --nproc_per_node=4 pretrain.py # 一部の場合、ddp訓練中に崩れることがあります。`export NCCL_IB_DISABLE=1` を設定する必要があります
# 事前学習推論(コマンドラインチャット)
cd pretrain
python infer.py # python infer_transformers.py
# 命令微調整訓練
cd sft
python sft.py
# 命令微調整推論(コマンドラインチャット)
cd sft
python infer.py # python infer_transformers.py
# ckptをtransformersで実行可能な形式に変換
cd docs
python convert.py
✨ 主な機能
- bert4torch 訓練フレームワークを使用しており、コードが簡潔で効率的です。
- 訓練されたチェックポイントは、
transformers
パッケージを使用して直接推論できます。 - 訓練時のメモリ使用量を最適化しています。
- 完全な訓練ログを提供し、再現性の比較が可能です。
📦 事前学習
4.1 事前学習コーパス(baby-llama2-chinese から)
中国語事前学習コーパス | 説明 |
---|---|
Wiki中国語百科 | 中国語Wikipediaのデータ |
BaiduBaiKe パスワード: bwvb | 中国語BaiduBaiKeのデータ |
C4_zh:part1 パスワード:zv4r;C4_zh:part2 パスワード:sb83;C4_zh:part3 パスワード:l89d | C4は利用可能な最大の言語データセットの1つで、インターネット上の365億を超えるドメインから収集された1560億を超えるトークンを含んでいます。C4_zhはその一部です |
WuDaoCorpora | 中国語悟道がオープンソースで提供する200Gのデータ |
shibing624/medical | shibing624からの一部の医学分野の事前学習データ |
プロジェクトでは、ChatGLM2 - 6Bのトークナイザーで処理された事前学習コーパスをオープンソース化しており、合計634億トークンのデータ量です。リンクは以下の通りです:[Corpus](https://pan.baidu.com/s/18o4gF - G68qfgOGWQXgAg3g) パスワード:6unr。
4.2 事前学習ウェイト
事前学習ウェイト | 事前学習コーパス | ダウンロード先 |
---|---|---|
MiniLLM - L12_H1024_A8 - NoWudao | (140億トークン) Wiki中国語百科、BaiduBaiKe、hibing624/medical、C4_zh |
[百度雲](https://pan.baidu.com/s/1ixjSR3IW9YXRhQ08RX - lMQ?pwd=lrj5), [HuggingFace](https://huggingface.co/Tongjilibo/MiniLLM - L12_H1024_A8 - NoWudao) |
MiniLLM - L12_H1024_A8 - WithWudao | (640億トークン) Wiki中国語百科、BaiduBaiKe、shibing624/medical、C4_zh、WuDaoCorpora |
[百度雲](https://pan.baidu.com/s/1ixjSR3IW9YXRhQ08RX - lMQ?pwd=lrj5), [HuggingFace](https://huggingface.co/Tongjilibo/MiniLLM - L12_H1024_A8 - WithWudao) |
4.3 事前学習プロセス
- 訓練パラメータ設定と訓練時間
ウェイト | 事前学習設定 | ハードウェア使用量と訓練時間 |
---|---|---|
MiniLLM - L12_H1024_A8 - NoWudao | 140億トークン; btz = 32 * 4gpu; lr = 3e - 4; warmup_steps = 5000 | 4×A800(80G)、単一GPUの使用量約60G、所要時間20時間 |
MiniLLM - L12_H1024_A8 - WithWudao | 640億トークン; btz = 32 * 4gpu; lr = 1.5e - 4; warmup_steps = 5000 | ✅ 4×A800(80G)、単一GPUの使用量約60G、所要時間3.79日 ✅ baby - llama2プロジェクトでは2×4090、所要時間26日 ✅ 個人テストでは単一GPUでbtz = 8の場合、GPU使用量約17G、所要時間不明(勾配累積を組み合わせることで使用量をさらに削減できます) |
4.4 事前学習モデルの呼び出し
# 以下の2行はネットワーク状況に応じて追加してください
import os
os.environ['HF_ENDPOINT'] = "https://hf-mirror.com"
from transformers import AutoTokenizer, LlamaForCausalLM
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model_name = 'Tongjilibo/MiniLLM-L12_H1024_A8-WithWudao' # 'Tongjilibo/MiniLLM-L12_H1024_A8-NoWudao'
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = LlamaForCausalLM.from_pretrained(model_name).to(device)
query = '王鹏是一名'
inputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)
output_ids = model.generate(inputs)
response = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)
print(response)
4.5 事前学習の続き書き結果
- MiniLLM - L12_H1024_A8 - NoWudao
ユーザー:小明学习优异、身体健康、是一名
続き書き:小明学习优异、身体健康、是一名优秀的大连理工大学学生,从大学一年级起,他就对体育十分痴迷,成绩名列前茅,还参加了多项比赛,在全校体育活动中,他成绩名列前茅,被大连理工大学授予“优秀运动员”称号。
2006年,高中二年级,小明的同学杨帆来到大连理工大学,他决心要改变自己的命运。他每天放学后,都会跑到操场上练习篮球,练到下午三点多钟时,小明的篮球技术开始显现出来,他的篮球动作敏捷,力量大,而且,他经常利用空档时间练习跳投
ユーザー:床前明月光,疑是地上霜。举头望明月,
続き書き:床前明月光,疑是地上霜。举头望明月,低头思故乡……”
我读着这些诗句时也倍感亲切和亲切了!
- MiniLLM - L12_H1024_A8 - WithWudao
ユーザー:小明学习优异、身体健康、是一名
続き書き:小明学习优异、身体健康、是一名优秀的教师。他为人诚实、有责任心。在课堂上,他能认真听讲,积极思考,对每节课都积极举手发言。在课后,他主动要求帮助老师,认真做好作业,按时完成老师布置的作业,受到同学们的好评。
ユーザー:床前明月光,疑是地上霜。举头望明月,
続き書き:床前明月光,疑是地上霜。举头望明月,低头思故乡。”この詩は、中秋の夜の暖かさと静けさを描写するだけでなく、作者の故郷への深い愛着と郷愁を表しています。「月上柳梢頭」は、月下の景色を描写しています。「欲将心事付瑶琴」は、別れの思いを訴えようとすることを指しています。「挙頭望明月」は、中秋の夜に月が高く掲げられ、皓月が空に輝き、星が輝く景色を描写しています。「低頭思故郷」は、故郷への深い思いを表しています。
この詩は、主に象徴的な手法を用いています。
📦 命令微調整
5.1 命令微調整コーパス(選択された利用可能なデータセット)
データセット名 | 説明 |
---|---|
[shibing624/alpaca - zh](https://huggingface.co/datasets/shibing624/alpaca - zh) | Alpaca方法を参考にGPT4から得られたself - instructデータ、約5万件 |
BelleGroup/Belle - 0.5M - cn | BELLEプロジェクトによって生成された約50万件の中国語命令データを含む |
BelleGroup/Belle - 1M - cn | BELLEプロジェクトによって生成された約100万件の中国語命令データを含む |
BelleGroup/Belle - school_math_0.25M | Belleが公開した0.25Mの数学命令データセット |
BelleGroup/Belle - multiturn_chat_0.8M | Belleが公開した0.8Mの多ターンタスク対話データセット |
[YeungNLP/firefly - train - 1.1M](https://huggingface.co/datasets/YeungNLP/firefly - train - 1.1M) | 流螢の23種類の一般的な中国語NLPタスクのデータで、多くの中華文化関連のデータ(対句、詩の作成、文言文の翻訳、散文、金庸小説など)が構築されています。各タスクについて、人工的にいくつかの命令テンプレートが作成され、データの高品質と豊富さが保証されています。データ量は115万件です。 |
[fnlp/moss - 002 - sft - data](https://huggingface.co/datasets/fnlp/moss - 002 - sft - data) | MOSS - 002で使用される多ターン対話データで、有用性、忠実性、無害性の3つのレベルをカバーしており、text - davinci - 003によって生成された約57万件の英語対話と59万件の中国語対話を含んでいます。 |
[fnlp/moss - 003 - sft - data](https://huggingface.co/datasets/fnlp/moss - 003 - sft - data) | moss - moon - 003 - sftで使用される多ターン対話データで、MOSS - 002の内部テスト段階で収集された約10万件のユーザー入力データとgpt - 3.5 - turboを基に構築されています。moss - 002 - sft - dataと比較して、moss - 003 - sft - dataはより実際のユーザー意図の分布に合致し、より細かい有用性のカテゴリーラベル、より広範な無害性データ、より長い対話ターンを含んでおり、約110万件の対話データが含まれています。 |
shareAI/CodeChat | 主に論理推論、コード質問、コード生成に関連するコーパスサンプルを含んでいます。 |
[shareAI/ShareGPT - Chinese - English - 90k](https://huggingface.co/datasets/shareAI/ShareGPT - Chinese - English - 90k) | 中国語と英語の平行バイリンガルの高品質な人間とAIの質問応答データセットで、実際の複雑なシナリオでのユーザーの質問をカバーしています。 |
[deepctrl/deepctrl - sft - data](https://www.modelscope.cn/datasets/deepctrl/deepctrl - sft - data/summary) | 匠数大モデルSFTデータセットは、匠数科技によって精心に収集・整理された高品質なデータセットで、1000万件のデータを含む中国語データセットと200万件のデータを含む英語データセットがあります。 |
5.2 命令微調整ウェイト
命令微調整ウェイト | コーパス | ダウンロード先 |
---|---|---|
MiniLLM - L12_H1024_A8 - WithWudao - SFT_Alpaca | [shibing624/alpaca - zh](https://huggingface.co/datasets/shibing624/alpaca - zh) | [百度雲](https://pan.baidu.com/s/1ixjSR3IW9YXRhQ08RX - lMQ?pwd=lrj5), [HuggingFace](https://huggingface.co/Tongjilibo/MiniLLM - L12_H1024_A8 - WithWudao - SFT_Alpaca) |
5.3 命令微調整訓練プロセス
- 訓練パラメータ設定と訓練時間
ウェイト | 事前学習設定 | ハードウェア使用量と訓練時間 |
---|---|---|
MiniLLM - L12_H1024_A8 - NoWudao | [shibing624/alpaca - zh](https://huggingface.co/datasets/shibing624/alpaca - zh)データセット; btz = 8; lr = 2e - 5; 5エポック | 単一GPUの4090、VRAM17G、所要時間45分 |
5.4 命令微調整モデルの呼び出し
# 以下の2行はネットワーク状況に応じて追加してください
import os
os.environ['HF_ENDPOINT'] = "https://hf-mirror.com"
from transformers import AutoTokenizer, LlamaForCausalLM
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model_name = 'Tongjilibo/MiniLLM-L12_H1024_A8-WithWudao-SFT_Alpaca'
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = LlamaForCausalLM.from_pretrained(model_name).to(device)
query = '你好'
query = f'<human>{query}<robot>'
inputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)
output_ids = model.generate(inputs)
response = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)[len(query):]
print(response)
5.5 命令微調整チャット結果
- MiniLLM - L12_H1024_A8 - WithWudao - SFT_Alpaca
ユーザー:你好
応答:你好!很高兴见到你。
ユーザー:你能做什么?
応答:你好!我是一个人工智能助手,有什么我可以为你做的吗?
ユーザー:番茄炒蛋怎么制作?
応答:如果你想要制作一个番茄炒蛋,那么下面这些步骤可能会帮助你:
1. 准备食材:准备好鸡蛋、盐、香菜、胡萝卜丝、黄瓜丝等食材。
2. 清洗鸡蛋:在搅拌碗中打散鸡蛋,使其表面可以清洁。
3. 准备材料:准备一个锅,倒入适量的水,将鸡蛋液倒入锅中。
4. 煮鸡蛋:用汤锅或锅煎至鸡蛋表面金黄色,熟透即可。
5. 炒蔬菜:在锅中加入适量的油,将胡萝卜丝和黄瓜丝个人喜欢的,翻炒几下,直到胡萝卜熟透。
6. 加入鸡蛋:从锅中取出鸡蛋,倒入锅中。
7. 调味:将炒好的鸡蛋倒入锅中,与蔬菜一起翻炒几下即可。
注意:想要炒出更丰富的蔬菜味道,可以适当加入适量的盐和香菜,增加风味。
📄 ライセンス
このプロジェクトは、Apache - 2.0ライセンスの下で公開されています。
📚 更新履歴
- 20240316:初期コミット、事前学習モデル
MiniLLM - MiniLLM - L12_H1024_A8 - NoWudao
とMiniLLM - MiniLLM - L12_H1024_A8 - WithWudao
;SFTモデルMiniLLM - L12_H1024_A8 - WithWudao - SFT_Alpaca
Phi 2 GGUF
その他
Phi-2はマイクロソフトが開発した小型ながら強力な言語モデルで、27億のパラメータを持ち、効率的な推論と高品質なテキスト生成に特化しています。
大規模言語モデル 複数言語対応
P
TheBloke
41.5M
205
Roberta Large
MIT
マスク言語モデリングの目標で事前学習された大型英語言語モデルで、改良されたBERTの学習方法を採用しています。
大規模言語モデル 英語
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERTはBERT基礎モデルの蒸留バージョンで、同等の性能を維持しながら、より軽量で高効率です。シーケンス分類、タグ分類などの自然言語処理タスクに適しています。
大規模言語モデル 英語
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instructは多言語大規模言語モデルで、多言語対話ユースケースに最適化されており、一般的な業界ベンチマークで優れた性能を発揮します。
大規模言語モデル 英語
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM - RoBERTaは、100言語の2.5TBのフィルタリングされたCommonCrawlデータを使って事前学習された多言語モデルで、マスク言語モデリングの目標で学習されています。
大規模言語モデル 複数言語対応
X
FacebookAI
9.6M
664
Roberta Base
MIT
Transformerアーキテクチャに基づく英語の事前学習モデルで、マスク言語モデリングの目標を通じて大量のテキストでトレーニングされ、テキスト特徴抽出と下流タスクの微調整をサポートします。
大規模言語モデル 英語
R
FacebookAI
9.3M
488
Opt 125m
その他
OPTはMeta AIが公開したオープンプリトレーニングトランスフォーマー言語モデルスイートで、パラメータ数は1.25億から1750億まであり、GPT-3シリーズの性能に対抗することを目指しつつ、大規模言語モデルのオープンな研究を促進するものです。
大規模言語モデル 英語
O
facebook
6.3M
198
1
transformersライブラリに基づく事前学習モデルで、様々なNLPタスクに適用可能
大規模言語モデル
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1はMetaが発表した多言語大規模言語モデルシリーズで、8B、70B、405Bのパラメータ規模を持ち、8種類の言語とコード生成をサポートし、多言語対話シーンを最適化しています。
大規模言語モデル
Transformers 複数言語対応

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5ベーシック版はGoogleによって開発されたテキスト-to-テキスト変換Transformerモデルで、パラメータ規模は2.2億で、多言語NLPタスクをサポートしています。
大規模言語モデル 複数言語対応
T
google-t5
5.4M
702
おすすめAIモデル
Llama 3 Typhoon V1.5x 8b Instruct
タイ語専用に設計された80億パラメータの命令モデルで、GPT-3.5-turboに匹敵する性能を持ち、アプリケーションシナリオ、検索拡張生成、制限付き生成、推論タスクを最適化
大規模言語モデル
Transformers 複数言語対応

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-TinyはSODAデータセットでトレーニングされた超小型対話モデルで、エッジデバイス推論向けに設計されており、体積はCosmo-3Bモデルの約2%です。
対話システム
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
RoBERTaアーキテクチャに基づく中国語抽出型QAモデルで、与えられたテキストから回答を抽出するタスクに適しています。
質問応答システム 中国語
R
uer
2,694
98