Team Ai
Modelpublic

Codemaster67/Unichem_chebi_1M_tokens

sourceHugging Faceapache-2.0updated 5d agoView on Hugging Face
0likes80downloads
Model Card

OLMo-7B QLoRA Adapter -- Chemistry SMILES CPT

Model Description

This is a QLoRA (Quantized LoRA) adapter trained on top of allenai/OLMo-1B-hf for chemistry SMILES language modelling using the Codemaster67/Unichem_chebi_1M dataset.

The base model was loaded in 4-bit precision (NF4 quantization via bitsandbytes with double quantization) and LoRA adapter matrices were trained on top in bfloat16.

Decoupled learning rates are used: LoRA adapters train at 2e-05, while embed_tokens and lm_head train at 2.0000000000000003e-06 (10x smaller) to avoid catastrophic forgetting of the base vocabulary.

QLoRA / Quantization Configuration

ParameterValue
QuantizationNF4 (4-bit)
Double QuantizationTrue
Compute dtypebfloat16
Rank (r)64
Alpha128
Effective Scaling2.0
Target Modulesall-linear
Dropout0.01
RSLoRAFalse
Modules to Saveembedtokens, lmhead

Decoupled Learning Rates

Parameter GroupLearning Rate
LoRA adapters2e-05
embed_tokens + lm_head2.0000000000000003e-06 (x0.1)

Training Details

ParameterValue
MethodQLoRA (4-bit base + LoRA adapters)
Epochs1
Learning Rate (LoRA)2e-05
Learning Rate (embed/head)2.0000000000000003e-06
OptimizerAdamW 8-bit
Batch Size (per device)32
Gradient Accumulation1
Max Sequence Length512
Warmup Ratio0.1
Weight Decay0.01
Effective Batch Size32
SchedulerCosine
Precisionbf16 (adapters) / 4-bit NF4 (base)
Gradient CheckpointingTrue
Validation Split5 %
Packed Training Sequences1885
Packed Validation Sequences97

Training Results

MetricValue
Training Loss1.4281
Validation Loss1.2449

Usage

python
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel
import torch

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)
base_model = AutoModelForCausalLM.from_pretrained(
    "allenai/OLMo-1B-hf", quantization_config=bnb_config, trust_remote_code=True
)
model = PeftModel.from_pretrained(base_model, "Codemaster67/Unichem_chebi_1M_tokens")
tokenizer = AutoTokenizer.from_pretrained("Codemaster67/Unichem_chebi_1M_tokens", trust_remote_code=True)

smiles_input = "<|start_of_smiles|>CC(=O)Oc1ccccc1C(=O)O<|end_of_smiles|>"
inputs = tokenizer(smiles_input, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=False))

Intended Use

Chemistry-domain language modelling, SMILES generation and completion, and downstream molecular property prediction via fine-tuning.

Limitations

  • —QLoRA adapters only; requires the base model allenai/OLMo-1B-hf loaded in 4-bit to use.
  • —Trained primarily on SMILES strings; natural-language instruction-following ability may degrade compared to the base OLMo checkpoint.