Loading...

简要目录

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
.
├── bert_base.sh
├── bert-base-uncased
│ ├── config.json
│ ├── coreml
│ ├── flax_model.msgpack
│ ├── .git
│ ├── .gitattributes
│ ├── LICENSE
│ ├── model.safetensors
│ ├── README.md
│ ├── rust_model.ot
│ ├── tf_model.h5
│ ├── tokenizer_config.json
│ ├── tokenizer.json
│ └── vocab.txt
├── bert.py
├── binary_bert_kqv_lora.py
├── learner.py
├── model_debug.py
├── output
│ ├── args.json
│ ├── config.json
│ ├── pytorch_model.bin
│ ├── special_tokens_map.json
│ ├── step_100000
│ ├── step_150000
│ ├── step_200000
│ ├── step_250000
│ ├── step_300000
│ ├── step_350000
│ ├── step_400000
│ ├── step_450000
│ ├── step_50000
│ ├── step_500000
│ ├── tokenizer_config.json
│ ├── tokenizer.json
│ └── vocab.txt
├── __pycache__
│ ├── binary_bert_kqv_lora.cpython-39.pyc
│ ├── learner.cpython-39.pyc
│ ├── model_debug.cpython-39.pyc
│ ├── spike_bert.cpython-39.pyc
│ ├── spike_lif.cpython-39.pyc
│ └── utils_spike.cpython-39.pyc
├── run_pretrain_binary.py
├── snntorch
│ ├── backprop.py
│ ├── functional
│ ├── __init__.py
│ ├── _neurons
│ ├── spikegen.py
│ ├── spikeplot.py
│ ├── spikevision
│ ├── surrogate.py
│ ├── utils.py
│ └── _version.py
├── spike_bert.py
├── spike_lif.py
├── spikingjelly1
│ ├── activation_based
│ ├── configure.py
│ ├── datasets
│ ├── __init__.py
│ ├── __pycache__
│ ├── timing_based
│ └── visualizing
├── test.log
├── test.py
├── utils_quant.py
├── utils_spike.py
└── .vscode
└── launch.json

最简目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
├── bert_base.sh
├── bert-base-uncased
├── bert.py
├── binary_bert_kqv_lora.py
├── learner.py
├── model_debug.py
├── output
├── __pycache__
├── run_pretrain_binary.py
├── snntorch
├── spike_bert.py
├── spike_lif.py
├── spikingjelly1
├── test.log
├── test.py
├── utils_quant.py
├── utils_spike.py
└── .vscode

1.bert_base.sh

训练一个基于BERT架构的预训练模型的脚本

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
# schedule_str="--grow_time 5
# --hidden_size_start 30
# --layer_start 20
# --layer_start_2 50
# --head_start 40
# --intermediate_start 10
# "

# target_str="--hidden_size_target 768
# --layer_target 6
# --layer_target_2 12
# --head_target 12
# --intermediate_target 3072
# "
# CUDA_VISIBLE_DEVICES=0,1,2,3
python -m torch.distributed.run \
--nproc_per_node 8 --master_port 44144 \
run_pretrain_binary.py \
\
--dataset_name /data10/static_10000 \
--model_name_or_path bert-base-uncased \
--per_device_train_batch_size 32 \
--per_device_eval_batch_size 32 \
--learning_rate 2e-4 \
--max_train_steps 500000 \
--num_warmup_steps 5000 \
--output_dir /data10/sqy/spikeBert_Sqy/output \
--max_seq_length 128 \
--checkpointing_steps 50000
# --with_tracking True
# --report_to wandb

参数设置(被注释掉的部分):

  • schedule_strtarget_str 部分包含了一些被注释掉的参数,它们似乎用于定义模型训练过程中的一些动态调整。这些参数包括隐藏层的大小(hidden_size)、网络层的数量(layer)、头的数量(head)和中间层的尺寸(intermediate)。

CUDA环境(被注释的部分):

  • CUDA_VISIBLE_DEVICES=0,1,2,3 这行设置了CUDA环境变量,指定了哪些GPU将被用于训练。这里指定了四个GPU(编号为0, 1, 2, 3)。

PyTorch分布式运行设置:

  • python -m torch.distributed.run 是启动PyTorch分布式训练的命令。
  • --nproc_per_node 8 指定了每个节点(在这个情况下是每个GPU)将运行的进程数。
  • --master_port 44144 设置了主节点监听的端口号。

模型训练脚本及其参数:

  • run_pretrain_binary.py 是实际运行的Python脚本,用于预训练BERT模型。
  • 参数如下:
    • --dataset_name /data10/static_10000 指定了数据集的路径。
    • --model_name_or_path bert-base-uncased 表明使用的是“bert-base-uncased”模型。
    • --per_device_train_batch_size 32--per_device_eval_batch_size 32 分别设置了每个设备的训练和评估批量大小。
    • --learning_rate 2e-4 设置了学习率。
    • --max_train_steps 500000 设置了最大训练步数。
    • --num_warmup_steps 5000 设置了预热步数。
    • --output_dir /data10/sqy/spikeBert_Sqy/output 指定了输出目录。
    • --max_seq_length 128 设置了序列的最大长度。
    • --checkpointing_steps 50000 指定了检查点保存的步数间隔。

