File size: 879 Bytes
7e3c986
 
 
12a7668
 
7e3c986
12a7668
 
7e3c986
 
 
 
 
12a7668
7e3c986
 
 
 
 
12a7668
 
 
7e3c986
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch

MODEL_NAME = "facebook/nllb-200-distilled-600M" # facebook/nllb-200-3.3B
device = "cuda" if torch.cuda.is_available() else "cpu"

tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME).to(device)
model.eval()


def translateText(text: str, sourceLang: str, targetLang: str) -> str:
    tokenizer.src_lang = sourceLang
    inputs = tokenizer(text, return_tensors="pt").to(device)

    with torch.no_grad():
        tokens = model.generate(
            **inputs,
            forced_bos_token_id=tokenizer.convert_tokens_to_ids(targetLang),
            max_new_tokens=512,
            num_beams=4,
            early_stopping=True,
        )

    translatedText = tokenizer.batch_decode(tokens, skip_special_tokens=True)[0]
    return translatedText