V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
frinstioAKL
V2EX  ›  Apple

Apple M1 原生编译 pytorch 和 opencv- Python

  •  
  •   frinstioAKL · 2020-12-18 22:43:11 +08:00 · 6616 次点击
    这是一个创建于 1463 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近入手新 macbook air m1 后甚是满意,逐渐将一些开发工作转移到该机器上,在 python 上,我看 numpy 等都已经原生支持了,但是经常使用的 pytorch 和 opencv-python 却没有预编译好的原生版,用 rosetta 转译来得毕竟没有原始爽,就尝试自己编译了下,发现比较顺利。

    python 的环境是用 conda-forge 安装的 python3.9, 然后装上了原生的 numpy

    1. pytorch
    从 github 提交记录来看,其实一个月前有开发者就修复了 m1 上编译报错的问题( https://github.com/pytorch/pytorch/pull/48275), 于是就自己尝试编译了一下。

    git clone pytorch 的代码,把 CMakeLists.txt 中的 MKL 和 openmp 关闭就启动编译,一次成功。
    安装完按照 https://github.com/pytorch/pytorch/issues/48145#issuecomment-730297957 的评论做了个简单矩阵加法的 benchmark (可能并不合适), 得到的速度是 44~45 it/s, 手上 mac mini i5 2018 late 的速度是 20~21 it/s, 而 github 评论里面 nvidia 3090 的速度是 670 it/s, 3900x cpu 速度是 21 it/s,所以整体上还是比较满意的。

    2. opencv-python
    按照 https://github.com/skvark/opencv-python 简单走一遍编译就完事了,我把 opencv-contrib 也一并打包进去了。

    方便有需要的朋友直接拿来使用,我把我编译好的 wheel 文件放在我 github 了,可以自行下载 pip 安装。
    地址: https://github.com/wizyoung/AppleSiliconSelfBuilds

    深度体验几天下来,感觉 m1 的开发工具链支持速度还是满快的,比预期要快,明年 m2 可期。
    18 条回复    2021-07-05 21:32:05 +08:00
    zJeff
        1
    zJeff  
       2020-12-23 10:57:50 +08:00
    曲高和寡
    szxczyc
        2
    szxczyc  
       2020-12-23 13:02:05 +08:00
    pycharm 什么时候才能原生支持呢
    scukmh
        3
    scukmh  
       2020-12-23 13:10:44 +08:00
    等等党永远不亏
    wengych
        4
    wengych  
       2020-12-23 13:13:55 +08:00
    @szxczyc 估计快了,RubyMine 已经出了
    frinstioAKL
        5
    frinstioAKL  
    OP
       2020-12-23 13:37:47 +08:00 via iPhone
    @szxczyc 好久没用 pycharm 了,感觉 vscode 下用 pylance 插件体验已经很好了😆
    byte10
        6
    byte10  
       2020-12-23 15:55:31 +08:00
    @szxczyc VSCODE 吧,用它,脚本 语言用它就最好了,以后会大统一,所有东西都在 vscode 开发了
    furthernh
        7
    furthernh  
       2021-01-11 23:07:30 +08:00
    ERROR: opencv_contrib_python-4.5.0+bbaa777-cp39-cp39-macosx_11_0_arm64.whl is not a supported wheel on this platform.
    furthernh
        8
    furthernh  
       2021-01-11 23:28:55 +08:00
    怎么搞啊 楼主
    furthernh
        9
    furthernh  
       2021-01-11 23:29:21 +08:00
    不会用啊 build 出来的 wheel
    frinstioAKL
        10
    frinstioAKL  
    OP
       2021-01-12 00:18:41 +08:00
    @furthernh 你怕不是用的 intel 版本的 python,你检查了么
    另外,homebrew 几天前支持 opencv arm64 了: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/opencv.rb
    furthernh
        11
    furthernh  
       2021-01-12 01:21:20 +08:00
    我发现我是 3.8 的没办法用你的 whl,
    于是我打算自己 build 按照步骤来,还是有问题
    最后我改了你的 cp39 -> cp38,安装上了 但是 还是没法 import cv2
    furthernh
        12
    furthernh  
       2021-01-12 02:32:33 +08:00
    嗯 我还是真用了 Intel 版本的 python 因为 TensorFlow 需要 3.8 才能跑,我就打算 3.8 搞一个 发现 3.8build 不了 arm 版本版本的 我用 x86 版本的 whl 也不可以,我用 conda 安装了 OpenCV,可以用 cv2,但是 pycharm 点不进去。感谢!
    furthernh
        13
    furthernh  
       2021-01-12 02:38:57 +08:00
    conda 安装的 OpenCV,site-packages 里面没有 cv2 的文件夹
    furthernh
        14
    furthernh  
       2021-01-12 03:33:44 +08:00
    搞出来了 最后按照这个 搞了一个 https://sayak.dev/install-opencv-m1/#Compile-OpenCV
    jupyter 不好用 明天再说吧 困死了
    ranxfan
        15
    ranxfan  
       2021-03-05 10:51:51 +08:00
    @furthernh 老哥你编译出来了吗?我按这个教程 https://sayak.dev/install-opencv-m1/#Compile-OpenCV 在 make -j8 那里一直出错,走不下去了,我也是 TensorFlow 需要 3.8,能不能怎么发个可用的版本给我 .whl ?
    ranxfan
        16
    ranxfan  
       2021-03-05 11:49:19 +08:00
    当我没说😄,发现已经可以:conda install opencv
    ALUliker
        17
    ALUliker  
       2021-03-15 14:43:29 +08:00
    @frinstioAKL 您好!我目前同样也有源码编译 pytorch 的需求。按您的步骤,我关闭了 CMakeLists.txt 中的 openmp,但是我不清楚在哪里可以关闭 MKL,希望您可以指点一下
    huzhikuizainali
        18
    huzhikuizainali  
       2021-07-05 21:32:05 +08:00
    @ranxfan 可以用 conda 构建不同的虚拟环境么?构建虚拟环境有时是为了使用一些 python 老版本或者老版本第三方包,这些老版本包能用么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2552 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:58 · PVG 12:58 · LAX 20:58 · JFK 23:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.