额外的可选设置(被注释掉的部分):

  • --with_tracking True--report_to wandb 这两个参数被注释掉了,但它们似乎用于跟踪训练进度和报告到Weights & Biases(wandb)平台。


2.bert-base-uncased文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
├── bert-base-uncased
│ ├── config.json
│ ├── coreml
│ ├── flax_model.msgpack
│ ├── .git
│ ├── .gitattributes
│ ├── LICENSE
│ ├── model.safetensors
│ ├── README.md
│ ├── rust_model.ot
│ ├── tf_model.h5
│ ├── tokenizer_config.json
│ ├── tokenizer.json
│ └── vocab.txt

2.1 config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"architectures": [
"BertForMaskedLM"
],
"attention_probs_dropout_prob": 0.1,
"gradient_checkpointing": false,
"hidden_act": "gelu",
"hidden_dropout_prob": 0.1,
"hidden_size": 768,
"initializer_range": 0.02,
"intermediate_size": 3072,
"layer_norm_eps": 1e-12,
"max_position_embeddings": 512,
"model_type": "bert",
"num_attention_heads": 12,
"num_hidden_layers": 12,
"pad_token_id": 0,
"position_embedding_type": "absolute",
"transformers_version": "4.6.0.dev0",
"type_vocab_size": 2,
"use_cache": true,
"vocab_size": 30522
}

-------------- JSON·解释·BEGIN --------------

什么是json文件:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人类阅读和编写,同时也易于机器解析和生成。JSON源自JavaScript,但它是独立于语言的,因此在很多编程环境中都得到了广泛的应用。JSON格式的主要用途是在网络上传输数据,比如在客户端和服务器之间

json的关键特点

  • 文本格式:JSON是基于文本的,可以被任何编程语言读取。
  • 键值对:JSON数据是由键值对组成的。键是一个字符串,值可以是字符串、数值、布尔值、数组或者另一个JSON对象。
  • 对象和数组
    • 对象:用花括号 {} 括起来的一组无序的键值对,类似于Python中的字典或者JavaScript中的对象。
    • 数组:用方括号 [] 括起来的一组有序的值,类似于Python中的列表或者JavaScript中的数组。
  • 可读性:虽然JSON主要用于数据交换,但其格式简洁明了,易于人类阅读和编写。
  • 语言独立性:JSON与任何特定的编程语言无关,这使得JSON成为不同语言和平台之间传输数据的理想格式。

-------------- JSON·解释·END --------------

参数的解释:
architectures: [“BertForMaskedLM”]:指定了模型的架构,这里使用的是“BertForMaskedLM”,即用于掩码语言模型任务的BERT版本。

attention_probs_dropout_prob: 0.1:设置了注意力机制中的dropout概率为0.1,用于减少过拟合。

gradient_checkpointing: false:指示是否使用梯度检查点技术,这里设置为false,意味着不使用。

hidden_act: “gelu”:指定隐藏层使用的激活函数,这里使用的是GELU(Gaussian Error Linear Unit)。

hidden_dropout_prob: 0.1:设置隐藏层的dropout概率为0.1。

hidden_size: 768:表示隐藏层的维度大小,这里是768。

initializer_range: 0.02:指定模型参数初始化时的范围,这里是0.02。

intermediate_size: 3072:表示前馈网络中间层的大小,这里是3072。

layer_norm_eps: 1e-12:设置层归一化(Layer Normalization)中的一个小的常数,以防止除以零。

max_position_embeddings: 512:设置位置嵌入的最大数量,这里是512,这限制了模型能够处理的最大序列长度。

model_type: “bert”:指定模型类型,这里是BERT。

num_attention_heads: 12:设置每个注意力层的头数,这里是12。

num_hidden_layers: 12:指定隐藏层的数量,这里是12。

pad_token_id: 0:设置用于填充序列的标记的ID,通常是0。

position_embedding_type: “absolute”:指定位置嵌入的类型,这里使用的是绝对位置嵌入。

transformers_version: “4.6.0.dev0”:指定使用的Transformers库的版本。

type_vocab_size: 2:设置句子类型词汇的大小,通常用于区分两个不同的句子,这里是2。

use_cache: true:指示是否使用缓存来提高模型在生成文本时的效率,这里设置为true

vocab_size: 30522:指定词汇表的大小,这里是30522。


