168 lines
3.7 KiB
Markdown
168 lines
3.7 KiB
Markdown
|
|
---
|
|||
|
|
base_model: AI-Sweden-Models/gpt-sw3-6.7b-v2
|
|||
|
|
library_name: transformers
|
|||
|
|
datasets:
|
|||
|
|
- barbaroo/Sprotin_parallel
|
|||
|
|
- barbaroo/fo_en_synthetic
|
|||
|
|
language:
|
|||
|
|
- en
|
|||
|
|
- fo
|
|||
|
|
metrics:
|
|||
|
|
- bleu
|
|||
|
|
- chrf
|
|||
|
|
- bertscore
|
|||
|
|
pipeline_tag: text-generation
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Model Card: English–Faroese Translation (Merged Model)
|
|||
|
|
|
|||
|
|
## Model Details
|
|||
|
|
|
|||
|
|
### Model Description
|
|||
|
|
|
|||
|
|
- **Developed by:** Barbara Scalvini
|
|||
|
|
- **Model type:** Fully merged model for **English → Faroese** translation
|
|||
|
|
- **Languages:** English, Faroese
|
|||
|
|
- **License:** Inherits license from the base model (GPT-SW3 6.7B)
|
|||
|
|
- **Finetuned from:** [AI-Sweden-Models/gpt-sw3-6.7b-v2](https://huggingface.co/AI-Sweden-Models/gpt-sw3-6.7b-v2)
|
|||
|
|
- **Library:** [Transformers](https://github.com/huggingface/transformers)
|
|||
|
|
|
|||
|
|
This model is the **merged version** of the PEFT adapter [`barbaroo/gptsw3_translate_synth_6.7B`](https://huggingface.co/barbaroo/gptsw3_translate_synth_6.7B) with its base model.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Uses
|
|||
|
|
|
|||
|
|
### Direct Use
|
|||
|
|
- English → Faroese machine translation.
|
|||
|
|
|
|||
|
|
### Downstream Use
|
|||
|
|
- Can be integrated into **multilingual NLP pipelines** or localization workflows.
|
|||
|
|
|
|||
|
|
### Out-of-Scope Use
|
|||
|
|
- Languages other than English or Faroese.
|
|||
|
|
- Tasks like summarization, classification, or dialogue without further fine-tuning.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Bias, Risks, and Limitations
|
|||
|
|
- As with all translation models, may reflect **biases** from the training corpora.
|
|||
|
|
- Outputs should be **carefully validated** for sensitive or high-stakes domains.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## How to Get Started with the Model
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
|
|||
|
|
import torch
|
|||
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
|
|||
|
|
import re
|
|||
|
|
import pandas as pd
|
|||
|
|
|
|||
|
|
# Model repo
|
|||
|
|
MODEL_NAME = "barbaroo/gptsw3-6.7B-translation-en-fo"
|
|||
|
|
|
|||
|
|
# Quantization config (8-bit)
|
|||
|
|
bnb_config = BitsAndBytesConfig(
|
|||
|
|
load_in_8bit=True
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# Initialize tokenizer & model
|
|||
|
|
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
|
|||
|
|
model = AutoModelForCausalLM.from_pretrained(
|
|||
|
|
MODEL_NAME,
|
|||
|
|
quantization_config=bnb_config,
|
|||
|
|
device_map="auto",
|
|||
|
|
)
|
|||
|
|
model.eval()
|
|||
|
|
|
|||
|
|
# Alpaca-style prompt template
|
|||
|
|
alpaca_prompt = """
|
|||
|
|
|
|||
|
|
### Instruction:
|
|||
|
|
{}
|
|||
|
|
|
|||
|
|
### Input:
|
|||
|
|
{}
|
|||
|
|
|
|||
|
|
### Response:
|
|||
|
|
{}"""
|
|||
|
|
|
|||
|
|
EOS_TOKEN = tokenizer.eos_token
|
|||
|
|
print("EOS token:", EOS_TOKEN)
|
|||
|
|
|
|||
|
|
# Example sentences
|
|||
|
|
sentences = ["I love Faroese!"]
|
|||
|
|
translations = []
|
|||
|
|
|
|||
|
|
for sentence in sentences:
|
|||
|
|
inputs = tokenizer(
|
|||
|
|
[
|
|||
|
|
alpaca_prompt.format(
|
|||
|
|
"Translate this sentence from English to Faroese:",
|
|||
|
|
sentence,
|
|||
|
|
"",
|
|||
|
|
)
|
|||
|
|
],
|
|||
|
|
return_tensors="pt"
|
|||
|
|
).to("cuda")
|
|||
|
|
|
|||
|
|
outputs = model.generate(
|
|||
|
|
**inputs,
|
|||
|
|
max_new_tokens=500,
|
|||
|
|
use_cache=True,
|
|||
|
|
do_sample=True,
|
|||
|
|
temperature=0.1,
|
|||
|
|
top_p=1,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
output_string = tokenizer.batch_decode(outputs, skip_special_tokens=False)[0]
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
response = output_string.split("Response:\n", 1)[1]
|
|||
|
|
translation = response.replace(EOS_TOKEN, "")
|
|||
|
|
except IndexError:
|
|||
|
|
translation = ""
|
|||
|
|
|
|||
|
|
translations.append(translation)
|
|||
|
|
print(translation)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
## Training Details
|
|||
|
|
|
|||
|
|
### Training Data
|
|||
|
|
- [barbaroo/Sprotin_parallel](https://huggingface.co/datasets/barbaroo/Sprotin_parallel)
|
|||
|
|
- [barbaroo/fo_en_synthetic](https://huggingface.co/datasets/barbaroo/fo_en_synthetic)
|
|||
|
|
|
|||
|
|
### Procedure
|
|||
|
|
- Initially trained as a **PEFT adapter** using Alpaca-style prompts.
|
|||
|
|
- Then **merged with the base GPT-SW3 6.7B model** to produce this standalone version.
|
|||
|
|
|
|||
|
|
**Hyperparameters:**
|
|||
|
|
- Epochs: 3 (early stopping on validation loss)
|
|||
|
|
- Batch Size: 2 (with 4 gradient accumulation steps)
|
|||
|
|
- Learning Rate: 2e-4
|
|||
|
|
- Optimizer: AdamW with LR scheduler + warm-up
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Evaluation
|
|||
|
|
|
|||
|
|
### Test Data
|
|||
|
|
- FLORES-200 benchmark (~1012 English–Faroese pairs).
|
|||
|
|
|
|||
|
|
### Metrics
|
|||
|
|
- **BLEU:** 19.8
|
|||
|
|
- **chrF:** 52.4
|
|||
|
|
|