0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Firefly(流螢): 中文對話式大語言模型

深度學(xué)習(xí)自然語言處理 ? 來源:YeungNLP ? 2023-04-07 10:36 ? 次閱讀

在本文中,筆者將介紹關(guān)于Firefly(流螢)模型的工作,一個中文對話式大語言模型。我們使用較小的模型參數(shù)量,如1.4B和2.6B,實現(xiàn)了不錯的生成效果。

項目地址:

https://github.com/yangjianxin1/Firefly

進NLP群—>加入NLP交流群(備注nips/emnlp/nlpcc進入對應(yīng)投稿群)

01

項目簡介

Firefly(流螢)是一個開源的中文對話式大語言模型,使用指令微調(diào)(Instruction Tuning)在中文數(shù)據(jù)集上進行調(diào)優(yōu)。同時使用了詞表裁剪、ZeRO、張量并行等技術(shù),有效降低顯存消耗和提高訓(xùn)練效率。在訓(xùn)練中,我們使用了更小的模型參數(shù)量,以及更少的計算資源。

我們構(gòu)造了許多與中華文化相關(guān)的數(shù)據(jù),以提升模型在這方面的表現(xiàn),如對聯(lián)、作詩、文言文翻譯、散文、金庸小說等。

流螢(螢火蟲的別稱)是中華傳統(tǒng)文化的一個符號,雖說腐草為螢,帶有悲憫意味,但螢火雖小,也能憑借其淡淡熒光,照亮夜空。本項目的名稱取自杜牧的《秋夕》:銀燭秋光冷畫屏,輕羅小扇撲流螢。也希望本項目能夠像流螢一般發(fā)出淡淡微光,為中文NLP開源社區(qū)盡綿薄之力,添磚加瓦。

《詠螢火》 
 唐.李白
雨打燈難滅,
風(fēng)吹色更明。
若飛天上去,
定作月邊星。

本項目的主要工作如下:

    1. 數(shù)據(jù)集firefly-train-1.1M,一份高質(zhì)量的包含1.1M中文多任務(wù)指令微調(diào)數(shù)據(jù)集,包含23種常見的中文NLP任務(wù)的指令數(shù)據(jù)。對于每個任務(wù),由人工書寫若干指令模板,保證數(shù)據(jù)的高質(zhì)量與豐富度。

    2. 模型裁剪:我們開發(fā)了LLMPruner項目-大語言模型裁剪工具。使用詞表裁剪技術(shù)對多語種大語言模型進行權(quán)重裁剪,保留預(yù)訓(xùn)練知識的前提下,有效減少模型參數(shù)量,提高訓(xùn)練效率,并分享裁剪后的多種參數(shù)規(guī)模的Bloom模型權(quán)重。

    3. 權(quán)重分享:在bloom-1b4-zhbloom-2b6-zh的基礎(chǔ)上,進行指令微調(diào),獲得兩種參數(shù)規(guī)模的中文模型:firefly-1b4firefly-2b6

    4. 訓(xùn)練代碼:開源訓(xùn)練代碼,支持張量并行、ZeRO、Gemini異構(gòu)內(nèi)存空間管理等大模型訓(xùn)練策略。可實現(xiàn)僅使用一張顯卡,訓(xùn)練1B-2B參數(shù)量的模型。

各種資源鏈接詳見文章結(jié)尾。

模型使用方法如下:

from transformers import BloomTokenizerFast, BloomForCausalLM
device = 'cuda'
path = 'YenugNLP/firefly-1b4'


tokenizer = BloomTokenizerFast.from_pretrained(path)
model = BloomForCausalLM.from_pretrained(path)
model.eval()
model = model.to(device)
text = input('User:')
while True:
    text = '{}'.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.8,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('', "")
    print("Firefly:{}".format(output))
    text = input('User:')

02

方法介紹

模型裁剪

關(guān)于LLMPruner,詳見文章:

LLMPruner:大語言模型裁剪工具

LLMPruner項目鏈接:

https://github.com/yangjianxin1/LLMPruner

本項目首先使用LLMPruner項目對原始的Bloom模型進行詞表裁剪,僅取出常用的中英文詞表,大大降低了模型參數(shù)量,然后再對其進行指令微調(diào)。

