Я пытаюсь запустить сервер логических выводов машинного обучения в докер-контейнере с AWS sagemaker, Flask, Nginx и Gunicorn. Я попытался запустить с экземпляром c5.xlarge и c5.4xlarge на AWS sagemaker, и он всегда прерывается при запуске на экземпляре c5.xlarge.
Когда приходит запрос проверить работоспособность приложения, загрузив модель ML, которая составляет около 300 МБ. Когда вызывается конечная точка вывода, она проверяет, работает ли модель на рабочем месте, а если нет, запускает модель ML, а затем запускает прогноз с данными. Я обычно называю модель с данными <= 5 МБ. </p>
Конфигурация Nginx:
worker_processes auto;
daemon off; # Prevent forking
pid /tmp/nginx.pid;
error_log /var/log/nginx/error.log;
events {
# defaults
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log combined;
upstream gunicorn {
server unix:/tmp/gunicorn.sock;
}
server {
listen 8080 deferred;
client_max_body_size 5m;
keepalive_timeout 10000;
location ~ ^/(ping|invocations) {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://gunicorn;
}
location / {
return 404 "{}";
}
}
}
gunicorn:
subprocess.Popen(['gunicorn',
'--timeout', str(model_server_timeout),
'-k', 'gevent',
'-b', 'unix:/tmp/gunicorn.sock',
'-w', str(model_server_workers),
'--error-logfile', '-',
'--access-logfile', '-',
'--preload',
'wsgi:app'])
Я посмотрел на тайм-аут (он уже установлен на 60 секунд для gunicorn), попытался предварительно загрузить приложение, и журналы, выброшенные на стандартный вывод, имеют только восходящее преждевременно закрытое соединение при чтении ответа об ошибке.