ChatGLM 6B finetuning
1.0.0
該項目的重點是以不同的方式(凍結嵌入 pt lora)進行chatglm-6b-int4模型的微調,並比較不同的微調方法對大型模型的影響,主要用於信息提取任務,生成任務,分類任務等。
如果您對其他版本的chatglm-6b進行微調(例如PF16),則需要將與對應的版本提升
configuration_chatglm.py
quantization.py
modeling_chatglm.py
tokenization_chatglm.py
test_modeling_chatglm.py
tokenization_chatglm.py
在https://huggingface.co/thudm/chatglm-6b中
原始模型的參數被冷凍。例如,只能訓練模型背後的層。
最終培訓的參數如下:
可訓練的參數:81920 ||所有參數:3.356b ||可訓練的%:0.0024
be train layer: transformer.layers.23.input_layernorm.weight
be train layer: transformer.layers.23.input_layernorm.bias
be train layer: transformer.layers.23.post_attention_layernorm.weight
be train layer: transformer.layers.23.post_attention_layernorm.bias
be train layer: transformer.layers.24.input_layernorm.weight
be train layer: transformer.layers.24.input_layernorm.bias
be train layer: transformer.layers.24.post_attention_layernorm.weight
be train layer: transformer.layers.24.post_attention_layernorm.bias
be train layer: transformer.layers.25.input_layernorm.weight
be train layer: transformer.layers.25.input_layernorm.bias
be train layer: transformer.layers.25.post_attention_layernorm.weight
be train layer: transformer.layers.25.post_attention_layernorm.bias
be train layer: transformer.layers.26.input_layernorm.weight
be train layer: transformer.layers.26.input_layernorm.bias
be train layer: transformer.layers.26.post_attention_layernorm.weight
be train layer: transformer.layers.26.post_attention_layernorm.bias
be train layer: transformer.layers.27.input_layernorm.weight
be train layer: transformer.layers.27.input_layernorm.bias
be train layer: transformer.layers.27.post_attention_layernorm.weight
be train layer: transformer.layers.27.post_attention_layernorm.bias
完全凍結模型,僅訓練模型的浮裝部分,這是一種軟及時的方法之一。
最終培訓的參數如下:
可訓練的參數:0.53b ||所有參數:3.356b ||可訓練的%:15.9
be train layer: transformer.word_embeddings.weight
p調音p-tuning-v2柔軟的及時改進,p-tuning-v2不僅用於嵌入層,而且連續令牌插入了每個層中,從而增加了變化和相互作用的量。
最終培訓的參數如下:
可訓練的參數:0.957b ||所有參數:4.312b ||可訓練的%:22.18
transformer.prefix_encoder.embedding.weight
transformer.prefix_encoder.trans.0.weight
transformer.prefix_encoder.trans.0.bias
transformer.prefix_encoder.trans.2.weight
transformer.prefix_encoder.trans.2.bias
洛拉(Lora)允許我們通過優化適應過程中密集層變化的等級分解矩陣來間接訓練神經網絡中的一些密集層,同時保持預先訓練的權重凍結。
通過A100-40G在Google Colab Pro中進行微調模型,因此您需要在COLAB中安裝某種方法:
!pip install --upgrade tensorboard
!pip install --upgrade protobuf
!pip install transformers
!pip install sentencepiece
!pip install deepspeed
!pip install mpi4py
!pip install cpm_kernels
!pip install icetk
!pip install peft
!pip install tensorboard
!pip install tqdm
凍結損失
嵌入損失
PT損失