Gemma-Cure — Drug Discovery LoRA Adapter

Gemma 4 E2B fine-tuned on 225K drug–target pairs for novel small-molecule generation.

Built for the Kaggle Gemma 4 Good Hackathon 2026 by DLYog Lab.


Model Description

Gemma-Cure takes a protein target name, amino-acid sequence, and measured binding affinity, then generates:

  1. A structured scientific rationale (binding pocket analysis, key residues, physicochemical reasoning)
  2. A novel SMILES string for a drug-like small molecule

The model is designed for educational drug discovery — explaining reasoning in plain English accessible to early researchers and high school students.

Live Demo

Try it now: Deep2Lead Platform — PathoHunt 3D game uses this model live


Training Details

Parameter Value
Base model unsloth/gemma-4-E2B-it-unsloth-bnb-4bit
Architecture Gemma 4 E2B (5.2B parameters)
Adapter type RS-LoRA (Rank-Stabilised LoRA)
LoRA rank (r) 32
LoRA alpha 64
Trainable params 62M / 5.2B (1.2%)
Training dataset 225,000 drug–target binding pairs
Data sources BindingDB, ChEMBL, MOSES
Training framework Unsloth + HuggingFace TRL SFTTrainer
Hardware NVIDIA GB10 Grace Blackwell (122GB VRAM)
Training time ~3 hours total (iterative runs)
Final LR 2e-5 (cosine scheduler)
Batch size 8 × 16 gradient accumulation = 128 effective
Quantization 4-bit (BnB NF4)

Auto-Evaluation Loop

Training used a custom EvalAndStopCallback that evaluates drug quality every 100 steps on 3 benchmark targets and stops automatically when a pharmaceutical quality gate passes:

  • Validity gate: ≥ 67% of generated SMILES must be chemically valid (RDKit)
  • QED gate: Average QED (Quantitative Estimate of Drug-likeness) ≥ 0.55

Evaluation Results

Evaluated on 3 benchmark drug targets using RDKit SMILES validation and QED scoring:

Target SMILES QED
SARS-CoV-2 Main Protease O=C(O)c1ccc(-n2cc(Nc3ccccc3)cn2)o1 0.761
EGFR Kinase CN(C)c1ccc(-n2cc(NC(=O)[C@](Cc3ccccc3)N=O)nc2OC)cn1 0.591
BACE1 Alzheimer target CN(C)c1ccc(-n2cc(N[C@@H]3CC4CCN(CCc5ccccc5Cl)CC4CCC3)nc2O)[nH]1 0.421
Metric Base Gemma 4 v2 baseline Gemma-Cure (final)
SMILES validity 0% 33% 100%
Average QED 0.000 0.116 0.591
Composite score 0.000 0.224 0.795

Quality gate passed at step 100 of run 2 (41 minutes of training).


How to Load

Requirements

pip install unsloth

Inference

from unsloth import FastModel

model, processor = FastModel.from_pretrained(
    model_name="dlyog/gemma-cure",   # downloads base + adapter automatically
    load_in_4bit=True,
    max_seq_length=2048,
)
FastModel.for_inference(model)

SYSTEM = (
    "You are Deep2Lead's drug discovery AI v2. When given a protein target or biological "
    "context, first reason about the binding pocket geometry, key residues, and desired "
    "physicochemical profile (2-3 sentences), then output novel drug-like SMILES molecules. "
    "Always label your reasoning as 'Rationale:' and your molecules as 'SMILES:'. Explain "
    "choices in plain English suitable for high school students and early researchers. "
    "Prioritize selectivity, low toxicity, and synthetic accessibility."
)

messages = [
    {"role": "system", "content": [{"type": "text", "text": SYSTEM}]},
    {"role": "user",   "content": [{"type": "text", "text": (
        "Target: EGFR Kinase\n"
        "Protein sequence (first 150 AA): MRPSGTAGAALLALLAALCPASRALEEKKVCQGTSNKLTQLGTFEDHFLSLQ"
        "RMFNNCEVVLGNLEITYVQRNYDLSFLKTIQEVAGYVLIALNTVERIPLENLQIIRGNMYYENSYALAVLSNYDANKTGLKELPMRNLQEILHGAVR\n"
        "Measured binding affinity: IC50 = 2.0 nM\n"
        "Design a small molecule drug candidate with high binding affinity to this target. "
        "First explain your structural reasoning, then provide the SMILES.\n"
        "Requirements: MW 200-500 Da, QED > 0.50, SAS <= 5.0, Lipinski Ro5 compliant."
    )}]},
]

inputs = processor.apply_chat_template(
    messages, tokenize=True, return_dict=True,
    return_tensors="pt", add_generation_prompt=True,
).to("cuda")

with __import__("torch").no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=350,
        temperature=0.9,
        top_p=0.92,
        top_k=50,
        repetition_penalty=1.3,
        do_sample=True,
    )

response = processor.decode(
    outputs[0][inputs["input_ids"].shape[1]:],
    skip_special_tokens=True
)
print(response)

Expected Output Format

Rationale: The EGFR kinase active site contains a conserved ATP-binding hinge region
with Cys797 as a key covalent anchor point. A pyrimidine-aniline scaffold provides
optimal hinge binding geometry while maintaining MW within the 200-500 Da window
and favorable LogP for cell penetration.

SMILES: CN(C)c1ccc(-c2nc(Nc3ccccc3F)c(C#N)cn2)cc1

Prompt Format

The model expects this exact format (use processor.apply_chat_template):

System: You are Deep2Lead's drug discovery AI v2...

User:
Target: <target name>
Protein sequence (first 150 AA): <sequence>
Measured binding affinity: <Ki/IC50/Kd value>
Design a small molecule drug candidate...
Requirements: MW 200-500 Da, QED > 0.50, SAS ≤ 5.0, Lipinski Ro5 compliant.

Dataset

Training data: 225,000 drug–target binding pairs curated from:

Source Records Description
BindingDB ~150K Experimental binding affinities (Ki, IC50, Kd)
ChEMBL ~50K Bioactive molecules with target annotations
MOSES ~25K Drug-like SMILES diversity scaffold

Each record: {target_name, protein_sequence_150AA, binding_affinity, smiles, rationale}


Technical Notes

  • Why RS-LoRA: Uses α/√r scaling (vs standard α/r), stabilising gradients across different rank sizes. With r=32 and α=64, the effective scale is α/√r ≈ 11.3 vs standard α/r = 2.0 — higher signal without the instability of large α.
  • Why Unsloth: 2× faster training, 80% less VRAM via custom CUDA kernels and gradient checkpointing optimisations. Enables 4-bit training on the full 5.2B model with only 62M trainable LoRA params.
  • repetition_penalty=1.3: Critical for SMILES generation — without it the model loops on fragments like c1c1c1c1.... Matches deployment params.
  • TRANSFORMERS_OFFLINE=1: Set during training to use local HF cache and prevent mid-training download attempts.

Citation

@misc{gemma-cure-2026,
  title        = {Gemma-Cure: Drug Discovery LoRA Adapter for Gemma 4 E2B},
  author       = {Tarun Kumar Chawdhury},
  year         = {2026},
  howpublished = {HuggingFace Model Hub},
  url          = {https://huggingface.co/dlyog/gemma-cure},
  note         = {Fine-tuned on 225K drug-target pairs. Kaggle Gemma 4 Good Hackathon 2026.}
}

License

This adapter is released under the Gemma Terms of Use. The base model weights remain subject to the original Gemma license.

Downloads last month
4
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for dlyog/gemma-cure

Adapter
(7)
this model