2.2 coreml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"fileFormatVersion": "1.0.0",
"itemInfoEntries": {
"9D749A46-ADA0-43CA-B5C2-8E722B91F41E": {
"author": "com.apple.CoreML",
"description": "CoreML Model Specification",
"name": "model.mlmodel",
"path": "com.apple.CoreML/model.mlmodel"
},
"D545B13F-2D5E-4CFB-BFF1-C10E9EFD70DA": {
"author": "com.apple.CoreML",
"description": "CoreML Model Weights",
"name": "weights",
"path": "com.apple.CoreML/weights"
}
},
"rootModelIdentifier": "9D749A46-ADA0-43CA-B5C2-8E722B91F41E"
}

2.3 flax_model.msgpack

没什么用的文件



3. bert.py

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
51
52
# coding=utf-8
# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team.
# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""PyTorch BERT model."""


import math
import os
import warnings
from dataclasses import dataclass
from typing import List, Optional, Tuple, Union

import torch
import torch.utils.checkpoint
from torch import nn
from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss

from transformers.activations import ACT2FN
from transformers.modeling_outputs import (
BaseModelOutputWithPastAndCrossAttentions,
BaseModelOutputWithPoolingAndCrossAttentions,
CausalLMOutputWithCrossAttentions,
MaskedLMOutput,
MultipleChoiceModelOutput,
NextSentencePredictorOutput,
QuestionAnsweringModelOutput,
SequenceClassifierOutput,
TokenClassifierOutput,
)
from transformers.modeling_utils import PreTrainedModel
from transformers.pytorch_utils import apply_chunking_to_forward, find_pruneable_heads_and_indices, prune_linear_layer
from transformers.utils import (
ModelOutput,
add_code_sample_docstrings,
add_start_docstrings,
add_start_docstrings_to_model_forward,
logging,
replace_return_docstrings,
)
from transformers.models.bert.configuration_bert import BertConfig

导入所需的库,模块和配置


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
51
logger = logging.get_logger(__name__)

_CHECKPOINT_FOR_DOC = "bert-base-uncased"
_CONFIG_FOR_DOC = "BertConfig"

# TokenClassification docstring
_CHECKPOINT_FOR_TOKEN_CLASSIFICATION = "dbmdz/bert-large-cased-finetuned-conll03-english"
_TOKEN_CLASS_EXPECTED_OUTPUT = (
"['O', 'I-ORG', 'I-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'I-LOC', 'O', 'I-LOC', 'I-LOC'] "
)
_TOKEN_CLASS_EXPECTED_LOSS = 0.01

# QuestionAnswering docstring
_CHECKPOINT_FOR_QA = "deepset/bert-base-cased-squad2"
_QA_EXPECTED_OUTPUT = "'a nice puppet'"
_QA_EXPECTED_LOSS = 7.41
_QA_TARGET_START_INDEX = 14
_QA_TARGET_END_INDEX = 15

# SequenceClassification docstring
_CHECKPOINT_FOR_SEQUENCE_CLASSIFICATION = "textattack/bert-base-uncased-yelp-polarity"
_SEQ_CLASS_EXPECTED_OUTPUT = "'LABEL_1'"
_SEQ_CLASS_EXPECTED_LOSS = 0.01

## 预训练BERT模型列表
BERT_PRETRAINED_MODEL_ARCHIVE_LIST = [
"bert-base-uncased",
"bert-large-uncased",
"bert-base-cased",
"bert-large-cased",
"bert-base-multilingual-uncased",
"bert-base-multilingual-cased",
"bert-base-chinese",
"bert-base-german-cased",
"bert-large-uncased-whole-word-masking",
"bert-large-cased-whole-word-masking",
"bert-large-uncased-whole-word-masking-finetuned-squad",
"bert-large-cased-whole-word-masking-finetuned-squad",
"bert-base-cased-finetuned-mrpc",
"bert-base-german-dbmdz-cased",
"bert-base-german-dbmdz-uncased",
"cl-tohoku/bert-base-japanese",
"cl-tohoku/bert-base-japanese-whole-word-masking",
"cl-tohoku/bert-base-japanese-char",
"cl-tohoku/bert-base-japanese-char-whole-word-masking",
"TurkuNLP/bert-base-finnish-cased-v1",
"TurkuNLP/bert-base-finnish-uncased-v1",
"wietsedv/bert-base-dutch-cased",
# See all BERT models at https://huggingface.co/models?filter=bert
]

  • 日志记录器的配置
  • 特定任务的预期输出和损失
  • 预训练BERT模型的列表

3.1 BertEmbeddings

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
class BertEmbeddings(nn.Module):
"""Construct the embeddings from word, position and token_type embeddings."""

def __init__(self, config):
super().__init__()

## 词嵌入,将词汇表中的每个单词映射到一个高维空间
self.word_embeddings = nn.Embedding(config.vocab_size, config.hidden_size, padding_idx=config.pad_token_id)

## 位置嵌入,给每个单词在句子中的位置编码
self.position_embeddings = nn.Embedding(config.max_position_embeddings, config.hidden_size)

## 令牌类型嵌入,用于区分两个句子
self.token_type_embeddings = nn.Embedding(config.type_vocab_size, config.hidden_size)

