机器学习PAI deeprec的docker 在mac M1上面运行报错: qemu: uncaught target signal 4 (Illegal instruction) - core dumped Illegal instruction
这有什么解决办法吗?
在Mac M1上运行Docker镜像可能会出现兼容性问题,因为Mac M1使用的是基于ARM架构的芯片,而大部分常规的x86架构的软件并未进行适配。这个错误提示似乎暗示着在docker内部的一些二进制文件在ARM架构上执行时发生了非法指令的异常。
要解决这个问题,有几种尝试:
使用Rosetta2工具:在Mac M1中打开终端,输入/usr/sbin/sysctl -n machdep.cpu.brand_string
,如果输出结果中包含 "Intel(R) Core(TM)",说明你的Mac M1支持Rosetta2,可以通过在终端运行 softwareupdate --install-rosetta
命令来安装。安装完毕后,将Docker Desktop设置为通过Rosetta2运行,重启Docker Desktop,然后重新尝试启动DeepRec的Docker容器。
重新构建Docker镜像:使用如下命令重新构建DeepRec的Docker镜像,并尝试重新启动容器:
$ docker build . -t deeprec:v1
$ docker run -it deeprec:v1 bash
尝试使用ARM架构的Docker镜像:如果还无法解决问题,则可以查看是否有适用于ARM架构的DeepRec Docker镜像可用,并尝试使用它们来运行DeepRec。
这个错误通常是由于在ARM架构的Mac电脑上运行x86架构的Docker容器导致的。因为Docker容器默认是x86架构的,需要通过模拟器来运行在ARM架构的Mac电脑上。
为了解决这个问题,您需要使用Apple的Rosetta 2模拟器来运行x86架构的Docker容器。您可以按照以下步骤来启用Rosetta 2模拟器:
运行以下命令来检查您的Mac是否支持Rosetta 2:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
```
接下来,您需要在Terminal终端中使用以下命令来启动Rosetta 2模拟器,并运行Docker容器:
arch -x86_64 docker-compose up
```
这个命令将会启动Rosetta 2模拟器,并在模拟器中运行x86架构的Docker容器。请注意,您需要在Docker Compose文件中指定要使用的镜像,以确保镜像是x86架构的。
现在deeprec并不支持m1芯片,可以去找个intel/amd/arm cpu的开发机,intel/amd/arm的cpu都支持的,此回答整理自钉群“DeepRec用户群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。