Пакетное преобразование Sagemaker разрывается с преждевременно закрытым соединением в восходящем направлении при чтении в восходящем направлении - PullRequest
0 голосов
/ 04 ноября 2018

Я пытался заставить контейнерную модель машинного обучения работать на AWS sagemaker через сервис пакетного преобразования, который разбивает весь набор данных на меньшие наборы данных для вывода из модели машинного обучения.

В контейнере есть колба, которая запускает модель ML с gunicorn и nginx на заднем плане. При выполнении пакетного преобразования я получаю ошибку 502 неверного шлюза со следующей ошибкой в ​​журналах (когда я запускал тот же контейнер с набором данных 50k в качестве входных данных, он передавался с экземпляром c5.xlarge, но не выполнялся, когда я работал с такими же обстоятельствами при 80k)

*4 upstream prematurely closed connection while reading response header from 
upstream, client: IP, server: , request: "POST /invocations 
HTTP/1.1", upstream: "http://unix:/tmp/gunicorn.sock:/invocations", host: 
"IP:8080"

"POST /invocations HTTP/1.1" 502 182 "-" "Apache-HttpClient/4.5.x (Java/1.8.0_172)"

Конфигурация Nginx

worker_processes 1;
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:

https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve

Я довольно новичок в nginx и gunicorn и прочитал большинство других, поэтому посты с восходящим потоком преждевременно закрыты с подключением при чтении ошибки ответа. Я пробовал что-то вроде увеличения размера тела клиента и т. Д., Но все равно столкнулся с той же ошибкой. Некоторая помощь по этому вопросу будет очень полезна.

1 Ответ

0 голосов
/ 20 декабря 2018

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

  1. Тайм-аут рабочего пистолета, который можно настроить здесь: https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve#L25

  2. Параметр nginx proxy_read_timeout , который можно добавить в файл nginx.conf здесь: https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/scikit_bring_your_own/container/decision_trees/nginx.conf#L21-L37

Если вам требуется поддержка для конкретных заданий по преобразованию, обратитесь на форумы AWS: https://forums.aws.amazon.com/forum.jspa?forumID=285&start=0

...