В прошлой записи экономная учёба Тернита уже помещалась в память домашней видеокарты, но работала медленнее. Эту цену удалось почти убрать: теперь модель учится примерно с обычной скоростью, занимая больше чем вдвое меньше памяти для рабочих буферов.
Проверял на RTX 5070 Ti, на полной модели с 1,67 миллиарда весов. Размер модели оставался прежним. За один шаг она читала 1024 фрагмента текста — примерно так программа делит слова перед чтением. Обычному режиму для буферов понадобилось 12004 МБ, экономному — 5536 МБ.
Здесь важно, что именно посчитано. Это память, которую программа выделяет под модель и её расчёты. У видеокарты есть ещё служебные расходы: вместе с ними наблюдаемый расход в экономном режиме доходил примерно до 6149 МБ. Поэтому обещать, что всё обучение уместится на карте с 5536 МБ памяти, было бы неверно.
Во время учёбы программа обычно оставляет рядом много промежуточных результатов, чтобы потом быстро к ним вернуться. Как если бы все рабочие бумаги лежали раскрытыми на столе. В экономном режиме часть этих бумаг приходится восстанавливать по мере надобности. Это освобождает место, но добавляет работу. Чтобы вернуть скорость, пришлось ускорить сами расчёты и подготовку данных для них: меньше повторных чтений, компактнее временные числа, меньше лишних действий.
Короткие замеры несколько раз обещали победу, которая исчезала на длинной проверке. Поэтому окончательный вариант сравнивал с обычным в двух сериях по 1024 шага на запуск, меняя порядок запусков. Типичный шаг занимал около 149 миллисекунд. По медиане — середине списка времён, отсортированного от меньшего к большему, — экономный режим в обеих сериях был чуть быстрее.
Со средним временем картина тоньше. В первой серии экономный режим выиграл, во второй проиграл 0,0076 миллисекунды на шаг, около 0,005%. Поэтому результат называю практически обычной скоростью. Устойчивое преимущество по всем показателям ещё не подтверждено.
Отдельно проверил сохранение. После остановки за четыре шага до конца и продолжения из файла итоговое состояние совпало с непрерывным обучением до последнего байта. Качество проверял на 96 отложенных отрезках текста: различия с обычным режимом малы, а интервалы оценки включают ноль. Это ограниченная проверка одной траектории обучения, а не обещание одинаковых ответов на любые вопросы.
Главный результат — больше свободной памяти при практически прежнем темпе учёбы. Теперь экономный режим стал рабочим вариантом для дальнейшего развития Тернита.
Андрей Рощупкин · Тернит