• ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)


    1. 模型下载问题

    1. OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like bert-base-uncased is not the path to a directory containing a file named config.json.
    2. Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'.

           模型默认是从huggingface上下载的,需要科学上网。挂上梯子后即可下载,注意模型都帮你较大,会消耗很多流量。

    2. 模型保存地址

           下载后,会占用C盘大量空间,对于重复下载的模型文件,可以进行删除。以下是其存储路径。

    Windows系统
    C:\Users\你的用户名\.cache\huggingface
    Linux系统
           ~/.cache/huggingface/
    3. 模型无法量化     

            默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

    1. model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).cuda()
    2. peft_config = LoraConfig(
    3. task_type=TaskType.CAUSAL_LM, inference_mode=False,
    4. r=8,
    5. lora_alpha=32, lora_dropout=0.1,
    6. )
    7. model = get_peft_model(model, peft_config)

            出现以下错误:

    ValueError: Target module QuantizedLinear() is not supported. Currently, only `torch.nn.Linear` and `Conv1D` are supported.

           原因:以int4量化加载的模型是不支持进行微调的。

    4. 分词器

           以chatglm为例,有“chatglm2-6b” "chatglm2-6b-int8" "chatglm2-6b-int4" 三个版本,但是分词器tokenizer是共用的,不受模型量化加载方式改变。所以我们在加载tokenizer的时候,只需设置就可以了:

    tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
    5. int-8量化的模型无法下载

           在chatglm第一版里面,是提供int4 int8和fp16,三个版本的文件的,但是在chatglm2里,可以看到只给了fp16和int4两个版本的文件。

  • 相关阅读:
    目录IO及小练习
    Zabbix最新6.2安装及使用!
    springboot集合caffeine实现本地缓存(模板,可直接cv)
    Python机器学习算法入门教程(四)
    怎么能避免写出慢SQL?
    树莓派4B_OpenCv学习笔记15:OpenCv定位物体实时坐标
    SQL做流水号
    上海各梯队IB学校怎么选?
    【782. 变为棋盘】
    甘特图来啦,项目管理神器,模板直接用
  • 原文地址:https://blog.csdn.net/tortorish/article/details/134064424