Views
No views yet
1
2from transformers import AutoModelForSeq2SeqLM, NllbTokenizer, AutoTokenizer
3import torch
4
5#src_lang="por_Latn"
6
7data = []
8
9src_lang="por_Latn"
10tgt_lang="ts_Latn"
11text="<2ts> ‘Ele foi muito feliz’!"
12data.append((src_lang, tgt_lang, text))
13
14
15src_lang="por_Latn"
16tgt_lang="sw_Latn"
17text="<2sw> Ele foi muito feliz!"
18data.append((src_lang, tgt_lang, text))
19
20src_lang="eng_Latn"
21tgt_lang="vmw_Latn"
22text="<2vmw> Hello, world of languages!"
23data.append((src_lang, tgt_lang, text))
24
25
26src_lang="por_Latn"
27tgt_lang="vmw_Latn"
28text="<2vmw> Olá, mundo das línguas! Estou muito feliz"
29data.append((src_lang, tgt_lang, text))
30
31src_lang="por_Latn"
32tgt_lang="nya_Latn"
33text="<2ny> ola, mundo das línguas!"
34data.append((src_lang, tgt_lang, text))
35
36
37src_lang="por_Latn"
38tgt_lang="seh_Latn"
39text="<2seh> ola, mundo das línguas!"
40data.append((src_lang, tgt_lang, text))
41
42
43
44
45device = "cuda:0" if torch.cuda.is_available() else "cpu"
46
47model_name="models/nllb_MULTI"
48model = AutoModelForSeq2SeqLM.from_pretrained(model_name).to(device)
49tokenizer = NllbTokenizer.from_pretrained(model_name)
50
51
52# Get the list of existing languages
53existing_languages = tokenizer.additional_special_tokens
54
55# Add the new language token to the list
56existing_languages = existing_languages + ["vmw_Latn", "seh_Latn", "ts_Latn"]
57
58# Reinitialize the tokenizer with the updated list of languages
59tokenizer = AutoTokenizer.from_pretrained(model_name, additional_special_tokens=existing_languages)
60model.resize_token_embeddings(len(tokenizer))
61
62
63for src_lang, tgt_lang, text in data:
64
65 print(src_lang, tgt_lang, text)
66 tokenizer.src_lang = src_lang
67 tokenizer.tgt_lang = tgt_lang
68
69 inputs = tokenizer(
70 text, return_tensors='pt', padding=True, truncation=True,
71 max_length=1024
72 )
73 model.eval() # turn off training mode
74 result = model.generate(
75 **inputs.to(model.device),
76 forced_bos_token_id=tokenizer.convert_tokens_to_ids(tgt_lang),
77 num_beams=5,
78 )
79 print("Translation:")
80 print(tokenizer.batch_decode(result, skip_special_tokens=True)[0])
81