EN–FR Translation LoRA on TinyLlama-1.1B

A lightweight LoRA adapter fine-tuned on the TinyLlama-1.1B base model for ** English → French translation** (binary classification: Positive or Negative).

Trained with supervised fine-tuning (SFT) on only 8,000 examples from the Hugging Face Helsinki-NLP/opus-100 dataset, formatted as instruction prompts. Despite the limited data, it achieves solid performance with very low memory usage and fast inference.

Model Details

  • Base Model: TinyLlama/TinyLlama-1.1B-intermediate-step-1431k-3T
  • LoRA Configuration:
    • Rank (r): 8
    • Scaling (lora_alpha): 16
    • Target modules: ["q_proj", "v_proj"]
    • Dropout: 0.05
    • Bias: "none"
    • Task type: CAUSAL_LM
  • Training Data: 8,000 labeled samples from Helsinki-NLP/opus-100 (balanced)
  • Training Method: Instruction-tuned SFT using PEFT + TRL

Usage Example

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

# 定义基础模型和 LoRA 模型仓库
base_model_name = "TinyLlama/TinyLlama-1.1B-intermediate-step-1431k-3T"
repo_id_translation = "BEncoderRT/EN-FR-Translation-LoRA-TinyLlama-1.1B"  # 请确认此 repo 是否存在,若不存在请替换为正确 ID 或本地路径

# 加载 tokenizer
tokenizer = AutoTokenizer.from_pretrained(base_model_name)
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

# 加载基础模型(仅加载一次)
base_model = AutoModelForCausalLM.from_pretrained(
    base_model_name,
    device_map="auto",  # 自动分配到 GPU/CPU
    torch_dtype=torch.float16  # 推荐使用 half precision 节省显存
)

# 单独加载 translation LoRA adapter
translation_model = PeftModel.from_pretrained(
    base_model,
    repo_id_translation,
    adapter_name="translation"  # 可选,默认为 default
)

translation_model.eval()  # 设置为评估模式
print("Translation LoRA 模型加载完成。")

# 推理函数(仅针对 translation 任务:English to French)
def translation_inference(model, tokenizer, english_text, max_new_tokens=100):
    # 设置 adapter(如果有多个,这里确保使用 translation)
    if hasattr(model, "set_adapter"):
        model.set_adapter("translation")
    
    # 构造 prompt(根据原多任务代码的格式)
    formatted_prompt = (
        "### Task: Translation (English to French)\n"
        "### English:\n"
        f"{english_text}\n"
        "### French:\n"
    )
    
    inputs = tokenizer(formatted_prompt, return_tensors="pt", truncation=True, max_length=512).to(model.device)
    
    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=max_new_tokens,
            do_sample=True,
            temperature=0.7,
            top_k=50,
            top_p=0.95,
            eos_token_id=tokenizer.eos_token_id,
            pad_token_id=tokenizer.pad_token_id
        )
    
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    
    # 提取翻译结果
    answer_start = generated_text.find("### French:\n")
    if answer_start != -1:
        extracted = generated_text[answer_start + len("### French:\n"):].strip()
        # 去除可能的后续内容(如另一个 ###)
        end_index = extracted.find("###")
        if end_index != -1:
            extracted = extracted[:end_index].strip()
        return extracted
    
    return generated_text  # Fallback:返回完整生成文本

# --- 测试用例 ---
print("\n测试 English to French Translation:")

english_1 = "The quick brown fox jumps over the lazy dog."
print(f"English: {english_1}")
print(f"French: {translation_inference(translation_model, tokenizer, english_1)}\n")

english_2 = "Life is beautiful."
print(f"English: {english_2}")
print(f"French: {translation_inference(translation_model, tokenizer, english_2)}\n")

english_3 = "Hello, how are you today? I hope everything is going well."
print(f"English: {english_3}")
print(f"French: {translation_inference(translation_model, tokenizer, english_3)}\n")

english_4 = "Machine learning is a subset of artificial intelligence that focuses on the development of algorithms capable of learning from data."
print(f"English: {english_4}")
print(f"French: {translation_inference(translation_model, tokenizer, english_4)}")
Translation LoRA 模型加载完成。

测试 English to French Translation:
English: The quick brown fox jumps over the lazy dog.
French: Le chien sauvage et le chat fastueux s'adressent à un autre chat, qui ne voit rien.

English: Life is beautiful.
French: La vie est belle.

English: Hello, how are you today? I hope everything is going well.
French: Bonjour, comment ça va aujourd'hui ?

English: Machine learning is a subset of artificial intelligence that focuses on the development of algorithms capable of learning from data.
French: Le machine learning est un sous-ensemble de l'intelligence artificielle qui s'intéresse au développement d'algorithmes capables de se former en apprenant les données.
Downloads last month
44
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for BEncoderRT/EN-FR-Translation-LoRA-TinyLlama-1.1B

Dataset used to train BEncoderRT/EN-FR-Translation-LoRA-TinyLlama-1.1B