openmedlab / PULSE

PULSE: Pretrained and Unified Language Service Engine
Apache License 2.0
457 stars 15 forks source link

PULSE-7b模型,GPTQ-for-PULSE量化 #10

Open zhaofeng3012 opened 8 months ago

zhaofeng3012 commented 8 months ago

按照文档,对PULSE-7b模型,使用GPTQ-for-PULSE进行模型量化:

CUDA_VISIBLE_DEVICES=0 python bloom.py ${MODEL_DIR} custom --wbits 4 --act-order --groupsize 128 --save pulse7b-4bit-128g.bin --calib_data ${CALIB_DATA_PATH}

命令参数${MODEL_DIR}指的应该是PULSE-7bv5的模型文件夹路径吧? --calib_data ${CALIB_DATA_PATH}是什么意思?要设置什么路径呢? @hanrui1sensetime 求解答

另外,生成的pulse7b-4bit-128g.bin要怎么使用?在设置的地方替换原来的PULSE-7bv5的模型文件夹路径就可以了么?

zhaofeng3012 commented 8 months ago

@genggui001 盼回复

hanrui1sensetime commented 8 months ago

Hi @zhaofeng3012

  1. 命令参数${MODEL_DIR} 是PULSE-7bv5的模型文件夹路径;
  2. --calib_data ${CALIB_DATA_PATH} 是当dataset选项设为custom时,权重静态量化需要的客制化配准数据,请根据你特定的任务进行数据配准,一般需要128条以内的数据就可以,每条数据以
    {"input_ids": [1411, 215407, 29]}

    这样的形式组成jsonl文件就好;

  3. 生成的bin文件就让他存在于${MODEL_DIR}中就可以,通过调用load_quant接口来进行加载权重
zhaofeng3012 commented 8 months ago

Hi @zhaofeng3012

  1. 命令参数${MODEL_DIR} 是PULSE-7bv5的模型文件夹路径;
  2. --calib_data ${CALIB_DATA_PATH} 是当dataset选项设为custom时,权重静态量化需要的客制化配准数据,请根据你特定的任务进行数据配准,一般需要128条以内的数据就可以,每条数据以
{"input_ids": [1411, 215407, 29]}

这样的形式组成jsonl文件就好; 3. 生成的bin文件就让他存在于${MODEL_DIR}中就可以,通过调用load_quant接口来进行加载权重

感谢您的回复!

zhaofeng3012 commented 7 months ago

Hi @zhaofeng3012

  1. 命令参数${MODEL_DIR} 是PULSE-7bv5的模型文件夹路径;
  2. --calib_data ${CALIB_DATA_PATH} 是当dataset选项设为custom时,权重静态量化需要的客制化配准数据,请根据你特定的任务进行数据配准,一般需要128条以内的数据就可以,每条数据以
{"input_ids": [1411, 215407, 29]}

这样的形式组成jsonl文件就好; 3. 生成的bin文件就让他存在于${MODEL_DIR}中就可以,通过调用load_quant接口来进行加载权重

您好,@hanrui1sensetime 想再咨询您一个问题,就是量化完成后生成的bin文件,如果想通过model = AutoModelForCausalLM.from_pretrained()这个官方接口加载使用的话,需要怎么生成一下量化后对应的这些文件呢? image

有没有相关的教程可以学习一下?

hanrui1sensetime commented 7 months ago

Hi, @zhaofeng3012 解析一下pulse7b-4bit-128g.bin的字典,重新组织成pytorch_model.bin.index.json的样子就可以了,然后把旧的pytorch_model.bin.index.json替换掉就行(不过开发过程中建议保存一份副本)