#python #django #heroku #spacy
#python #django #heroku #spacy
Вопрос:
Я развертываю свою модель ML на Heroku с помощью Django, которая мне нужна en_core_web_lg
для моего приложения, но не смогла ее установить
Мой requirements.txt это похоже на:
..
..
djangorestframework==3.12.2
en-core-web-lg==2.3.1
en-core-web-sm==2.3.1
gunicorn==20.0.4
heroku==0.1.4
..
Ошибка:
ERROR: Could not find a version that satisfies the requirement en-core-web-lg==2.3.1 (from -r /tmp/build_c3075f3c_/requirements.txt (line 14)) (from versions: none)
ERROR: No matching distribution found for en-core-web-lg==2.3.1 (from -r /tmp/build_c3075f3c_/requirements.txt (line 14))
! Push rejected, failed to compile Python app.
! Push failed
Комментарии:
1. Вы проверяли журналы?
2. Вполне возможно, что у вас осталось недостаточно места в динамо-машине. Проверьте это — heroku предназначен не для вычислений, а в первую очередь для простых веб-сайтов. Я знаю, что сама модель небольшая (около 350 МБ), но посмотрите, не заняли ли другие ваши dep уже слишком много места — в free / hobby / standard всего 512 МБ, так что у вас осталось бы всего 162 МБ — подойдут ли сюда другие ваши dep?
3. Да! Эту ссылку я получил из одного поста SO, но она тоже не работает. Мне просто нужен способ установить это, чтобы я мог его загрузить.
4. Устанавливается ли он на вашем локальном компьютере?
5. Нет сообщения о переполнении памяти.
Ответ №1:
Ваша ошибка связана с тем, что нет библиотеки pip с именем en-core-web-lg
. Имейте в виду, что вы не можете вставить en-core-web-lg
, requirements.txt
поскольку это не библиотека, которую вы можете установить с помощью pip
. Это модели, которые использует spacy.
Принятый ответ в порядке. Однако, если вы хотите полное автоматическое развертывание, вы также можете добавить что-то подобное в свой код:
try:
nlp = spacy.load("en_core_web_md")
except: # If not present, we download
spacy.cli.download("en_core_web_md")
nlp = spacy.load("en_core_web_md")
Это автоматически загрузит модели, если они отсутствуют. И это не потребует от вас использования терминала Heroku. spacy
Потребуется только для requirements.txt
файла.
Наконец, имейте в виду, что модели spacy загружаются в память (ОЗУ). lg
Модель (около 700 МБ) слишком велика, чтобы ее можно было установить в свободном, хобби или стандартном 1X dynos (512 МБ ОЗУ). Таким образом, он не сможет загрузиться, и dyno будет уничтожен с помощью R15 (https://devcenter.heroku.com/articles/error-codes#r15-memory-quota-vastly-exceeded ).
Дополнительная информация о dynos: https://www.heroku.com/dynos
Ответ №2:
Я не знаю, почему он не устанавливается непосредственно из requirements.txt
файла. Есть другой способ, это неправильный способ, но работа будет продолжаться. Сначала вам нужно удалить пакет из requirements.txt
файла, для которого возникает ошибка. Затем включите приложение Heroku
, как только ваше приложение придет, чтобы Heroku
затем написать этот код либо из terminal
, либо из Heroku
dashboard
.
Если вы используете terminal
, то:
heroku run bash
Затем запустите:
pip install spacy
а затем установите, какие требования вы хотите получить от spacy
python -m spacy download en_core_web_lg
если вы используете Heroku dashboard
then:
сначала перейдите к своему Heroku dashboard
клику в своем приложении, а затем в правом верхнем углу щелкните More
и выберите Run Console
пример изображения:
чем появится этот интерфейс, вам нужно нажать bash
или ввести bash
и запустить, после этого вы можете поставить тот же cammand и установить.