Bloom是個多語言模型,由于需要兼容多語言,所以詞表有25w之多,在中文領(lǐng)域中,大部分詞表并不會被用到。我們通過刪減冗余的詞表,從多語言模型中提取常用的中英文詞表,最終詞表從25w減少到46145,縮減為原來的18.39%,在保留預(yù)訓(xùn)練知識的同時,有效減少參數(shù)量,提高訓(xùn)練效率。

我們在bloom-1b4-zhbloom-2b6-zh的基礎(chǔ)上,進行指令微調(diào),獲得兩種參數(shù)規(guī)模的中文模型:firefly-1b4firefly-2b6,具有不錯的效果。

裁剪后的模型如下表所示:

f3f29792-d4e9-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)集

我們收集了23個常見的中文數(shù)據(jù)集,對于每個任務(wù),由人工書寫若干種指令模板,保證數(shù)據(jù)的高質(zhì)量與豐富度,數(shù)據(jù)量為115萬,形成訓(xùn)練集firefly-train-1.1M。數(shù)據(jù)分布如下圖所示:

f411c978-d4e9-11ed-bfe3-dac502259ad0.png

在此基礎(chǔ)上,我們添加了Belle-train_0.5M_CN,最終得到165萬的訓(xùn)練數(shù)據(jù)。每條數(shù)據(jù)的格式如下,包含任務(wù)類型、輸入、目標輸出:

{
  "kind": "ClassicalChinese", 
  "input": "將下面句子翻譯成現(xiàn)代文:
石中央又生一樹,高百余尺,條干偃陰為五色,翠葉如盤,花徑尺余,色深碧,蕊深紅,異香成煙,著物霏霏。",
  "target": "大石的中央長著一棵樹,一百多尺高,枝干是彩色的,樹葉有盤子那樣大,花的直徑有一尺寬,花瓣深藍色,花中飄出奇異的香氣籠罩著周圍,如煙似霧。"
}

訓(xùn)練數(shù)據(jù)集的token長度分布如下圖所示,絕大部分數(shù)據(jù)的長度都小于600:

f4220360-d4e9-11ed-bfe3-dac502259ad0.png

訓(xùn)練策略

在訓(xùn)練時,對于每條樣本,我們將input與target拼接成如下格式,然后輸出模型中,進行訓(xùn)練。

<s>inputs>s>targets>

我們將模型的最大輸入設(shè)置為512,input部分不參與計算loss,只計算target部分的損失函數(shù)。訓(xùn)練的超參數(shù)設(shè)置如下表所示。

參數(shù) 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

03

生成效果

下面展示的是firefly-1b4的部分生成效果。

f43922a2-d4e9-11ed-bfe3-dac502259ad0.png

f45216a4-d4e9-11ed-bfe3-dac502259ad0.png

f4722796-d4e9-11ed-bfe3-dac502259ad0.png

下面是Firefly模型更具特色的一些例子,F(xiàn)irefly對于文言文、詩詞、對聯(lián)、武俠小說、散文、歌詞、文案生成、情感分析等中文任務(wù)具有非常優(yōu)秀的表現(xiàn)。

f488814e-d4e9-11ed-bfe3-dac502259ad0.png

f49f6b34-d4e9-11ed-bfe3-dac502259ad0.png

f4d6bf1c-d4e9-11ed-bfe3-dac502259ad0.png

f507a172-d4e9-11ed-bfe3-dac502259ad0.png

f51b717a-d4e9-11ed-bfe3-dac502259ad0.png

04

結(jié)語

經(jīng)過詞表裁剪后,我們的模型參數(shù)量僅為1.4B和2.6B,參數(shù)量遠遠小于ChatGPT和LLaMA等上百億上千億的模型,甚至遠遠小于當前主流如Belle、ChatGLM等7B左右的模型。所以在效果上仍存在以下問題:

    1. 對于事實性知識,容易產(chǎn)生錯誤的回復(fù)。

    2. 由于未經(jīng)過無害化微調(diào),可能會產(chǎn)生歧視、危害、違背倫理道德的言論。

    3. 在代碼、推理上的能力仍有欠缺。

基于以上模型的局限性,我們要求本項目的代碼、數(shù)據(jù)、模型等僅用于學(xué)術(shù)研究,不得用于商業(yè)用途,且不得用于對社會造成危害的用途。

