LoRA Inference¶
This tutorial shows how to run inference with a base model plus LoRA adapter weights. The adapter is loaded on top of the pre-trained base model without modifying its original weights.
Full Notebook¶
Prerequisites¶
uv pip install -e '.[base,inference,cuda124]'
Load Configuration¶
from dnallm import load_config
configs = load_config("inference_config.yaml")
Load Base Model¶
from dnallm import load_model_and_tokenizer
model_name = "kuleshov-group/PlantCAD2-Small-l24-d0768"
model, tokenizer = load_model_and_tokenizer(
model_name,
task_config=configs['task'],
source="huggingface"
)
Create Inference Engine with LoRA Adapter¶
from dnallm import DNAInference
lora_adapter_path = "plantcad/cross_species_acr_train_on_arabidopsis_plantcad2_small"
inference_engine = DNAInference(
model=model,
tokenizer=tokenizer,
config=configs,
lora_adapter=lora_adapter_path
)
The lora_adapter parameter specifies the path or Hugging Face repo ID of the saved LoRA weights.
Infer on Sequences¶
seqs = [(
"AAAAATTTAAATATCGTCTGTAGATATTTTATGGGATGCTTTGAGAATGGGCTTCGTTTTAATGGGCCTC"
"CTCTGCAATCATTGTCCAGAGTCGAGAAACCACCTCTTCTTCTCTTGTTCTTTCTCCAAATCGATTTGGT"
"CCCAACTCTCTTCAAGCAAAGGAGAGATATGAAAATGAAAGCTCTTACGGCGAACAAGTTTTTCCGATTG"
"AAGAAGAGAAGAATCTAGAAGATGAAGACAACACTAGTGCACCAAACAGTTTTGCGCGTCTTGAGAGGAA"
"ACAAAAAACTATTCAGAGTTCAGAGAGAGTCAACCCCCAAACGAGACTTAAACGATGAGCCCACTATAAT"
"TTTATAATTTATGGGCCATCAGGCCCAAATGATCAGTAGTAGTTATTATTTGACTTTTGACATGGTGGAT"
"TTGGTTTAACCACCAAACCGAACGAGTAAAACACTATTGGATTGGGTGATGATATCCCGGTTTTATTTGG"
"TTAAAATCACAAAATCCTGATTTTGGTTCGCGGCTTGATTCTGCCGCTCTCTCGTCTTTAACCTAACTAA"
"AGACGTAGAATGATTCTGGTTATTGAATTAGTTTGATACA"
)]
results = inference_engine.infer_seqs(seqs)
print(results)
Infer on File¶
infer_file = "./test.csv"
results, metrics = inference_engine.infer_file(
infer_file, seq_col="sequence", label_col="label", evaluate=True
)
print(metrics)