Python H2OAutoML在训练步骤中抛出libgomp异常

Python H2OAutoML在训练步骤中抛出libgomp异常,python,h2o,Python,H2o,我使用Python3.6.3和H2O3.26.0.3在docker映像上运行H2O import h2o from h2o.automl import H2OAutoML h2o.init() 在此步骤中,初始化成功并打印以下信息 H2O cluster uptime: 01 secs H2O cluster timezone: Europe/Istanbul H2O data parsing timezone: UTC H2O cluster version: 3.26.0.3

我使用Python3.6.3和H2O3.26.0.3在docker映像上运行H2O

import h2o
from h2o.automl import H2OAutoML
h2o.init()
在此步骤中,初始化成功并打印以下信息

H2O cluster uptime: 01 secs
H2O cluster timezone:   Europe/Istanbul
H2O data parsing timezone:  UTC
H2O cluster version:    3.26.0.3
H2O cluster version age:    9 days
H2O cluster name:   H2O_from_python_96273_8m5wyj
H2O cluster total nodes:    1
H2O cluster free memory:    26.67 Gb
H2O cluster total cores:    72
H2O cluster allowed cores:  72
H2O cluster status: accepting new members, healthy
H2O connection url: http://127.0.0.1:54321
H2O connection proxy:   None
H2O internal security:  False
H2O API Extensions: Amazon S3, XGBoost, Algos, AutoML, Core V3, Core V4
Python version: 3.6.3 final
现在,我将运行AutoML,但它有问题

hf = h2o.H2OFrame(x_train)
aml = H2OAutoML(max_runtime_secs=600)
aml.train(x = list(df.columns[:-1]), y = df.columns[-1], training_frame = hf)
我有以下错误

ConnectionResetError回溯最近的呼叫 last~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py 在urlopenself中,方法、url、正文、标题、重试、重定向、, 断言同一主机,超时,池超时,释放连接,分块, 车身位置,**响应功率 599主体=主体,标题=标题, ->600分块=分块 601

中的~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py _make_requestself,conn,method,url,timeout,chunked,**httplib_request_ 383否则看起来是编程错误造成的。 ->384.6从我这里升起,没有 385除SocketTimeout、BaseSSLError、SOCKETTERROR as e外:

中的~/.local/lib/python3.6/site-packages/urllib3/packages/six.py 从值中提升,从值中提升

中的~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py _make_requestself,conn,method,url,timeout,chunked,**httplib_request_ 379试试: ->380 httplib_response=conn.getresponse 381例外情况除外,如e:

/中的opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py getresponseself 1330尝试: ->1331响应。开始1332,连接错误除外:

/中的opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py 走开 296虽然正确: ->297版本、状态、原因=自身。\u读取\u状态 298如果状态!=继续:

/中的opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py _自述 257定义读取状态自身: ->258行=strself.fp.readline_MAXLINE+1,iso-8859-1 259如果lenline>\u MAXLINE:

/opt/rh/rh-python36/root/usr/lib64/python3.6/socket.py-in readintoself,b 585试试: ->586返回自我。接收到 587除超时外:

ConnectionResetError:[Errno 104]对等方重置连接

在处理上述异常期间,发生了另一个异常:

协议错误回溯最近的呼叫 中最后一个~/.local/lib/python3.6/site-packages/requests/adapters.py sendself、请求、流、超时、验证、证书、代理 448次重试=自最大重试次数, ->449超时=超时 450

中的~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py urlopenself、方法、url、正文、标题、重试、重定向、, 断言同一主机,超时,池超时,释放连接,分块, 车身位置,**响应功率 637 retries=retries.incrementmethod,url,error=e,_pool=self, ->638 _stacktrace=sys.exc_info[2] 639次重试。睡眠

中的~/.local/lib/python3.6/site-packages/urllib3/util/retry.py 递增自我、方法、url、响应、错误、\u池、\u堆栈跟踪 367如果读取为False或非self.\u为\u方法\u可恢复方法: ->368 raise six.reraisetypeerror,error,\u stacktrace 369 elif read不是无:

中的~/.local/lib/python3.6/site-packages/urllib3/packages/six.py 重新上市,价值,tb 684如果value.traceback不是tb: ->685使用_tracebacktb提升值 686提高价值

中的~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py urlopenself、方法、url、正文、标题、重试、重定向、, 断言同一主机,超时,池超时,释放连接,分块, 车身位置,**响应功率 599主体=主体,标题=标题, ->600分块=分块 601

中的~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py _make_requestself,conn,method,url,timeout,chunked,**httplib_request_ 383否则看起来是编程错误造成的。 ->384.6从我这里升起,没有 385除SocketTimeout、BaseSSLError、SOCKETTERROR as e外:

中的~/.local/lib/python3.6/site-packages/urllib3/packages/six.py 从值中提升,从值中提升

中的~/.local/lib/python3.6/site-packages/urllib3/connectionpool.py _make_requestself,conn,method,url,timeout,chunked,**httplib_request_ 379试试: -> 380 httplib_response=conn.getresponse 381例外情况除外,如e:

/中的opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py getresponseself 1330尝试: ->1331响应。开始1332,连接错误除外:

/中的opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py 走开 296虽然正确: ->297版本、状态、原因=自身。\u读取\u状态 298如果状态!=继续:

/中的opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py _自述 257定义读取状态自身: ->258行=strself.fp.readline_MAXLINE+1,iso-8859-1 259如果lenline>\u MAXLINE:

/opt/rh/rh-python36/root/usr/lib64/python3.6/socket.py-in readintoself,b 585试试: ->586返回自我。接收到 587除超时外:

协议错误:“连接中止”,ConnectionResetError104, “由对等方重置连接”

在处理上述异常期间,发生了另一个异常:

ConnectionError回溯最近的呼叫 last~/.local/lib/python3.6/site-packages/h2o/backend/connection.py 在requestself、endpoint、data、json、filename中,将_保存到 404头=头,超时=自身。\超时,流=流, ->405认证=自我。\认证,验证=自我。\验证\u ssl\u证书,代理=自我。\代理 406自我记录结束交易开始时间,分别为

中的~/.local/lib/python3.6/site-packages/requests/api.py requestmethod,url,**kwargs 59次会议。会议作为会议: -->60返回会话。requestmethod=method,url=url,**kwargs 61

中的~/.local/lib/python3.6/site-packages/requests/sessions.py requestself、方法、url、参数、数据、标题、cookie、文件、, 身份验证、超时、允许重定向、代理、挂钩、流、验证、证书、, json 532发送\u kwargs.updatesettings ->533 resp=self.sendprep,**发送 534

中的~/.local/lib/python3.6/site-packages/requests/sessions.py sendself,请求,**kwargs 645发送请求 ->646 r=adapter.sendrequest,**kwargs 647

中的~/.local/lib/python3.6/site-packages/requests/adapters.py sendself、请求、流、超时、验证、证书、代理 497协议错误除外,socket.error作为错误: ->498 raise CONNECTIONERRROR,请求=请求 499

ConnectionError:'连接中止',ConnectionResetError104, “由对等方重置连接”

在处理上述异常期间,发生了另一个异常:

H2OConnectionError回溯最近的呼叫 最后的 -->1 aml.trainx=listdf.columns[:-1],y=df.columns[-1],training\u frame=hf

~/.local/lib/python3.6/site-packages/h2o/automl/autoh2o.py in trainself,x,y,训练架,折叠柱,重量柱, 验证框架、排行榜框架、混合框架 443 poll\u updates=ft.partialself.\u poll\u training\u updates,verbosity=self.\u verbosity,state={} 444尝试: ->445 self.\u job.pollpoll\u updates=poll\u updates 446最后: 447轮询\u更新自身。\u作业,1

pollself中的~/.local/lib/python3.6/site-packages/h2o/job.py, 民意测验更新 55 pb=ProgressBartitle=self.\u作业类型+进度,隐藏=隐藏 56如果轮询更新: -->57 pb。执行自我。刷新作业状态,打印详细信息=ft.partialpoll更新,自我 58.其他: 59 pb.执行自我刷新作业状态