后續(xù)筆者將從以下方向?qū)椖窟M行迭代:豐富訓(xùn)練數(shù)據(jù)且保證數(shù)據(jù)質(zhì)量,優(yōu)化訓(xùn)練流程,嘗試更大參數(shù)量的模型。

若使用本項目的數(shù)據(jù)、代碼或模型,請引用本項目。

@misc{Firefly,
  author = {Jianxin Yang},
title={Firefly(流螢):中文對話式大語言模型},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {url{https://github.com/yangjianxin1/Firefly}},
}

Firefly項目地址:

https://github.com/yangjianxin1/Firefly

LLMPruner項目地址:

https://github.com/yangjianxin1/LLMPruner

Firefly權(quán)重地址:

https://huggingface.co/YeungNLP/firefly-1b4

https://huggingface.co/YeungNLP/firefly-2b6

firefly-train-1.1M 數(shù)據(jù)集:

https://huggingface.co/datasets/YeungNLP/firefly-train-1.1M

Belle-train_0.5M_CN數(shù)據(jù)集:

https://huggingface.co/datasets/BelleGroup/train_0.5M_CN

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 語言模型
    +關(guān)注

    關(guān)注

    0

    文章

    491

    瀏覽量

    10225
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24592
  • Firefly
    +關(guān)注

    關(guān)注

    2

    文章

    538

    瀏覽量

    6946

原文標題:Firefly(流螢): 中文對話式大語言模型

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【大語言模型:原理與工程實踐】大語言模型的基礎(chǔ)技術(shù)

    ,這也是如今生成 AI 中大語言模型最流行訓(xùn)練架構(gòu)。(3) Encoder-Decoder預(yù)訓(xùn)練語言模型:這類
    發(fā)表于 05-05 12:17

    【大語言模型:原理與工程實踐】大語言模型的評測

    語言模型的評測是確保模型性能和應(yīng)用適應(yīng)性的關(guān)鍵環(huán)節(jié)。從基座模型到微調(diào)模型,再到行業(yè)模型和整體能
    發(fā)表于 05-07 17:12

    【大語言模型:原理與工程實踐】大語言模型的應(yīng)用

    ,它通過抽象思考和邏輯推理,協(xié)助我們應(yīng)對復(fù)雜的決策。 相應(yīng)地,我們設(shè)計了兩類任務(wù)來檢驗大語言模型的能力。一類是感性的、無需理性能力的任務(wù),類似于人類的系統(tǒng)1,如情感分析和抽取問答等。大
    發(fā)表于 05-07 17:21

    語言模型:原理與工程時間+小白初識大語言模型

    解鎖 我理解的是基于深度學(xué)習(xí),需要訓(xùn)練各種數(shù)據(jù)知識最后生成自己的的語言理解和能力的交互模型。 對于常說的RNN是處理短序列的數(shù)據(jù)時表現(xiàn)出色,耳真正厲害的是Transformer,此框架被推出后直接
    發(fā)表于 05-12 23:57

    語言模型:原理與工程實踐+初識2

    的一系列變革。 大語言模型是深度學(xué)習(xí)的應(yīng)用之一,可以認為,這些模型的目標是模擬人類交流,為了理解和生成人類語言。為此,模型需要在大量文本數(shù)據(jù)
    發(fā)表于 05-13 00:09

    中文多模態(tài)對話數(shù)據(jù)集

    隨著大量預(yù)訓(xùn)練語言模型在文本對話任務(wù)中的出色表現(xiàn),以及多模態(tài)的發(fā)展,在對話中引入多模態(tài)信息已經(jīng)引起了大量學(xué)者的關(guān)注。目前已經(jīng)提出了各種各樣的多模態(tài)
    的頭像 發(fā)表于 02-22 11:03 ?1247次閱讀
    <b class='flag-5'>中文</b>多模態(tài)<b class='flag-5'>對話</b>數(shù)據(jù)集

    大型語言模型有哪些用途?

    大型語言模型能識別、總結(jié)、翻譯、預(yù)測和生成文本及其他內(nèi)容。 AI 應(yīng)用在大型語言模型的幫助下,可用于解決總結(jié)文章、編寫故事和參與長對話等多種
    的頭像 發(fā)表于 02-23 19:50 ?5043次閱讀

    中文對話語言模型Firefly-2b6開源,使用210萬訓(xùn)練數(shù)據(jù)

    在本文中,我們將對該模型進行分享和介紹。與firefly-1b4相比,firefly-2b6的代碼生成能力取得了較大的進步,并且在古詩詞生成、對聯(lián)、作文、開放域生成等方面也有不錯的提升。
    的頭像 發(fā)表于 04-14 10:30 ?1497次閱讀

    “伶荔”(Linly) 開源大規(guī)模中文語言模型

    Linly-Chinese-LLaMA:中文基礎(chǔ)模型,基于 LLaMA 在高質(zhì)量中文語料上增量訓(xùn)練強化中文語言能力,現(xiàn)已開放 7B、13B
    的頭像 發(fā)表于 05-04 10:29 ?966次閱讀
    “伶荔”(Linly) 開源大規(guī)模<b class='flag-5'>中文</b><b class='flag-5'>語言</b><b class='flag-5'>模型</b>

    一文讀懂大語言模型

    本文旨在讓沒有計算機科學(xué)背景的人對ChatGPT和類似的人工智能系統(tǒng)(GPT-3、GPT-4、Bing Chat、Bard等)的工作原理有一些了解。ChatGPT是一種基于*大語言模型(Large Language Model)* 的
    發(fā)表于 06-16 09:59 ?1292次閱讀
    一文讀懂大<b class='flag-5'>語言</b><b class='flag-5'>模型</b>

    ChatGPT:人工智能的交互對話伙伴

    和優(yōu)化ChatGPT模型。 2.模型訓(xùn)練和調(diào)優(yōu):使用收集到的數(shù)據(jù)對ChatGPT進行訓(xùn)練,以使其能夠理解和生成自然語言對話。通過迭代訓(xùn)練和調(diào)優(yōu),提高模型在客服場景中的表現(xiàn)。 3.針對特
    的頭像 發(fā)表于 08-06 16:02 ?564次閱讀
    ChatGPT:人工智能的交互<b class='flag-5'>式</b><b class='flag-5'>對話</b>伙伴

    對話文本數(shù)據(jù)是培養(yǎng)大模型的智能與交流之源

    對話文本數(shù)據(jù),作為人類交流的生動表現(xiàn),正成為訓(xùn)練大型模型的寶貴資源。這些數(shù)據(jù)不僅蘊含了豐富的語言特點和人類交流方式,更在模型訓(xùn)練中發(fā)揮著重要的意義,從而為其賦予更強大的智能和更自然的交
    的頭像 發(fā)表于 08-14 10:11 ?550次閱讀

    FPGA加速器支撐ChatGPT類大語言模型創(chuàng)新

    作者:Bill Jenkins,Achronix人工智能/機器學(xué)習(xí)產(chǎn)品營銷總監(jiān) 探索FPGA加速語言模型如何通過更快的推理、更低的延遲和更好的語言理解來重塑生成人工智能 簡介:大
    的頭像 發(fā)表于 09-04 16:55 ?534次閱讀
    FPGA加速器支撐ChatGPT類大<b class='flag-5'>語言</b><b class='flag-5'>模型</b>創(chuàng)新

    本地化ChatGPT?Firefly推出基于BM1684X的大語言模型本地部署方案

    自ChatGPT發(fā)布以來,生成AI在全球引起了新的浪潮,它影響著各行各業(yè),為世界帶來智能化的發(fā)展。然而,類ChatGPT的大語言模型極度依賴算力巨大的服務(wù)器,導(dǎo)致目前大部分應(yīng)用只能通過集中調(diào)用
    的頭像 發(fā)表于 09-09 08:02 ?1567次閱讀
    本地化ChatGPT?<b class='flag-5'>Firefly</b>推出基于BM1684X的大<b class='flag-5'>語言</b><b class='flag-5'>模型</b>本地部署方案

    語言模型簡介:基于大語言模型模型全家桶Amazon Bedrock

    本文基于亞馬遜云科技推出的大語言模型與生成AI的全家桶:Bedrock對大語言模型進行介紹。大語言
    的頭像 發(fā)表于 12-04 15:51 ?702次閱讀