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

现在买 MacBook Pro M1 pro 版做开发,还有什么坑不?

  •  
  •   gevin · 2021-11-03 10:22:13 +08:00 · 5585 次点击
    这是一个创建于 1151 天前的主题,其中的信息可能已经有所发展或是发生改变。

    平时主要是写写 java 或 python 的代码,以及运行 docker

    之前听说 docker 在 M1 上运行的适配,docker 已经搞定了,盲测 java 和 python 的运行,应该也不会有太大问题。

    在用 M1 的小伙伴们,实际使用时有没有遇到什么绕不过去的坑啊?

    26 条回复    2021-11-10 19:05:22 +08:00
    plk403
        1
    plk403  
       2021-11-03 10:28:02 +08:00
    我也有个问题 , mac 上 docker 的话内存占用大吗
    QlanQ
        2
    QlanQ  
       2021-11-03 10:41:21 +08:00
    mac 上的 docker 卡,慢,占内存
    hahaFck
        3
    hahaFck  
       2021-11-03 10:44:33 +08:00
    docker 适配了,但是容器好像有问题吧,仓库里的都是 x86 的,好想 arm 的容器很少。
    ShadowPower
        4
    ShadowPower  
       2021-11-03 10:56:21 +08:00   ❤️ 10
    docker 性能很差,大概只有直接运行的 10%( x86 )到 40%( ARM )的性能,打包 x86 比较麻烦,在 x86 镜像里跑的程序无法监视文件改动,许多依赖这个功能的程序会出问题,还会随机崩溃
    深度学习相关的生态很差,tensorflow 慢,pytorch 随机报错
    有些项目需要老版本的开发工具,而适配 m1 的都是新版本
    oracle db 和 sql server 没有支持
    各种桌面软件的稳定性都比较差,而且占用了比以前更多的内存

    性能没有想象中那么好,感觉不如 Ryzen 5800U ,只有发热和续航比以前好
    gevin
        5
    gevin  
    OP
       2021-11-03 11:36:25 +08:00
    @ShadowPower 如果对 docker 的要求低一点,比如只要 mysql ,redis 之类的常用基础镜像能跑,开发可用,可以打包构建,是不是可以接受?毕竟我对 mac 的定位是,用着舒服,也能提高开发效率。AI 之类的事情,我都是从 Linux 上去做
    rongchuan
        6
    rongchuan  
       2021-11-03 11:49:02 +08:00
    @gevin 如果是这个要求的话,可以上了。毕竟 mac 用户群国内国外都很广,即使有啥问题,很快也能修复,基础的开发需求没啥大问题的。
    但 intel 12 代移动端马上出来了,同样大小核设计,功耗控制优秀,不等等吗?
    0Vincent0Zhang0
        7
    0Vincent0Zhang0  
       2021-11-03 12:03:58 +08:00 via Android
    我感觉 docker 的性能还是不错的,在 docker 里编译一套 spark 才九分钟而已,而且不怎么发热,又安静得很!
    [图片] imgur. com/a/3OAb6Si
    jxlwqq
        8
    jxlwqq  
       2021-11-03 12:19:47 +08:00
    目前新的 docker 镜像都支持多平台构建了,用的是 docker buildx 。旧的、不维护的就比较麻烦了,除非自己 fork 一份,重新构建上传。
    2kCS5c0b0ITXE5k2
        9
    2kCS5c0b0ITXE5k2  
       2021-11-03 12:31:55 +08:00
    @rongchuan MacBook 不会再去用 Intel 了把.
    conhost
        10
    conhost  
       2021-11-03 12:47:48 +08:00
    @ShadowPower docker 不太清楚。但是深度学习的生态应该没有啥问题,TensorFlow 旧版本没有编译好的 ARM 包,需要自己编译,pytorch 倒没有任何问题。其他的科学计算相关的包也都没啥问题。但是相比之前的 intel ,pytorch 调试不会出现风扇乱叫的情况了。总之,目前来说,炼丹相关的操作没啥问题,体验比之前的 intel 好太多了。
    0Vincent0Zhang0
        11
    0Vincent0Zhang0  
       2021-11-03 13:00:09 +08:00 via Android
    @conhost 大佬,我这几天试了一下 tensorflow 发现不装 tensorflow-metal ,就是用 CPU 跑训练比装了 tensorflow-metal(0.2.0) 用 GPU 跑训练要快。
    CPU 要 8 秒,但 GPU 要 60 秒的样子。
    网上有人说是因为数据来少的时候,GPU 不显优势,是这原因吗?
    TaiQi
        12
    TaiQi  
       2021-11-03 14:17:54 +08:00
    @0Vincent0Zhang0 不再 docker 里编译一下要多长时间,i9 19 年的 16 寸 要 20 多分钟
    rongchuan
        13
    rongchuan  
       2021-11-03 14:19:09 +08:00
    @emeab 肯定不会呀。以我的使用场景来说,mac 和 win 一样的,如果 intel 12 代给力的话,我肯定就用 win 了
    ouou0701
        14
    ouou0701  
       2021-11-03 14:27:26 +08:00
    有没搞 UE4 开发得大佬说说感受
    12101111
        15
    12101111  
       2021-11-03 15:23:19 +08:00
    正式版 GCC 还不支持 m1, 因此用到 fortan 的 python 模块(主要是 blas 和 lapack )并不是使用正式版 GCC 编译的,而是使用了一个移植了一半的 GCC 分支
    0Vincent0Zhang0
        16
    0Vincent0Zhang0  
       2021-11-03 16:55:20 +08:00
    @TaiQi 试了一下,编译 scala 代码的时候会报 Missing dependency 'object java.lang.Object in compiler mirror',估计是 zulu-jdk 和 scala 的兼容问题,但又找不到 open-jdk-8/11 macos aarch64 可以下载,所以暂时可能只能在 docker 里编译了。
    FakerLeung
        17
    FakerLeung  
       2021-11-03 17:15:52 +08:00
    @ShadowPower #4
    前端开发如何?
    可能还会涉及到 docker 上的 PHP 、redis 、mysql (目前 intel mbp 就用了这么几个)。
    ShadowPower
        18
    ShadowPower  
       2021-11-03 19:08:15 +08:00
    @FakerLeung 前端开发应该没什么问题,这几个都有 arm 版本的 docker 镜像
    conhost
        19
    conhost  
       2021-11-03 19:09:10 +08:00
    @0Vincent0Zhang0 我没训过,我只是用 MBP 来开发,调试。代码跑通之后直接就放服务器了。但是理论上来说不存在 batch 小的时候 CPU 比 GPU 快的情况
    conhost
        20
    conhost  
       2021-11-03 19:11:26 +08:00
    @0Vincent0Zhang0 应该还是 tf 的优化问题,具体可以参考一下: https://developer.apple.com/forums/thread/687654
    jdjingdian
        21
    jdjingdian  
       2021-11-03 19:18:40 +08:00
    再好的路,穿了一双码数不对的鞋,照样还是会摔跤
    鞋得自己选,路得自己走,总会有坑,也总会有方法爬出来的
    冲就完事了,奥利给!
    正经回答:
    上一次用 docker 还是 beta 版,基本是可以运行了,问题不大,现在好像已经有正式版了吧
    python 的话之前经常用 flask 写点小工具,没什么大问题,有时候有些库会没有或者需要自己编译适合 m1 的版本,不过现在适配的也越来越多了
    FakerLeung
        22
    FakerLeung  
       2021-11-04 20:06:00 +08:00
    @ShadowPower #18
    好的,估计搞一台 16+256 的 air 开发,就够了。
    ShadowPower
        23
    ShadowPower  
       2021-11-09 18:01:42 +08:00
    @conhost pytorch 又报了这个错……
    Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
    conhost
        24
    conhost  
       2021-11-10 10:31:20 +08:00
    @ShadowPower 我没遇到过,如果可以的话能不能说下的用的 torch 的版本号和你跑的代码呢?或者也可以用 tg 找我 @i3esn0w
    ShadowPower
        25
    ShadowPower  
       2021-11-10 13:40:49 +08:00
    @conhost 是 1.9 版本,代码没办法给……
    因为遇到的频率非常低,不能稳定复现,也不知道能用什么简短的代码来复现它。
    conhost
        26
    conhost  
       2021-11-10 19:05:22 +08:00
    @ShadowPower 那你可以降一下版本试试,我目前在用的是 1.8 ,没遇到过这样的问题。不过也有可能我只是调试,并没有实际训练。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2847 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 08:17 · PVG 16:17 · LAX 00:17 · JFK 03:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.