如果全参数训练chatglm3,但是显存又不够怎么办,一种方案是采用量化的模型进行训练,例如8bit、4bit量化。
这时候使用LLaMA-Factory这个项目训练就会发现,该项目并不支持量化模型下的全参数微调。
issue中有人提过这个问题,但是作者不予回应
同时,如果做量化,bitsandbytes这个包可以说是现阶段最可能遇到安装问题的包了,如果使用chatglm系列模型,可以跳过这个问题,因为它们的量化是自己实现的。具体量化的代码就在模型目录下,直接一步到位,到cuda,不存在依赖问题。
# quantization.py
kernels = Kernel(
bz2.decompress(base64.b64decode(quantization_code)),
[ "int4WeightCompression", "int4WeightExtractionFloat", "int4WeightExtractionHalf", "int8WeightExtractionFloat", "int8WeightExtractionHalf", ],
)
那么,只需要在LLaMA-Factory项目中训练模型的地方(src/llmtuner/model/loader.py)加入一下代码即可
model = model.quantize(8)