Skip to content

Commit 35e7687

Browse files
committed
support dev set in web ui
Former-commit-id: fe13705
1 parent 8e4ae0a commit 35e7687

5 files changed

Lines changed: 67 additions & 5 deletions

File tree

src/llmtuner/tuner/sft/metric.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __call__(self, eval_preds: Sequence[Union[np.ndarray, Tuple[np.ndarray]]]) -
2323
Uses the model predictions to compute metrics.
2424
"""
2525
preds, labels = eval_preds
26-
score_dict = {"rouge-1": [], "rouge-2": [], "rouge-l": [], "bleu-4": []}
26+
score_dict = {"accuracy": [], "rouge-1": [], "rouge-2": [], "rouge-l": [], "bleu-4": []}
2727

2828
preds = np.where(preds != IGNORE_INDEX, preds, self.tokenizer.pad_token_id)
2929
labels = np.where(labels != IGNORE_INDEX, labels, self.tokenizer.pad_token_id)
@@ -47,5 +47,6 @@ def __call__(self, eval_preds: Sequence[Union[np.ndarray, Tuple[np.ndarray]]]) -
4747

4848
bleu_score = sentence_bleu([list(label)], list(pred), smoothing_function=SmoothingFunction().method3)
4949
score_dict["bleu-4"].append(round(bleu_score * 100, 4))
50+
score_dict["accuracy"].append(float(len(label) != 0 and pred[:len(label)] == label))
5051

5152
return {k: float(np.mean(v)) for k, v in score_dict.items()}

src/llmtuner/webui/components/eval.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ def create_eval_tab(top_elems: Dict[str, Component], runner: Runner) -> Dict[str
2121
preview_btn.click(get_preview, [dataset_dir, dataset], [preview_count, preview_samples, preview_box])
2222

2323
with gr.Row():
24+
max_source_length = gr.Slider(value=512, minimum=4, maximum=4096, step=1)
25+
max_target_length = gr.Slider(value=512, minimum=4, maximum=4096, step=1)
2426
max_samples = gr.Textbox(value="100000")
25-
batch_size = gr.Slider(value=8, minimum=1, maximum=128, step=1)
27+
batch_size = gr.Slider(value=8, minimum=1, maximum=512, step=1)
2628
predict = gr.Checkbox(value=True)
2729

2830
with gr.Row():
@@ -43,6 +45,8 @@ def create_eval_tab(top_elems: Dict[str, Component], runner: Runner) -> Dict[str
4345
top_elems["source_prefix"],
4446
dataset_dir,
4547
dataset,
48+
max_source_length,
49+
max_target_length,
4650
max_samples,
4751
batch_size,
4852
predict
@@ -58,6 +62,8 @@ def create_eval_tab(top_elems: Dict[str, Component], runner: Runner) -> Dict[str
5862
preview_count=preview_count,
5963
preview_samples=preview_samples,
6064
close_btn=close_btn,
65+
max_source_length=max_source_length,
66+
max_target_length=max_target_length,
6167
max_samples=max_samples,
6268
batch_size=batch_size,
6369
predict=predict,

src/llmtuner/webui/components/sft.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,24 @@ def create_sft_tab(top_elems: Dict[str, Component], runner: Runner) -> Dict[str,
2323
preview_btn.click(get_preview, [dataset_dir, dataset], [preview_count, preview_samples, preview_box])
2424

2525
with gr.Row():
26+
max_source_length = gr.Slider(value=512, minimum=4, maximum=4096, step=1)
27+
max_target_length = gr.Slider(value=512, minimum=4, maximum=4096, step=1)
2628
learning_rate = gr.Textbox(value="5e-5")
2729
num_train_epochs = gr.Textbox(value="3.0")
2830
max_samples = gr.Textbox(value="100000")
2931

3032
with gr.Row():
31-
batch_size = gr.Slider(value=4, minimum=1, maximum=128, step=1)
32-
gradient_accumulation_steps = gr.Slider(value=4, minimum=1, maximum=32, step=1)
33+
batch_size = gr.Slider(value=4, minimum=1, maximum=512, step=1)
34+
gradient_accumulation_steps = gr.Slider(value=4, minimum=1, maximum=512, step=1)
3335
lr_scheduler_type = gr.Dropdown(
3436
value="cosine", choices=[scheduler.value for scheduler in SchedulerType]
3537
)
38+
dev_ratio = gr.Slider(value=0, minimum=0, maximum=1, step=0.001)
3639
fp16 = gr.Checkbox(value=True)
3740

3841
with gr.Row():
3942
logging_steps = gr.Slider(value=5, minimum=5, maximum=1000, step=5)
40-
save_steps = gr.Slider(value=100, minimum=10, maximum=2000, step=10)
43+
save_steps = gr.Slider(value=100, minimum=10, maximum=5000, step=10)
4144

4245
with gr.Row():
4346
start_btn = gr.Button()
@@ -63,12 +66,15 @@ def create_sft_tab(top_elems: Dict[str, Component], runner: Runner) -> Dict[str,
6366
top_elems["source_prefix"],
6467
dataset_dir,
6568
dataset,
69+
max_source_length,
70+
max_target_length,
6671
learning_rate,
6772
num_train_epochs,
6873
max_samples,
6974
batch_size,
7075
gradient_accumulation_steps,
7176
lr_scheduler_type,
77+
dev_ratio,
7278
fp16,
7379
logging_steps,
7480
save_steps,
@@ -89,12 +95,15 @@ def create_sft_tab(top_elems: Dict[str, Component], runner: Runner) -> Dict[str,
8995
preview_count=preview_count,
9096
preview_samples=preview_samples,
9197
close_btn=close_btn,
98+
max_source_length=max_source_length,
99+
max_target_length=max_target_length,
92100
learning_rate=learning_rate,
93101
num_train_epochs=num_train_epochs,
94102
max_samples=max_samples,
95103
batch_size=batch_size,
96104
gradient_accumulation_steps=gradient_accumulation_steps,
97105
lr_scheduler_type=lr_scheduler_type,
106+
dev_ratio=dev_ratio,
98107
fp16=fp16,
99108
logging_steps=logging_steps,
100109
save_steps=save_steps,

src/llmtuner/webui/locales.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,26 @@
129129
"value": "关闭"
130130
}
131131
},
132+
"max_source_length": {
133+
"en": {
134+
"label": "Max source length",
135+
"info": "Max tokens in source sequence."
136+
},
137+
"zh": {
138+
"label": "输入序列最大长度",
139+
"info": "输入序列分词后的最大长度。"
140+
}
141+
},
142+
"max_target_length": {
143+
"en": {
144+
"label": "Max target length",
145+
"info": "Max tokens in target sequence."
146+
},
147+
"zh": {
148+
"label": "输出序列最大长度",
149+
"info": "输出序列分词后的最大长度。"
150+
}
151+
},
132152
"learning_rate": {
133153
"en": {
134154
"label": "Learning rate",
@@ -189,6 +209,16 @@
189209
"info": "采用的学习率调节器名称。"
190210
}
191211
},
212+
"dev_ratio": {
213+
"en": {
214+
"label": "Dev ratio",
215+
"info": "Proportion of data in the dev set."
216+
},
217+
"zh": {
218+
"label": "验证集比例",
219+
"info": "验证集占全部样本的百分比。"
220+
}
221+
},
192222
"fp16": {
193223
"en": {
194224
"label": "fp16",

src/llmtuner/webui/runner.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,15 @@ def run_train(
6969
source_prefix: str,
7070
dataset_dir: str,
7171
dataset: List[str],
72+
max_source_length: int,
73+
max_target_length: int,
7274
learning_rate: str,
7375
num_train_epochs: str,
7476
max_samples: str,
7577
batch_size: int,
7678
gradient_accumulation_steps: int,
7779
lr_scheduler_type: str,
80+
dev_ratio: float,
7881
fp16: bool,
7982
logging_steps: int,
8083
save_steps: int,
@@ -104,6 +107,8 @@ def run_train(
104107
source_prefix=source_prefix,
105108
dataset_dir=dataset_dir,
106109
dataset=",".join(dataset),
110+
max_source_length=max_source_length,
111+
max_target_length=max_target_length,
107112
learning_rate=float(learning_rate),
108113
num_train_epochs=float(num_train_epochs),
109114
max_samples=int(max_samples),
@@ -115,6 +120,13 @@ def run_train(
115120
save_steps=save_steps,
116121
output_dir=os.path.join(get_save_dir(model_name), finetuning_type, output_dir)
117122
)
123+
124+
if dev_ratio > 1e-6:
125+
args["dev_ratio"] = dev_ratio
126+
args["evaluation_strategy"] = "steps"
127+
args["eval_steps"] = save_steps
128+
args["load_best_model_at_end"] = True
129+
118130
model_args, data_args, training_args, finetuning_args, _ = get_train_args(args)
119131

120132
run_args = dict(
@@ -147,6 +159,8 @@ def run_eval(
147159
source_prefix: str,
148160
dataset_dir: str,
149161
dataset: List[str],
162+
max_source_length: int,
163+
max_target_length: int,
150164
max_samples: str,
151165
batch_size: int,
152166
predict: bool
@@ -177,6 +191,8 @@ def run_eval(
177191
source_prefix=source_prefix,
178192
dataset_dir=dataset_dir,
179193
dataset=",".join(dataset),
194+
max_source_length=max_source_length,
195+
max_target_length=max_target_length,
180196
max_samples=int(max_samples),
181197
per_device_eval_batch_size=batch_size,
182198
output_dir=output_dir

0 commit comments

Comments
 (0)