# self.LayerNorm is not snake-cased to stick with TensorFlow model variable name and be able to load
# any TensorFlow checkpoint file

## 层归一化
self.LayerNorm = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps)

## dropout操作
self.dropout = nn.Dropout(config.hidden_dropout_prob)
# position_ids (1, len position emb) is contiguous in memory and exported when serialized

self.position_embedding_type = getattr(config, "position_embedding_type", "absolute")

## 缓冲区
self.register_buffer("position_ids", torch.arange(config.max_position_embeddings).expand((1, -1)))
self.register_buffer(
"token_type_ids", torch.zeros(self.position_ids.size(), dtype=torch.long), persistent=False
)

def forward(
self,
input_ids: Optional[torch.LongTensor] = None, ## 单词在词汇表中的索引
token_type_ids: Optional[torch.LongTensor] = None, ## 用于区分两个句子
position_ids: Optional[torch.LongTensor] = None, ## 单词在句子中的位置
inputs_embeds: Optional[torch.FloatTensor] = None, ## 如果提供,将使用这些嵌入而不是从input_ids生成的嵌入。
past_key_values_length: int = 0, ##用于处理序列化数据
) -> torch.Tensor:

## 首先,代码检查input_ids是否为None。input_ids是一个包含输入令牌ID的张量。
## 如果input_ids不为None,则使用input_ids.size()来确定输入的形状(即维度)。否则,如果提供了inputs_embeds(直接嵌入而非令牌ID),则使用inputs_embeds.size()[:-1]来确定输入形状。[:-1]表示除了最后一个维度之外的所有维度,因为最后一个维度通常是嵌入的维度。

if input_ids is not None:
input_shape = input_ids.size()
else:
input_shape = inputs_embeds.size()[:-1]

## 获取输入的第二个维度作为序列长度(假设第一个维度是批次大小)
seq_length = input_shape[1]


## 如果没有提供position_ids,则从预先注册的position_ids缓冲区中截取与当前序列长度相匹配的部分
if position_ids is None:
position_ids = self.position_ids[:, past_key_values_length : seq_length + past_key_values_length]

# Setting the token_type_ids to the registered buffer in constructor where it is all zeros, which usually occurs
# when its auto-generated, registered buffer helps users when tracing the model without passing token_type_ids, solves
# issue #5664

## 如果没有提供token_type_ids,则检查类实例是否有token_type_ids属性。如果有,使用这个属性(一个预先设定好的全零张量)并根据输入的序列长度调整其形状。
if token_type_ids is None:
if hasattr(self, "token_type_ids"):
buffered_token_type_ids = self.token_type_ids[:, :seq_length]
buffered_token_type_ids_expanded = buffered_token_type_ids.expand(input_shape[0], seq_length)
token_type_ids = buffered_token_type_ids_expanded
else:
token_type_ids = torch.zeros(input_shape, dtype=torch.long, device=self.position_ids.device)

if inputs_embeds is None:
inputs_embeds = self.word_embeddings(input_ids)
token_type_embeddings = self.token_type_embeddings(token_type_ids)

embeddings = inputs_embeds + token_type_embeddings
if self.position_embedding_type == "absolute":
position_embeddings = self.position_embeddings(position_ids)
embeddings += position_embeddings
embeddings = self.LayerNorm(embeddings)
embeddings = self.dropout(embeddings)
return embeddings

