🚀 Firefly(流萤): 中国語対話型大規模言語モデル
Firefly(流萤)は、中国語の対話型大規模言語モデルです。このモデルは、指令微調整(Instruction Tuning)を用いて中国語データセットで最適化されています。また、語彙表の裁剪、ZeRO、テンソル並列などの技術を採用することで、メモリ消費を効果的に削減し、訓練効率を向上させています。訓練においては、より少ないモデルパラメータと計算資源を使用しています。
本プロジェクトでは、中国文化に関連する多くのデータを構築し、モデルのこの方面での性能を向上させています。例えば、対聯、詩作り、文言文翻訳、散文、金庸小説などです。
「流螢」は中国の伝統文化の象徴です。「腐草為螢」という言葉には悲しみを含んでいますが、螢の光は小さいながらも、夜空を照らすことができます。このプロジェクトの名前は杜牧の「秋夕」から取られています。「銀燭秋光冷画屏、軽羅小扇撲流螢」。このプロジェクトが流螢のように微かな光を放ち、中国語NLPのオープンソースコミュニティに少しでも貢献できることを願っています。
《詠螢火》
唐・李白
雨打灯難滅、
風吹色更明。
若飛天上去、
定作月邊星。
🚀 クイックスタート
プロジェクトのアドレスはこちらです:Firefly(流萤): 中国語対話型大規模言語モデル。もしこのモデルが役に立ったと思ったら、GitHubのプロジェクトでスターをつけていただけると幸いです。

✨ 主な機能
- データセット:firefly-train-1.1M は、110万の中国語多タスク指令微調整データセットです。23種類の一般的な中国語NLPタスクの指令データを含んでいます。各タスクについて、人工的にいくつかの指令テンプレートを作成し、データの質と豊富さを保証しています。
- モデル裁剪:LLMPruner:大規模言語モデル裁剪ツール を使用して、語彙表の裁剪技術で多言語大規模言語モデルの重みを裁剪します。事前学習の知識を保持したまま、モデルのパラメータ数を効果的に減らし、訓練効率を向上させます。また、裁剪後のさまざまなパラメータ規模のBloomモデルの重みを共有しています。
- 重み共有:bloom-1b4-zh と bloom-2b6-zh をベースに指令微調整を行い、2種類のパラメータ規模の中国語モデル firefly-1b4 と firefly-2b6(訓練終了後に共有予定) を取得します。
- 訓練コード:オープンソースの訓練コードで、テンソル並列、ZeRO、Gemini異種メモリ空間管理などの大規模モデル訓練戦略をサポートしています。1枚のGPUで1B - 2Bのパラメータ規模のモデルを訓練できます(整理後にオープンソース予定)。
📦 インストール
本プロジェクトのインストールに関する具体的な手順は、まだ提供されていません。
💻 使用例
基本的な使用法
from transformers import BloomTokenizerFast, BloomForCausalLM
device = 'cuda'
path = 'YeungNLP/firefly-1b4'
tokenizer = BloomTokenizerFast.from_pretrained(path)
model = BloomForCausalLM.from_pretrained(path)
model.eval()
model = model.to(device)
text = input('User:')
while True:
text = '<s>{}</s></s>'.format(text)
input_ids = tokenizer(text, return_tensors="pt").input_ids
input_ids = input_ids.to(device)
outputs = model.generate(input_ids, max_new_tokens=200, do_sample=True, top_p=0.85, temperature=0.35,
repetition_penalty=1.2, eos_token_id=tokenizer.eos_token_id)
rets = tokenizer.batch_decode(outputs)
output = rets[0].strip().replace(text, "").replace('</s>', "")
print("Firefly:{}".format(output))
text = input('User:')
📚 ドキュメント
モデル裁剪
本プロジェクトでは、まず LLMPrunerプロジェクト を使用して、元のBloomモデルの語彙表を裁剪します。常用の中国語と英語の語彙表のみを取り出し、モデルのパラメータ数を大幅に削減した後、指令微調整を行います。
Bloomは多言語モデルで、多言語に対応するために語彙表が25万もあります。中国語の分野では、大部分の語彙表は使われません。私たちは冗長な語彙表を削減し、多言語モデルから常用の中国語と英語の語彙表を抽出しました。最終的に語彙表は25万から46145に減少し、元の18.39%に縮小されました。事前学習の知識を保持したまま、パラメータ数を効果的に減らし、訓練効率を向上させました。
私たちは bloom-1b4-zh と bloom-2b6-zh をベースに指令微調整を行い、2種類のパラメータ規模の中国語モデル firefly-1b4 と firefly-2b6(訓練終了後に共有予定) を取得しました。
データセット
私たちは23の一般的な中国語データセットを収集し、各タスクについて人工的にいくつかの指令テンプレートを作成し、データの質と豊富さを保証しました。データ量は115万で、訓練セット firefly-train-1.1M を形成しました。データの分布は以下の図の通りです。

