Python sagemaker批处理转换在读取上游时中断了上游过早关闭的连接
我一直在尝试通过AWS sagemaker的批量转换服务,将整个数据集分解为更小的数据集,以便从机器学习模型中进行推理,从而使一个容器化的机器学习模型在AWS sagemaker上工作 容器有一个flask服务,它在后台运行gunicorn和nginx的ML模型。在执行批处理转换时,我在日志上得到了502坏网关错误,并出现以下错误(当我以50k数据集作为输入运行同一容器时,它通过c5.xlarge实例传递,但当我在80k下以相同的环境运行时失败) Nginx配置Python sagemaker批处理转换在读取上游时中断了上游过早关闭的连接,python,nginx,flask,gunicorn,amazon-sagemaker,Python,Nginx,Flask,Gunicorn,Amazon Sagemaker,我一直在尝试通过AWS sagemaker的批量转换服务,将整个数据集分解为更小的数据集,以便从机器学习模型中进行推理,从而使一个容器化的机器学习模型在AWS sagemaker上工作 容器有一个flask服务,它在后台运行gunicorn和nginx的ML模型。在执行批处理转换时,我在日志上得到了502坏网关错误,并出现以下错误(当我以50k数据集作为输入运行同一容器时,它通过c5.xlarge实例传递,但当我在80k下以相同的环境运行时失败) Nginx配置 worker_processes
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配置:
我对nginx和gunicorn很陌生,并且已经阅读了大多数其他so帖子,其中上游在阅读响应错误时提前关闭了连接。我尝试过一些事情,比如增加客户的身体尺寸等,但仍然遇到同样的错误。有关这方面的一些帮助将非常有用。这看起来像是gunicorn worker超时。有两种超时设置可根据模型为推理请求提供服务所需的时间进行调整:
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 "{}";
}
}
}