Ошибка при установке spacy en_core_web_lg в приложении Heroku

#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 и установить.