现在买 MacBook Pro M1 pro 版做开发,还有什么坑不? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gevin
V2EX    macOS

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

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

    平时主要是写写 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 代移动端马上出来了,同样大小核设计,功耗控制优秀,不等等吗?
    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     Solana     1028 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:40 PVG 02:40 LAX 1:40 JFK 14:40
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86