Machine Learning (тензорный поток /sklearn ) в Django?

У меня есть форма django, которая собирает ответ пользователя. У меня также есть модель классификации предложений тензорного потока. Каков наилучший/стандартный способ объединения этих двух. Детали:

  • Модель тензорного потока была обучена данным о просмотре фильмов от гнилых помидоров.
  • Каждый раз, когда в моей модели ответа создается новая строка, я хочу, чтобы код тензорного потока классифицировал ее (+ или -).
  • В основном у меня есть каталог проекта django и два .py файла для классификации. Прежде чем идти дальше, я хотел бы знать, что является стандартным способом реализации алгоритмов машинного обучения в веб-приложении.

Было бы здорово, если бы вы могли предложить учебник или репо. Спасибо!

Ответ 1

Асинхронная обработка

Если вам не нужен результат классификации из кода ML для немедленного перехода к пользователю (например, в ответ на тот же запрос POST, который был отправлен), вы всегда можете поставить в очередь классификацию работа выполняется в фоновом режиме или даже на другом сервере с большим количеством ресурсов ЦП/памяти (например, с django-background-tasks или Celery)

Задача в очереди - это, например, заполнить поле UserResponse.class_name (положительное, отрицательное) в строках базы данных, которые имеют это поле пустым (еще не классифицированным)

Уведомление в режиме реального времени

Если код ML медленный и хочет вернуть этот результат пользователю, как только он будет доступен, вы можете использовать асинхронный подход, описанный выше, и пару с уведомлением в реальном времени (например, socket.io в браузер (это может быть запущено из поставленной задачи)

Это становится необходимым, если время выполнения ML настолько велико, что может потребоваться тайм-аут HTTP-запроса в синхронном подходе, описанном ниже.

Синхронная обработка, если код ML не является интенсивным ЦП (достаточно быстро)

Если вам нужно, чтобы результат классификации сразу возвращался, а классификация ML была достаточно быстрой *, вы можете сделать это в течение цикла запроса HTTP-запроса (запрос POST возвращается после завершения кода ML, синхронно)

* Ускоренная ситуация здесь означает, что не будет тайм-аута HTTP-запроса/ответа, и пользователь не потеряет терпение.

Ответ 2

Ну, я должен сам разработать такое же решение. В моем случае я использовал Теано. Если вы используете shadoworflow или anano, вы можете сохранить созданную модель. Итак, сначала подготовьте модель с вашим учебным набором данных, затем сохраните модель, используя выбранную вами библиотеку. Вам нужно развернуть в своем веб-приложении django только часть вашего кода, которая обрабатывает предсказание. Таким образом, используя простой POST, вы бы дали пользователю предсказанный класс вашего предложения достаточно быстро. Кроме того, если вы считаете нужным, вы можете периодически запускать задание, чтобы снова обучить свою модель новым шаблонам ввода и сохранить их еще раз.

Ответ 3

Я бы предложил не использовать Django, так как это добавит время выполнения к решению.

Вместо этого вы можете использовать узел для обслуживания внешнего интерфейса Reactjs, который взаимодействует с API-интерфейсом отдыха TensorFlow, который функционирует как отдельный сервер.

Как следует из ответа выше в этом посте, будет лучше использовать WebSockets, вы можете использовать реагирующий модуль WebSocket, чтобы он обновлял ваши компоненты при изменении состояния компонента.

Надеюсь это поможет.