清華第二代60億參數ChatGLM2開源!中文榜居首,碾壓GPT-4,推理提速42%
ChatGLM-6B自3月發布以來,在AI社區爆火,GitHub上已斬獲29.8k星。
如今,第二代ChatGLM來了!
清華KEG和數據挖掘小組(THUDM)發布了中英雙語對話模型ChatGLM2-6B。
圖片
項目地址:https://github.com/THUDM/ChatGLM2-6B
HuggingFace:https://huggingface.co/THUDM/chatglm2-6b
最新版本ChatGLM2-6B增加了許多特性:
- 基座模型升級,性能更強大
- 支持8K-32k的上下文
- 推理性能提升了42%
- 對學術研究完全開放,允許申請商用授權
值得一提的是,在中文C-Eval榜單中,ChatGLM2以71.1分位居榜首,碾壓GPT-4。而最新版本ChatGLM2-6B以51.7分位列第6。
圖片
ChatGLM2-6B升級亮點
ChatGLM-6B的第二代版本,在保留了初代模型對話流暢、部署門檻較低等眾多優秀特性的基礎之上,又增加許多新特性:
1. 更強大的性能
基于ChatGLM初代模型的開發經驗,全面升級了ChatGLM2-6B的基座模型。
ChatGLM2-6B使用了GLM的混合目標函數,經過了1.4T中英標識符的預訓練與人類偏好對齊訓練.
評測結果顯示,與初代模型相比,ChatGLM2-6B在MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等數據集上的性能取得了大幅度的提升,在同尺寸開源模型中具有較強的競爭力。
2. 更長的上下文
基于 FlashAttention 技術,研究人員將基座模型的上下文長度由 ChatGLM-6B 的2K擴展到了32K,并在對話階段使用8K的上下文長度訓練,允許更多輪次的對話。
但當前版本的ChatGLM2-6B對單輪超長文檔的理解能力有限,會在后續迭代升級中著重進行優化。
3. 更高效的推理
基于 Multi-Query Attention 技術,ChatGLM2-6B有更高效的推理速度和更低的顯存占用.
在官方的模型實現下,推理速度相比初代提升了42%,INT4量化下,6G顯存支持的對話長度由1K提升到了8K。
4. 更開放的協議
ChatGLM2-6B權重對學術研究完全開放,在獲得官方的書面許可后,亦允許商業使用。
效果
相比于初代模型,ChatGLM2-6B在多個維度的能力上,都取得了巨大的提升。
數理邏輯
圖片
圖片
知識推理
圖片
圖片
長文檔理解
圖片
圖片
評測結果
研究團隊選取了部分中英文典型數據集進行了評測,以下為ChatGLM2-6B模型在MMLU(英文)、C-Eval(中文)、GSM8K(數學)、BBH(英文) 上的測評結果。
MMLU
圖片
C-Eval
圖片
GSM8K
圖片
BBH
推理性能
ChatGLM2-6B使用 Multi-Query Attention,提高了生成速度。生成2000個字符的平均速度對比如下:
Multi-Query Attention同時也降低了生成過程中KV Cache的顯存占用。
此外,ChatGLM2-6B采用Causal Mask進行對話訓練,連續對話時可復用前面輪次的 KV Cache,進一步優化了顯存占用。
因此,使用6GB顯存的顯卡進行INT4量化的推理時,初代的ChatGLM-6B模型最多能夠生成1119個字符就會提示顯存耗盡,而ChatGLM2-6B能夠生成至少8192個字符。
圖片
研究團隊也測試了量化對模型性能的影響。結果表明,量化對模型性能的影響在可接受范圍內。
圖片
使用方法
環境安裝
首先需要下載本倉庫:
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
然后使用pip安裝依賴:pip install -r requirements.txt,其中transformers庫版本推薦為4.30.2,torch推薦使用 2.0 以上的版本,以獲得最佳的推理性能。
代碼調用
可以通過如下代碼調用ChatGLM2-6B模型來生成對話:
>>> from transformers import AutoTokenizer, AutoModel>>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
>>> model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device='cuda')
>>> model = model.eval()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)
你好??!我是人工智能助手 ChatGLM2-6B,很高興見到你,歡迎問我任何問題。
>>> response, history = model.chat(tokenizer, "晚上睡不著應該怎么辦", history=history)
>>> print(response)
晚上睡不著可能會讓你感到焦慮或不舒服,但以下是一些可以幫助你入睡的方法:
1. 制定規律的睡眠時間表:保持規律的睡眠時間表可以幫助你建立健康的睡眠習慣,使你更容易入睡。盡量在每天的相同時間上床,并在同一時間起床。
2. 創造一個舒適的睡眠環境:確保睡眠環境舒適,安靜,黑暗且溫度適宜。可以使用舒適的床上用品,并保持房間通風。
3. 放松身心:在睡前做些放松的活動,例如泡個熱水澡,聽些輕柔的音樂,閱讀一些有趣的書籍等,有助于緩解緊張和焦慮,使你更容易入睡。
4. 避免飲用含有咖啡因的飲料:咖啡因是一種刺激性物質,會影響你的睡眠質量。盡量避免在睡前飲用含有咖啡因的飲料,例如咖啡,茶和可樂。
5. 避免在床上做與睡眠無關的事情:在床上做些與睡眠無關的事情,例如看電影,玩游戲或工作等,可能會干擾你的睡眠。
6. 嘗試呼吸技巧:深呼吸是一種放松技巧,可以幫助你緩解緊張和焦慮,使你更容易入睡。試著慢慢吸氣,保持幾秒鐘,然后緩慢呼氣。
如果這些方法無法幫助你入睡,你可以考慮咨詢醫生或睡眠專家,尋求進一步的建議。
在從Hugging Face Hub下載模型之前,需要先安裝Git LFS,然后運行:
git clone https://huggingface.co/THUDM/chatglm2-6b
如果checkpoint的下載速度較慢,可以只下載模型實現:
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b
然后,手動下載模型參數文件,并將文件替換到本地的chatglm2-6b目錄下。
地址:https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/
模型下載到本地之后,將以上代碼中的THUDM/chatglm2-6b替換為本地的chatglm2-6b文件夾的路徑,即可從本地加載模型。