quguanni commited on
Commit
c1697e9
·
verified ·
1 Parent(s): 1a09f91

Upload folder using huggingface_hub

Browse files
Files changed (4) hide show
  1. README.md +49 -0
  2. pytorch_model.pt +3 -0
  3. test_results.json +15 -0
  4. training_history.json +431 -0
README.md ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - vulnerability-detection
5
+ - linux-kernel
6
+ - security
7
+ - pytorch
8
+ datasets:
9
+ - pebblebed/kernel-vuln-dataset
10
+ metrics:
11
+ - auc
12
+ - recall
13
+ - precision
14
+ pipeline_tag: text-classification
15
+ ---
16
+
17
+ # VulnBERT v8
18
+
19
+ Vulnerability detection model for Linux kernel commits.
20
+
21
+ ## Results
22
+
23
+ | Metric | Value |
24
+ |--------|-------|
25
+ | AUC | 0.987 |
26
+ | Recall | 91.4% |
27
+ | Precision | 88.4% |
28
+ | F1 | 0.899 |
29
+ | FPR | 5.9% |
30
+
31
+ ## Usage
32
+ ```python
33
+ import torch
34
+
35
+ checkpoint = torch.load("pytorch_model.pt", map_location="cpu")
36
+ model.load_state_dict(checkpoint["model_state_dict"])
37
+ ```
38
+
39
+ Full code: [github.com/quguanni/vulnbert](https://github.com/quguanni/vulnbert)
40
+
41
+ ## Training
42
+
43
+ - Dataset: [pebblebed/kernel-vuln-dataset](https://huggingface.co/datasets/pebblebed/kernel-vuln-dataset) (650K commits)
44
+ - Architecture: CodeBERT + 118 handcrafted features
45
+ - Time: ~7 hours on NVIDIA GH200
46
+
47
+ ## License
48
+
49
+ MIT
pytorch_model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4733cc4836e5949051e5d4900a961382d4c0a90bdb4dd62711db9bab33917182
3
+ size 517265547
test_results.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "precision": 0.8840327467285503,
3
+ "recall": 0.9142666666666667,
4
+ "f1": 0.8988955527152361,
5
+ "auc": 0.9869358197843104,
6
+ "ap": 0.9764627774456178,
7
+ "fpr": 0.05909016258827394,
8
+ "tp": 13714,
9
+ "fp": 1799,
10
+ "tn": 28646,
11
+ "fn": 1286,
12
+ "recall_at_1_fpr": 0.8097333333333333,
13
+ "recall_at_5_fpr": 0.9033333333333333,
14
+ "recall_at_10_fpr": 0.9540666666666666
15
+ }
training_history.json ADDED
@@ -0,0 +1,431 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "epoch": 1,
4
+ "train": {
5
+ "precision": 0.41892358882712455,
6
+ "recall": 0.44379013869422423,
7
+ "f1": 0.43099849152051684,
8
+ "auc": 0.7680436984019521,
9
+ "ap": 0.46493909710249876,
10
+ "fpr": 0.127397138694727,
11
+ "tp": 42429,
12
+ "fp": 58852,
13
+ "tn": 403105,
14
+ "fn": 53177,
15
+ "recall_at_1_fpr": 0.14793004623140807,
16
+ "recall_at_5_fpr": 0.28439637679643537,
17
+ "recall_at_10_fpr": 0.39409660481559733,
18
+ "loss": 0.442193871078037,
19
+ "focal_loss": NaN,
20
+ "dice_loss": NaN,
21
+ "contrastive_loss": NaN,
22
+ "nan_batches": 0
23
+ },
24
+ "val": {
25
+ "precision": 0.8442053864347295,
26
+ "recall": 0.7590725114907045,
27
+ "f1": 0.7993787024996388,
28
+ "auc": 0.9481094739921635,
29
+ "ap": 0.9114432578319719,
30
+ "fpr": 0.06192945743487095,
31
+ "tp": 11065,
32
+ "fp": 2042,
33
+ "tn": 30931,
34
+ "fn": 3512,
35
+ "recall_at_1_fpr": 0.6148041435137546,
36
+ "recall_at_5_fpr": 0.7389037524867943,
37
+ "recall_at_10_fpr": 0.8147767030253138,
38
+ "loss": 0.20687348265100577
39
+ }
40
+ },
41
+ {
42
+ "epoch": 2,
43
+ "train": {
44
+ "precision": 0.8307668515122727,
45
+ "recall": 0.7866242704432777,
46
+ "f1": 0.8080931811832462,
47
+ "auc": 0.9692768001107926,
48
+ "ap": 0.9092969502291814,
49
+ "fpr": 0.033163259783919284,
50
+ "tp": 75206,
51
+ "fp": 15320,
52
+ "tn": 446637,
53
+ "fn": 20400,
54
+ "recall_at_1_fpr": 0.6966612974081124,
55
+ "recall_at_5_fpr": 0.8268518712214714,
56
+ "recall_at_10_fpr": 0.9016065937284271,
57
+ "loss": 0.1825303359336363,
58
+ "focal_loss": NaN,
59
+ "dice_loss": NaN,
60
+ "contrastive_loss": NaN,
61
+ "nan_batches": 0
62
+ },
63
+ "val": {
64
+ "precision": 0.9014335639398046,
65
+ "recall": 0.8670508335048364,
66
+ "f1": 0.8839079655919995,
67
+ "auc": 0.9825398959126007,
68
+ "ap": 0.9665405246343721,
69
+ "fpr": 0.04191308039911443,
70
+ "tp": 12639,
71
+ "fp": 1382,
72
+ "tn": 31591,
73
+ "fn": 1938,
74
+ "recall_at_1_fpr": 0.7705289154146944,
75
+ "recall_at_5_fpr": 0.8828977155793373,
76
+ "recall_at_10_fpr": 0.9390821156616588,
77
+ "loss": 0.14055028911934397
78
+ }
79
+ },
80
+ {
81
+ "epoch": 3,
82
+ "train": {
83
+ "precision": 0.8819841739549769,
84
+ "recall": 0.8417254147229254,
85
+ "f1": 0.861384654906662,
86
+ "auc": 0.985384220872594,
87
+ "ap": 0.9498956506035895,
88
+ "fpr": 0.02330952880895841,
89
+ "tp": 80474,
90
+ "fp": 10768,
91
+ "tn": 451189,
92
+ "fn": 15132,
93
+ "recall_at_1_fpr": 0.7859757755789386,
94
+ "recall_at_5_fpr": 0.9042319519695416,
95
+ "recall_at_10_fpr": 0.9581407024663724,
96
+ "loss": 0.1255587323948855,
97
+ "focal_loss": NaN,
98
+ "dice_loss": NaN,
99
+ "contrastive_loss": NaN,
100
+ "nan_batches": 0
101
+ },
102
+ "val": {
103
+ "precision": 0.887695445275323,
104
+ "recall": 0.8957947451464636,
105
+ "f1": 0.8917267046812579,
106
+ "auc": 0.9852800333656634,
107
+ "ap": 0.9714275151122855,
108
+ "fpr": 0.050101598277378465,
109
+ "tp": 13058,
110
+ "fp": 1652,
111
+ "tn": 31321,
112
+ "fn": 1519,
113
+ "recall_at_1_fpr": 0.7969403855388626,
114
+ "recall_at_5_fpr": 0.8957261439253619,
115
+ "recall_at_10_fpr": 0.9481374768470878,
116
+ "loss": 0.13353063743442475
117
+ }
118
+ },
119
+ {
120
+ "epoch": 4,
121
+ "train": {
122
+ "precision": 0.8926473129428029,
123
+ "recall": 0.8645064117314812,
124
+ "f1": 0.8783515233955728,
125
+ "auc": 0.9892002520538117,
126
+ "ap": 0.9607525382115066,
127
+ "fpr": 0.02151715419400507,
128
+ "tp": 82652,
129
+ "fp": 9940,
130
+ "tn": 452017,
131
+ "fn": 12954,
132
+ "recall_at_1_fpr": 0.8136623224483819,
133
+ "recall_at_5_fpr": 0.9279124741125034,
134
+ "recall_at_10_fpr": 0.9739660690751627,
135
+ "loss": 0.10802158596400661,
136
+ "focal_loss": NaN,
137
+ "dice_loss": NaN,
138
+ "contrastive_loss": NaN,
139
+ "nan_batches": 0
140
+ },
141
+ "val": {
142
+ "precision": 0.9209117221418235,
143
+ "recall": 0.8730877409617891,
144
+ "f1": 0.8963622917913864,
145
+ "auc": 0.9866947658083867,
146
+ "ap": 0.973685911231753,
147
+ "fpr": 0.03314833348497255,
148
+ "tp": 12727,
149
+ "fp": 1093,
150
+ "tn": 31880,
151
+ "fn": 1850,
152
+ "recall_at_1_fpr": 0.8020168759003911,
153
+ "recall_at_5_fpr": 0.9010770391712972,
154
+ "recall_at_10_fpr": 0.9547231940728544,
155
+ "loss": 0.12385919165582603
156
+ }
157
+ },
158
+ {
159
+ "epoch": 5,
160
+ "train": {
161
+ "precision": 0.8966450101182235,
162
+ "recall": 0.88055142982658,
163
+ "f1": 0.888525351458606,
164
+ "auc": 0.9912534168074455,
165
+ "ap": 0.9672059599340288,
166
+ "fpr": 0.021006284134670542,
167
+ "tp": 84186,
168
+ "fp": 9704,
169
+ "tn": 452253,
170
+ "fn": 11420,
171
+ "recall_at_1_fpr": 0.8321653452712173,
172
+ "recall_at_5_fpr": 0.9446792042340438,
173
+ "recall_at_10_fpr": 0.9820408760956425,
174
+ "loss": 0.0977837755253274,
175
+ "focal_loss": NaN,
176
+ "dice_loss": NaN,
177
+ "contrastive_loss": NaN,
178
+ "nan_batches": 0
179
+ },
180
+ "val": {
181
+ "precision": 0.9377220164764568,
182
+ "recall": 0.8511353502092337,
183
+ "f1": 0.8923331415420023,
184
+ "auc": 0.986774076542897,
185
+ "ap": 0.9739167475982135,
186
+ "fpr": 0.02499014345070209,
187
+ "tp": 12407,
188
+ "fp": 824,
189
+ "tn": 32149,
190
+ "fn": 2170,
191
+ "recall_at_1_fpr": 0.80592714550319,
192
+ "recall_at_5_fpr": 0.9027920696988406,
193
+ "recall_at_10_fpr": 0.9549975989572614,
194
+ "loss": 0.12919959488739488
195
+ }
196
+ },
197
+ {
198
+ "epoch": 6,
199
+ "train": {
200
+ "precision": 0.9038794926004229,
201
+ "recall": 0.8943685542748363,
202
+ "f1": 0.8990988717495768,
203
+ "auc": 0.9927986150339585,
204
+ "ap": 0.9721630461464356,
205
+ "fpr": 0.01968365020986802,
206
+ "tp": 85507,
207
+ "fp": 9093,
208
+ "tn": 452864,
209
+ "fn": 10099,
210
+ "recall_at_1_fpr": 0.8480011714745936,
211
+ "recall_at_5_fpr": 0.9573771520615861,
212
+ "recall_at_10_fpr": 0.9866535573081188,
213
+ "loss": 0.08971706647469802,
214
+ "focal_loss": NaN,
215
+ "dice_loss": NaN,
216
+ "contrastive_loss": 0.1413140798166237,
217
+ "nan_batches": 0
218
+ },
219
+ "val": {
220
+ "precision": 0.8790910295481649,
221
+ "recall": 0.9102696027989298,
222
+ "f1": 0.894408681877928,
223
+ "auc": 0.9869048064651947,
224
+ "ap": 0.9740420754054223,
225
+ "fpr": 0.055348315288266156,
226
+ "tp": 13269,
227
+ "fp": 1825,
228
+ "tn": 31148,
229
+ "fn": 1308,
230
+ "recall_at_1_fpr": 0.8023598820058997,
231
+ "recall_at_5_fpr": 0.9039582904575701,
232
+ "recall_at_10_fpr": 0.9556150099471771,
233
+ "loss": 0.12849023392180398
234
+ }
235
+ },
236
+ {
237
+ "epoch": 7,
238
+ "train": {
239
+ "precision": 0.9111462997724389,
240
+ "recall": 0.9087923352090873,
241
+ "f1": 0.9099677951457074,
242
+ "auc": 0.9941540713009294,
243
+ "ap": 0.9769532634680379,
244
+ "fpr": 0.01834153395229426,
245
+ "tp": 86886,
246
+ "fp": 8473,
247
+ "tn": 453484,
248
+ "fn": 8720,
249
+ "recall_at_1_fpr": 0.8675919921343849,
250
+ "recall_at_5_fpr": 0.9682760496203168,
251
+ "recall_at_10_fpr": 0.9903771729807752,
252
+ "loss": 0.08156081970673255,
253
+ "focal_loss": NaN,
254
+ "dice_loss": NaN,
255
+ "contrastive_loss": NaN,
256
+ "nan_batches": 0
257
+ },
258
+ "val": {
259
+ "precision": 0.9283284023668639,
260
+ "recall": 0.8610139260478836,
261
+ "f1": 0.8934049898565684,
262
+ "auc": 0.9863749242919583,
263
+ "ap": 0.9732129729985973,
264
+ "fpr": 0.02938768082976981,
265
+ "tp": 12551,
266
+ "fp": 969,
267
+ "tn": 32004,
268
+ "fn": 2026,
269
+ "recall_at_1_fpr": 0.8036633052068327,
270
+ "recall_at_5_fpr": 0.8994992110859573,
271
+ "recall_at_10_fpr": 0.9515675379021746,
272
+ "loss": 0.13835142146230034
273
+ }
274
+ },
275
+ {
276
+ "epoch": 8,
277
+ "train": {
278
+ "precision": 0.9220899220899221,
279
+ "recall": 0.9185406773633454,
280
+ "f1": 0.9203118777640377,
281
+ "auc": 0.9952344204548305,
282
+ "ap": 0.980939889918141,
283
+ "fpr": 0.01606210101806012,
284
+ "tp": 87818,
285
+ "fp": 7420,
286
+ "tn": 454537,
287
+ "fn": 7788,
288
+ "recall_at_1_fpr": 0.8882287722527875,
289
+ "recall_at_5_fpr": 0.9762253415057632,
290
+ "recall_at_10_fpr": 0.9930339100056482,
291
+ "loss": 0.07410608262540465,
292
+ "focal_loss": NaN,
293
+ "dice_loss": NaN,
294
+ "contrastive_loss": NaN,
295
+ "nan_batches": 0
296
+ },
297
+ "val": {
298
+ "precision": 0.9039670345020254,
299
+ "recall": 0.887905604719764,
300
+ "f1": 0.895864336390379,
301
+ "auc": 0.9868423812888824,
302
+ "ap": 0.973946457446816,
303
+ "fpr": 0.04170078549115944,
304
+ "tp": 12943,
305
+ "fp": 1375,
306
+ "tn": 31598,
307
+ "fn": 1634,
308
+ "recall_at_1_fpr": 0.8015366673526789,
309
+ "recall_at_5_fpr": 0.9025176648144337,
310
+ "recall_at_10_fpr": 0.9567126294848048,
311
+ "loss": 0.13774085793055554
312
+ }
313
+ },
314
+ {
315
+ "epoch": 9,
316
+ "train": {
317
+ "precision": 0.9304854287569924,
318
+ "recall": 0.9290839487061482,
319
+ "f1": 0.9297841606129755,
320
+ "auc": 0.9962078429373322,
321
+ "ap": 0.9846454862326747,
322
+ "fpr": 0.014364973363321695,
323
+ "tp": 88826,
324
+ "fp": 6636,
325
+ "tn": 455321,
326
+ "fn": 6780,
327
+ "recall_at_1_fpr": 0.9071710980482397,
328
+ "recall_at_5_fpr": 0.9825952346087066,
329
+ "recall_at_10_fpr": 0.9955442127063155,
330
+ "loss": 0.06646002379976858,
331
+ "focal_loss": NaN,
332
+ "dice_loss": NaN,
333
+ "contrastive_loss": NaN,
334
+ "nan_batches": 0
335
+ },
336
+ "val": {
337
+ "precision": 0.8970751316883837,
338
+ "recall": 0.887905604719764,
339
+ "f1": 0.8924668160661955,
340
+ "auc": 0.9861394086206904,
341
+ "ap": 0.9726516277893582,
342
+ "fpr": 0.04503684833045219,
343
+ "tp": 12943,
344
+ "fp": 1485,
345
+ "tn": 31488,
346
+ "fn": 1634,
347
+ "recall_at_1_fpr": 0.7995472319407285,
348
+ "recall_at_5_fpr": 0.8962749536941758,
349
+ "recall_at_10_fpr": 0.9534197708719215,
350
+ "loss": 0.15375348549817783
351
+ }
352
+ },
353
+ {
354
+ "epoch": 10,
355
+ "train": {
356
+ "precision": 0.9386959937156324,
357
+ "recall": 0.9374097859966948,
358
+ "f1": 0.9380524489614352,
359
+ "auc": 0.996945361357788,
360
+ "ap": 0.9875233253666762,
361
+ "fpr": 0.012670010412224514,
362
+ "tp": 89622,
363
+ "fp": 5853,
364
+ "tn": 456104,
365
+ "fn": 5984,
366
+ "recall_at_1_fpr": 0.9258310147898667,
367
+ "recall_at_5_fpr": 0.9870091835240467,
368
+ "recall_at_10_fpr": 0.996422818651549,
369
+ "loss": 0.05996785134017926,
370
+ "focal_loss": NaN,
371
+ "dice_loss": NaN,
372
+ "contrastive_loss": NaN,
373
+ "nan_batches": 0
374
+ },
375
+ "val": {
376
+ "precision": 0.9055374592833876,
377
+ "recall": 0.877272415448995,
378
+ "f1": 0.8911808773824872,
379
+ "auc": 0.9858778145820947,
380
+ "ap": 0.9721916153483744,
381
+ "fpr": 0.040457343887423045,
382
+ "tp": 12788,
383
+ "fp": 1334,
384
+ "tn": 31639,
385
+ "fn": 1789,
386
+ "recall_at_1_fpr": 0.7960485696645401,
387
+ "recall_at_5_fpr": 0.896480757357481,
388
+ "recall_at_10_fpr": 0.950950126912259,
389
+ "loss": 0.16451230935118763
390
+ }
391
+ },
392
+ {
393
+ "epoch": 11,
394
+ "train": {
395
+ "precision": 0.9472834067547724,
396
+ "recall": 0.9446478254502856,
397
+ "f1": 0.9459637803358018,
398
+ "auc": 0.9975255730858837,
399
+ "ap": 0.9897969104682971,
400
+ "fpr": 0.010879800500912423,
401
+ "tp": 90314,
402
+ "fp": 5026,
403
+ "tn": 456931,
404
+ "fn": 5292,
405
+ "recall_at_1_fpr": 0.9403907704537372,
406
+ "recall_at_5_fpr": 0.9903980921699475,
407
+ "recall_at_10_fpr": 0.9972595862184381,
408
+ "loss": 0.05451454288937023,
409
+ "focal_loss": NaN,
410
+ "dice_loss": NaN,
411
+ "contrastive_loss": NaN,
412
+ "nan_batches": 0
413
+ },
414
+ "val": {
415
+ "precision": 0.8955048409405256,
416
+ "recall": 0.8883172120463744,
417
+ "f1": 0.8918965457864104,
418
+ "auc": 0.9859243882221933,
419
+ "ap": 0.9721878200096978,
420
+ "fpr": 0.04582537227428502,
421
+ "tp": 12949,
422
+ "fp": 1511,
423
+ "tn": 31462,
424
+ "fn": 1628,
425
+ "recall_at_1_fpr": 0.7936475269259793,
426
+ "recall_at_5_fpr": 0.8964121561363793,
427
+ "recall_at_10_fpr": 0.9514989366810729,
428
+ "loss": 0.17257934353854557
429
+ }
430
+ }
431
+ ]