huggingface / transformers

🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
https://huggingface.co/transformers
Apache License 2.0
133.08k stars 26.56k forks source link

Too strange translation result in NLLB-200-3.3B #26107

Closed molokanov50 closed 11 months ago

molokanov50 commented 1 year ago

System Info

Who can help?

@ArthurZucker @younesbelkada

Information

Tasks

Reproduction

In NLLB-200-3.3B, there occurs a strange translation result at certain source texts and certain lang pairs. Looks like a trivial bug. For example:

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
modelPath = "facebook/nllb-200-3.3B"
tokenizer = AutoTokenizer.from_pretrained(modelPath, src_lang="rus_Cyrl")
model = AutoModelForSeq2SeqLM.from_pretrained(modelPath)

article = "Приказ Министерства финансов Российской Федерации от 10.08.2023 № 129н \"О признании утратившими силу приказов Министерства финансов Российской Федерации"

inputs = tokenizer(article, return_tensors="pt")
translated_tokens = model.generate(
    **inputs, forced_bos_token_id=tokenizer.lang_code_to_id["spa_Latn"]
)
print(tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0])

The translation is as follows: Obligación de la Comisión de la Unión Europea de establecer normas de aplicación para la aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de las normas de aplicación de aplicación de las normas de aplicación de aplicación de las normas de aplicación de which is absolutely incorrect and ugly-looking due to multiple repetitions.

This is not observed if I translate to eng_Latn or other languages; at those target languages, the translations are correct.

Meanwhile, if I use a simpler NLLB-200 model, e.g., if I change my modelPath to facebook/nllb-200-distilled-600M, then I get the following translation: El 10 de agosto de 2023 n 129n " Sobre la pérdida de la fuerza de los pedidos del Ministerio de Finanzas de la Federación de Rusia " which is appropriate by meaning.

Also, if I leave my modelPath unmodified (i.e., facebook/nllb-200-3.3B) and slightly change my source text (i.e. article), for example, delete the date or registration number, the translation gets correct.

Expected behavior

At least, getting into the meaning of the source text.

ArthurZucker commented 1 year ago

Hey 🤗 thanks for opening an issue! We try to keep the github issues for bugs/feature requests. You should ask this kind of question on the forum instead? I'm sure the community will be of help!

Otherwise I think it's expected as the distilled model was trained for longer. If you think the issue is / might be with the tokenizer you could try just using the distilled tokenizer here, but I don't think you'll get much better results.

The pair, russian / spanish might just be undertained compared to other pair

github-actions[bot] commented 12 months ago

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the contributing guidelines are likely to be ignored.