部署國產(chǎn)ChatGPT僅需6G顯存!ChatYuan模型開放下載:業(yè)內(nèi)首個功能型對話開源中文大模型
前段時間,元語智能開發(fā)團(tuán)隊訓(xùn)練了一個類似ChatGPT的功能型對話大模型ChatYuan,并在網(wǎng)頁版中開放了試玩接口。
現(xiàn)在你也可以在自己的機(jī)器上部署一個ChatYuan了!
模型可用于問答場景,能夠結(jié)合上下文做對話、做各種生成任務(wù),包括創(chuàng)意性寫作,也能回答法律、新冠等領(lǐng)域類問題。
并且在全中文任務(wù)中支持零樣本學(xué)習(xí),用戶可以通過提供prompt的方式來使用,支持文本生成、信息抽取和理解大類下近30多種中文任務(wù)。
ChatYuan基于PromptCLUE-large結(jié)合數(shù)億條功能問答和多輪對話數(shù)據(jù)進(jìn)一步訓(xùn)練得到,模型參數(shù)量7.7億,顯存6G左右,一張民用顯卡即可加載使用,目前模型已開放下載。
PromptCLUE在1000億token中文語料上預(yù)訓(xùn)練,累計學(xué)習(xí)1.5萬億中文token,并且在數(shù)百種任務(wù)上進(jìn)行Prompt任務(wù)式訓(xùn)練。
針對理解類任務(wù),如分類、情感分析、抽取等,可以自定義標(biāo)簽體系;針對多種生成任務(wù),可以進(jìn)行采樣自由生成。
如何使用
1. Github
項目地址:https://github.com/clue-ai/ChatYuan
2. Huggingface
項目地址:https://huggingface.co/ClueAI/ChatYuan-large-v1
3. ModelScope
項目地址:https://modelscope.cn/models/ClueAI/ChatYuan-large
加載模型:
使用模型進(jìn)行預(yù)測推理方法:
4. PaddlePaddle
項目地址:https://aistudio.baidu.com/aistudio/projectdetail/5404182
模型地址:https://huggingface.co/ClueAI/ChatYuan-large-v1-paddle?
使用自有數(shù)據(jù)訓(xùn)練模型
1. 組織數(shù)據(jù)
將數(shù)據(jù)組織成統(tǒng)一的格式,由兩部分構(gòu)成:輸入(Input)和輸出(Output)。
針對單輪問答或生成:
輸入(Input):任務(wù)描述+輸入文本
輸出(Output):系統(tǒng)需要預(yù)測的文本,如下圖中「小元」后的內(nèi)容。
針對多輪對話:
輸入(Input):任務(wù)描述+上文+輸入文本
輸出(Output):系統(tǒng)需要預(yù)測的文本,如下圖中「小元」后的內(nèi)容。
單輪對話數(shù)據(jù)格式:
多輪對話數(shù)據(jù)格式:
2. 訓(xùn)練模型
訓(xùn)練代碼可以參考:
使用pCLUE數(shù)據(jù)集進(jìn)行訓(xùn)練、預(yù)測和效果驗證, pytorch實現(xiàn)——在線colab。
Github項目:https://colab.research.google.com/drive/1lEyFhEfoc-5Z5xqpEKkZt_iMaojH1MP_?usp=sharing
舉個例子
==========示例1==========
用戶:
你能干什么
小元:
您好!我是元語AI。我可以回答您的問題、寫文章、寫作業(yè)、翻譯,對于一些法律等領(lǐng)域的問題我也可以給你提供信息。
==========示例2==========
用戶:
寫一個詩歌,關(guān)于冬天
小元:
冬夜寂靜冷,
云在天邊飄,
冰封白雪上,
寒冷像一場雪。
雪花融化成冰,
像那雪花飄灑,
在寒冷的冬天,
感受春天的喜悅。
冬日里,
風(fēng)雪漸消,
一片寂靜,
把快樂和溫暖帶回家。
==========示例3==========
用戶:
學(xué)前教育專業(yè)崗位實習(xí)中,在學(xué)生方面會存在問題,請?zhí)岢龈倪M(jìn)措施。800字
小元:
在學(xué)前教育專業(yè)崗位實習(xí)中,在學(xué)生方面會存在一些問題,如學(xué)生缺少專業(yè)知識、缺乏合作意識、缺乏基本的責(zé)任心等等,需要我們采取措施,來解決這些問題。
首先,在實習(xí)過程中,我們需要培養(yǎng)學(xué)生的團(tuán)隊意識,加強(qiáng)學(xué)生與老師之間的合作,加強(qiáng)與家長之間的溝通,提高他們的溝通能力。另外,我們也需要加強(qiáng)學(xué)生的獨立性,讓學(xué)生學(xué)會獨立思考,學(xué)會和老師、家長進(jìn)行溝通,培養(yǎng)其獨立性。
此外,在日常的工作中,我們也要為學(xué)生提供適當(dāng)?shù)臋C(jī)會和機(jī)會,讓學(xué)生多接觸社會、多參加社會活動,加深他們對社會、學(xué)校的認(rèn)識,培養(yǎng)他們主動、積極和創(chuàng)新的精神。
最后,我們還需要重視學(xué)生在實習(xí)中出現(xiàn)的問題,尤其是學(xué)生缺乏合作,有依賴心理,不懂得分享,有拖延行為等,這些學(xué)生應(yīng)該引起我們的重視,制定合理的改進(jìn)措施,改善這些問題。
技術(shù)與訓(xùn)練過程
ChatYuan是在PromptCLUE基礎(chǔ)上進(jìn)一步訓(xùn)練獲得的模型。它去掉了文本理解、信息抽取類任務(wù),加強(qiáng)了問答、對話和各種生成式任務(wù)的學(xué)習(xí)和訓(xùn)練;
針對多輪對話容易受到上下文的干擾,加入了抗干擾數(shù)據(jù)使得模型可以在必要時忽略無關(guān)的上下文;加入了用戶反饋數(shù)據(jù)的學(xué)習(xí),使得模型不僅具有一定的通用語言理解能力、特定任務(wù)上的生成能力,也能更好的響應(yīng)用戶的意圖。
PromptCLUE的學(xué)習(xí)過程
- 三大統(tǒng)一:統(tǒng)一模型框架(text-to-text),統(tǒng)一任務(wù)形式(prompt),統(tǒng)一應(yīng)用方式(zero-shot/few-shot)(T0)
- 大規(guī)模預(yù)訓(xùn)練:在t5-large版基礎(chǔ)上,使用數(shù)百G中文語料,訓(xùn)練了100萬步,累積訓(xùn)練了1.5萬億個中文字詞級別token
- 大規(guī)模任務(wù)數(shù)據(jù):使用了16種任務(wù)類型,數(shù)百種任務(wù),累積億級別任務(wù)數(shù)據(jù)
- 混合預(yù)訓(xùn)練:一方面將下游任務(wù)作為預(yù)訓(xùn)練語料,另一方面將下游任務(wù)和預(yù)訓(xùn)練語料一起訓(xùn)練,減少任務(wù)災(zāi)難遺忘以及縮短預(yù)訓(xùn)練和下游任務(wù)的距離,更好的適應(yīng)下游任務(wù)(ExT5)
- 混合采樣:針對眾多數(shù)據(jù)量差異極大的任務(wù),采用在每個訓(xùn)練batch內(nèi)對所有的任務(wù)進(jìn)行按照比例采樣,根據(jù)任務(wù)的數(shù)據(jù)量進(jìn)行平滑采樣,并且同時限制任務(wù)數(shù)據(jù)量采樣池的上限。平滑采樣可以減少任務(wù)訓(xùn)練有偏危害,在每一batch內(nèi)訓(xùn)練可以減少異質(zhì)任務(wù)之間訓(xùn)練負(fù)遷移的情況(T5)
- 分階段訓(xùn)練:一方面指在預(yù)訓(xùn)練分階段,涉及訓(xùn)練序列長度的分階段(128和512),加快預(yù)訓(xùn)練速度(Bert);另一方面,在下游訓(xùn)練分階段, 涉及學(xué)習(xí)率和序列長度的變化以及遞減式對下游任務(wù)的數(shù)據(jù)量限制,更好的適應(yīng)下游的不同任務(wù)。
- 增加語言模型的訓(xùn)練:參考t5.1.1, 除了使用Span Corrpution構(gòu)建的方式進(jìn)行無監(jiān)督訓(xùn)練,同時在使用prefix LM的方式訓(xùn)練,增強(qiáng)生成任務(wù)的能力(LM adapted)
- 增加對模型的encoder以及decoder的訓(xùn)練:根據(jù)下游任務(wù)數(shù)據(jù)分別構(gòu)建Data_text,Data_target預(yù)訓(xùn)練數(shù)據(jù)語料,加入到預(yù)訓(xùn)練中,分別增強(qiáng)模型的encoder理解能力和 decoder的生成能力(見UIE)
- 重新構(gòu)建模型中文字典:使用sentencepiece上在千億token上學(xué)習(xí)并構(gòu)建模型字典,更加符合中文語言習(xí)慣
后續(xù)工作
目前版本可以進(jìn)行問答、對話和各種創(chuàng)意性寫作或文本生成,相對于線上的版本,它的意圖理解和生成能力在一些場合還有比較大的提升空間;它也還不能較好實現(xiàn)推理或復(fù)雜的任務(wù)。之后,會根據(jù)反饋進(jìn)一步改進(jìn)現(xiàn)有版本。