-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
why_prewarm.txt
11 lines (11 loc) · 2.18 KB
/
why_prewarm.txt
1
2
3
4
5
6
7
8
9
10
11
В модуле predictor.py после непосредственной загрузки трансформера с весами выполняется подготовительный прогон пустыми данными для всей длины config.max_len (64).
Если убрать этот прогон, то бот загрузится намного быстрее, но сообщения будут генерироваться (иногда) долго.
А именно: при генерации первого сообщения ботом, на выхлоп одной буквы (токена) уйдет около 6 секунд.
Из-за того, что TF2 не дружит с asyncio, Discord клиент скорее всего вылетит.
Если бот сгенерировал 10 букв (токенов), то следующие сообщения длиной <= 10 токенов будут генерироваться быстро.
Но при попытке сгенерировать сообщение большей длины, каждая следующая буква (11-я, 12-я и т.п.) первый раз будет генерироваться также по 6 секунд.
А Discord клиент продолжит вылетать.
Такие тормоза будут продолжаться, пока не сгенерируется сообщение длиной в config.max_len (64) буквы (токена).
Чтобы избежать такой медленной работы, мы решили добавить подготовительный прогон пустыми данными (преварм), чтобы трансформер разметил всю свою схему заранее.
Скорее всего, этого можно было бы избежать изменением какого-либо специального флага для TensorFlow 2. Но мы такого пока не нашли.
В оригинальном туториале информация об этой особенности отсутствует: https://github.com/tensorflow/examples/blob/master/community/en/transformer_chatbot.ipynb