Views
No views yet
1
2from datasets import load_dataset
3
4
5def question_answering_format(question, answer):
6
7 return f"Question: {question}\nAnswer: {answer}"
8
9def multiple_choices_question_answering_format(question, choices, answer):
10 return f"{question.strip()}\nA. {choices[0]}\nB. {choices[1]}\nC. {choices[2]}\nD. {choices[3]}\nAnswer: {answer}"
11
12## An example of using ARC for construting the EoRA calibration set
13
14def construct_c4():
15 calibration_dataset = load_dataset(
16 "/mnt/ceph/develop/jiawei/code_dataset/c4",
17 data_files="en.noblocklist/c4-train.00001-of-01024.json.gz",
18 split="train", download_mode="force_redownload"
19 ).select(range(1024))["text"]
20 return calibration_dataset
21
22def construct_ARC():
23 nsamples = 1024
24 arc_easy_calibration_dataset = load_dataset('ai2_arc', 'ARC-Easy', split='train').select(range(nsamples))
25 arc_challenge_calibration_dataset = load_dataset('ai2_arc', 'ARC-Challenge', split='train').select(range(nsamples))
26 dataset = []
27
28 for example in arc_easy_calibration_dataset:
29 answer = example['choices']['text'][example['choices']['label'].index(example['answerKey'])]
30 question = example['question']
31 dataset.append(question_answering_format(question=question,answer=answer))
32
33 for example in arc_challenge_calibration_dataset:
34 answer = example['choices']['text'][example['choices']['label'].index(example['answerKey'])]
35 question = example['question']
36 dataset.append(question_answering_format(question=question,answer=answer))
37
38 ## we recommend also include some examples from C4 to avoid overfitting to the downstream data
39 c4_dataset = load_dataset(
40 "allenai/c4",
41 data_files="en/c4-train.00001-of-01024.json.gz",
42 split="train"
43 ).select(range(nsamples))["text"]
44
45 return dataset + c4_dataset
46
47def multiple_identity_format(instruction, input_q, output):
48 return f"{instruction.strip()} {input_q}\n {output}"
49def construct_mmlu():
50
51 mmlu_calibration_dataset = load_dataset('/mnt/ceph/develop/jiawei/code_dataset/mmlu', 'all', split='validation')
52 dataset = []
53 for example in mmlu_calibration_dataset:
54 question = example['question']
55 choices = example['choices']
56 answer = ['A','B','C','D'][example['answer']]
57 dataset.append(multiple_choices_question_answering_format(question, choices, answer))
58 identity_dataset = load_dataset(
59 "json",
60 data_files="/mnt/ceph/develop/jiawei/GPTQModel/examples/eora/identity.json",
61 split="train"
62 )
63
64 for example in identity_dataset:
65 instruction = example['instruction']
66 input_q = example['input']
67 output = example['output']
68 dataset.append(multiple_identity_format(instruction, input_q, output))
69
70 ## we recommend also include some examples from C4 to avoid overfitting to the downstream data
71 c4_dataset = load_dataset(
72 "/mnt/ceph/develop/jiawei/code_dataset/c4",
73 data_files="en.noblocklist/c4-train.00001-of-01024.json.gz",
74 split="train"
75 ).select(range(1024))["text"]
76
77 return dataset + c4_dataset
78
791
2python examples/eora/eora_generation.py THUDM/GLM-4-9B-Chat-0414 --bits 4 --quant_save_path glide-the/GLM-4-9B-Chat-0414-identity-4bits --eora_dataset mmlu --eora_save_path glide-the/GLM-4-9B-Chat-0414-identity-4bits-eora_rank64_c4 --eora_rank 64
31
2
3python examples/eora/eora_load_and_inference.py --quantized_model glide-the/GLM-4-9B-Chat-0414-identity-4bits --eora glide-the/GLM-4-9B-Chat-0414-identity-4bits-eora_rank64_c4 --eora_rank 64
41
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4tokenizer = AutoTokenizer.from_pretrained("glide-the/GLM-4-9B-Chat-0414-identity-4bits")
5quantized_model = AutoModelForCausalLM.from_pretrained("glide-the/GLM-4-9B-Chat-0414-identity-4bits")
6print(tokenizer.decode(quantized_model.generate(**tokenizer("gptqmodel is", return_tensors="pt").to(quantized_model.device))[0]))
7