Mac M1 Docker容器中Ray远程函数执行LocalRayletDiedError报错求助
针对你在Mac M1通过Rosetta 2模拟x86_64容器运行Ray 2.6.3时遇到的LocalRayletDiedError,以下是几个可行的解决方向:
降级gRPC版本适配Ray 2.6.3
当前使用的grpcio 1.57.0可能与Ray 2.6.3在x86_64模拟环境下存在兼容性冲突,Ray 2.6.3官方推荐的稳定gRPC版本为1.53.0,执行以下命令调整:pip uninstall -y grpcio grpcio-tools pip install grpcio==1.53.0 grpcio-tools==1.53.0卸载时确保清理所有相关依赖,避免版本残留导致冲突。
明确指定Ray的CPU资源
Rosetta 2的CPU资源调度在模拟环境下可能存在异常,启动Ray时手动指定CPU数量,避免自动检测的偏差:
在Python代码中初始化:ray.init(num_cpus=2)或者通过命令行启动Ray head节点时指定:
ray start --head --num-cpus=2可以先尝试
num_cpus=1验证是否能正常运行,再逐步调整到2核。调整Docker容器的CPU配额
确保容器分配了足够的CPU资源,避免因资源不足导致Ray agent被系统终止,运行容器时增加CPU限制:docker run --cpus=2 --platform linux/x86_64 -it dev_container根据实际需求调整
--cpus参数值,确保容器CPU资源充足。升级Ray到兼容版本
Ray 2.6.3在Apple Silicon的x86_64模拟环境下可能存在未修复的bug,尝试升级到Ray 2.8.0及以上版本,这些版本对Rosetta 2环境的兼容性更好:pip install -U ray==2.8.0排查Ray Agent退出的具体原因
开启Ray的DEBUG日志,获取更详细的agent退出信息,帮助定位问题:
通过环境变量设置:export RAY_DEBUG=1 ray start --head --num-cpus=2或者在Python代码中初始化时指定日志级别:
import ray ray.init(logging_level="debug")查看输出日志中关于agent退出的具体报错信息,进一步针对性解决。
内容的提问来源于stack exchange,提问作者Dipu Cs

