Перейти к содержимому
Learning Machine

Машинный перевод на азербайджанский с mt5-enaz-10m: практика

Машинный перевод на азербайджанский с mt5-enaz-10m: практика

mt5-enaz-10m — открытая модель на базе mT5 для перевода с английского на азербайджанский. Как она обучена и как запустить её в Python.

mt5-enaz-10m — открытая модель машинного перевода с английского на азербайджанский. Мы опубликовали её на Hugging Face в апреле 2023 года. В этом руководстве рассказываем, что это за модель, как она обучалась, как запустить её в Python и что учесть, прежде чем встраивать её в продукт.

Что это за модель

Модель построена на mT5-base — многоязычной версии архитектуры T5 от Google, работающей по принципу «текст в текст». Мы дообучили её на нашем открытом корпусе translate_enaz_10m: около 10 миллионов англо-азербайджанских пар предложений, где азербайджанская сторона — это очищенный оригинальный текст из источников Национальной библиотеки Азербайджана. То есть модель научилась выдавать азербайджанский текст, написанный людьми, а не другой системой перевода.

Обучение в цифрах

ПараметрЗначение
Базовая модельmT5-base
Данныеtranslate_enaz_10m, около 10 млн пар
Размер батча16
Эпохи10
Шаги620 тысяч
Потери на обучении0,56
Потери на валидации0,53
Время обучения2 дня
ЛицензияCC BY-NC-SA 4.0

Как запустить

Понадобятся библиотека transformers, sentencepiece для токенизатора mT5 и PyTorch:

pip install transformers sentencepiece torch

Модель ожидает перед текстом префикс задачи: translate English to Azerbaijani: {text}. Вот базовый пример из карточки модели с детерминированным (жадным) декодированием:

from transformers import MT5Tokenizer, MT5ForConditionalGeneration

model_name = 'learningmachineaz/mt5-enaz-10m'
tokenizer = MT5Tokenizer.from_pretrained(model_name)
model = MT5ForConditionalGeneration.from_pretrained(model_name)

text = "Artificial intelligence is already superior to human learning in numerous domains."
input_ids = tokenizer(f'translate English to Azerbaijani: {text}', return_tensors="pt").input_ids
outputs = model.generate(input_ids, max_length=128, do_sample=False, num_return_sequences=1)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
# Süni intellekt artıq çoxsaylı domenlərdə insanın öyrənilməsindən üstünlük təşkil edir.

Несколько вариантов с сэмплированием

Иногда полезно увидеть больше одного перевода, например чтобы редактор выбрал лучшую формулировку. Включите сэмплирование и запросите несколько последовательностей:

outputs = model.generate(input_ids, max_length=128, do_sample=True,
                         top_k=10, num_return_sequences=3)
for out in outputs:
    print(tokenizer.decode(out, skip_special_tokens=True))

При сэмплировании каждый запуск может давать разные варианты. Для воспроизводимых результатов в конвейере оставьте do_sample=False.

Перевод многих предложений за раз

Для пакета текстов дополните входы до одной длины (padding) и декодируйте каждый выход:

texts = ["The meeting starts at ten.", "Please send me the report."]
batch = tokenizer([f'translate English to Azerbaijani: {t}' for t in texts],
                  return_tensors="pt", padding=True)
outputs = model.generate(**batch, max_length=128, do_sample=False)
for out in outputs:
    print(tokenizer.decode(out, skip_special_tokens=True))

На GPU это работает значительно быстрее, но для небольших объёмов модель запускается и на CPU.

Практические советы

  • Сохраняйте префикс точно. Модель обучалась с translate English to Azerbaijani:; другая формулировка может ухудшить результат.
  • Переводите по предложениям. Генерация ограничена max_length=128, поэтому длинные документы разбивайте на предложения или короткие абзацы и затем склеивайте результат.
  • Только одно направление. Модель переводит с английского на азербайджанский; обратному направлению она не обучалась.
  • Проверяйте терминологию. Обучающие тексты — книги, новости, стихи и статьи. Для юридических, медицинских или технических текстов проверяйте результат или дообучайте модель на парах из своей области.
  • Оставьте человека в процессе для публикуемых текстов. Как и любой машинный перевод, результат лучше читается после редактуры, когда важно качество.

Лицензия: некоммерческая

mt5-enaz-10m распространяется по лицензии CC BY-NC-SA 4.0. Её можно использовать, распространять и адаптировать с указанием авторства, только в некоммерческих целях, а производные работы должны распространяться на тех же условиях. Исследования, обучение и личные проекты под эти условия подходят. Для коммерческого использования свяжитесь с нами.

Что дальше

Модель и её карточка — на Hugging Face, подробности собраны на странице проекта. Если вам нужно встроить в продукт машинный перевод на азербайджанский, классификацию текстов, поиск или другую языковую задачу, посмотрите нашу услугу обработки естественного языка или опишите задачу.

  • Hugging Face
  • mT5
  • Machine Translation
  • Azerbaijani

Связаться с нами

Отправьте нам Ваш Проект или Идею для расчёта сроков и стоимости. Мы рады любым Вашим идеям!

Rasul Rza 75, Баку, Азербайджан
[email protected]

Сайт защищён reCAPTCHA; действуют Политика конфиденциальности и Условия использования Google.

Отправляя форму, вы соглашаетесь с политикой конфиденциальности.