Минута ожидания убивает инструмент вернее, чем неточность. Пятнадцать секунд — время, в течение которого человек ещё смотрит в экран. Минута — время, за которое он переключается на другую задачу и не возвращается. Поэтому когда ответ по документам на стенде стал занимать около минуты, это было не неудобство, а угроза самой идее.
Очевидная гипотеза — и почему она неверна
Первая мысль любого, кто видел медленный ответ: модель слишком большая, возьмите поменьше. Мысль проверили. Модели разного размера отвечали почти одинаково долго — размер на времени ответа почти не сказывался. Значит, дело было не в модели.
Это стоит запомнить как приём. Если замена самой очевидной детали не меняет результат, время уходит куда-то ещё, и искать его надо замером, а не догадкой.
Куда уходило время
Один поиск по документам — без всякой модели, просто найти фрагменты и переранжировать их — занимал 16,5 секунды. А на каждый вопрос система формулирует несколько поисковых запросов: переспрашивает сама себя разными словами, чтобы не упустить нужный кусок. Почти весь «ответ» был поиском, а не рассуждением. Модель отвечала быстро и основную часть времени ждала, пока ей принесут фрагменты.
Поиск считался на процессоре. У этого выбора есть цена, и измеряется она десятками секунд на каждом вопросе.
Что сделали
Перенесли поиск и переранжирование с процессора на видеокарту — ту же потребительскую карту на 16 ГБ, на которой работает языковая модель, — и считали в половинной точности. Модели поиска не менялись, алгоритм не менялся: изменились только устройство и точность вычислений. Переиндексировать документы не понадобилось.
| Что меряли | Было | Стало | Разница |
|---|---|---|---|
| Один поиск по документам | 16,5 с | 0,3 с | в 57 раз |
| Полный ответ, среднее по трём моделям | 66 с | 15 с | в 4,5 раза |
Пятнадцать секунд — это среднее, а за ним разброс от 9 до 25 секунд в зависимости от модели. И это само по себе показательно: пока поиск занимал почти всё время, модели отвечали одинаково медленно. Теперь, когда поиск перестал быть главной статьёй расходов, время ответа наконец зависит от модели — как и должно.
Главное: доказать, что не стало хуже
Половинная точность экономит память и время, и естественное подозрение — поиск стал быстрее, потому что стал грубее. Ускорение, купленное потерей точности, нам не нужно, поэтому проверяли на том же размеченном наборе вопросов, что и до переноса:
- нужный фрагмент найден в 45 случаях из 45 — и до, и после;
- в первой тройке результатов — 44 из 45, и до, и после;
- вопросов, где изменился порядок результатов, — ноль;
- наибольшее расхождение оценки релевантности — 0,0009.
И деталь метода, которую легко пропустить. Контрольный прогон на процессоре сняли в тот же день и уже после очередной правки нарезки документов. Иначе в сравнение смешались бы два изменения сразу, и было бы непонятно, чему обязан результат. Мелочь — но именно такие мелочи отличают замер от рекламы.
Пятнадцать секунд получены на конкретном железе стенда и на эталонном корпусе. На другой карте, другом процессоре и ваших документах число будет своим — и мы назовём его после замера, а не до. Ускорение относится к поиску по документам, а не ко всему, что умеет система.
Коротко
Время ответа по документам определяла не языковая модель, а поиск. Перенос поиска на видеокарту ускорил его в 57 раз, полный ответ — в 4,5 раза, и на размеченном наборе не сдвинулся ни один результат. Остальные замеры стенда — с условиями, на которых они сняты, — собраны на странице стенда.
Скорость и точность измеряются легко. Сложнее с документами, которые вообще не поддаются разбору, — особенно если они на русском: почему «Информация о продавце» превращается в «ИHΦopmaung onpogaBue».