This repository contains a LoRA adapter for English-to-Bengali scientific-paper
title translation. It is the Run 2 system submitted by team Origin to
SciHigh 2026 Task 3.
The adapter must be loaded on top of
ai4bharat/indictrans2-en-indic-1B
at commit
10e65a9951a1e922cd109a95e8aba9357b62144b; it is
not a standalone
full model.
The adapter was trained only on the 60 official training triplets from the
SciHigh 2026 Task 3 SpringerSSAT-Tiny-Multilingual split. Each input was the
English title and each target was its expert Bengali translation. No synthetic
examples or test labels were used.
The 20 official validation examples were held out from gradient optimization
and used once per epoch for checkpoint selection.
Scores below were calculated on the 20 held-out validation titles. ROUGE-L uses
whitespace-delimited Bengali tokens
1pip install "transformers==4.53.2" "peft>=0.16,<0.18" \
2 "protobuf>=5,<7" "sentencepiece>=0.2,<0.3" torch
3pip install "IndicTransToolkit @ git+https://github.com/VarunGumma/IndicTransToolkit.git@3efb8418d0721b4ce267c2b3586899d313191357"
1import torch
2from IndicTransToolkit import IndicProcessor
3from peft import PeftModel
4from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
5
6adapter_id = "uthayamurthy/origin-task3-indictrans2-lora"
7base_id = "ai4bharat/indictrans2-en-indic-1B"
8base_revision = "10e65a9951a1e922cd109a95e8aba9357b62144b"
9device = "cuda" if torch.cuda.is_available() else "cpu"
10
11tokenizer = AutoTokenizer.from_pretrained(
12 base_id, revision=base_revision, trust_remote_code=True
13)
14base_model = AutoModelForSeq2SeqLM.from_pretrained(
15 base_id,
16 revision=base_revision,
17 trust_remote_code=True,
18 torch_dtype=torch.bfloat16 if device == "cuda" else torch.float32,
19)
20model = PeftModel.from_pretrained(base_model, adapter_id).to(device).eval()
21processor = IndicProcessor(inference=True)
22
23title = "A framework to measure microaggressions in the mathematics classroom"
24processed = processor.preprocess_batch(
25 [title], src_lang="eng_Latn", tgt_lang="ben_Beng"
26)
27inputs = tokenizer(processed, return_tensors="pt").to(device)
28with torch.inference_mode():
29 tokens = model.generate(**inputs, num_beams=5, max_new_tokens=96)
30decoded = tokenizer.batch_decode(tokens, skip_special_tokens=True)
31print(processor.postprocess_batch(decoded, lang="ben_Beng")[0])