Upload folder using huggingface_hub
Browse files- CRISPR_transformer_model/README.md +88 -0
- CRISPR_transformer_model/config.json +0 -1
- CRISPR_transformer_model/model.py +85 -0
- CRISPR_transformer_model/runs/Nov14_11-57-39_ljw-System-Product-Name/events.out.tfevents.1731556660.ljw-System-Product-Name.1335450.0 +3 -0
- CRISPR_transformer_model/training_args.bin +3 -0
CRISPR_transformer_model/README.md
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
library_name: transformers
|
3 |
+
tags:
|
4 |
+
- generated_from_trainer
|
5 |
+
datasets:
|
6 |
+
- crispr_data
|
7 |
+
model-index:
|
8 |
+
- name: SX_spcas9_CRISPR_transformer
|
9 |
+
results: []
|
10 |
+
---
|
11 |
+
|
12 |
+
<!-- This model card has been generated automatically according to the information the Trainer had access to. You
|
13 |
+
should probably proofread and complete it, then remove this comment. -->
|
14 |
+
|
15 |
+
# SX_spcas9_CRISPR_transformer
|
16 |
+
|
17 |
+
This model is a fine-tuned version of [](https://huggingface.co/) on the crispr_data dataset.
|
18 |
+
It achieves the following results on the evaluation set:
|
19 |
+
- Loss: 1334208.125
|
20 |
+
|
21 |
+
## Model description
|
22 |
+
|
23 |
+
More information needed
|
24 |
+
|
25 |
+
## Intended uses & limitations
|
26 |
+
|
27 |
+
More information needed
|
28 |
+
|
29 |
+
## Training and evaluation data
|
30 |
+
|
31 |
+
More information needed
|
32 |
+
|
33 |
+
## Training procedure
|
34 |
+
|
35 |
+
### Training hyperparameters
|
36 |
+
|
37 |
+
The following hyperparameters were used during training:
|
38 |
+
- learning_rate: 0.001
|
39 |
+
- train_batch_size: 100
|
40 |
+
- eval_batch_size: 100
|
41 |
+
- seed: 63036
|
42 |
+
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
|
43 |
+
- lr_scheduler_type: linear
|
44 |
+
- lr_scheduler_warmup_ratio: 0.05
|
45 |
+
- num_epochs: 30.0
|
46 |
+
|
47 |
+
### Training results
|
48 |
+
|
49 |
+
| Training Loss | Epoch | Step | Validation Loss |
|
50 |
+
|:-------------:|:-----:|:----:|:---------------:|
|
51 |
+
| 13454687.4037 | 1.0 | 322 | 4939422.5 |
|
52 |
+
| 4152085.8634 | 2.0 | 644 | 2624465.5 |
|
53 |
+
| 2175050.1366 | 3.0 | 966 | 1416192.125 |
|
54 |
+
| 1517438.0124 | 4.0 | 1288 | 1347445.125 |
|
55 |
+
| 1400623.3043 | 5.0 | 1610 | 1365390.75 |
|
56 |
+
| 1368684.5217 | 6.0 | 1932 | 1339115.375 |
|
57 |
+
| 1355148.323 | 7.0 | 2254 | 1339799.375 |
|
58 |
+
| 1348436.8696 | 8.0 | 2576 | 1337862.625 |
|
59 |
+
| 1343765.2671 | 9.0 | 2898 | 1336787.625 |
|
60 |
+
| 1342822.0621 | 10.0 | 3220 | 1339180.125 |
|
61 |
+
| 1339066.1366 | 11.0 | 3542 | 1345115.5 |
|
62 |
+
| 1340848.0994 | 12.0 | 3864 | 1335221.125 |
|
63 |
+
| 1339262.5093 | 13.0 | 4186 | 1335443.125 |
|
64 |
+
| 1338173.4161 | 14.0 | 4508 | 1336022.5 |
|
65 |
+
| 1337596.7205 | 15.0 | 4830 | 1335901.625 |
|
66 |
+
| 1336771.2795 | 16.0 | 5152 | 1337095.75 |
|
67 |
+
| 1334854.8571 | 17.0 | 5474 | 1335969.5 |
|
68 |
+
| 1333905.9876 | 18.0 | 5796 | 1334772.5 |
|
69 |
+
| 1335469.3168 | 19.0 | 6118 | 1335592.125 |
|
70 |
+
| 1333815.5528 | 20.0 | 6440 | 1335397.375 |
|
71 |
+
| 1334275.8758 | 21.0 | 6762 | 1338478.125 |
|
72 |
+
| 1333732.472 | 22.0 | 7084 | 1337926.5 |
|
73 |
+
| 1331810.2857 | 23.0 | 7406 | 1334152.875 |
|
74 |
+
| 1333228.1242 | 24.0 | 7728 | 1336674.75 |
|
75 |
+
| 1332199.4534 | 25.0 | 8050 | 1336287.625 |
|
76 |
+
| 1331443.8758 | 26.0 | 8372 | 1336826.0 |
|
77 |
+
| 1331173.0683 | 27.0 | 8694 | 1333565.25 |
|
78 |
+
| 1330894.6087 | 28.0 | 9016 | 1334126.875 |
|
79 |
+
| 1331071.5031 | 29.0 | 9338 | 1333494.5 |
|
80 |
+
| 1330270.6087 | 30.0 | 9660 | 1334208.125 |
|
81 |
+
|
82 |
+
|
83 |
+
### Framework versions
|
84 |
+
|
85 |
+
- Transformers 4.44.2
|
86 |
+
- Pytorch 2.4.0+cu124
|
87 |
+
- Datasets 2.21.0
|
88 |
+
- Tokenizers 0.19.1
|
CRISPR_transformer_model/config.json
CHANGED
@@ -1,5 +1,4 @@
|
|
1 |
{
|
2 |
-
"_name_or_path": "/home/ljw/sdc1/CRISPR_results/CRISPR_transformer/SX_spcas9_CRISPR_transformer",
|
3 |
"architectures": [
|
4 |
"CRISPRTransformerModel"
|
5 |
],
|
|
|
1 |
{
|
|
|
2 |
"architectures": [
|
3 |
"CRISPRTransformerModel"
|
4 |
],
|
CRISPR_transformer_model/model.py
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from transformers import PreTrainedModel, RoFormerConfig, RoFormerModel
|
2 |
+
import torch.nn as nn
|
3 |
+
import torch
|
4 |
+
import torch.nn.functional as F
|
5 |
+
import numpy as np
|
6 |
+
|
7 |
+
class CRISPRTransformerConfig(RoFormerConfig):
|
8 |
+
model_type = "CRISPR_transformer"
|
9 |
+
label_names = ["observation"]
|
10 |
+
|
11 |
+
def __init__(
|
12 |
+
self,
|
13 |
+
vocab_size = 4, # ACGT
|
14 |
+
hidden_size = 256, # model embedding dimension
|
15 |
+
num_hidden_layers = 3, # number of EncoderLayer
|
16 |
+
num_attention_heads = 4, # number of attention heads
|
17 |
+
intermediate_size = 1024, # FeedForward intermediate dimension size
|
18 |
+
hidden_dropout_prob = 0.1, # The dropout probability for all fully connected layers in the embeddings, encoder, and pooler
|
19 |
+
attention_probs_dropout_prob = 0.1, # The dropout ratio for the attention probabilities
|
20 |
+
max_position_embeddings = 256, # The maximum sequence length that this model might ever be used with. Typically set this to something large just in case (e.g., 512 or 1024 or 1536).
|
21 |
+
ref1len = 127, # length of reference 1
|
22 |
+
ref2len = 127, # length of reference 2
|
23 |
+
seed = 63036, # random seed for intialization
|
24 |
+
**kwargs
|
25 |
+
):
|
26 |
+
self.ref1len = ref1len
|
27 |
+
self.ref2len = ref2len
|
28 |
+
self.seed = seed
|
29 |
+
super().__init__(
|
30 |
+
vocab_size = vocab_size,
|
31 |
+
hidden_size = hidden_size,
|
32 |
+
num_hidden_layers = num_hidden_layers,
|
33 |
+
num_attention_heads = num_attention_heads,
|
34 |
+
intermediate_size = intermediate_size,
|
35 |
+
hidden_dropout_prob = hidden_dropout_prob,
|
36 |
+
attention_probs_dropout_prob = attention_probs_dropout_prob,
|
37 |
+
max_position_embeddings = max_position_embeddings,
|
38 |
+
**kwargs
|
39 |
+
)
|
40 |
+
|
41 |
+
class CRISPRTransformerModel(PreTrainedModel):
|
42 |
+
config_class = CRISPRTransformerConfig
|
43 |
+
|
44 |
+
def __init__(self, config):
|
45 |
+
super().__init__(config)
|
46 |
+
self.generator = torch.Generator().manual_seed(config.seed)
|
47 |
+
self.model = RoFormerModel(config)
|
48 |
+
self.mlp = nn.Linear(
|
49 |
+
in_features=config.hidden_size,
|
50 |
+
out_features=(config.ref1len + 1) * (config.ref2len + 1)
|
51 |
+
)
|
52 |
+
self.initialize_weights()
|
53 |
+
|
54 |
+
def initialize_weights(self):
|
55 |
+
for m in self.modules():
|
56 |
+
if isinstance(m, nn.Linear):
|
57 |
+
nn.init.normal_(m.weight, mean=0, std=1, generator=self.generator)
|
58 |
+
if m.bias is not None:
|
59 |
+
nn.init.constant_(m.bias, 0)
|
60 |
+
|
61 |
+
def forward(self, refcode: torch.Tensor, observation: torch.Tensor=None):
|
62 |
+
# refcode (batch_size X sequence_length)
|
63 |
+
# model(refcode) (batch_size X sequence_length X hidden_size)
|
64 |
+
# model(refcode)[:, -1, :] arbitrary choose the last position to predict the logits
|
65 |
+
batch_size = refcode.shape[0]
|
66 |
+
logit = self.mlp(
|
67 |
+
self.model(
|
68 |
+
input_ids=refcode,
|
69 |
+
attention_mask=torch.ones(
|
70 |
+
batch_size,
|
71 |
+
self.config.ref1len + self.config.ref2len,
|
72 |
+
dtype=torch.int64,
|
73 |
+
device=self.model.device
|
74 |
+
)
|
75 |
+
).last_hidden_state[:, -1, :]
|
76 |
+
).view(batch_size, self.config.ref2len + 1, self.config.ref1len + 1)
|
77 |
+
if observation is not None:
|
78 |
+
return {
|
79 |
+
"logit": logit,
|
80 |
+
"loss": - (
|
81 |
+
observation.flatten(start_dim=1) *
|
82 |
+
F.log_softmax(logit.flatten(start_dim=1), dim=1)
|
83 |
+
).sum()
|
84 |
+
}
|
85 |
+
return {"logit": logit}
|
CRISPR_transformer_model/runs/Nov14_11-57-39_ljw-System-Product-Name/events.out.tfevents.1731556660.ljw-System-Product-Name.1335450.0
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:65f5400d207867d119030f71a27dd601f75079569a7f605073143eddc22dfe97
|
3 |
+
size 19848
|
CRISPR_transformer_model/training_args.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:50946c817480192af6ddb8ddbaa1677a28f005fe0ed7b77b3608f8ebee20fe1d
|
3 |
+
size 5304
|