Spaces:
Build error
Build error
finetuning internlm with P1 prompt
Browse files
.gitattributes
CHANGED
@@ -43,3 +43,4 @@ results/mac-results_lf.csv filter=lfs diff=lfs merge=lfs -text
|
|
43 |
datasets/mgtv/dev_en.csv filter=lfs diff=lfs merge=lfs -text
|
44 |
datasets/mgtv/train_en.csv filter=lfs diff=lfs merge=lfs -text
|
45 |
datasets/mgtv/unique_translations.csv filter=lfs diff=lfs merge=lfs -text
|
|
|
|
43 |
datasets/mgtv/dev_en.csv filter=lfs diff=lfs merge=lfs -text
|
44 |
datasets/mgtv/train_en.csv filter=lfs diff=lfs merge=lfs -text
|
45 |
datasets/mgtv/unique_translations.csv filter=lfs diff=lfs merge=lfs -text
|
46 |
+
llama-factory/data/alpaca_mgtv_p1.json filter=lfs diff=lfs merge=lfs -text
|
competition/08_InterLM_finetuning.ipynb
ADDED
The diff for this file is too large to render.
See raw diff
|
|
llama-factory/config/internlm2_5_7b_lora_sft.yaml
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
### model
|
2 |
+
model_name_or_path: internlm/internlm2_5-7b-chat-1m
|
3 |
+
|
4 |
+
### method
|
5 |
+
stage: sft
|
6 |
+
do_train: true
|
7 |
+
finetuning_type: lora
|
8 |
+
lora_target: all
|
9 |
+
quantization_bit: 4 # use 4-bit QLoRA
|
10 |
+
loraplus_lr_ratio: 16.0 # use LoRA+ with lambda=16.0
|
11 |
+
# use_unsloth: true # use UnslothAI's LoRA optimization for 2x faster training
|
12 |
+
upcast_layernorm: true
|
13 |
+
|
14 |
+
### dataset
|
15 |
+
dataset: alpaca_mgtv_p1
|
16 |
+
template: chatml
|
17 |
+
cutoff_len: 1024
|
18 |
+
max_samples: 50
|
19 |
+
overwrite_cache: true
|
20 |
+
preprocessing_num_workers: 16
|
21 |
+
|
22 |
+
### output
|
23 |
+
output_dir: saves/internlm2_5_7b/lora/sft
|
24 |
+
logging_steps: 10
|
25 |
+
save_steps: 10
|
26 |
+
plot_loss: true
|
27 |
+
overwrite_output_dir: true
|
28 |
+
# resume_from_checkpoint: true
|
29 |
+
|
30 |
+
### train
|
31 |
+
per_device_train_batch_size: 1
|
32 |
+
gradient_accumulation_steps: 8
|
33 |
+
learning_rate: 1.0e-4
|
34 |
+
num_train_epochs: 6.0
|
35 |
+
lr_scheduler_type: cosine
|
36 |
+
warmup_ratio: 0.1
|
37 |
+
bf16: true
|
38 |
+
ddp_timeout: 180000000
|
39 |
+
|
40 |
+
### eval
|
41 |
+
val_size: 0.02
|
42 |
+
per_device_eval_batch_size: 1
|
43 |
+
eval_strategy: steps
|
44 |
+
eval_steps: 10
|
45 |
+
|
46 |
+
report_to: wandb
|
47 |
+
run_name: internlm2_5_7b # optional
|
llama-factory/data/alpaca_mgtv_p1.json
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:26ede462ba9a0ea4bb41030128ec65bb6dd65539fed1e5a943011f8e1770bc8f
|
3 |
+
size 74376969
|
llama-factory/data/dataset_info.json
CHANGED
@@ -1,4 +1,7 @@
|
|
1 |
{
|
|
|
|
|
|
|
2 |
"alpaca_mac": {
|
3 |
"file_name": "alpaca_mac.json"
|
4 |
},
|
|
|
1 |
{
|
2 |
+
"alpaca_mgtv_p1": {
|
3 |
+
"file_name": "alpaca_mgtv_p1.json"
|
4 |
+
},
|
5 |
"alpaca_mac": {
|
6 |
"file_name": "alpaca_mac.json"
|
7 |
},
|
llm_toolkit/logical_reasoning_utils.py
CHANGED
@@ -9,6 +9,44 @@ from tqdm import tqdm
|
|
9 |
|
10 |
print(f"loading {__file__}")
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
def calc_metrics(references, predictions, debug=False):
|
14 |
assert len(references) == len(
|
@@ -48,7 +86,9 @@ def save_results(model_name, results_path, dataset, predictions, debug=False):
|
|
48 |
df.to_csv(results_path, index=False)
|
49 |
|
50 |
|
51 |
-
def load_logical_reasoning_dataset(
|
|
|
|
|
52 |
postfix = "" if chinese_prompt else "_en"
|
53 |
train_data_file = data_path + f"/train{postfix}.csv"
|
54 |
test_data_file = data_path + f"/dev{postfix}.csv"
|
@@ -60,43 +100,8 @@ def load_logical_reasoning_dataset(data_path, tokenizer=None, chinese_prompt=Tru
|
|
60 |
)
|
61 |
|
62 |
if tokenizer:
|
63 |
-
xreasoning_prompt = """你是一个情景猜谜游戏的主持人。游戏规则如下:
|
64 |
-
|
65 |
-
1. 参与者会得到一个谜面,谜面会描述一个简单又难以理解的事件。
|
66 |
-
2. 主持人知道谜底,谜底是谜面的答案。
|
67 |
-
3. 参与者可以询问任何封闭式问题来找寻事件的真相。
|
68 |
-
4. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。各回答的判断标准如下:
|
69 |
-
- 若谜面和谜底能找到问题的答案,回答:是或者不是
|
70 |
-
- 若谜面和谜底不能直接或者间接推断出问题的答案,回答:不重要
|
71 |
-
- 若参与者提问不是一个封闭式问题或者问题难以理解,回答:问法错误
|
72 |
-
- 若参与者提问基本还原了谜底真相,回答:回答正确
|
73 |
-
5. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。
|
74 |
-
|
75 |
-
请严格按照这些规则回答参与者提出的问题。
|
76 |
-
|
77 |
-
**谜面:** {}
|
78 |
-
|
79 |
-
**谜底:** {}
|
80 |
-
|
81 |
-
**参与者提出的问题:** {}
|
82 |
-
"""
|
83 |
reasoning_prompt = (
|
84 |
-
|
85 |
-
|
86 |
-
1. 参与者会得到一个谜题。
|
87 |
-
2. 参与者可以通过提问来获取线索,尝试解开谜题。
|
88 |
-
3. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。
|
89 |
-
4. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。
|
90 |
-
5. 参与者需要根据回答来推理,并最终找出谜题的正确答案。
|
91 |
-
|
92 |
-
请严格按照这些规则回答参与者提出的问题。
|
93 |
-
|
94 |
-
谜题: {}
|
95 |
-
|
96 |
-
实际情况: {}
|
97 |
-
|
98 |
-
参与者提出的问题: {}
|
99 |
-
"""
|
100 |
if chinese_prompt
|
101 |
else """You are the host of a situational guessing game. The rules of the game are as follows:
|
102 |
|
|
|
9 |
|
10 |
print(f"loading {__file__}")
|
11 |
|
12 |
+
P1 = """你是一个逻辑游戏的主持人。游戏规则如下:
|
13 |
+
|
14 |
+
1. 参与者会得到一个谜题。
|
15 |
+
2. 参与者可以通过提问来获取线索,尝试解开谜题。
|
16 |
+
3. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。
|
17 |
+
4. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。
|
18 |
+
5. 参与者需要根据回答来推理,并最终找出谜题的正确答案。
|
19 |
+
|
20 |
+
请严格按照这些规则回答参与者提出的问题。
|
21 |
+
|
22 |
+
谜题: {}
|
23 |
+
|
24 |
+
实际情况: {}
|
25 |
+
|
26 |
+
参与者提出的问题: {}
|
27 |
+
"""
|
28 |
+
|
29 |
+
P2 = """你是一个情景猜谜游戏的主持人。游戏规则如下:
|
30 |
+
|
31 |
+
1. 参与者会得到一个谜面,谜面会描述一个简单又难以理解的事件。
|
32 |
+
2. 主持人知道谜底,谜底是谜面的答案。
|
33 |
+
3. 参与者可以询问任何封闭式问题来找寻事件的真相。
|
34 |
+
4. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。各回答的判断标准如下:
|
35 |
+
- 若谜面和谜底能找到问题的答案,回答:是或者不是
|
36 |
+
- 若谜面和谜底不能直接或者间接推断出问题的答案,回答:不重要
|
37 |
+
- 若参与者提问不是一个封闭式问题或者问题难以理解,回答:问法错误
|
38 |
+
- 若参与者提问基本还原了谜底真相,回答:回答正确
|
39 |
+
5. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。
|
40 |
+
|
41 |
+
请严格按照这些规则回答参与者提出的问题。
|
42 |
+
|
43 |
+
**谜面:** {}
|
44 |
+
|
45 |
+
**谜底:** {}
|
46 |
+
|
47 |
+
**参与者提出的问题:** {}
|
48 |
+
"""
|
49 |
+
|
50 |
|
51 |
def calc_metrics(references, predictions, debug=False):
|
52 |
assert len(references) == len(
|
|
|
86 |
df.to_csv(results_path, index=False)
|
87 |
|
88 |
|
89 |
+
def load_logical_reasoning_dataset(
|
90 |
+
data_path, using_p1=True, tokenizer=None, chinese_prompt=True
|
91 |
+
):
|
92 |
postfix = "" if chinese_prompt else "_en"
|
93 |
train_data_file = data_path + f"/train{postfix}.csv"
|
94 |
test_data_file = data_path + f"/dev{postfix}.csv"
|
|
|
100 |
)
|
101 |
|
102 |
if tokenizer:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
reasoning_prompt = (
|
104 |
+
(P1 if using_p1 else P2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
if chinese_prompt
|
106 |
else """You are the host of a situational guessing game. The rules of the game are as follows:
|
107 |
|