このデータセットに Belle-train_0.5M_CN を追加し、最終的に165万の訓練データを得ました。各データの形式は以下の通りで、タスクタイプ、入力、目標出力を含んでいます。
{
"kind": "ClassicalChinese",
"input": "将下面句子翻译成现代文:\n石中央又生一树,高百余尺,条干偃阴为五色,翠叶如盘,花径尺余,色深碧,蕊深红,异香成烟,著物霏霏。",
"target": "大石的中央长着一棵树,一百多尺高,枝干是彩色的,树叶有盘子那样大,花的直径有一尺宽,花瓣深蓝色,花中飘出奇异的香气笼罩着周围,如烟似雾。"
}
訓練データセットのトークン長の分布は以下の図の通りで、大部分のデータの長さは600未満です。

訓練の詳細
訓練時には、各サンプルの入力と目標を以下の形式に処理してからモデルに入力します。
<s>input</s></s>target</s>
モデルの最大入力を512に設定し、入力部分は損失関数の計算には含まれず、目標部分の損失関数のみを計算します。訓練のハイパーパラメータ設定は以下の表の通りです。
パラメータ |
firefly-1b4 |
firefly-2b6 |
Batch size |
16 |
8 |
Learning rate |
3e-5 |
3e-5 |
Warmup step |
3000 |
3000 |
Lr schedule |
cosine |
cosine |
Max_seq_length |
512 |
512 |
Training step |
90k |
- |
🔧 技術詳細
本プロジェクトでは、指令微調整(Instruction Tuning)を用いて中国語データセットでモデルを最適化しています。また、語彙表の裁剪、ZeRO、テンソル並列などの技術を採用することで、メモリ消費を効果的に削減し、訓練効率を向上させています。
📄 ライセンス
本プロジェクトのコード、データ、モデルなどは学術研究のみに使用することができ、商業目的や社会に危害をもたらす目的には使用できません。
引用
本プロジェクトのデータ、コード、モデルを使用する場合は、以下のように引用してください。
@misc{Firefly,
author = {Jianxin Yang},
title = {Firefly(流萤): 中文对话式大语言模型},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/yangjianxin1/Firefly}},
}
フォロー

