机器学习PAI deeprec的docker 在mac M1上面运行报错,这有什么解决办法吗?[阿里云机器学习PAI]

机器学习PAI deeprec的docker 在mac M1上面运行报错: qemu: uncaught target signal 4 (Illegal instruction) – core dumped Illegal instruction

这有什么解决办法吗?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 在Mac M1上运行Docker镜像可能会出现兼容性问题,因为Mac M1使用的是基于ARM架构的芯片,而大部分常规的x86架构的软件并未进行适配。这个错误提示似乎暗示着在docker内部的一些二进制文件在ARM架构上执行时发生了非法指令的异常。

    要解决这个问题,有几种尝试:

    1. 使用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容器。

    2. 重新构建Docker镜像:使用如下命令重新构建DeepRec的Docker镜像,并尝试重新启动容器:

      $ docker build . -t deeprec:v1$ docker run -it deeprec:v1 bash

    3. 尝试使用ARM架构的Docker镜像:如果还无法解决问题,则可以查看是否有适用于ARM架构的DeepRec Docker镜像可用,并尝试使用它们来运行DeepRec。

  2. 这个错误通常是由于在ARM架构的Mac电脑上运行x86架构的Docker容器导致的。因为Docker容器默认是x86架构的,需要通过模拟器来运行在ARM架构的Mac电脑上。

    为了解决这个问题,您需要使用Apple的Rosetta 2模拟器来运行x86架构的Docker容器。您可以按照以下步骤来启用Rosetta 2模拟器:

    1. 打开Terminal终端
    2. 运行以下命令来检查您的Mac是否支持Rosetta 2:

      /usr/sbin/softwareupdate --install-rosetta --agree-to-license```

    3. 如果您的Mac不支持Rosetta 2,则会提示您安装。如果您的Mac已经安装了Rosetta 2,则会提示您已经安装。
    4. 接下来,您需要在Terminal终端中使用以下命令来启动Rosetta 2模拟器,并运行Docker容器:

      arch -x86_64 docker-compose up```这个命令将会启动Rosetta 2模拟器,并在模拟器中运行x86架构的Docker容器。请注意,您需要在Docker Compose文件中指定要使用的镜像,以确保镜像是x86架构的。

  3. 现在deeprec并不支持m1芯片,可以去找个intel/amd/arm cpu的开发机,intel/amd/arm的cpu都支持的,此回答整理自钉群“DeepRec用户群”