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

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

3天內不再提示

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

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

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

項目地址:

https://github.com/yangjianxin1/Firefly

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

01

項目簡介

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

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

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

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

本項目的主要工作如下:

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

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

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

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

各種資源鏈接詳見文章結尾。

模型使用方法如下:

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

方法介紹

模型裁剪

關于LLMPruner,詳見文章:

LLMPruner:大語言模型裁剪工具

LLMPruner項目鏈接:

https://github.com/yangjianxin1/LLMPruner

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

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

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

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

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

數(shù)據(jù)集

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

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

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

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

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

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

訓練策略

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

<s>inputs>s>targets>

我們將模型的最大輸入設置為512,input部分不參與計算loss,只計算target部分的損失函數(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)、武俠小說、散文、歌詞、文案生成、情感分析等中文任務具有非常優(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

結語

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

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

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

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

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

后續(xù)筆者將從以下方向對項目進行迭代:豐富訓練數(shù)據(jù)且保證數(shù)據(jù)質量,優(yōu)化訓練流程,嘗試更大參數(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權重地址:

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

審核編輯 :李倩


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

    關注

    0

    文章

    501

    瀏覽量

    10236
  • 數(shù)據(jù)集

    關注

    4

    文章

    1200

    瀏覽量

    24619
  • Firefly
    +關注

    關注

    2

    文章

    538

    瀏覽量

    6961

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

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

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

    【大語言模型:原理與工程實踐】大語言模型的預訓練

    語言模型的核心特點在于其龐大的參數(shù)量,這賦予了模型強大的學習容量,使其無需依賴微調即可適應各種下游任務,而更傾向于培養(yǎng)通用的處理能力。然而,隨著學習容量的增加,對預訓練數(shù)據(jù)的需求也相應
    發(fā)表于 05-07 17:10

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    一文讀懂大語言模型

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

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

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

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

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

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

    自ChatGPT發(fā)布以來,生成AI在全球引起了新的浪潮,它影響著各行各業(yè),為世界帶來智能化的發(fā)展。然而,類ChatGPT的大語言模型極度依賴算力巨大的服務器,導致目前大部分應用只能通過集中調用
    的頭像 發(fā)表于 09-09 08:02 ?1618次閱讀
    本地化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 ?735次閱讀