聊聊ChatGLM-6B部署與微調的深入理解

ChatGLM的部署,主要是兩個步驟:

  1. 在Github上下載chatglm的庫文件
  2. 在Hugging Face上下載模型參數與配置文件

ChatGLM包

從Github上看ChatGLM項目文件的結構來看,僅僅是包含三種部署方式的py代碼與微調的py代碼
image.png
而相關的實現細節,比如神經網絡、激活函數、損失函數等具體的實現,並不在該項目源碼中。
不管以哪種方式部署,最核心就是三句代碼,其作用是引入模型參數,初始化transformers配置;以web部署的方式爲例:

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()

// 引入Gradio,實現web方式的使用

// 調用模型方法,開始進行對話推理
xx = model.stream_chat(xxxx);

web的調用是基於Gradio;
api的調用是基於fastapi;
cli的調用是基於python解釋器;

Hugging Face

Hugging Face平臺的模型庫如下:
image.png
image.png
除去與訓練後的模型參數(xxx.bin)外,其餘的文件是huggingface的文件結構。

微調

微調的解決方案一般是P-Tuning或LoRA;ChatGLM-6B是基於P-Tuning v2實現的微調,P-Tuning v2是基於連續提示(continuous prompts)的思想。微調會生成新的模型參數文件,也稱爲checkpoint文件。
微調時可以選擇全參數微調或是部分參數微調,其流程是訓練+推理。訓練生成新的checkpoint文件(模型參數);推理則是加載模型參數文件。
訓練前,需要調整參數,一般修改train.sh腳本文件就行。
推理時,加載原模型文件與微調後生成的checkpoint文件。還是通過那三句代碼。
輸出的checkpoint文件如下:
image.png
checkpoint文件夾內的文件如下:
image.png

transformers的聯繫

目前的模型,都會對接到Hugging Face平臺的transformers庫中,通過transformers庫來管控大模型。所以在推理階段通過三句代碼就能調用AI模型。在微調階段,生成的checkpoint文件中,其結構是Hugging Face平臺的文件結構,包含transformers的相關配置及初始化信息。

總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章