llama-factory代码训练量化chatglm3

799 阅读1分钟

如果全参数训练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)