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