模型概述
模型特點
模型能力
使用案例
🚀 Firefly(流螢):中文對話式大語言模型
Firefly(流螢)是一個開源的中文對話式大語言模型,使用指令微調技術在中文數據集上進行調優。它採用了詞表裁剪、ZeRO、張量並行等技術,有效降低顯存消耗並提高訓練效率。項目構造了許多與中華文化相關的數據,以提升模型在對聯、作詩、文言文翻譯等方面的表現。
🚀 快速開始
項目地址:Firefly(流螢): 中文對話式大語言模型 , 如果您覺得此模型對您有幫助,請like此模型並在Github項目中star我們。
Firefly(流螢) 名稱取自杜牧的《秋夕》:“銀燭秋光冷畫屏,輕羅小扇撲流螢”。流螢是中華傳統文化的一個符號,雖帶有悲憫意味,但也能憑藉微光點亮夜空,項目也希望能為中文NLP開源社區貢獻力量。
《詠螢火》
唐.李白
雨打燈難滅,
風吹色更明。
若飛天上去,
定作月邊星。
✨ 主要特性
- 數據集優質:firefly-train-1.1M 是一份高質量的包含1.1M中文多任務指令微調數據集,涵蓋23種常見的中文NLP任務的指令數據。每個任務由人工書寫若干指令模板,保證了數據的高質量與豐富度。
- 模型裁剪高效:LLMPruner:大語言模型裁剪工具 ,使用詞表裁剪技術對多語種大語言模型進行權重裁剪,在保留預訓練知識的前提下,有效減少模型參數量,提高訓練效率,並分享裁剪後的多種參數規模的Bloom模型權重。
- 權重分享豐富:在bloom-1b4-zh 和bloom-2b6-zh 的基礎上,進行指令微調,獲得兩種參數規模的中文模型:firefly-1b4 和firefly-2b6
- 訓練代碼開源:支持張量並行、ZeRO、Gemini異構內存空間管理等大模型訓練策略。可實現僅使用一張顯卡,訓練1B - 2B參數量的模型(待整理後開源)。
💻 使用示例
基礎用法
from transformers import BloomTokenizerFast, BloomForCausalLM
device = 'cuda'
path = 'YeungNLP/firefly-2b6'
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.7, 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:')
🔧 技術細節
在訓練時,對於每條樣本,我們將input與target處理成如下格式,然後輸入到模型中。
<s>input</s></s>target</s>
我們將模型的最大輸入設置為512,input部分不參與計算loss,只計算target部分的損失函數。訓練的超參數設置如下表所示。
參數 | 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 | 260k |
訓練數據集 | 160萬 | 210萬 |
⚠️ 侷限性和使用限制
經過詞表裁剪後,我們的模型參數量僅為1.4B和2.6B,參數量遠遠小於ChatGPT和LLaMA等上百億上千億的模型,甚至遠遠小於當前主流如Belle、ChatGLM等7B左右的模型。所以在效果上仍存在以下問題:
- 對於事實性知識,容易產生錯誤的回覆。
- 由於未經過無害化微調,可能會產生歧視、危害、違背倫理道德的言論。
- 在代碼、推理上的能力仍有欠缺。
基於以上模型的侷限性,我們要求本項目的代碼、數據、模型等僅用於學術研究,不得用於商業用途,且不得用於對社會造成危害的用途。
📄 引用
若使用本項目的數據、代碼或模型,請引用本項目。
@misc{Firefly,
author = {Jianxin Yang},
title = {Firefly(流螢): 中文對話式大語言模型},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/yangjianxin1/Firefly}},
}
👀 關注我們
🎉 生成效果
代碼生成
firefly-2b6具備一定的代碼生成能力
- 幫我用python寫一個冒泡排序算法。
以下是Python的冒泡排序算法的代碼:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 測試
arr = [64, 34, 25, 12]
sorted_arr = bubble_sort(arr)
print("原始數組:", arr)
print("排序後的數組:", sorted_arr)
輸出結果為:
原始數組: [25, 12, 64, 34]
排序後的數組: [12, 25, 34, 64]
該算法的時間複雜度為O(n^2)
- 用python實現一個快速排序算法,輸入為一個數組,返回排序好之後的數組。
以下是使用Python實現的快速排序算法的代碼:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
該函數接受一個整數列表作為參數,並按照從小到大的順序對列表進行排序。如果列表長度小於等於1,則直接返回原始列表;否則,將中間元素作為新的pivot,然後對其餘的元素遞歸調用快速排序算法,直到整個列表有序為止。
在實際應用中,可以使用該函數來對任意大小的數組進行快速排序操作。
- 用python寫一個二分查找算法 以下是一個簡單的Python代碼實現:
def binary_search(arr, x):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == x:
return mid
elif arr[mid] < x:
left = mid + 1
else:
right = mid - 1
return -1
該函數接受兩個參數arr
和要查找的元素x
,並返回在數組中與目標值最接近的索引。如果目標值不存在,則返回 -1。
- 寫一個函數,計算數組中偶數的個數,輸入為數組,輸出為偶數的個數 以下是Python代碼實現:
def count_even_numbers(nums):
even_count = 0
for num in nums:
if num % 2 == 0:
even_count += 1
return even_count
該函數首先使用for循環遍歷整個數組,然後判斷每個元素是否為偶數。如果是偶數,則將其添加到even_count變量中。最後返回even_count的值即可得到數組中偶數的數量。
- 用html生成一個教務管理系統的登錄界面,要求包含用戶名、密碼輸入框和登錄按鈕
<html>
<head>
<title>教務管理系統</title>
</head>
<body>
<h1>歡迎使用本系統!</h1>
<form action='set_username' method='POST'>
<label for="username">請輸入您的用戶名:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">請輸入您的密碼:</label>
<input type="password" id="password" name="password"><br><br>
<button type="submit" value="登錄">登錄</button>
</form>
</body>
</html>
其他示例
相比於firefly-1b4,firefly-2b6在其他方面的能力也得到了提升,包括在文言文翻譯、對聯、古詩詞創作等。
input | output |
---|---|
把下面的文本翻譯成文言文:到了春風和煦,陽光明媚的時候,湖面平靜,沒有驚濤駭浪,天色湖光相連,一片碧綠,廣闊無際;沙洲上的鷗鳥,時而飛翔,時而停歇,美麗的魚游來游去,岸上與小洲上的花草,青翠欲滴。有時大片煙霧完全消散,皎潔的月光一瀉千里,波動的光閃著金色,靜靜的月影像沉入水中的玉璧,漁夫的歌聲在你唱我和地響起來,這種樂趣真是無窮無盡啊! | 及春日和暖,晴景霽然,波平無瀾,天影連相,一碧萬頃,洲渚鷗鷺,或翔或止,佳魚往來,岸上草木,青翠有餘,或大霧頓消,皓月一灑千里,浮光金輝,幽影沈璧,漁人歌詠,自唱我與,此樂何極! |
把下面的文本翻譯成現代文:林盡水源,便得一山,山有小口,彷彿若有光。便舍船,從口入。初極狹,才通人。復行數十步,豁然開朗。土地平曠,屋舍儼然,有良田、美池、桑竹之屬。阡陌交通,雞犬相聞。其中往來種作,男女衣著,悉如外人。 | 走到盡頭,只見一座山,山上有個小洞,好像有光亮。於是就停了船,從小洞進去,開始十分狹窄,只能容得下一個人通過,又走了幾十步,豁然開朗起來,土地平坦寬闊,房屋儼然,有良田、美池、桑竹之類,田間道路縱橫交錯,雞狗相聞,這裡來往的人家都在耕種,男女的穿著衣服,全都像外邊的人一樣。 |
對聯:雀躍黃山,仙人指路松迎客 | 下聯:龍騰紫氣,玉女牽衣月送春 |
以詠春為題目,幫我寫一首古詩,要求包含燕子、春風、柳樹等元素。 | 燕飛柳絮舞,春風吹綠波。 花開如錦繡,鳥語似笙歌。 鶯啼聲不斷,蝶舞影婆娑。 人間有真樂,何必更尋多。 |
以詠梅為題目,幫我寫一首古詩,要求包含梅花、白雪等元素。 | 寒枝瘦骨傲霜風,清香不減梅花紅。玉潔冰姿照人眼,素肌如雪映寒空。 |
根據開頭生成古詩:明月松間照 | 清風竹裡吹。夜深人靜處,獨坐一孤燈。 |
寫一段關於日落的描述,要求細節生動,景色美好,要求200字。 | 夕陽西下,天空漸漸染上了橙紅色和粉色,雲朵也變得柔和起來,像棉花糖一樣柔軟。太陽的餘暉灑在草地上,形成了一片金色的海洋。遠處的山峰被照亮了,彷彿是一幅畫卷,讓人陶醉其中。 微風拂過,樹葉沙沙作響,似乎在為落日的美麗伴奏。鳥兒們開始歡快地歌唱,為這美麗的時刻增添了一份生機與活力。 在這美妙的時刻裡,人們的心情也隨之愉悅起來,享受著大自然的美好,感受到了生命的無限可能。這是一個值得珍藏的美好瞬間,讓我們一起留住這一刻,讓生命更加絢爛多彩! |
根據標題生成商品文案:南極人羽絨服男短款秋冬輕盈保暖休閒男裝中年男士羽絨冬裝外套 | 90後潮搭原創酷帥棉衣,精選優質面料,擁有極佳的穿著感受,立體剪裁版型,在冬天使用既保暖又時尚,簡約設計時尚百搭,凸顯幹練氣質,讓你更顯獨特魅力 |
根據輸入生成商品文案:類型:裙;風格:簡約;圖案:條紋;圖案:線條;圖案:撞色;裙型:魚尾裙;裙袖長:無袖 | 這款無袖的襯衫裙,採用了經典的黑白撞色的設計,既能展現出女性優雅的氣質感,又能凸顯出女性的幹練氣質。同時,在領口處還加入了精緻的荷葉邊點綴,讓整體的造型更加有層次感。而腰部處的收褶處理,則能夠修飾出纖細的小蠻腰線,盡顯女性曼妙的身姿曲線。 |
生成5條關於【告白氣球】的歌曲評論 | 1、我有一個朋友,她喜歡一個男生,但是那個男生不喜歡她。有一天她在群裡問:“如果你們有誰會告白?”大家紛紛點贊,最後那個女生也鼓起勇氣說出了自己的心聲“我喜歡你”。她說完這句話後哭了起來。 2、這首歌我就不收藏也不下載了,如果有人看到這句話的話麻煩點個贊,收到消息我就會進來聽一遍,算是我自己給自己的一個驚喜吧 3、其實我並不想談戀愛,可是我又不能拒絕他,我只能默默的看著他,希望他能找到比我更好的人,這樣也好,以後就不會再遇到像我這樣的人了 4、這歌很好聽,但為什麼沒人評論呢,難道只有我一個人覺得好聽嗎😔😔😔 5、喜歡一個人,就不要去打擾他,因為打擾了他,他會更傷心;愛一個人,就不要去傷害他,因為傷害了他,他會更痛苦;情深緣淺,就不要再糾纏不清,因為糾纏不清,只會讓自己更痛苦 |
金庸武俠續寫:少室山上,少林寺前,蕭峰身陷重圍,無數武林人士欲殺之而後快,除了段譽、虛竹挺身而出。 | 蕭峰眼見情勢危急,便道:“各位兄弟,咱們暫且退避,待得大事一了,再行反擊不遲。” 群雄聽他這麼說,登時肅靜無聲。 過了一會,鳩摩智朗聲說道:“慕容公子和眾位英雄,請移步到這邊來!” 眾人順著他手指望去,只見一座大屋之前站滿了人,都是身穿白袍的和尚道士,其中更有個中年道人身穿青色長袍,臉上罩有黃巾,形貌奇特詭異,正是“百歲老人”的座像。 鳩摩智又道:“慕容公子和諸位英雄,請進屋內說話。” 人群中走出一個老僧,躬身合十,走到中間的一張太師椅旁坐下,後面跟著八名僧人,分坐各席。 |
根據題目寫一首散文:荷塘月色。要求包含荷花、月光、池塘、清風、夏日等元素。 | 在夏日的午後,我漫步於荷塘邊上。微風吹拂著水面,荷葉輕輕搖曳,彷彿在向我招手。月光灑落在水面上,照亮了整個池塘。 我靜靜地坐在池塘旁邊,欣賞這美麗的夜景。遠處傳來一陣陣蛙鳴聲,彷彿是青蛙們在慶祝這個美好的夜晚。此時此刻,我的心情也變得平靜而寧靜。 突然間,一隻小鳥飛過頭頂,打破了這份寧靜。它振翅高飛,劃破天際的寂靜,為荷塘增添了一份生機和活力。 在這個充滿活力的夏天裡,荷塘成為了我們心靈的淨土,讓我們忘卻煩惱,享受生活的美好。 |
生成文本的摘要:據CGTN記者團官方微博,4月7日下午,法國總統馬克龍到訪中山大學,與學生交流。隨後馬克龍來到中山大學體育館,用法語、普通話、粵語和現場觀眾打招呼並發表演講。 馬克龍總統在演講中說,希望青年人能夠共同應對當今世界包括氣候變化、生物多樣性、科技等方面的挑戰。“當今經濟增長的挑戰尤其是脫碳增長的挑戰非常大,對於青年學子來說通過研究、創新應對挑戰非常重要。”馬克龍提到,中山大學中法核工程與技術學院為此開展了大量的相關工作。 馬克龍希望促進雙方的人文交流。通過學習歷史、語言,分享知識和科學去迎接未來。用學術促進相互交流、相互理解、促進人文交流,更好地認識彼此,瞭解彼此。“歡迎更多的青年學生學習法語,也希望法國年輕人對中國的文化、文明和語言有同樣的熱情。希望中山大學與法國合作伙伴繼續合作下去。” |
馬克龍訪問中山大學與學生交流 |
文本糾錯:值得強調得是,併購市場的完善與成熟離不開金融體喺的創新。 | 值得強調的是,併購市場的完善與成熟離不開金融體系的創新。 |
我想讓你做一名記者。您將報道突發新聞,撰寫專題報道和評論文章,開發用於驗證信息和發現來源的研究技術,遵守新聞道德,並使用您自己獨特的風格提供準確的報道。我的第一個建議請求是“我需要幫助寫一篇關於世界主要城市空氣汙染的文章。” | 作為一名記者,您可以考慮以下建議: 1. 瞭解有關全球主要城市空氣汙染的數據和信息。 2. 研究相關文獻和統計數據,以獲得更深入的見解。 3. 與當地政府和環保組織合作,以便更好地理解環境問題並制定解決方案。 4. 尋找可靠的新聞機構或專家來支持您的觀點和研究。 5. 保持清晰簡潔、易於理解的寫作風格,以確保讀者能夠輕鬆地理解您的觀點。 6. 確保在發佈之前進行充分的測試和審查,以避免任何錯誤或不必要的風險。 |
請生成一份番茄炒蛋的食譜,包括所需的食材和烹飪步驟,儘可能詳細地描述每一步驟。 | 番茄炒蛋食譜: 所需材料: - 雞蛋 2個 - 番茄 1個 - 油適量 - 鹽適量 - 胡椒粉適量 烹飪步驟: 1. 將番茄洗淨切成小塊備用。 2. 打入兩個雞蛋,加入少許鹽和胡椒粉攪拌均勻。 3. 加熱鍋子,倒入適量的油燒至七成熱。 4. 將打好的雞蛋液倒入鍋中,用鏟子迅速翻炒至凝固後盛出備用。 5. 再將同一口鍋加熱,倒入適量的油,放入切好的番茄煸炒至軟爛。 6. 把炒好的雞蛋倒回鍋中,與番茄一起快速翻炒均勻即可。 7. 最後根據口味加鹽調味即可享用。 |
請生成一篇關於人工智能對教育行業的影響的文章,包括挑戰和機遇。 | 隨著人工智能技術的不斷發展,它已經開始在各個領域發揮著越來越重要的作用。在教育領域中,人工智能也扮演了重要的角色。 一方面,人工智能可以為學生提供更加個性化的學習體驗。通過分析學生的學習習慣、興趣愛好等信息,人工智能可以根據這些信息為他們推薦最適合的課程和資源。這樣一來,學生們就可以更好地掌握知識,提高自己的學習效率。 另一方面,人工智能也可以幫助教師更好地管理教學資源。例如,一些學校已經開始使用智能化管理系統來跟蹤學生的作業和考試情況,以便及時發現問題並採取措施解決問題。此外,人工智能還可以根據學生的表現和反饋數據進行自我評估,從而改進教學質量。 然而,人工智能技術也會帶來一些挑戰。首先,人工智能需要大量的數據和計算能力來進行訓練和分析,這可能會導致成本過高。其次,人工智能算法可能存在偏見和不公平性,因此需要進行監管和控制。最後,人工智能技術還需要不斷地更新和升級,以適應新的技術和需求。 總之,人工智能對教育行業帶來了巨大的影響,既有積極的方面也有負面的方面。我們需要認真思考如何平衡利弊,實現人工智能與教育的良性互動和發展。 |
情人節快到了,幫我寫一首情詩,送給我女朋友 | 你是我生命中的陽光, 你的微笑是我最美的風景。 在我心中,你是一顆星辰, 閃耀著無盡的光芒。 無論風雨還是晴天, 我都願意與你相伴。 因為有你在身邊, 我的世界才變得如此美好。 我愛你,像一朵盛開的花兒, 永遠綻放在我的心間。 願我們的愛情長存, 直到地老天荒。 |
最近身體發福了,我該如何進行科學地減肥,你能給我一些建議嗎? | 1. 控制飲食:減少高熱量、高脂肪的食物攝入量,增加蔬菜和水果的攝入。 2. 多運動:每週至少150分鐘的有氧運動,如快走、跑步或游泳等。 3. 睡眠充足:保證每晚7 - 8小時的睡眠時間,有助於調節代謝和消耗卡路里。 4. 堅持減重計劃:制定一個可行的減重計劃,並保持長期性。 5. 尋求專業幫助:如果需要,可以諮詢醫生或營養師以獲取更具體的建議。 |
把這句話翻譯成中文: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. We can also develop our analytical skills and learn how to view and interpret the world around us in different ways. Furthermore, we can learn from the past by reading books. In this way, we won't repeat the mistakes of others and can build on their achievements. | 知識可以從許多來源獲取,包括書籍、老師和實踐經驗。每種都有其自己的優點。從書籍和正式教育中獲得的知識使我們能夠了解我們無法在日常生活中體驗的事情。我們還可以發展我們的分析技能並學會如何以不同的方式看待和解釋周圍的世界。此外,我們可以通過閱讀過去來學習。這樣,我們就不會重複他人的錯誤,並且可以繼續他們的成就。 |
根據下面的歌詞,進行續寫:故事的小黃花 從出生那年就飄著 童年的盪鞦韆 隨記憶一直晃到現在 |
我還在原地等你 你卻已經走遠了 那一年夏天我們相遇 你說你要陪我到永遠 如今的時光已慢慢溜走 只留下回憶在心裡頭 那些年我們一起走過的路 現在想起來還覺得好笑 你總說你是我的小黃花 帶給我快樂和幸福 可是後來你走了以後 我也沒有再找過你的消息 那些年我們一起走過的路 現在想起來還覺得好笑 你總說你是我的小黃花 帶給我快樂和幸福 可是後來你走了以後 我也沒有再找過你的消息 故事的小黃花 從出生那年就飄著 童年的盪鞦韆 隨記憶一直晃到現在 我還在原地等你 你卻已經走遠了 那一年夏天我們相遇 你說你要陪我到永遠 如今的時光已慢慢溜走 只留下回憶在心裡頭 那些年我們一起走過的路 |