~/.local/lib/python3.6/site-packages/h2o/utils/progressbar.py in 执行自我、进度、打印详细信息 169查询进度级别,但前提是时间已经到了 170如果self.\u next\u poll\u time 171 res=progress\u fn可能引发停止迭代 172断言是类型,数字,数字,数字 173如果不是isinstanceres,则元组:

~/.local/lib/python3.6/site-packages/h2o/job.py in _刷新\u作业\u状态自身 92定义刷新作业状态自身: 93如果self.\u poll\u count 94 jobs=h2o.apiGET/3/jobs/%s%self.job\u key 95 self.job=jobs[jobs][0]如果jobs中的jobs是其他jobs[job][0] 96 self.status=self.job[状态]

apiendpoint中的~/.local/lib/python3.6/site-packages/h2o/h2o.py,数据, json,文件名,保存到 102在连接等级中执行类型检查 103检查连接 ->104返回h2oconn.requestendpoint,data=data,json=json,filename=filename,sa ve\u to=保存到 105 106

中的~/.local/lib/python3.6/site-packages/h2o/backend/connection.py requestself、端点、数据、json、文件名、保存到 413其他: 414自我记录\u结束\u例外一 ->415引发ConnectionError意外的HTTP错误:%s%e 416除requests.exceptions.Timeout外,其他为e: 417自我记录\u结束\u例外一

H2OConnectionError:意外的HTTP错误:“连接已中止”, ConnectionResetError104,“对等方重置连接”

我怀疑代理可能是这个例外的原因。当我将代理信息添加到路径时,异常消息将是HTTP 500 INKApi Error

import os
os.environ['http_proxy']= ...
os.environ['https_proxy']= ...
JVM标准日志文件转储以下异常

[线程140335217821440也有错误][线程140335320467200也有错误] 有错误][线程140335207294720也有错误]

[线程140335316256512也有错误]Java运行时环境检测到致命错误:

[线程1403352002031360也有错误] 在pc=0x00007fa3276cdb8d、pid=51986、tid=0x00007fa2575f5700处的SIGSEGV 0xb

JRE版本:OpenJDK运行时环境8.0_212-b04构建1.8.0_212-b04 Java VM:OpenJDK 64位服务器VM 25.212-b04混合模式linux-amd64压缩oops 有问题的框架: [线程140335231506176也有错误]C[libc.so.6+0x39b8d][线程140335341520640也有错误]

JVM stderr日志文件包含有趣的日志

libgomp:线程创建失败:资源暂时不可用 *“/usr/bin/java”中出错:释放:损坏的未排序块:0x00007efe342f0240*

libgomp:线程创建失败:资源暂时不可用


有趣的是,当我在本地机器上运行相同的代码时,它会成功运行。我怀疑这可能是因为docker的配置。

我花了几个小时研究这个问题,但当我发布这个问题时,我可以立即解决它。这将是一个典型的橡皮鸭编程

引擎似乎消耗了服务器的所有资源,并超出了其限制。这是线程创建失败的原因:资源暂时不可用消息

限制内存和线程数可以解决此问题

h2o.init(ip="127.0.0.1",max_mem_size_GB = 40, nthreads = 2)

Docker容器有一个非常小的默认内存,因此我们一直看到由此引起的问题。请确保为Docker容器提供足够的内存,然后为H2O集群提供比这少一点的内存。在您最初的帖子中,您为H2O集群提供了26.67GB的内存,而在这里,您实际使用的内存比40GB之前要多。是否确实需要将线程数限制为2?如果您有72个可用的,那么不使用它们将是一种耻辱。首先,我会逐步降低内存,看看问题出在哪里,而不是尝试2。当我将最大内存限制为200 GB而不使用n次读取时,异常情况也是一样的。当线程数param受到限制时,我解决了这个问题。这里,2个线程只是一个尝试。当nthreads大于我的总内核的36一半时,它返回异常。