Heroku уменьшает потребление памяти для приложения TensorFlow

#python #tensorflow #heroku

#python #tensorflow #heroku

Вопрос:

У меня есть модель TensorFlow в приложении flask на Heroku с запросом POST для доступа к предиктору модели. Однако, похоже, что я превышаю объем памяти моего развернутого экземпляра Heroku:

 2020-10-09T12:32:39.186188 00:00 heroku[web.1]: Process running mem=792M(138.9%)
2020-10-09T12:32:39.188901 00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
  

Я подозреваю, что многое из этого связано с тем, что TensorFlow 2.0 занимает много памяти. Я пытался использовать TensorFlow 1.0, но мой код не запускался, поскольку я использую конкретную модель концентратора TensorFlow.

Я знаю, что могу приобрести более крупный план, но единственный план, который я вижу, с обновлением памяти, составляет 50 долларов в месяц.

Есть ли какие-либо способы уменьшить эту память? Например, можно ли перенести данные пакетов pip на диск и сохранить ОЗУ только для приложения?

Ответ №1:

Проблема с TensorFlow (и любой другой платформой, загружающей предварительно подготовленные или статистические модели) заключается в том, что им необходимо загрузить прогностическую модель в память.
Один из вариантов — использовать меньшую модель (если это возможно), жертвуя точностью.

Другие варианты действительно заключаются в покупке более крупного плана или смене поставщика (я решил проблемы с памятью при переходе на DigitalOcean — по некоторым причинам Heroku использовал намного больше памяти при запуске моего образа Docker. DigitalOcean не является бесплатным, но за 5 долларов в месяц вы можете получить хорошую производительность Droplet)

Комментарии:

1. Есть ли у вас опыт работы с такими сервисами AWS, как EC2 и Elastic Beanstalk? По моим оценкам, это может составлять всего 1 доллар в месяц

2. Не так много, я использовал AWS для курса data engineering. Он отлично работает и, похоже, является одним из самых дешевых вариантов для небольшого использования (идеально подходит для обучения и создания прототипов)