Model Card for peleke-phi-4-merged

This model is a fine-tuned version of microsoft/phi-4 for antibody sequence generation. It takes in an antigen sequence, and returns novel Fv portions of heavy and light chain antibody sequences. (This is a merged version of silicobio/peleke-1-phi-4, which includes the fine-tuned LoRA weights.)

Quick start

  1. Load in the Model
model_name = 'silicobio/peleke-phi-4'

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
  1. Format your Input

This model uses <epi> and </epi> to annotate epitope residues of interest.

It may be easier to use other characters for annotation, such as [ ]'s. For example: ...CSFS[S][F][V]L[N]WY.... Then, use the following function to properly format the input.

def format_prompt(antigen_sequence):
    epitope_seq = re.sub(r'\[([A-Z])\]', r'<epi>\1</epi>', antigen_sequence)
    formatted_str = f"Antigen: {epitope_seq}<|im_end|>\nAntibody:"
    return formatted_str
  1. Generate an Antibody Sequence
## Example HIV-1 gp120 antigen sequence with epitopes marked
antigen_sequence = "VPVWKDADTTLFCASDAKAHETEVHNVWATHACVPTDPNPQEIHLENVTENFNMWKNNMVEQMQEDVISLWDQSLQPCVKLTGGSVIKQACPKISFDPIPIHYCTPAGYVILKCNDKNFNGTGPCKNVSSVQCTHGIKPVVSTQLLLNGSLAEEEIIIRSENLT[N][N]A[K]TIIVHLNKSVEINCTRPSNGGSGSGGDIRKAYCEINGTKWNKVLKQVTEKLKEHFNNKTIIFQPPSGG[D]LEITMHSFNCRGEFFYCNTTQLFNNTCIGNETMKGCNGTITLPCKIKQIINMWQGTGQAMYAPPIDGKINCVSNITGILLT[R]D[G][G]ANNTSNETFRPGGGNIKDNWRSELYKYKVVQIE"

prompt = format_prompt(antigen_sequence)
inputs = tokenizer(prompt, return_tensors="pt")
inputs = {k: v.cuda() for k, v in inputs.items()}

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=1000,
        do_sample=True,
        temperature=0.7,
        pad_token_id=tokenizer.eos_token_id,
        use_cache=False,
    )

full_text = tokenizer.decode(outputs[0], skip_special_tokens=False)
antibody_sequence = full_text.split('<|im_end|>')[1].replace('Antibody: ', '')
print(f"Antigen: {antigen_sequence}\nAntibody: {antibody_sequence}\n")

This will generate a |-delimited output, which is an Fv portion of a heavy and light chain.

Antigen: NPPTFSPALL...
Antibody: QVQLVQSGGG...|DIQMTQSPSS...

Training procedure

This model was trained with SFT.

Framework versions

  • PEFT 0.17.0
  • TRL: 0.19.1
  • Transformers: 4.54.0
  • Pytorch: 2.7.1
  • Datasets: 4.0.0
  • Tokenizers: 0.21.2
Downloads last month
-
Safetensors
Model size
15B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for silicobio/peleke-phi-4-merged

Base model

microsoft/phi-4
Adapter
(54)
this model

Dataset used to train silicobio/peleke-phi-4-merged

Collection including silicobio/peleke-phi-4-merged