Продолжаю эксперименты по мотивам публикации "
Scaling test-time compute with open models." о которой я рассказывал с неделю назад, вот небольшой статус на текущий момент:
1) Мне удалось найти репозиторий
huggingface/search-and-learn в котором реализован код решающий задачу описанную в статье.
В ходе попыток с целью воспроизвести эксперимент разобрался с тем, что весь он сводится к тому, что скрипт берёт датасет
HuggingFaceH4/MATH-500 и поочерёдно передаёт содержимое колонки
problem
на вход модели и проверяет насколько сильно отличается ответ модели от того, что содержится в колонке
answer
. Ну а поле
solution
нужно для ручной проверки "цепочки рассуждений".
2) Упомянутый выше датасет
MATH-500
, при всём своём великолепии, имеет один
фатальный недостаток, он на английском языке, поэтому для оценки БЯМ ориентированных на работу с русским языком (например GigaChat или Vikhr, или Saiga, или T-Lite) он не очень подходит, иными словами необходимо выполнить перевод с английского на русский.
Ранее я делал небольшой скриптик
translator.py для решения похожей задачи, поэтому на его основе сделал чуть более совершенную версию
EvilFreelancer/datasets-translator, выполнил перевод датасета
MATH-500
при помощи модели
utrobinmv/t5_translate_en_ru_zh_large_1024 и залил его сюда
evilfreelancer/MATH-500-Russian
Но у данной модели есть ограничение на размер контекстного окна в 1024 токена, его можно увеличить (что я и сделал, до 2048 токенов), но вроде чем больше контекстное окно тем хуже качество перевод (хотя оно и без этого не супер из-за наличия TeX-формул и математической терминологии).
3) Поэтому решил далее прошерстить историю с переводом через LLM, так как у LLM контекстное окно обычно в разы больше чем у моделей семейства
utrobinmv/t5_translate_*
, а ещё LLM умею с этим большим окном работать, что на самом деле гораздо важнее чем максимальный размер контекстного окна.
Вот некоторые источники на указанную тему:
-
Не DeepL-ом единым. Нейросетевой переводчик для ваших проектов в VS Code за пару кликов (habr)
-
Как мы сделали переводчик точнее и дешевле Google и Yandex (habr)
-
Как сделать хороший перевод документов на базе LLM (youtube)
Ну и чуть углубившись в тему набрёл на эту публикацию:
-
Prompting Large Language Model for Machine Translation: A Case Study
После изучения источников набросал небольшой скриптик
ollama_translator.py позволяющий выполнять перевод через модели подруженные на Ollama, моделью переводчиком указал
qwen2.5:32b, но в принципе можно взять любую другую.
Инструкцию в system прописал следующую:
DEFAULT_SYSTEM_PROMPT = (
"Translate provided text to Russian language. "
"Your reply should contain ONLY the translated text, nothing else. "
"DO NOT CONVERT TeX FORMULAS, DO NOT TRANSLATE CODE BLOCKS, DO NOT TRANSLATE NUMBERS. "
"Please use exactly the same formatting as the original text."
)
Промежуточные результаты работы моделей и сравнение с оригинальным текстом можно посмотреть
тут.
Один сэмпл переводится на моей 4090 в среднем 50 секунд, так что 100 примеров будут переведены чуть менее чем за час, а 500 примерно за пять часов. Ну а как
qwen2.5
закончит переводить я обновлю репозиторий
evilfreelancer/MATH-500-Russian
новым переводом.