#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. Он отлично работает и, похоже, является одним из самых дешевых вариантов для небольшого использования (идеально подходит для обучения и создания прототипов)