Python H2OAutoML在训练步骤中抛出libgomp异常
我使用Python3.6.3和H2O3.26.0.3在docker映像上运行H2OPython 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
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一半时,它返回异常。