Привет, Habr! Меня зовут Алексей Рудак, и я основатель компании Lingvanex — компании, которая уже 7 лет делает решения для машинного перевода и распознавания речи.
В этой статье я бы хотел рассказать про наш инструмент для тренировки языковых моделей, который шесть лет назад родился из простого набора скриптов. Но постепенно усложняяcь, он стал включать в себя функции разметки данных, фильтрации датасетов, генерации данных и тестирования. В какой-то момент инструмент стал настолько функциональный, что я решил сделать ему красивый UI и назвать его - Data Studio.
Итак, что же такое Data Studio ?
Data Studio — это инструмент для работы с задачами обработки естественного языка (NLP), который мы используем в основном для улучшения качества перевода текста.
С помощью Data Studio можно обучать модели перевода, настраивать различные параметры для этих тренировок, токенизировать данные, фильтровать их по различным параметрам, собирать метрики, создавать данные для обучения, тестирования и валидации и многое другое.
Общий процесс создания языковой модели для перевода выглядит так:
1) Предобработка данных: этап подготовки данных перед обучением модели.
2) Фильтрация с использованием структурных и семантических фильтров.
3) Сбор общего набора данных: удаление избыточности, равномерное распределение тем и длин, сортировка.
4) Тегирование для классификации данных.
5) Загрузка общего набора данных в Data Studio для проверки.
6) Создание данных для валидации и тестирования модели.
7) Обучение модели.
8) Проведение тестов качества: структурные и семантические, измерение метрик.
9) Обнаружение ошибок в переводах, анализ ошибок в наборах данных, их исправление и дополнение переведенным монокорпусом при необходимости.
10) Повторение этапа сбора общего набора данных.
Подготовка данных
Для создания языковой модели для перевода текста требуется 3 типа данных:
1) Набор данных для обучения
Набор данных, который используется для обучения языковой модели. Это пары предложений на разных языках (исходный и целевой). При обучении модели можно использовать несколько наборов данных одновременно. Важно учитывать согласованность формата и структуры данных, чтобы модель могла правильно использовать информацию из всех обучающих наборов данных. Это рабочее окно отображает подготовленные крупные наборы данных, на которых обучается модель для перевода.
Пример рабочего экрана «Обучающие данные» в Data Studio показан на рис. 1.

