开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

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

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

这有什么解决办法吗?

展开
收起
冰激凌甜筒 2023-06-05 16:37:23 202 0
4 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    这个错误是因为 Docker 镜像使用的是 x86 架构的 CPU,而您的 Mac M1 是 ARM 架构,所以无法运行该镜像。解决方法主要有两种:

    1. 替换为适用于 ARM 架构的镜像:可以搜索适用于 ARM 架构的 deeprec docker 镜像,或者使用 Dockerfile 自行构建 ARM 架构镜像。

    2. 安装 x86 架构模拟器:在 Mac M1 上安装 x86 架构的模拟器,例如 Rosetta 2,然后在模拟器中运行 x86 架构的 Docker 环境。具体安装方法可以参考苹果官方的文档:https://support.apple.com/zh-cn/HT211861

    在使用第二种方法时,性能可能会有所下降。建议仔细评估自己的需求和情况,选择合适的解决方案。

    2023-06-05 21:53:53
    赞同 展开评论 打赏
  • 这个错误提示表明,您的 Docker 镜像在 Mac M1 上运行时出现了不兼容的指令。

    这通常是由于 Docker 镜像为 x86 架构,而 M1 Mac 采用的是 ARM 架构所导致的。为了解决该问题,您可以尝试以下两种方法:

    1. 使用 --platform 参数重新拉取适用于 M1 Mac 的 Docker 镜像。例如:

      docker pull --platform linux/arm64v8 tensorflow/serving
      

      这将会拉取适用于 Linux ARM64v8 架构的 TensorFlow Serving Docker 镜像。您可以将 tensorflow/serving 替换为您需要的 PAI deeprec 镜像名称。

    2. 运行 Rosetta 2 模拟器,并在其中运行 x86 架构的 Docker 镜像。Rosetta 2 是 Mac M1 上一个用于模拟 x86 架构的工具,它可以让那些没有更新为 ARM 架构的软件在 M1 Mac 上运行。您可以通过以下命令来启动 Rosetta 2 模拟器:

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

      安装完毕后,您可以在终端中使用 arch -x86_64 命令来开启一个 x86 架构的终端,并在其中运行 Docker 镜像:

      arch -x86_64 /bin/bash
      docker run ...
      
    2023-06-05 17:23:31
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    对于在 Mac M1 上运行的 Docker 容器,可能会遇到 QEMU 报错的问题。这是因为 Mac M1 使用的是 ARM 架构,而 QEMU 不支持 ARM 架构的虚拟化,导致无法正常运行。为了解决这个问题,您可以尝试以下两种方法:

    1. 使用 Rosetta 2 运行 Docker:Rosetta 2 是 Mac M1 上的一个翻译器,可以将 x86 架构的应用程序翻译为 ARM 架构。您可以在终端中运行以下命令,启动 Rosetta 2: softwareupdate --install-rosetta

      
      在启动 Rosetta 2 后,您可以使用 Docker Desktop for Mac M1 版本来运行 DeepRec 的 Docker 容器。
      
      
    2. 使用 ARM 架构的 Docker 镜像:如果您想使用原生的 ARM 架构的 Docker 镜像来运行 DeepRec,可以尝试使用 Docker Hub 上提供的 ARM 架构的镜像,例如:

      docker pull arm64v8/debian

      
      您可以根据 DeepRec 的需要,构建一个适用于 ARM 架构的 Docker 镜像,并在 Mac M1 上运行。
      
      

    需要注意的是,以上方法可能会因 DeepRec 版本和环境配置的不同而有所差异。

    2023-06-05 17:23:32
    赞同 展开评论 打赏
  • 可能不支持M1,此回答整理自钉群“【EasyRec】推荐算法交流群”

    2023-06-05 16:59:42
    赞同 展开评论 打赏

相关产品

  • 人工智能平台 PAI
  • 相关电子书

    更多
    大规模机器学习在蚂蚁+阿里的应用 立即下载
    基于Spark的面向十亿级别特征的 大规模机器学习 立即下载
    基于Spark的大规模机器学习在微博的应用 立即下载