概述
GLM、ChatGLM的相關基礎知識說明:
- GLM模型底層還是基於Transformer,因此其設計、優化都是圍繞Transformer的各個組件的。從注意力層的掩碼、位置編碼等方面優化與設計。
- ChatGLM3/ChatGLM2的源碼中,比如finetune、trainer等代碼,其實是copy自HuggingFace,而且其使用流程與調用機制,與HuggingFace的開發流程是一致的。
- 對GLM-130B,ChatGLM千億模型,ChatGLM-6B的區分不夠清楚,這裏給出說明:
- GLM-130B:於2022年8月由清華智譜AI開源放出。該大語言模型基於之前提出的GLM(General Language Model),在Norm處理、激活函數、Mask機制等方面進行了調整,目的是訓練出開源開放的高精度千億中英雙語稠密模型,能夠讓更多研發者用上千億模型。
- ChatGLM千億模型: 該模型是爲了解決大基座模型在複雜問題、動態知識、人類對齊場景的不足,基於GLM-130B,引入面向對話的用戶反饋,進行指令微調後,得到的對話機器人。
- ChatGLM-6B:於2023年3月開源。在進行ChatGLM千億模型內測的同時,清華團隊也開放出了同樣技術小參數量的版本,方便研發者們進行學習和開發(非商用)。
ChatGLM對話模型的微調需要用到兩個部分;一是已預訓練的模型文件,二是ChatGLM的源碼文件。
模型文件
在Huggingface平臺下載到本地或直接用遠程的文件。
已預訓練的模型,其開發調用模式遵循Huggingface的開發規範。
微調
在github上託管的ChatGLM源碼包中,詳細的介紹了基於p-tuning的微調策略。
其源碼模塊中已經準備好了腳本文件 train.sh ,該文件包含所有相關的配置參數,根據微調後的配置調整腳本文件,一鍵運行即可。
微調並執行後,會保存並生成checkpoint-xxx文件。這就是新的權重超參數。
模型部署
有兩種方式用來運行微調後的模型:
- 基於Huggingface的開發規範,將原模型超參數文件與微調後的超參數文件一起加載,並調用。
- 調整 web_demo.sh 文件中的路徑配置,運行即可。
參考
ChatGLM2-6B微調視頻講解
基於第二代 ChatGLM2-6B P-Tuning v2 微調訓練醫療問答任務
官方p-tuning微調文檔