目录

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
.
├── bert_base.sh
├── bert-base-uncased
│ ├── config.json
│ ├── coreml
│ │ └── fill-mask
│ │ └── float32_model.mlpackage
│ │ ├── Data
│ │ │ └── com.apple.CoreML
│ │ │ ├── model.mlmodel
│ │ │ └── weights
│ │ │ └── weight.bin
│ │ └── Manifest.json
│ ├── flax_model.msgpack
│ ├── .git
│ │ ├── branches
│ │ ├── config
│ │ ├── description
│ │ ├── HEAD
│ │ ├── hooks
│ │ │ ├── applypatch-msg.sample
│ │ │ ├── commit-msg.sample
│ │ │ ├── fsmonitor-watchman.sample
│ │ │ ├── post-update.sample
│ │ │ ├── pre-applypatch.sample
│ │ │ ├── pre-commit.sample
│ │ │ ├── pre-merge-commit.sample
│ │ │ ├── prepare-commit-msg.sample
│ │ │ ├── pre-push.sample
│ │ │ ├── pre-rebase.sample
│ │ │ ├── pre-receive.sample
│ │ │ └── update.sample
│ │ ├── index
│ │ ├── info
│ │ │ └── exclude
│ │ ├── logs
│ │ │ ├── HEAD
│ │ │ └── refs
│ │ │ ├── heads
│ │ │ │ └── main
│ │ │ └── remotes
│ │ │ └── origin
│ │ │ └── HEAD
│ │ ├── objects
│ │ │ ├── 03
│ │ │ │ └── 874f0a9a51110f92770262847f7ac2efdb8ec7
│ │ │ ├── 0a
│ │ │ │ └── 6aa9128b6194f4f3c4db429b6cb4891cdb421b
│ │ │ ├── 0b
│ │ │ │ └── 72f895ac9d935f87f9845e02915c8851e124de
│ │ │ ├── 0e
│ │ │ │ └── 9f43ffc3afb401b28131d3443a63cb98e5deb8
│ │ │ ├── 1a
│ │ │ │ ├── 30f9711976fc1bd9879517ef1075cd161924fa
│ │ │ │ └── 7dd4986e3dab699c24ca19b2afd0f5e1a80f37
│ │ │ ├── 2d
│ │ │ │ └── b44799aecfc24f6b5c6f5b4943766da5bcbe4f
│ │ │ ├── 2f
│ │ │ │ ├── 07d813ca87c8c709147704c87210359ccf2309
│ │ │ │ └── 8677524bcd13c4384ca89d93bdcc00adef251c
│ │ │ ├── 30
│ │ │ │ └── 3a292e7b3a4253bb7eeac44b1d4798a8c2b7c7
│ │ │ ├── 34
│ │ │ │ └── 5fd30026bc3003828be943882dda32ab48b908
│ │ │ ├── 39
│ │ │ │ └── a45f481139aa8f9abf129240714ea9da57b2e8
│ │ │ ├── 3d
│ │ │ │ └── 2477d72b675a999d1b13ca822aaaf4908634ad
│ │ │ ├── 40
│ │ │ │ └── a2aaca31dd005eb5f6ffad07b5ffed0a31d1f6
│ │ │ ├── 41
│ │ │ │ └── 8430c3b5df7ace92f2aede75700d22c78a0f95
│ │ │ ├── 45
│ │ │ │ └── a2321a7ecfdaaf60a6c1fd7f5463994cc8907d
│ │ │ ├── 4d
│ │ │ │ └── 564b466df31bf165495398c0d8ef51ddd2ee99
│ │ │ ├── 50
│ │ │ │ ├── 4939aa53e8ce310dba3dd2296dbe266c575de4
│ │ │ │ └── 5a7adf8be9e5fdf06aabbfbe9046e6c811f91b
│ │ │ ├── 52
│ │ │ │ └── f4ab676bed7ba6912ae1d96b272ab82adb3ae9
│ │ │ ├── 55
│ │ │ │ └── 46055f03398095e385d7dc625e636cc8910bf2
│ │ │ ├── 57
│ │ │ │ └── b6e3cba54270c69fa5cfb99873236868dcc576
│ │ │ ├── 5b
│ │ │ │ └── 16e96ccd6a42974d9bb1761b6506b896b83537
│ │ │ ├── 5c
│ │ │ │ └── 510bab25b8829a74a5314b871c63b12a2abca3
│ │ │ ├── 5d
│ │ │ │ └── fe9adac0748dcecbb14ab068f6a9406d7348da
│ │ │ ├── 5f
│ │ │ │ └── 0832a907f01a78777c5fe109de7b1f3fa5941a
│ │ │ ├── 69
│ │ │ │ ├── 819c162b33712ab3912f6366a63d5cb914ab24
│ │ │ │ └── 9826f54d2f6e82f6c941146a8010c978d94caa
│ │ │ ├── 6b
│ │ │ │ ├── 27a0389dbec35db8534fd27cf44cb5b8176c1f
│ │ │ │ └── 2f2ab89b227603d839e1c3df8509e685d905a3
│ │ │ ├── 71
│ │ │ │ └── 2f843fe03a214b38b75710507139a3c9f597ee
│ │ │ ├── 74
│ │ │ │ └── 74f0559041a6973a91f268587c71a933c4421a
│ │ │ ├── 79
│ │ │ │ └── 276673252f15cea400800731e0d4e3d3cba64f
│ │ │ ├── 7a
│ │ │ │ └── 9371512e3b980992f29235d25ee4f7f747560e
│ │ │ ├── 80
│ │ │ │ └── 39186bf824d1496f1c030150149b1ab6c7295f
│ │ │ ├── 81
│ │ │ │ ├── 97097fe81e18c54a0aa78684cadc04ff7c09f2
│ │ │ │ └── a1712b46a9fd3f5b1d64ef424207a1c22fbf44
│ │ │ ├── 82
│ │ │ │ └── 69c79876030587c90ad481ded8f3730f342384
│ │ │ ├── 85
│ │ │ │ └── 4104d6ebdb16bccfc0bd7518d2fdd0ce35e95f
│ │ │ ├── 86
│ │ │ │ ├── 2f60468333266bee84d73c13a301c24b12fe23
│ │ │ │ └── f982b105d6091e7537b13d7b2a5e650f0d899e
│ │ │ ├── 94
│ │ │ │ ├── 1c1ed3859432b6399878f50a93a7afe8394b1a
│ │ │ │ ├── 9a6f013d67eb8a5b4b5b46026217b888021b88
│ │ │ │ └── af24044e0f1337edbadc03423090dfb4d8698a
│ │ │ ├── 9b
│ │ │ │ └── b39cce506bd8c9e1717d1ce2dd02402c8bd667
│ │ │ ├── 9e
│ │ │ │ └── b98c817f04b051b3bcca591bcd4e03cec88018
│ │ │ ├── a0
│ │ │ │ └── 90ee7d80c0e00eca57c5aaaa54d136d58c5218
│ │ │ ├── a2
│ │ │ │ └── 65f773a47193eed794233aa2a0f0bb6d3eaa63
│ │ │ ├── a6
│ │ │ │ └── 61b1a138dac6dc5590367402d100765010ffd6
│ │ │ ├── a8
│ │ │ │ └── 86295655f51659368757f79135fb2ffa664141
│ │ │ ├── ae
│ │ │ │ └── 8c63daedbd4206d7d40126955d4e6ab1c80f8f
│ │ │ ├── b0
│ │ │ │ └── e67f4070874a51359949d8efcb2e36c9926d18
│ │ │ ├── b3
│ │ │ │ └── 409d9fba88a0d2a4a2a3c08bd5f33dd324cf38
│ │ │ ├── b9
│ │ │ │ └── 6743c503420c0858ad23fca994e670844c6c05
│ │ │ ├── ba
│ │ │ │ └── 5d19791be1dd7992e33bd61f20207b0f7f50a5
│ │ │ ├── bb
│ │ │ │ ├── 0c238a6903e404f3e0cdb1599183f81f04d26e
│ │ │ │ └── 3c1c3256d2598217df9889a14a2e811587891d
│ │ │ ├── bd
│ │ │ │ ├── 3e35c1681371542bd98f96b299be1832d89dbf
│ │ │ │ └── b420bf56ef3f72ee07cd75ab6df1b765b6012a
│ │ │ ├── c1
│ │ │ │ ├── 07dbb7dd275528552514945214f40b3b49ab16
│ │ │ │ └── c37cd58b9eb000ddbb7ca90f04b893a33e50c8
│ │ │ ├── cd
│ │ │ │ └── 4b30943e4245a5dff3747c24686b81728553d3
│ │ │ ├── cf
│ │ │ │ └── 6afbfea8cc1dd02941af7f43ba5f2bd6c8cd5c
│ │ │ ├── d1
│ │ │ │ └── b8f934ac1bedc2fcf995972bd5d35f6df43814
│ │ │ ├── d4
│ │ │ │ └── 59802a5b4ae7eb402ce274f4f2d60d17263fa3
│ │ │ ├── d5
│ │ │ │ └── 793d257adc4d23c2e25f86f62b5ad5930f609b
│ │ │ ├── dc
│ │ │ │ ├── 08351d4dc0732d9c8af04070ced089b201ce2f
│ │ │ │ └── 400b5d53726ec4912a77a961b6c36b3c0ab030
│ │ │ ├── dd
│ │ │ │ └── 4bc8b21efa05ec961e3efc4ee5e3832a3679c7
│ │ │ ├── eb
│ │ │ │ └── 456931f19c1dad278aa899be5033b4b548fac3
│ │ │ ├── ed
│ │ │ │ └── ffe1f3942125a11cc9c5ac907b950c52baff07
│ │ │ ├── f2
│ │ │ │ └── fc38bea01c8a48c2c4d5f3941e35562a8b3ee5
│ │ │ ├── f4
│ │ │ │ ├── 9a4e16e68b128803cc2dcea614603632b04eac
│ │ │ │ └── f508084297b355a3a4a834a51fd9e159c551b1
│ │ │ ├── f8
│ │ │ │ └── 7d7e158e66321d831f6690559da0155b43a095
│ │ │ ├── fb
│ │ │ │ └── 140275c155a9c7c5a3b3e0e77a9e839594a938
│ │ │ ├── fc
│ │ │ │ └── a794a5f07ff8f963fe8b61e3694b0fb7f955df
│ │ │ ├── fd
│ │ │ │ └── 6476efe1918e9235d895507b9cb08030107954
│ │ │ ├── fe
│ │ │ │ └── 23aa0e428c9dc5195f16374d2b3d3dca64a901
│ │ │ ├── info
│ │ │ └── pack
│ │ ├── packed-refs
│ │ └── refs
│ │ ├── heads
│ │ │ └── main
│ │ ├── remotes
│ │ │ └── origin
│ │ │ └── HEAD
│ │ └── tags
│ ├── .gitattributes
│ ├── LICENSE
│ ├── model.safetensors
│ ├── README.md
│ ├── rust_model.ot
│ ├── tf_model.h5
│ ├── tokenizer_config.json
│ ├── tokenizer.json
│ └── vocab.txt
├── bert.py
├── binary_bert_kqv_lora.py
├── learner.py
├── model_debug.py
├── output
│ ├── args.json
│ ├── config.json
│ ├── pytorch_model.bin
│ ├── special_tokens_map.json
│ ├── step_100000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_150000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_200000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_250000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_300000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_350000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_400000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_450000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_50000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── step_500000
│ │ ├── optimizer.bin
│ │ ├── pytorch_model.bin
│ │ ├── random_states_0.pkl
│ │ ├── random_states_1.pkl
│ │ ├── random_states_2.pkl
│ │ ├── random_states_3.pkl
│ │ └── scheduler.bin
│ ├── tokenizer_config.json
│ ├── tokenizer.json
│ └── vocab.txt
├── __pycache__
│ ├── binary_bert_kqv_lora.cpython-39.pyc
│ ├── learner.cpython-39.pyc
│ ├── model_debug.cpython-39.pyc
│ ├── spike_bert.cpython-39.pyc
│ ├── spike_lif.cpython-39.pyc
│ └── utils_spike.cpython-39.pyc
├── run_pretrain_binary.py
├── snntorch
│ ├── backprop.py
│ ├── functional
│ │ ├── acc.py
│ │ ├── __init__.py
│ │ ├── loss.py
│ │ ├── __pycache__
│ │ │ ├── acc.cpython-37.pyc
│ │ │ ├── __init__.cpython-37.pyc
│ │ │ ├── loss.cpython-37.pyc
│ │ │ └── reg.cpython-37.pyc
│ │ ├── quant.py
│ │ └── reg.py
│ ├── __init__.py
│ ├── _neurons
│ │ ├── alpha.py
│ │ ├── __init__.py
│ │ ├── lapicque.py
│ │ ├── leaky.py
│ │ ├── neurons.py
│ │ ├── __pycache__
│ │ │ ├── alpha.cpython-37.pyc
│ │ │ ├── alpha.cpython-39.pyc
│ │ │ ├── __init__.cpython-37.pyc
│ │ │ ├── __init__.cpython-39.pyc
│ │ │ ├── lapicque.cpython-37.pyc
│ │ │ ├── lapicque.cpython-39.pyc
│ │ │ ├── leaky.cpython-37.pyc
│ │ │ ├── leaky.cpython-39.pyc
│ │ │ ├── neurons.cpython-37.pyc
│ │ │ ├── neurons.cpython-39.pyc
│ │ │ ├── rleaky.cpython-37.pyc
│ │ │ ├── rleaky.cpython-39.pyc
│ │ │ ├── rsynaptic.cpython-37.pyc
│ │ │ ├── rsynaptic.cpython-39.pyc
│ │ │ ├── sconv2dlstm.cpython-37.pyc
│ │ │ ├── sconv2dlstm.cpython-39.pyc
│ │ │ ├── slstm.cpython-37.pyc
│ │ │ ├── slstm.cpython-39.pyc
│ │ │ ├── synaptic.cpython-37.pyc
│ │ │ └── synaptic.cpython-39.pyc
│ │ ├── rleaky.py
│ │ ├── rsynaptic.py
│ │ ├── sconv2dlstm.py
│ │ ├── slstm.py
│ │ └── synaptic.py
│ ├── spikegen.py
│ ├── spikeplot.py
│ ├── spikevision
│ │ ├── events_timeslices.py
│ │ ├── __init__.py
│ │ ├── neuromorphic_dataset.py
│ │ ├── spikedata
│ │ │ ├── dvs_gesture.py
│ │ │ ├── __init__.py
│ │ │ ├── nmnist.py
│ │ │ └── shd.py
│ │ ├── _transforms.py
│ │ └── _utils.py
│ ├── surrogate.py
│ ├── utils.py
│ └── _version.py
├── spike_bert.py
├── spike_lif.py
├── spikingjelly1
│ ├── activation_based
│ │ ├── ann2snn
│ │ │ ├── converter.py
│ │ │ ├── examples
│ │ │ │ ├── cnn_mnist.py
│ │ │ │ ├── __init__.py
│ │ │ │ └── resnet18_cifar10.py
│ │ │ ├── __init__.py
│ │ │ ├── modules.py
│ │ │ ├── sample_models
│ │ │ │ ├── cifar10_resnet.py
│ │ │ │ └── mnist_cnn.py
│ │ │ └── utils.py
│ │ ├── auto_cuda
│ │ │ ├── base.py
│ │ │ ├── cfunction.py
│ │ │ ├── example.py
│ │ │ ├── generator.py
│ │ │ ├── __init__.py
│ │ │ ├── neuron_kernel.py
│ │ │ ├── __pycache__
│ │ │ │ ├── base.cpython-38.pyc
│ │ │ │ ├── base.cpython-39.pyc
│ │ │ │ ├── cfunction.cpython-38.pyc
│ │ │ │ ├── cfunction.cpython-39.pyc
│ │ │ │ ├── __init__.cpython-38.pyc
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ ├── neuron_kernel.cpython-38.pyc
│ │ │ │ ├── neuron_kernel.cpython-39.pyc
│ │ │ │ ├── ss_neuron_kernel.cpython-38.pyc
│ │ │ │ └── ss_neuron_kernel.cpython-39.pyc
│ │ │ ├── readme.md
│ │ │ └── ss_neuron_kernel.py
│ │ ├── base.py
│ │ ├── cuda_utils.py
│ │ ├── encoding.py
│ │ ├── examples
│ │ │ ├── A2C.py
│ │ │ ├── cifar10_r11_enabling_spikebased_backpropagation.py
│ │ │ ├── classify_dvsg.py
│ │ │ ├── common
│ │ │ │ ├── __init__.py
│ │ │ │ └── multiprocessing_env.py
│ │ │ ├── conv_fashion_mnist.py
│ │ │ ├── DQN_state.py
│ │ │ ├── __init__.py
│ │ │ ├── lava_mnist.py
│ │ │ ├── lif_fc_mnist.py
│ │ │ ├── lynxi_fmnist_inference.py
│ │ │ ├── mstdpet.py
│ │ │ ├── mstdp.py
│ │ │ ├── PPO.py
│ │ │ ├── rsnn_sequential_fmnist.py
│ │ │ ├── speechcommands.py
│ │ │ ├── Spiking_A2C.py
│ │ │ ├── Spiking_DQN_state.py
│ │ │ ├── spiking_lstm_sequential_mnist.py
│ │ │ ├── spiking_lstm_text.py
│ │ │ ├── Spiking_PPO.py
│ │ │ └── stdp_trace.py
│ │ ├── functional.py
│ │ ├── __init__.py
│ │ ├── lava_exchange.py
│ │ ├── layer.py
│ │ ├── learning.py
│ │ ├── lynxi_exchange.py
│ │ ├── model
│ │ │ ├── __init__.py
│ │ │ ├── parametric_lif_net.py
│ │ │ ├── sew_resnet.py
│ │ │ ├── snas_net.py
│ │ │ ├── spike_dhs.py
│ │ │ ├── spiking_resnet.py
│ │ │ ├── spiking_vgg.py
│ │ │ ├── train_classify.py
│ │ │ ├── train_imagenet_example.py
│ │ │ └── tv_ref_classify
│ │ │ ├── __init__.py
│ │ │ ├── presets.py
│ │ │ ├── sampler.py
│ │ │ ├── transforms.py
│ │ │ └── utils.py
│ │ ├── monitor.py
│ │ ├── neuron_kernel.md
│ │ ├── neuron_kernel.py
│ │ ├── neuron_kernel_sample.cu
│ │ ├── neuron.py
│ │ ├── __pycache__
│ │ │ ├── base.cpython-38.pyc
│ │ │ ├── base.cpython-39.pyc
│ │ │ ├── cuda_utils.cpython-38.pyc
│ │ │ ├── cuda_utils.cpython-39.pyc
│ │ │ ├── functional.cpython-39.pyc
│ │ │ ├── __init__.cpython-38.pyc
│ │ │ ├── __init__.cpython-39.pyc
│ │ │ ├── neuron.cpython-38.pyc
│ │ │ ├── neuron.cpython-39.pyc
│ │ │ ├── neuron_kernel.cpython-38.pyc
│ │ │ ├── surrogate.cpython-38.pyc
│ │ │ ├── surrogate.cpython-39.pyc
│ │ │ └── tensor_cache.cpython-38.pyc
│ │ ├── quantize.py
│ │ ├── rnn.py
│ │ ├── spike_op.py
│ │ ├── surrogate.py
│ │ └── tensor_cache.py
│ ├── configure.py
│ ├── datasets
│ │ ├── asl_dvs.py
│ │ ├── bullying10k.py
│ │ ├── cifar10_dvs.py
│ │ ├── dvs128_gesture.py
│ │ ├── es_imagenet.py
│ │ ├── hardvs.py
│ │ ├── __init__.py
│ │ ├── nav_gesture.py
│ │ ├── n_caltech101.py
│ │ ├── n_mnist.py
│ │ ├── shd.py
│ │ ├── speechcommands.py
│ │ └── to_x_rep.py
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── configure.cpython-38.pyc
│ │ ├── configure.cpython-39.pyc
│ │ ├── __init__.cpython-38.pyc
│ │ └── __init__.cpython-39.pyc
│ ├── timing_based
│ │ ├── encoding.py
│ │ ├── examples
│ │ │ ├── __init__.py
│ │ │ └── tempotron_mnist.py
│ │ ├── __init__.py
│ │ └── neuron.py
│ └── visualizing
│ └── __init__.py
├── test.log
├── test.py
├── utils_quant.py
├── utils_spike.py
└── .vscode
└── launch.json