Описание значений в таблице «Обучающие данные»:
Title: Заголовок, определяющий название записи.
From language: Язык, с которого выполняется перевод.
To language: Язык, на который выполняется перевод.
Sentence count: Количество строк (предложений) в файле.
Index: Отображает, индексирован ли набор данных (для быстрого доступа к нему).
Tag: Заменяет определенный процент чисел в наборе данных на . Это необходимо для логики, которая помечает слова, которые не должны быть переведены (при обучении модели). Процент замены задается в настройках. Когда замена происходит, создается новый набор данных с названием (tag) в конце.
Sort: Сортирует набор данных по количеству слов в предложении и по алфавиту, чтобы его было удобно анализировать визуально. Когда замена происходит, создается новый набор данных с названием (sorted) в конце.
Info: Предоставляет информацию о наборе данных.
Search: Поиск определенных слов и фраз в наборе данных. Эта функциональность необходима для нахождения предложений с неправильным переводом в наборе данных. Например, когда "cat" переведено как "dog".
Training: Перемещает набор данных на страницу обучения.
Download: Загружает архив с набором данных на ваш компьютер в формате .txt.
Download_docx: Загружает архив с набором данных на ваш компьютер в формате .docx.
Create validation dt: Создает файл валидации из обучающих данных. Параметры задаются в настройках.
-
Delete: Удаляет запись.
2) Набор данных для валидации
Этот набор данных используется для оценки производительности модели в процессе обучения. Он помогает оптимизировать параметры модели и предотвращает переобучение, позволяя оценить, как хорошо модель обобщает данные, которых она не видела в процессе обучения.
Например, предположим, что у нас есть предложения на английском языке и их соответствующие переводы на французский. Обучающий набор данных будет содержать эти пары предложений. Модель будет обучаться на этом наборе данных, пытаясь предсказать правильные французские переводы для английских предложений. После обучения модели на обучающих данных мы можем оценить ее производительность на новых данных. Для этого мы используем набор данных для валидации, который также содержит пары английских предложений и их французские переводы. Мы подаем английские предложения из набора данных для валидации в модель и сравниваем её предсказания с реальными французскими переводами из этого набора данных. Это позволяет нам оценить, как хорошо модель обобщает на данные, которых она не видела раньше.
Использование обучающих и валидационных наборов данных помогает создать более точные и обобщенные модели, которые могут эффективно переводить новые предложения на другие языки.
Пример рабочего экрана «Валидационные данные» в Data Studio показан на рис. 2.
Улучшение качества перевода 3) Набор данных для тестирования
Этот набор данных необходим для тестирования качества обученных моделей с использованием файлов, которые в нём хранятся, разделенных по вкладкам. После того как модель и параметры окончательно настроены с использованием обучающих и валидационных наборов, тестовый набор используется для оценки производительности модели.
Пример рабочего экрана «Тестовые данные» в Data Studio показан на рис. 3.
Улучшение качества перевода Процесс предварительного обучения
Ранее процессы токенизации и обучения модели выполнялись одновременно, что приводило к неэффективному использованию GPU (аренда серверов оплачивается вне зависимости от того, идет ли обучение модели или нет), пока токенизация не завершалась на CPU. Для оптимизации использования ресурсов был разработан процесс «Предварительного обучения». Теперь токенизация выполняется отдельно от обучения на более дешевых CPU серверах , что позволяет моделям обучаться на GPU без перерывов. Пример рабочего экрана «Процесс предварительного обучения» в Data Studio и одна из вариаций задач pre_trained показаны на рис. 4 и 5.
Улучшение качества перевода Улучшение качества перевода Качество перевода обученной модели зависит от:
Обучающих данных;
Установленных параметров для нейронной сети во время обучения;
Параметров инференса;
Форматирования текста до подачи его в нейронную сеть (разбиение длинных предложений на короткие фрагменты с последующим склеиванием переводов, приведение различных кавычек и других символов к стандартным).
Обучение
Каждая тренировка создает модель для одного направления перевода, например, с английского на французский. Чтобы создать переводчик, например, с русского на английский, необходимо обучить модель в другом направлении. Если мы создаем модель перевода с английского на язык X, то в параметре Direction указываем «Direct», если с языка X на английский, то в параметре Direction указываем «Reverse». Первые и вторые языки не обязательно должны быть английскими, «Direct» просто указывает, что выбор языков From и To осуществляется слева направо. Перед началом обучения необходимо установить параметры для этого обучения.
Улучшение качества перевода Чтобы провести обучение модели, необходимо выполнить следующие шаги:
1) Добавить обучающие данные. Нажмите на «tr» (рис. 11) в строке нужного набора данных в таблице «Обучающие данные». После этого набор данных станет доступен для выбора в разделе «Обучение».
Улучшение качества перевода 2) Добавить валидационные данные. Нажмите на «tr» (рис. 12) в строке нужного набора данных для валидации в таблице «Валидационные данные». После этого набор данных для валидации станет доступен для выбора в разделе «Обучение».
Улучшение качества перевода 3) В разделе «Обучение» указать все необходимые параметры (параметры токенизации SentencePieceTokenizer и OpenNMT Tokenizer, а также параметры модели), а также название обучения.
Потом выбрать нужные обучающие и валидационные наборы данных.
Нажать на кнопку «Создать и запустить» (Create and run) (рис. 13). После этого начнется обучение, и записи начнут появляться в логах (рис. 14)
Улучшение качества перевода Улучшение качества перевода Тестирование
В Data Studio есть два специальных раздела для отслеживания качества перевода: API Testing и Structure Errors. Рассмотрим каждый из них более подробно.
Тестирование API
Раздел «Тестирование API» предназначен для проверки обученной модели по таким пунктам, как тест перевода, тест распознавания речи, тест определения языка и другие (рис. 15). Также доступна сводная таблица с итоговыми метриками теста (рис. 16).
Улучшение качества перевода Улучшение качества перевода Вот описание того, что представляют собой каждая колонка и метрика в этом разделе:
Date: Временная метка, когда был выполнен каждый тест.
From/To Language: Исходный и целевой языки для тестирования перевода.
Status: Указывает на статус теста перевода (все помечены как Completed).
Model: Конкретная модель, использованная для перевода (некоторые поля могут быть пустыми, это означает, что модель не указана).
Test Dataset: Набор данных, использованный для тестирования, например, flores200, ntrex-128 или другие, представляющие собой различные коллекции данных для тестирования перевода.
Number of Sentences: Количество предложений в тестовом наборе данных.
Server: Имя сервера, использованного для выполнения теста.
BLEU: Метрика, оценивающая качество перевода путем сравнения машинного перевода с одной или несколькими эталонными версиями перевода. Более высокие значения BLEU обычно указывают на более высокое качество перевода.
BLEU ref: Эталонный балл BLEU, возможно, указывающий на идеальный или предыдущий эталонный результат.
BLEU diff: Разница между текущим значением BLEU и эталонным баллом, отмеченная зеленым (положительная разница) или красным (отрицательная разница).
COMET: Еще одна метрика качества перевода, более чувствительная к контексту, чем BLEU.
COMET ref: Эталонный балл COMET.
COMET diff: Разница в балле COMET относительно эталонного.
Translation Time: Время, затраченное на выполнение перевода, чаще всего в секундах.
Delete: Возможность удалить запись о тесте.
Первое различие выводит балл BLEU, второе — балл COMET. BLEU и COMET — это метрики, используемые для оценки качества машинного перевода:
BLEU: статистическая метрика, измеряющая пересечение n-грамм (последовательностей слов) между машинным переводом и эталонными переводами. Она проста, быстра и широко используется, но не учитывает синонимы или контекст.
COMET: нейронная метрика, использующая глубокое обучение для оценки перевода, сравнивая исходный текст, эталонный и получившийся после перевода. Она лучше улавливает смысл и контекст, более точно соответствуя человеческой оценке, но является вычислительно затратной.
Файл с результатами тестирования выглядит следующим образом (рис. 17). Интерфейс предоставляет разбивку качества перевода между различными версиями переводов для отдельных предложений в наборе данных.
Улучшение качества перевода Comment: Возможность добавить описание или оставить комментарий.
Text: Исходный текст, который был отправлен на перевод.
Reference translation: Результат модели API/эталонного файла.
Human translation: Перевод, выполненный человеком.
Thematics: Тематика перевода.
Word count: Количество слов в предложении.
BLEU: Метрика оценки качества перевода.
BLEU ref: Эталонная метрика из файла.
BLEU diff: Разница между метриками BLEU ref и BLEU.
COMET: Метрика оценки качества перевода.
COMET ref: Эталонная метрика из файла.
COMET diff: Разница между метриками COMET ref и COMET.
Структурные ошибки
В этом разделе можно протестировать перевод сразу миллионов предложений и найти когда после перевода кол-во цифр, скобок, аббревиатур не совпадает.
Основная страница раздела «Структурные ошибки» показана на рис. 18 и содержит несколько дополнительных разделов:
Улучшение качества перевода 1) Структурные ошибки::
Title: Это поле позволяет ввести заголовок для структурной ошибки.
From language: В выпадающем списку можно выбрать исходный язык.
To language: В выпадающем списку можно выбрать целевой язык.
Model: В выпадающем списку можно выбрать модель, которая будет использоваться.
Select task to compare: Выбор задачи с lx7 и без lx7 для сравнения результатов двух тестов.
2) Тестовые данные (рис. 19): Этот раздел отображает тестовые данные, используемые для нахождения ошибок. Работа этих тестов основана на регулярных выражениях и фильтрах.
Улучшение качества перевода 3) Теги (рис. 20): В этом разделе пользователь может выбрать конкретную группу тестовых случаев. Эти тестовые случаи сгруппированы по категориям задач, например, Символы, Разное и т.д., или по языкам.
Улучшение качества перевода Рис. 21 показывает детализированный вид конкретной задачи перевода в интерфейсе Data Studio. Рассмотрим основные разделы и информацию, представленную в интерфейсе:
Улучшение качества перевода Title: Отображает название или наименование задачи перевода.
File source: Показывает источник файла, использованного для перевода.
Translation Parameters: В этом разделе указаны детали перевода, включая используемое устройство (GUDA или CPU), перевод с lx7 или без, compute_type и beam_size.
Start date: Информация о дате и времени, когда задача была начата.
End date: Информация о дате и времени завершения задачи.
Server: Сервер, который использовался для выполнения задачи
Model: Модель, которая использовалась для перевода.
Translation source: Источник перевода.
Test Cases: Тестовые случаи, использованные в задаче, или группа тестовых случаев.
Status: Этот блок отображает все завершенные и текущие задачи.
Start Task: Эта колонка показывает статус задачи перевода.
Delete: Удаление задачи.
После успешного завершения задачи можно получить основную информацию о результатах тестирования (рис. 22), где будут отображены основные статистические данные (рис. 23), а также номера предложений, содержащих ошибку, и соответствующие тестовые случаи. Также есть возможность выбрать отдельный тестовый случай и предложения с этим тестом, нажав на кнопку «Фильтр» (Filter) (рис. 24, рис. 25).
Улучшение качества перевода Улучшение качества перевода Улучшение качества перевода Улучшение качества перевода Заключение
В этой статье я показал возможности Lingvanex Data Studio — нашего инструмента, предназначенного для работы с языковыми моделями.
Обрабатывая большие объемы данных и применяя системные подходы к обучению, валидации и тестированию моделей, это помогает нам добиваться качественных результатов перевода на широкий спектр языков.
Если кто-то из читателей работает над своими системами для перевода или в целом для NLP, было бы интересно узнать какой инструментарий вы используете.
eigrad
А что такое "обучение модели" в данном контексте?
Aliaksei_Rudak Автор
тренировка модели