-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathreweighting.py
More file actions
50 lines (44 loc) · 1.88 KB
/
Copy pathreweighting.py
File metadata and controls
50 lines (44 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import json
import random
import os
if __name__ == '__main__':
influence = {
"Mathematics": 6.58035278e-05,
"Coding": 7.74383545e-04,
"bbh": 1.30653381e-04,
"Instruction": 1.92642212e-04,
"TrustAI": -4.43458557e-05}
max_num = 0.15
beta = max_num / max(abs(value) for value in influence.values())
for key, value in influence.items():
influence[key] = value * beta
control_datasum = False
original_training = f"/mnt/petrelfs/mingchenlin/DataEvolution/train_dataset_1_M1_M2-2"
training_data = {}
old_sum = 0
for key, value in influence.items():
with open(os.path.join(original_training, key, "original_train.jsonl"), "r") as f:
for line in f:
training_data[key] = training_data.get(key, []) + [json.loads(line)]
old_sum += len(training_data[key])
print(old_sum)
new_sum = 0
for key, value in influence.items():
influence[key] = int(len(training_data[key]) * (1 + value))
new_sum += influence[key]
print(new_sum)
if control_datasum:
for key, value in influence.items():
influence[key] = int(influence[key] * old_sum / new_sum)
for key, value in training_data.items():
if len(training_data[key]) > influence[key]:
training_data[key] = random.sample(training_data[key], int(influence[key]))
else:
training_data[key] += random.sample(training_data[key], influence[key] - len(training_data[key]))
target_path = f"/mnt/petrelfs/mingchenlin/DataEvolution/train_dataset_1_M1_M2_M3_2"
for key, value in training_data.items():
print(key, len(value))
os.makedirs(os.path.join(target_path, key), exist_ok=True)
with open(os.path.join(target_path, key, "original_train.jsonl"), "w") as f:
for line in value:
f.write(json.dumps(line) + "\n")