AutoAWQ
AutoAWQ copied to clipboard
After AWQ quantization, the output cannot be stopped normally
model: qwen1.5-7b Python 3.10.8 cuda 12.1 torch 2.4.0 transformers 4.41.2
error case
tokenizer_config.json
train code
import datasets
import json
from awq import AutoAWQForCausalLM
from transformers import AwqConfig, AutoConfig
from huggingface_hub import HfApi
from transformers import (
AutoTokenizer,
TrainingArguments,
Trainer,
DataCollatorForLanguageModeling
)
from peft import get_peft_model, LoraConfig, TaskType
# _register_template(
# name="qwen",
# format_user=StringFormatter(slots=["<|im_start|>user\n{{content}}<|im_end|>\n<|im_start|>assistant\n"]),
# format_system=StringFormatter(slots=["<|im_start|>system\n{{content}}<|im_end|>\n"]),
# format_observation=StringFormatter(slots=["<|im_start|>tool\n{{content}}<|im_end|>\n<|im_start|>assistant\n"]),
# format_separator=EmptyFormatter(slots=["\n"]),
# default_system="You are a helpful assistant.",
# stop_words=["<|im_end|>"],
# replace_eos=True,
# )
def format_text(item):
Q = item['input']
A = item['output']
system_input = "<|im_start|>system\n你是一个信息抽取专家,根据文本内容抽取最重要的5个实体和3个具备争议性的话题。<|im_end|>\n"
user = f"<|im_start|>user\n{Q}<|im_end|>\n<|im_start|>assistant\n{A}"
res = system_input + user
return res
model_path = "/root/autodl-tmp/checkpoints/qwen2/entity_cls_all_clear_new/freeze/checkpoint-70"
data_path = "awq_eval.json"
quant_path = "/root/autodl-tmp/qwen15-7b-awq"
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
# Load model
print("Load model-------------")
model = AutoAWQForCausalLM.from_pretrained(model_path, safetensors=True)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
f = open(data_path, 'r', encoding="utf-8")
data = json.load(f)
text_list = [format_text(item) for item in data]
print('first:', text_list[0])
# Quantize
print("Quantize-------------")
model.quantize(tokenizer, quant_config=quant_config, calib_data=text_list)
# quantization_config = AwqConfig(
# bits=quant_config["w_bit"],
# group_size=quant_config["q_group_size"],
# zero_point=quant_config["zero_point"],
# version=quant_config["version"].lower(),
# ).to_dict()
# model.model.config.quantization_config = quantization_config
# Save quantized model
print("Save quantized model-------------")
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)
print(f'Model is quantized and saved at "{quant_path}"')
infer code
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "/root/autodl-tmp/qwen15-7b-awq-v2"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True).to(0)
text = "酒驾、无证,还拉着1老4小…北海一男子因多项交通违法行为被交警查处 交通安全不容忽视,很多严重的道路交通事故都是因为不遵守交通法律法规导致的。近日,一男子就因多项交通违法行为被北海公安交警查处,该男子酒后、无证驾驶三轮车摩托车,还搭载5人出行,存在极大的安全隐患。7月16日晚上,北海市公安局交警支队第二大队执勤民警在北部湾路开展夏季交通安全突出违法专项整治行动时,发现一辆无牌三轮摩托车,车上除了驾驶人竟然还坐着五个人(一名老人和四名小孩)。民警赶忙喊话示意驾驶人靠边停车,并下车接受检查。在此过程中,民警发现该车驾驶人朱某身上散发出的酒味,随即对朱某进行呼吸式酒精测试,结果显示其体内酒精含量为22mg/100ml,达到饮酒后驾驶机动车标准。此外,民警在核查朱某身份信息时,还发现其并未取得机动车驾驶证。据朱某交代,当天晚上他在家吃饭时喝了点酒,家里小孩闹着要出去玩,他自认为晚上这段路应该不会有交警查车,心存侥幸便驾车上路,没想到被逮了个正着。随后,民警对朱某及其家人进行了严肃的批评教育,告知朱某违法的法律后果,告诫其要严格遵守交通法律法规,确保安全出行。最后,民警针对朱某饮酒后驾驶机动车、未取得机动车驾驶证驾驶机动车上道路行驶、驾驶未悬挂机动车号牌的机动车上道路行驶、三轮车违反规定载人的违法行为,处以罚款 1850 元、拖移机动车的行政处罚;此外,朱某还将面临15日以下行政拘留的处罚。北海公安交警提示:请广大交通参与者在驾驶车辆时切勿酒驾、醉驾、超员、超速、超载、违法载人等,切实增强自我安全防护意识,严格遵守交通法规,谨慎驾驶,安全出行。"
system_input = "<|im_start|>system\n你是一个信息抽取专家,根据文本内容抽取最重要的5个实体和3个具备争议性的话题。<|im_end|>\n"
user = f"<|im_start|>user\n{text}<|im_end|>\n<|im_start|>assistant\n"
res = system_input + user
inputs = tokenizer(res, return_tensors="pt").to(0)
out = model.generate(**inputs, max_new_tokens=2048)
print(tokenizer.decode(out[0], skip_special_tokens=True))
before awq : Normal output
enother case
train code
import datasets
import json
from awq import AutoAWQForCausalLM
from transformers import AwqConfig, AutoConfig
from huggingface_hub import HfApi
from transformers import (
AutoTokenizer,
TrainingArguments,
Trainer,
DataCollatorForLanguageModeling
)
from peft import get_peft_model, LoraConfig, TaskType
# _register_template(
# name="default",
# format_user=StringFormatter(slots=["Human: {{content}}\nAssistant: "]),
# format_system=StringFormatter(slots=["{{content}}\n"]),
# format_separator=EmptyFormatter(slots=["\n"]),
# )
def format_text(item):
Q = item['input']
A = item['output']
res = f"你是一个信息抽取专家,根据文本内容抽取最重要的5个实体和3个具备争议性的话题。\nHuman: {Q}\nAssistant: {A}"
return res
model_path = "/root/autodl-tmp/checkpoint-70"
data_path = "awq_eval.json"
quant_path = "/root/autodl-tmp/qwen15-7b-awq-4b"
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
# Load model
print("Load model-------------")
model = AutoAWQForCausalLM.from_pretrained(model_path, safetensors=True)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
f = open(data_path, 'r', encoding="utf-8")
data = json.load(f)
text_list = [format_text(item) for item in data]
print('first:', text_list[0])
# Quantize
print("Quantize-------------")
model.quantize(tokenizer, quant_config=quant_config, calib_data=text_list)
# Save quantized model
print("Save quantized model-------------")
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)
print(f'Model is quantized and saved at "{quant_path}"')
infer code
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "/root/autodl-tmp/qwen15-7b-awq-4b"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True).to(0)
text = "酒驾、无证,还拉着1老4小…北海一男子因多项交通违法行为被交警查处 交通安全不容忽视,很多严重的道路交通事故都是因为不遵守交通法律法规导致的。近日,一男子就因多项交通违法行为被北海公安交警查处,该男子酒后、无证驾驶三轮车摩托车,还搭载5人出行,存在极大的安全隐患。7月16日晚上,北海市公安局交警支队第二大队执勤民警在北部湾路开展夏季交通安全突出违法专项整治行动时,发现一辆无牌三轮摩托车,车上除了驾驶人竟然还坐着五个人(一名老人和四名小孩)。民警赶忙喊话示意驾驶人靠边停车,并下车接受检查。在此过程中,民警发现该车驾驶人朱某身上散发出的酒味,随即对朱某进行呼吸式酒精测试,结果显示其体内酒精含量为22mg/100ml,达到饮酒后驾驶机动车标准。此外,民警在核查朱某身份信息时,还发现其并未取得机动车驾驶证。据朱某交代,当天晚上他在家吃饭时喝了点酒,家里小孩闹着要出去玩,他自认为晚上这段路应该不会有交警查车,心存侥幸便驾车上路,没想到被逮了个正着。随后,民警对朱某及其家人进行了严肃的批评教育,告知朱某违法的法律后果,告诫其要严格遵守交通法律法规,确保安全出行。最后,民警针对朱某饮酒后驾驶机动车、未取得机动车驾驶证驾驶机动车上道路行驶、驾驶未悬挂机动车号牌的机动车上道路行驶、三轮车违反规定载人的违法行为,处以罚款 1850 元、拖移机动车的行政处罚;此外,朱某还将面临15日以下行政拘留的处罚。北海公安交警提示:请广大交通参与者在驾驶车辆时切勿酒驾、醉驾、超员、超速、超载、违法载人等,切实增强自我安全防护意识,严格遵守交通法规,谨慎驾驶,安全出行。"
res = f"你是一个信息抽取专家,根据文本内容抽取最重要的5个实体和3个具备争议性的话题。\nHuman: {text}\nAssistant: "
inputs = tokenizer(res, return_tensors="pt").to(0)
out = model.generate(**inputs, max_new_tokens=2048)
print(tokenizer.decode(out[0], skip_special_tokens=True))
量化时候用的校验集大概有多少条啊,都是什么类型的,我们是观察到不同大小和类型的校验集对模型输出效果的影响还是挺明显的😂