tmnam20 commited on
Commit
457eb45
1 Parent(s): bc62bf5

Training in progress, step 31000, checkpoint

Browse files
checkpoint-31000/added_tokens.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "<bos>": 40478,
3
+ "<eos>": 40479,
4
+ "<pad>": 40480
5
+ }
checkpoint-31000/config.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "openai-gpt",
3
+ "afn": "gelu",
4
+ "architectures": [
5
+ "OpenAIGPTForSequenceClassification"
6
+ ],
7
+ "attn_pdrop": 0.1,
8
+ "embd_pdrop": 0.1,
9
+ "id2label": {
10
+ "0": "entailment",
11
+ "1": "neutral",
12
+ "2": "contradiction"
13
+ },
14
+ "initializer_range": 0.02,
15
+ "label2id": {
16
+ "contradiction": 2,
17
+ "entailment": 0,
18
+ "neutral": 1
19
+ },
20
+ "layer_norm_epsilon": 1e-05,
21
+ "model_type": "openai-gpt",
22
+ "n_ctx": 512,
23
+ "n_embd": 768,
24
+ "n_head": 12,
25
+ "n_layer": 6,
26
+ "n_positions": 512,
27
+ "n_special": 0,
28
+ "pad_token_id": 40480,
29
+ "predict_special_tokens": true,
30
+ "problem_type": "single_label_classification",
31
+ "resid_pdrop": 0.1,
32
+ "summary_activation": null,
33
+ "summary_first_dropout": 0.1,
34
+ "summary_proj_to_labels": true,
35
+ "summary_type": "last",
36
+ "summary_use_proj": true,
37
+ "task_specific_params": {
38
+ "text-generation": {
39
+ "do_sample": true,
40
+ "max_length": 50
41
+ }
42
+ },
43
+ "torch_dtype": "float32",
44
+ "transformers_version": "4.33.0.dev0",
45
+ "vocab_size": 40481
46
+ }
checkpoint-31000/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
checkpoint-31000/optimizer.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:914d07c7a4ffa6456d50b6dbe0f8bd847d7c7d4a2e47dbae3437f9ece573de11
3
+ size 592141189
checkpoint-31000/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:34dd373733959a9f92fd925c7675dbc79572f0b833b492bb0bf812584587a310
3
+ size 296072722
checkpoint-31000/rng_state.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a8bc6a6c893af17ac6d5f25cf990ad27ecc878d0ef9aebef1df28d456c638b8e
3
+ size 14575
checkpoint-31000/scheduler.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:913a2b64fa99d919704b9243fc45f5fde504a2847996cd14c14b46a11f503359
3
+ size 627
checkpoint-31000/special_tokens_map.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "<bos>",
3
+ "eos_token": "<eos>",
4
+ "pad_token": "<pad>",
5
+ "unk_token": "<unk>"
6
+ }
checkpoint-31000/tokenizer_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "clean_up_tokenization_spaces": true,
3
+ "model_max_length": 512,
4
+ "padding_side": "left",
5
+ "tokenizer_class": "OpenAIGPTTokenizer",
6
+ "unk_token": "<unk>"
7
+ }
checkpoint-31000/trainer_state.json ADDED
@@ -0,0 +1,490 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_metric": 1.0461777448654175,
3
+ "best_model_checkpoint": "/kaggle/output/checkpoint-30000",
4
+ "epoch": 1.263037809647979,
5
+ "eval_steps": 1000,
6
+ "global_step": 31000,
7
+ "is_hyper_param_search": false,
8
+ "is_local_process_zero": true,
9
+ "is_world_process_zero": true,
10
+ "log_history": [
11
+ {
12
+ "epoch": 0.0,
13
+ "learning_rate": 2.7777777777777777e-11,
14
+ "loss": 1.05,
15
+ "step": 1
16
+ },
17
+ {
18
+ "epoch": 0.04,
19
+ "learning_rate": 2.7750000000000004e-08,
20
+ "loss": 1.1403,
21
+ "step": 1000
22
+ },
23
+ {
24
+ "epoch": 0.04,
25
+ "eval_accuracy": 0.33712574850299404,
26
+ "eval_loss": 1.1030837297439575,
27
+ "eval_runtime": 29.7882,
28
+ "eval_samples_per_second": 168.187,
29
+ "eval_steps_per_second": 21.049,
30
+ "step": 1000
31
+ },
32
+ {
33
+ "epoch": 0.08,
34
+ "learning_rate": 5.5527777777777784e-08,
35
+ "loss": 1.1194,
36
+ "step": 2000
37
+ },
38
+ {
39
+ "epoch": 0.08,
40
+ "eval_accuracy": 0.34331337325349304,
41
+ "eval_loss": 1.1002165079116821,
42
+ "eval_runtime": 29.8685,
43
+ "eval_samples_per_second": 167.735,
44
+ "eval_steps_per_second": 20.992,
45
+ "step": 2000
46
+ },
47
+ {
48
+ "epoch": 0.12,
49
+ "learning_rate": 8.327777777777778e-08,
50
+ "loss": 1.1194,
51
+ "step": 3000
52
+ },
53
+ {
54
+ "epoch": 0.12,
55
+ "eval_accuracy": 0.3471057884231537,
56
+ "eval_loss": 1.101266622543335,
57
+ "eval_runtime": 29.709,
58
+ "eval_samples_per_second": 168.636,
59
+ "eval_steps_per_second": 21.105,
60
+ "step": 3000
61
+ },
62
+ {
63
+ "epoch": 0.16,
64
+ "learning_rate": 1.1105555555555557e-07,
65
+ "loss": 1.1166,
66
+ "step": 4000
67
+ },
68
+ {
69
+ "epoch": 0.16,
70
+ "eval_accuracy": 0.34311377245508984,
71
+ "eval_loss": 1.0984796285629272,
72
+ "eval_runtime": 29.9401,
73
+ "eval_samples_per_second": 167.334,
74
+ "eval_steps_per_second": 20.942,
75
+ "step": 4000
76
+ },
77
+ {
78
+ "epoch": 0.2,
79
+ "learning_rate": 1.3883333333333335e-07,
80
+ "loss": 1.1137,
81
+ "step": 5000
82
+ },
83
+ {
84
+ "epoch": 0.2,
85
+ "eval_accuracy": 0.3403193612774451,
86
+ "eval_loss": 1.0974279642105103,
87
+ "eval_runtime": 29.8185,
88
+ "eval_samples_per_second": 168.016,
89
+ "eval_steps_per_second": 21.027,
90
+ "step": 5000
91
+ },
92
+ {
93
+ "epoch": 0.24,
94
+ "learning_rate": 1.6658333333333335e-07,
95
+ "loss": 1.1109,
96
+ "step": 6000
97
+ },
98
+ {
99
+ "epoch": 0.24,
100
+ "eval_accuracy": 0.3592814371257485,
101
+ "eval_loss": 1.0984892845153809,
102
+ "eval_runtime": 29.893,
103
+ "eval_samples_per_second": 167.598,
104
+ "eval_steps_per_second": 20.975,
105
+ "step": 6000
106
+ },
107
+ {
108
+ "epoch": 0.29,
109
+ "learning_rate": 1.9436111111111112e-07,
110
+ "loss": 1.1122,
111
+ "step": 7000
112
+ },
113
+ {
114
+ "epoch": 0.29,
115
+ "eval_accuracy": 0.36327345309381237,
116
+ "eval_loss": 1.0960686206817627,
117
+ "eval_runtime": 29.8315,
118
+ "eval_samples_per_second": 167.943,
119
+ "eval_steps_per_second": 21.018,
120
+ "step": 7000
121
+ },
122
+ {
123
+ "epoch": 0.33,
124
+ "learning_rate": 2.2213888888888891e-07,
125
+ "loss": 1.1091,
126
+ "step": 8000
127
+ },
128
+ {
129
+ "epoch": 0.33,
130
+ "eval_accuracy": 0.35728542914171657,
131
+ "eval_loss": 1.0958523750305176,
132
+ "eval_runtime": 29.9494,
133
+ "eval_samples_per_second": 167.282,
134
+ "eval_steps_per_second": 20.935,
135
+ "step": 8000
136
+ },
137
+ {
138
+ "epoch": 0.37,
139
+ "learning_rate": 2.4988888888888893e-07,
140
+ "loss": 1.1077,
141
+ "step": 9000
142
+ },
143
+ {
144
+ "epoch": 0.37,
145
+ "eval_accuracy": 0.35528942115768464,
146
+ "eval_loss": 1.1003851890563965,
147
+ "eval_runtime": 29.9762,
148
+ "eval_samples_per_second": 167.133,
149
+ "eval_steps_per_second": 20.917,
150
+ "step": 9000
151
+ },
152
+ {
153
+ "epoch": 0.41,
154
+ "learning_rate": 2.776666666666667e-07,
155
+ "loss": 1.1091,
156
+ "step": 10000
157
+ },
158
+ {
159
+ "epoch": 0.41,
160
+ "eval_accuracy": 0.3790419161676647,
161
+ "eval_loss": 1.0951762199401855,
162
+ "eval_runtime": 29.8593,
163
+ "eval_samples_per_second": 167.787,
164
+ "eval_steps_per_second": 20.998,
165
+ "step": 10000
166
+ },
167
+ {
168
+ "epoch": 0.45,
169
+ "learning_rate": 3.0541666666666667e-07,
170
+ "loss": 1.1047,
171
+ "step": 11000
172
+ },
173
+ {
174
+ "epoch": 0.45,
175
+ "eval_accuracy": 0.3780439121756487,
176
+ "eval_loss": 1.0928910970687866,
177
+ "eval_runtime": 29.8768,
178
+ "eval_samples_per_second": 167.689,
179
+ "eval_steps_per_second": 20.986,
180
+ "step": 11000
181
+ },
182
+ {
183
+ "epoch": 0.49,
184
+ "learning_rate": 3.3319444444444444e-07,
185
+ "loss": 1.1053,
186
+ "step": 12000
187
+ },
188
+ {
189
+ "epoch": 0.49,
190
+ "eval_accuracy": 0.38323353293413176,
191
+ "eval_loss": 1.0910215377807617,
192
+ "eval_runtime": 29.8703,
193
+ "eval_samples_per_second": 167.725,
194
+ "eval_steps_per_second": 20.991,
195
+ "step": 12000
196
+ },
197
+ {
198
+ "epoch": 0.53,
199
+ "learning_rate": 3.6094444444444446e-07,
200
+ "loss": 1.1035,
201
+ "step": 13000
202
+ },
203
+ {
204
+ "epoch": 0.53,
205
+ "eval_accuracy": 0.34850299401197604,
206
+ "eval_loss": 1.0930161476135254,
207
+ "eval_runtime": 29.8865,
208
+ "eval_samples_per_second": 167.634,
209
+ "eval_steps_per_second": 20.979,
210
+ "step": 13000
211
+ },
212
+ {
213
+ "epoch": 0.57,
214
+ "learning_rate": 3.8872222222222223e-07,
215
+ "loss": 1.1002,
216
+ "step": 14000
217
+ },
218
+ {
219
+ "epoch": 0.57,
220
+ "eval_accuracy": 0.3646706586826347,
221
+ "eval_loss": 1.093497633934021,
222
+ "eval_runtime": 30.0222,
223
+ "eval_samples_per_second": 166.877,
224
+ "eval_steps_per_second": 20.885,
225
+ "step": 14000
226
+ },
227
+ {
228
+ "epoch": 0.61,
229
+ "learning_rate": 4.1647222222222225e-07,
230
+ "loss": 1.1025,
231
+ "step": 15000
232
+ },
233
+ {
234
+ "epoch": 0.61,
235
+ "eval_accuracy": 0.37924151696606784,
236
+ "eval_loss": 1.0900779962539673,
237
+ "eval_runtime": 30.0049,
238
+ "eval_samples_per_second": 166.973,
239
+ "eval_steps_per_second": 20.897,
240
+ "step": 15000
241
+ },
242
+ {
243
+ "epoch": 0.65,
244
+ "learning_rate": 4.4425e-07,
245
+ "loss": 1.0992,
246
+ "step": 16000
247
+ },
248
+ {
249
+ "epoch": 0.65,
250
+ "eval_accuracy": 0.40119760479041916,
251
+ "eval_loss": 1.0855979919433594,
252
+ "eval_runtime": 30.1095,
253
+ "eval_samples_per_second": 166.393,
254
+ "eval_steps_per_second": 20.824,
255
+ "step": 16000
256
+ },
257
+ {
258
+ "epoch": 0.69,
259
+ "learning_rate": 4.7200000000000004e-07,
260
+ "loss": 1.0965,
261
+ "step": 17000
262
+ },
263
+ {
264
+ "epoch": 0.69,
265
+ "eval_accuracy": 0.4171656686626746,
266
+ "eval_loss": 1.0845381021499634,
267
+ "eval_runtime": 30.0586,
268
+ "eval_samples_per_second": 166.674,
269
+ "eval_steps_per_second": 20.859,
270
+ "step": 17000
271
+ },
272
+ {
273
+ "epoch": 0.73,
274
+ "learning_rate": 4.997777777777779e-07,
275
+ "loss": 1.0962,
276
+ "step": 18000
277
+ },
278
+ {
279
+ "epoch": 0.73,
280
+ "eval_accuracy": 0.4087824351297405,
281
+ "eval_loss": 1.0860552787780762,
282
+ "eval_runtime": 30.2343,
283
+ "eval_samples_per_second": 165.706,
284
+ "eval_steps_per_second": 20.738,
285
+ "step": 18000
286
+ },
287
+ {
288
+ "epoch": 0.77,
289
+ "learning_rate": 5.275277777777778e-07,
290
+ "loss": 1.0936,
291
+ "step": 19000
292
+ },
293
+ {
294
+ "epoch": 0.77,
295
+ "eval_accuracy": 0.4039920159680639,
296
+ "eval_loss": 1.0822259187698364,
297
+ "eval_runtime": 30.216,
298
+ "eval_samples_per_second": 165.806,
299
+ "eval_steps_per_second": 20.751,
300
+ "step": 19000
301
+ },
302
+ {
303
+ "epoch": 0.81,
304
+ "learning_rate": 5.553055555555556e-07,
305
+ "loss": 1.0923,
306
+ "step": 20000
307
+ },
308
+ {
309
+ "epoch": 0.81,
310
+ "eval_accuracy": 0.4095808383233533,
311
+ "eval_loss": 1.0820951461791992,
312
+ "eval_runtime": 29.968,
313
+ "eval_samples_per_second": 167.178,
314
+ "eval_steps_per_second": 20.922,
315
+ "step": 20000
316
+ },
317
+ {
318
+ "epoch": 0.86,
319
+ "learning_rate": 5.830555555555556e-07,
320
+ "loss": 1.0897,
321
+ "step": 21000
322
+ },
323
+ {
324
+ "epoch": 0.86,
325
+ "eval_accuracy": 0.4149700598802395,
326
+ "eval_loss": 1.0763800144195557,
327
+ "eval_runtime": 30.021,
328
+ "eval_samples_per_second": 166.883,
329
+ "eval_steps_per_second": 20.885,
330
+ "step": 21000
331
+ },
332
+ {
333
+ "epoch": 0.9,
334
+ "learning_rate": 6.108333333333333e-07,
335
+ "loss": 1.0888,
336
+ "step": 22000
337
+ },
338
+ {
339
+ "epoch": 0.9,
340
+ "eval_accuracy": 0.43193612774451096,
341
+ "eval_loss": 1.0687414407730103,
342
+ "eval_runtime": 30.1577,
343
+ "eval_samples_per_second": 166.127,
344
+ "eval_steps_per_second": 20.791,
345
+ "step": 22000
346
+ },
347
+ {
348
+ "epoch": 0.94,
349
+ "learning_rate": 6.385833333333334e-07,
350
+ "loss": 1.0823,
351
+ "step": 23000
352
+ },
353
+ {
354
+ "epoch": 0.94,
355
+ "eval_accuracy": 0.4285429141716567,
356
+ "eval_loss": 1.0642070770263672,
357
+ "eval_runtime": 30.0701,
358
+ "eval_samples_per_second": 166.611,
359
+ "eval_steps_per_second": 20.851,
360
+ "step": 23000
361
+ },
362
+ {
363
+ "epoch": 0.98,
364
+ "learning_rate": 6.663611111111112e-07,
365
+ "loss": 1.0786,
366
+ "step": 24000
367
+ },
368
+ {
369
+ "epoch": 0.98,
370
+ "eval_accuracy": 0.4363273453093812,
371
+ "eval_loss": 1.0598841905593872,
372
+ "eval_runtime": 30.0689,
373
+ "eval_samples_per_second": 166.617,
374
+ "eval_steps_per_second": 20.852,
375
+ "step": 24000
376
+ },
377
+ {
378
+ "epoch": 1.02,
379
+ "learning_rate": 6.941111111111112e-07,
380
+ "loss": 1.0708,
381
+ "step": 25000
382
+ },
383
+ {
384
+ "epoch": 1.02,
385
+ "eval_accuracy": 0.4429141716566866,
386
+ "eval_loss": 1.0561795234680176,
387
+ "eval_runtime": 30.1301,
388
+ "eval_samples_per_second": 166.279,
389
+ "eval_steps_per_second": 20.81,
390
+ "step": 25000
391
+ },
392
+ {
393
+ "epoch": 1.06,
394
+ "learning_rate": 7.218888888888889e-07,
395
+ "loss": 1.072,
396
+ "step": 26000
397
+ },
398
+ {
399
+ "epoch": 1.06,
400
+ "eval_accuracy": 0.4303393213572854,
401
+ "eval_loss": 1.0574887990951538,
402
+ "eval_runtime": 30.0473,
403
+ "eval_samples_per_second": 166.737,
404
+ "eval_steps_per_second": 20.867,
405
+ "step": 26000
406
+ },
407
+ {
408
+ "epoch": 1.1,
409
+ "learning_rate": 7.496666666666667e-07,
410
+ "loss": 1.0701,
411
+ "step": 27000
412
+ },
413
+ {
414
+ "epoch": 1.1,
415
+ "eval_accuracy": 0.4421157684630739,
416
+ "eval_loss": 1.055459976196289,
417
+ "eval_runtime": 30.1049,
418
+ "eval_samples_per_second": 166.418,
419
+ "eval_steps_per_second": 20.827,
420
+ "step": 27000
421
+ },
422
+ {
423
+ "epoch": 1.14,
424
+ "learning_rate": 7.774166666666668e-07,
425
+ "loss": 1.0677,
426
+ "step": 28000
427
+ },
428
+ {
429
+ "epoch": 1.14,
430
+ "eval_accuracy": 0.4285429141716567,
431
+ "eval_loss": 1.0527067184448242,
432
+ "eval_runtime": 30.1476,
433
+ "eval_samples_per_second": 166.182,
434
+ "eval_steps_per_second": 20.798,
435
+ "step": 28000
436
+ },
437
+ {
438
+ "epoch": 1.18,
439
+ "learning_rate": 8.051944444444445e-07,
440
+ "loss": 1.065,
441
+ "step": 29000
442
+ },
443
+ {
444
+ "epoch": 1.18,
445
+ "eval_accuracy": 0.43852295409181635,
446
+ "eval_loss": 1.0494154691696167,
447
+ "eval_runtime": 30.036,
448
+ "eval_samples_per_second": 166.8,
449
+ "eval_steps_per_second": 20.875,
450
+ "step": 29000
451
+ },
452
+ {
453
+ "epoch": 1.22,
454
+ "learning_rate": 8.329444444444445e-07,
455
+ "loss": 1.0628,
456
+ "step": 30000
457
+ },
458
+ {
459
+ "epoch": 1.22,
460
+ "eval_accuracy": 0.4377245508982036,
461
+ "eval_loss": 1.0461777448654175,
462
+ "eval_runtime": 30.1005,
463
+ "eval_samples_per_second": 166.442,
464
+ "eval_steps_per_second": 20.83,
465
+ "step": 30000
466
+ },
467
+ {
468
+ "epoch": 1.26,
469
+ "learning_rate": 8.607222222222223e-07,
470
+ "loss": 1.0672,
471
+ "step": 31000
472
+ },
473
+ {
474
+ "epoch": 1.26,
475
+ "eval_accuracy": 0.4435129740518962,
476
+ "eval_loss": 1.0531694889068604,
477
+ "eval_runtime": 30.1733,
478
+ "eval_samples_per_second": 166.041,
479
+ "eval_steps_per_second": 20.78,
480
+ "step": 31000
481
+ }
482
+ ],
483
+ "logging_steps": 1000,
484
+ "max_steps": 10000000,
485
+ "num_train_epochs": 408,
486
+ "save_steps": 1000,
487
+ "total_flos": 3.240125152808141e+16,
488
+ "trial_name": null,
489
+ "trial_params": null
490
+ }
checkpoint-31000/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:40a0dfc08574fef5341c0802f4b4b8be93cd36a17a96b8a7b07271ea753deed4
3
+ size 4027
checkpoint-31000/vocab.json ADDED
The diff for this file is too large to render. See raw diff