生成結果
以下はfirefly-1b4の一部の生成結果です。
入力 |
出力 |
生成5条QQ音乐热评 |
1、这首歌是周杰伦写给张惠妹的,但是张惠妹唱出了自己的风格。😊2、我表白过,她婉拒了,但我还是厚着脸皮找她去KTV唱歌,后来我们成为了无话不谈的好朋友,她告诉我她找到真爱了,我祝福他们;她也跟我说生活费花光了,我告诉她我这里还有一千块钱,咱俩一人五百凑合着熬过去,我把自己仅有的五百元生活费汇给了她。我知道再也见不到面了,但我相信爱情,只要心中有爱,即使没有结局,我也愿意。 3、“你走以后 我才发现 原来我一直以为的幸福 都只是我以为”4、张惠妹的声音真的很好听啊,而且她的歌都很有味道,尤其是这首《我要快乐》,歌词也写的非常好,希望她能一直这样下去,加油!5、好喜欢这首歌,感觉很温暖,很喜欢这种歌曲,虽然我不是一个特别喜欢的人,但我觉得这首歌可以单曲循环很多遍,每次听到都会有种想哭的感觉,觉得很美好,希望大家也可以来听听,谢谢啦 |
我想让你做一名记者。您将报道突发新闻,撰写专题报道和评论文章,开发用于验证信息和发现来源的研究技术,遵守新闻道德,并使用您自己独特的风格提供准确的报道。我的第一个建议请求是“我需要帮助写一篇关于世界主要城市空气污染的文章。” |
作为AI语言模型,我没有个人喜好或情感,因此无法为你提供具体的写作建议。但是,以下是一些一般性的建议:1. 确定主题:确定你要报道的话题,例如“全球气候变化的影响”或“环境问题”等。2. 研究相关问题:通过研究相关的科学研究和数据来了解该话题,以便更好地理解该话题。3. 收集信息:在搜集有关该话题的信息时,需要注意保护个人隐私和信息安全。4. 使用简洁明了的语言表达观点:尽量避免使用过于复杂的词汇和句子结构,而是要以简单易懂的方式传达你的观点。5. 提供证据支持观点:提供有说服力的证据以支持你的观点,如科学研究、政府报告等。6. 检查格式和排版:确保你的文本清晰明了,易于阅读和理解。7. 最后,记得保持客观和公正性:不要过度渲染自己的立场,而应该始终遵循新闻道德和法律规定,以确保报道的真实性和可信度。 |
假设你是一个心理咨询师,你会如何帮助患者走出阴霾,重拾对生活的希望,请给出你的具体步骤和做法 |
1. 了解患者的情感状态和问题背景。2. 根据患者的需求和症状制定个性化的治疗计划。3. 鼓励患者表达自己的想法和感受,并给予适当的反馈和支持。4. 引导患者进行积极的思考和行动,提高他们的自我意识和积极性。5. 在必要时,建议患者寻求专业心理医生的帮助。 |
昨晚搬砖太晚,起不来,帮我胡诌一个请假条,让我好发给领导请假 |
尊敬的领导:您好!我于 [日期] 晚上 [时间] 在公司加班,由于工作量大,无法按时完成。因此,我想申请请假一天。具体请假内容如下:[简要说明原因]。谢谢您理解和采纳。此致 敬礼! |
作为一名职场新人,如何制定目标并顺利实现个人职业规划?请有条理的列出行动提纲出来 |
1.明确目标:确定自己的职业目标和职业发展方向。2.了解行业:研究当前和未来的职业领域和发展趋势。3.学习新知识:通过参加培训、阅读书籍或参与实习等方式获取新的知识和技能。4.建立人际关系:与同业交流,加入相关组织或社团等,扩大社交圈。5.寻找机会:在公司内部或者外部寻找机会,如实习、兼职工作、志愿活动等。6.持续学习:不断提升自身能力和专业水平,保持竞争力。 |
一名画家如何利用社交媒体扩大自身的行业影响力? |
1. 创建专业账号,如Instagram、Twitter等,以展示自己的作品和经验。2. 利用Facebook、Twitter等平台与同业人士建立联系,分享他们的经验和见解。3. 在社交媒体平台上发布有价值的内容,如图片、视频或文字,以提高自己的知名度。4. 参加各种活动,如展览、音乐会、艺术展等,以接触更多的人并扩展自己的影响范围。 |
请为前往日本旅游的用户规划一份完整的行程安排。 |
以下是一份可能的行程安排:1. 抵达东京,参观淺草寺和皇居。2. 在上野公园散步或骑自行车游览。3. 到大阪城欣赏美丽的自然风光。4. 在大阪市中心逛街或者品尝美食。5. 在箱根岛体验冲浪、潜水等水上活动。6. 最后一天在京都的清水寺观赏传统文化艺术表演。7. 返回家中并结束旅程。 |
把这句话翻译成中文:Knowledge can be acquired from many sources. These include books, teachers and practical experience, and each has its own advantages. The knowledge we gain from books and formal education enables us to learn about things that we have no opportunity to experience in daily life. |
知识可以从许多来源获得,包括书籍、教师和实践经验。每个来源都有自己的优点。从这些来源获得的知识使我们能够了解我们日常生活中所没有的机会所体验的。 |
翻译成英文:简言之,当我们努力追求目标时,永不放弃是很重要的。不管最后有没有成功,我们都会学到一些东西,而我们所学到的东西,将会使自己成为一个更好、更有自信的人。 |
In short, we must never give up when we strive for our goals. Whether the ends are successful or not, what we learned will make us better and more confident in life. |
请将以下新闻分类为体育、政治或科技:《年薪超4亿欧!曝利雅得新月正式报价梅西 球员首选留欧洲》 |
体育 |
怎么让自己精力充沛,列5点建议 |
1. 保持充足的睡眠和休息时间。2. 多进行体育锻炼,如散步、慢跑或骑自行车等。3. 饮食均衡,摄入足够的蛋白质、碳水化合物和脂肪。4. 喝足够的水,每天至少八杯。5. 避免过度饮酒和吸烟。 |
明天就假期结束了,有点抗拒上班,应该怎么办? |
1. 制定一个详细的计划和目标,包括完成的任务、时间分配以及优先级。2. 将任务分为小部分,并逐步完成。不要过度承诺,以免压力过大。3. 给自己留出一些弹性时间,以应对突发情况或临时调整计划的情况。4. 与家人朋友交流沟通,分享自己的感受和想法,寻求支持和建议。5. 在工作期间保持积极心态,学会放松自己,享受生活。 |
我要去北京旅游,给我介绍一些旅游景点 |
1. 故宫:中国明清两代的皇宫,是中国最著名的古代建筑之一。2. 长城:世界上最长的防御性墙体,是中国的标志性景观。3. 天安门广场:世界闻名的广场和城门,也是中国历史文化的重要场所。4. 王府井大街:具有浓郁的中国风情的购物街,有各种美食、商店和文化活动。5. 颐和园:清代皇家园林,是世界级的文化遗产 |
以下はFireflyモデルのより特色ある例です。Fireflyは文言文、詩詞、対聯、武侠小説、散文、歌詞、コピーライティング生成、感情分析などの中国語タスクに非常に優れた性能を発揮します。
入力 |
出力 |
文言文翻译:土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。 |
答案:土地平坦宽广,房屋整齐,有良田、美池和桑树等树木,道路交错,鸡狗之声不绝于耳。 |
将下面的句子翻译成文言文:我要好好学习,成为国家的栋梁,建立丰功伟业 |
吾當勤學篤行,以為國之棟梁,建不世之功業焉。 |