Views
No views yet
pip install torch transformers sentencepiece1from sonar_transformers import SonarPipeline
2
3pipeline = SonarPipeline()
4
5# Translation
6result = pipeline.translate(
7 ["Hello, how are you?"],
8 source_lang="eng_Latn",
9 target_lang="rus_Cyrl"
10)
11print(result) # ['Здравствуйте, как дела?']
12
13# Encode text to embeddings
14embeddings = pipeline.encode(["Hello world!"], source_lang="eng_Latn")
15print(embeddings.shape) # torch.Size([1, 1024])
16
17# Decode embeddings back to text
18texts = pipeline.decode(embeddings, target_lang="eng_Latn")
19print(texts) # ['Hello world!']1import torch
2from transformers import M2M100ForConditionalGeneration, NllbTokenizer
3from transformers.modeling_outputs import BaseModelOutput
4
5# Load model and tokenizer
6model = M2M100ForConditionalGeneration.from_pretrained("raxtemur/SONAR_200_text_decoder")
7tokenizer = NllbTokenizer.from_pretrained("raxtemur/SONAR_200_text_decoder")
8
9# Your embeddings from SONAR encoder (1024-dim vectors)
10embeddings = torch.randn(1, 1024) # Replace with actual embeddings
11
12# Prepare encoder outputs
13encoder_outputs = BaseModelOutput(last_hidden_state=embeddings.unsqueeze(1))
14
15# Generate text
16target_lang = "eng_Latn"
17forced_bos_token_id = tokenizer.convert_tokens_to_ids(target_lang)
18
19generated_ids = model.generate(
20 encoder_outputs=encoder_outputs,
21 forced_bos_token_id=forced_bos_token_id,
22 max_length=128,
23 num_beams=5
24)
25
26text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
27print(text)| Test | Result |
|---|---|
| Encoder cosine similarity | 1.000000 |
| Decoder output match | Identical |
| Round-trip (encode→decode) | Works |
| Translation | Works |
| fairseq2 | HuggingFace |
|---|---|
decoder.decoder.layers.N.encoder_decoder_attn.* | model.decoder.layers.N.encoder_attn.* |
decoder.decoder.layers.N.ffn.inner_proj.* | model.decoder.layers.N.fc1.* |
decoder.decoder.layers.N.ffn.output_proj.* | model.decoder.layers.N.fc2.* |
decoder.decoder.layers.N.ffn_layer_norm.* | model.decoder.layers.N.final_layer_norm.* |
decoder.decoder_frontend.embed.weight | model.decoder.embed_tokens.weight |
decoder.final_proj.weight | lm_head.weight |
[pad=0, unk=1, bos=2, eos=3][bos=0, pad=1, eos=2, unk=3]eng_Latn - Englishrus_Cyrl - Russiandeu_Latn - Germanfra_Latn - Frenchspa_Latn - Spanishzho_Hans - Chinese (Simplified)jpn_Jpan - Japanesekor_Hang - Koreanarb_Arab - Arabic1@article{Duquenne:2023:sonar_arxiv,
2 author = {Duquenne, Paul-Ambroise and Schwenk, Holger and Balikas, Georgios and others},
3 title = {SONAR: Sentence-Level Multimodal and Language-Agnostic Representations},
4 journal = {arXiv preprint arXiv:2308.11466},
5 year = {2023},
6}