FAQ
Q:请问部署多进程计算引擎时遇到“Error: exit status 1”或“Failed to deploy basic model”报错,需要检查哪些内容?
A:引擎启动失败有多种可能性,下面列举了一些常见的原因,请参照检查。
原因1:redis端口冲突。
解决方案:可以在命令行中输入ps -ef|grep redis
,查看系统中是否已经有其它redis服务正在运行,导致端口冲突。MindSpore Pandas的redis默认运行在6379端口,如需修改,可以在MindSpore Pandas的安装目录下修改mindpandas/dist_executor/modules/config/config.xml
中的redis_port
字段为其它不冲突的端口。原因2:etcd端口冲突。
解决方案:可以在命令行中输入netstat -tunpl|grep -E "32379|32380"
,查看etcd的端口是否已被占用,如果发生冲突,请尝试解除相应端口的占用。
Q:请问部署多进程计算引擎时,报“**ERROR** memory for function instances deployment is less than 0”错误如何解决?
A:该问题是由于运行内存不足导致的,请尝试在部署时减小--datamem
参数值或增大--mem
参数值。
Q:请问使用多进程后端运行Python脚本时报“Failed to request, code:1001, message: invalid resource parameter, request resource is greater than each node’s max resource.”该如何解决?
A:此报错是启动分布式计算引擎时配置的资源不足导致的,请尝试部署集群时使用更大的--cpu
和--mem
参数值。
Q:请问使用多进程后端时,运行Python脚本报“Client number upper to the limit”该如何解决?
A:请尝试重新部署集群并减小--cpu
参数的值。
Q:在部署多进程计算引擎的过程中出现“health check failed, please check port: <port>”应如何解决?
A:MindSpore Pandas计算引擎会启动多个进程,每个进程都有对应的端口,若端口冲突则会导致此报错。解决方法如下:
查看报错的端口是否被占用,可以通过shell指令
netstat -tunpl|grep <port>
查看端口占用情况,若端口冲突,有两种解决方案:方法1:解除冲突端口的占用。
方法2:修改计算引擎使用的端口。在MindSpore Pandas安装目录下
dist_executor/modules/config/config.xml
里,搜索发生冲突的端口号,将其修改为其他空闲端口。
查看是否有上次启动残留的进程,可以使用
ps -ef |grep mindpandas/dist_executor
查看残留进程PID,然后手动清理进程。
Q:使用多进程模式在运行的过程中出现报错“failed to request, code:3003, put object failed, id:<id>,requestID:<id>,errr:code:[Out of memory]”如何解决?
A:可能是由于计算引擎的共享内存空间不足,请尝试停止引擎后重新部署,并设置更大的--datamem
参数值。
Q:在多进程后端运行的过程中出现报错“Failed to request, code:1001, message: invalid resource parameter, request resource is greater than each node’s max resource”该如何解决?
A:可能是由于部署时申请的CPU和内存资源太少,请尝试下列解决方案:
部署引擎时配置更大的CPU和内存资源。
使用多线程后端。
Q:在大规格(如CPU核心数大于100)的机器上运行时,报“RuntimeError: system not initialized”错误如何解决?
A:计算引擎中的数据传输依赖文件描述符。要求系统可用文件描述符的个数应至少为集群CPU核心数的四倍。可以通过ulimit
指令查看,并提高当前机器的文件描述符个数限制:
$ ulimit –a # 其中open files为文件描述符的上限值,若该数值过小,上调
open files (-n) 1024
$ ulimit -n 4096
Q:使用多进程后端时报“ImportError: /lib/libc.so.6: version ‘GLIBC_2.25’ not found”如何解决?
A:请升级环境中的glibc版本到2.25或以上。
Q:多进程后端下使用pytest
命令执行脚本,报“TypeError: cannot unpack non-iterable <class ‘yr.exception.YRInvokeError’> object”错误如何解决?
A:由于pytest
的执行机制原因,如果您使用了用户自定义函数,请确保其中调用到的其他函数是Python闭包。
Q:使用多进程后端运行时报“yr.exception.YRequestError: failed to request, code:3003, message: retry etcd operation Put exceed the max times”如何解决?
A:计算引擎使用etcd来维护内部数据的一致性,此报错可能是因为etcd未能正常工作。可以使用下述指令查看etcd进程是否存在,若进程不在,则需要重新部署计算引擎。
ps -ef |grep dist_executor/modules/basic/bin/etcd/etcd
Q:运行的时候报“RuntimeError: code: [RPC unavailable],msg [ Thread ID && RPC unavailable. Disconnected from worker . Line of code :117 File : object_client_impl.cpp]”如何解决?
A:可能是计算引擎中使用rpc通信的模块发生异常,请使用下述指令检查相应进程,若查找出来的进程数量少于3个,则需要重新部署计算引擎。
ps -ef |grep dist_executor/modules/datasystem
Q:部署多进程计算引擎时报“xmllint:command not found”如何解决?
A:安装libxml2-utils即可解决此问题。