Views
No views yet
1pip install lucaone==1.1.1
2pip install tokenizers==0.19.1
3pip install transformers==4.41.2huggingface branch of LucaOne: https://github.com/LucaOne/LucaOne.1import torch
2import lucaone
3from transformers import AutoTokenizer, AutoModel, TrainingArguments, Trainer
4
5# model_id
6model_id = "LucaGroup/LucaOne-default-step17.6M"
7
8tokenizer = AutoTokenizer.from_pretrained(
9 model_id,
10 trust_remote_code=True,
11 force_download=True
12)
13
14model = AutoModel.from_pretrained(
15 model_id,
16 task_level="token_level",
17 task_type="embedding",
18 trust_remote_code=True,
19 force_download=True
20)
21print(model)
22print("*" * 50)
23
24# device
25device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
26model.to(device)
27model.eval()
28
29# nucleotide sequence
30nucleotide_sequence = "ATGCGTACGTTAGC"
31print("Nucleotide sequence len: %d" % len(nucleotide_sequence))
32
33# nucleotide sequence embedding
34print("Processing Nucleotide Sequence...")
35nucleotide_inputs = tokenizer(
36 nucleotide_sequence,
37 # note: gene sequence(for DNA or RNA), seq_type must be 'gene'
38 seq_type="gene",
39 return_tensors="pt",
40 add_special_tokens=True
41)
42new_nucleotide_inputs = {}
43for item in nucleotide_inputs.items():
44 new_nucleotide_inputs[item[0]] = item[1].to(device)
45nucleotide_inputs = new_nucleotide_inputs
46print("Nucleotide inputs:")
47print(nucleotide_inputs)
48
49with torch.no_grad():
50 nucleotide_outputs = model(**nucleotide_inputs)
51 # last hidden matrix as embedding matrix: [batch_size, seq_len + 2, hidden_size]
52 nucleotide_last_hidden = nucleotide_outputs.last_hidden_state
53 # mean pooling
54 mean_nucleotide_embedding = nucleotide_last_hidden[:, 1:-1, :].mean(dim=1)
55 # cls pooling
56 cls_nucleotide_embedding = nucleotide_last_hidden[:, 0, :]
57print(f"Nucleotide Embedding Shape: {nucleotide_last_hidden.shape}")
58print("Nucleotide Embedding(Matrix, Include [CLS] and [SEP]):")
59print(nucleotide_last_hidden)
60print("Nucleotide Embedding(Mean Pooling Vector):")
61print(mean_nucleotide_embedding)
62print("Nucleotide Embedding(CLS Pooling Vector):")
63print(cls_nucleotide_embedding)
64print("*" * 50)
65
66# Protein Sequence
67protein_sequence = "MKTLLILTAVVLL"
68print("Protein sequence len: %d" % len(protein_sequence))
69
70print("Processing Protein Sequence...")
71prot_inputs = tokenizer(
72 protein_sequence,
73 # note: protein sequence
74 seq_type="prot",
75 return_tensors="pt",
76 add_special_tokens=True
77)
78new_prot_inputs = {}
79for item in prot_inputs.items():
80 new_prot_inputs[item[0]] = item[1].to(device)
81prot_inputs = new_prot_inputs
82print("Protein inputs:")
83print(prot_inputs)
84
85with torch.no_grad():
86 prot_outputs = model(**prot_inputs)
87 # last hidden matrix as embedding matrix: [batch_size, seq_len + 2, hidden_size]
88 prot_last_hidden = prot_outputs.last_hidden_state
89 # mean pooling
90 mean_prot_embedding = prot_last_hidden[:, 1:-1, :].mean(dim=1)
91 # cls pooling
92 cls_prot_embedding = prot_last_hidden[:, 0, :]
93print(f"Protein Embedding Shape: {prot_last_hidden.shape}")
94print("Protein Embedding(Matrix, Include [CLS] and [SEP]):")
95print(prot_last_hidden)
96print("Protein Embedding(Mean Pooling Vector):")
97print(mean_prot_embedding)
98print("Protein Embedding(CLS Pooling Vector):")
99print(cls_prot_embedding)
100print("*" * 50)1import torch
2import lucaone
3from datasets import Dataset
4from transformers import AutoTokenizer, AutoModelForMaskedLM, TrainingArguments, Trainer
5
6# model_id
7model_id = "LucaGroup/LucaOne-default-step17.6M"
8
9model = AutoModelForMaskedLM.from_pretrained(
10 model_id,
11 trust_remote_code=True,
12 force_download=True
13)
14
15tokenizer = AutoTokenizer.from_pretrained(
16 model_id,
17 trust_remote_code=True,
18 force_download=True
19)
20print(model)
21print("*" * 50)
22
23# finetune all parameters
24for param in model.parameters():
25 param.requires_grad = True
26
27# create dataset and trainer for training...multi-class classification, binary classification, multi-label classification, and regression tasks.1import torch
2import lucaone
3from datasets import Dataset
4from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer
5
6# model_id
7model_id = "LucaGroup/LucaOne-default-step17.6M"
8
9model = AutoModelForSequenceClassification.from_pretrained(
10 model_id,
11 task_level="seq_level",
12 task_type="multi_class",
13 classifier_num_labels=4,
14 trust_remote_code=True,
15 force_download=True
16)
17
18tokenizer = AutoTokenizer.from_pretrained(
19 model_id,
20 trust_remote_code=True,
21 force_download=True
22)
23print(model)
24print("*" * 50)
25
26# finetune all parameters
27for param in model.parameters():
28 param.requires_grad = True
29
30# create dataset and trainer for training...multi-class classification, binary classification, multi-label classification, and regression tasks.1import torch
2import lucaone
3from datasets import Dataset
4from transformers import AutoTokenizer, AutoModelForTokenClassification, TrainingArguments, Trainer
5
6# model_id
7model_id = "LucaGroup/LucaOne-default-step17.6M"
8
9model = AutoModelForTokenClassification.from_pretrained(
10 model_id,
11 task_level="token_level",
12 task_type="binary_class",
13 classifier_num_labels=2,
14 trust_remote_code=True,
15 force_download=True
16)
17
18tokenizer = AutoTokenizer.from_pretrained(
19 model_id,
20 trust_remote_code=True,
21 force_download=True
22)
23print(model)
24print("*" * 50)
25
26# finetune all parameters
27for param in model.parameters():
28 param.requires_grad = True
29
30# create dataset and trainer for training...