Views
No views yet
pip install datasets ai2-olmo| Size | Training Tokens | Layers | Hidden Size | Attention Heads | Context Length |
|---|---|---|---|---|---|
| Omni-DNA 20M | 300B | 8 | 256 | 8 | 250 |
| Omni-DNA 60M | 300B | 8 | 512 | 8 | 250 |
| Omni-DNA 116M | 300B | 12 | 768 | 16 | 250 |
| Omni-DNA 300M | 300B | 16 | 1024 | 16 | 250 |
| Omni-DNA 700M | 300B | 16 | 1536 | 16 | 250 |
| Omni-DNA 1B | 300B | 16 | 2048 | 16 | 250 |
zl6222@ic.ac.uk1
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4# Load tokenizer and model
5model_tokenizer_path = "anon/Omni-DNA-60M"
6tokenizer = AutoTokenizer.from_pretrained(model_tokenizer_path)
7model = AutoModelForCausalLM.from_pretrained(model_tokenizer_path).to('cuda')
8
9def generate(message, task_type, model=model, sample_num=1):
10 """Generate an output sequence given an input message."""
11 # Tokenize the input
12 tokenized_message = tokenizer(
13 [message], return_tensors='pt', return_token_type_ids=False, add_special_tokens=True
14 ).to('cuda')
15 # Generate response (deterministic mode)
16 response = model.generate(**tokenized_message, max_new_tokens=sample_num, do_sample=False)
17 # Alternative: Use stochastic sampling with top-k and top-p filtering
18 # response = model.generate(**tokenized_message, max_new_tokens=1, do_sample=True, top_k=300, top_p=0.95)
19 # Decode the generated sequence
20 reply = tokenizer.batch_decode(response, skip_special_tokens=False)[0]
21 # Remove spaces and extract relevant output
22 reply = reply.replace(" ", "")
23 return reply
24
25# Example usage:
26task = "DNA sequence classification"
27message = "ATGCGTACGTAGCTAGCTAGCTAGCTAGCTA"
28output = generate(message, task)
29print(f"Generated output: {output}")1from transformers import AutoModelForSequenceClassification, AutoTokenizer
2
3# Load the model with a classification head
4model = AutoModelForSequenceClassification.from_pretrained("zehui127/Omni-DNA-60M", num_labels=2, trust_remote_code=True)
5tokenizer = AutoTokenizer.from_pretrained("zehui127/Omni-DNA-60M", trust_remote_code=True)
6
7### Finetuning the loaded model on the target task ... ###
8# Define train_dataset, compute_metrics ...
9trainer = transformers.Trainer(model=model,
10 tokenizer=tokenizer,
11 args=training_args,
12 compute_metrics=compute_metrics,
13 train_dataset=train_data,
14 eval_dataset=val_data,
15 data_collator=collate_fn)
16
17# ... After finetuning: Example DNA sequence
18sequence = "ATGCGTACGTAGCTAGCTAGCTAGCTAGCTA"
19
20# Tokenize input sequence
21inputs = tokenizer(sequence, return_tensors="pt")
22
23# Forward pass
24outputs = model(**inputs)
25
26# Extract classification logits and get the predicted label
27logits = outputs.logits
28predicted_class = logits.argmax(dim=-1).item()
29
30print(f"Predicted class: {predicted_class}")1from transformers import AutoModelForCausalLM, AutoTokenizer
2from trl import SFTTrainer, SFTConfig, DataCollatorForCompletionOnlyLM
3from datasets import load_dataset, concatenate_datasets
4
5# Load the pre-trained model and tokenizer
6model_name = "zehui127/Omni-DNA-60M"
7model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
8tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
9
10# Load and process dataset (assumes JSON format)
11dataset = load_dataset("json", data_files={"train": "path/to/train.json"})
12dataset = dataset["train"]
13
14# Group dataset by task type (if necessary)
15def group_by_task_type(dataset):
16 task_types = set(dataset['task'])
17 task_datasets = {}
18 for task in task_types:
19 task_datasets[task] = dataset.filter(lambda x: x['task'] == task)
20 return task_datasets
21
22# Example formatting function for generative fine-tuning
23def formatting_prompts_func(example):
24 return [f"{example['instruction']} {example['task']} [SEP] {example['output']}"]
25
26response_template = "[SEP]"
27collator = DataCollatorForCompletionOnlyLM(response_template, tokenizer=tokenizer)
28
29# Fine-tuning configuration
30training_args = SFTConfig(
31 per_device_train_batch_size=6,
32 per_device_eval_batch_size=8,
33 save_total_limit=1,
34 max_seq_length=512,
35 output_dir="./finetuned_omni_dna",
36 save_safetensors=False,
37 num_train_epochs=10,
38 save_strategy="epoch",
39 neftune_noise_alpha=5, # Apply NEFT for regularization
40)
41
42# Trainer setup
43trainer = SFTTrainer(
44 model=model,
45 train_dataset=dataset,
46 args=training_args,
47 formatting_func=formatting_prompts_func,
48 data_collator=collator,
49)
50
51# Train the model
52trainer.train()