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

2021-11-03 10:22:13 +08:00
 gevin

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

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

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

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

性能没有想象中那么好,感觉不如 Ryzen 5800U ,只有发热和续航比以前好
gevin
2021-11-03 11:36:25 +08:00
@ShadowPower 如果对 docker 的要求低一点,比如只要 mysql ,redis 之类的常用基础镜像能跑,开发可用,可以打包构建,是不是可以接受?毕竟我对 mac 的定位是,用着舒服,也能提高开发效率。AI 之类的事情,我都是从 Linux 上去做
rongchuan
2021-11-03 11:49:02 +08:00
@gevin 如果是这个要求的话,可以上了。毕竟 mac 用户群国内国外都很广,即使有啥问题,很快也能修复,基础的开发需求没啥大问题的。
但 intel 12 代移动端马上出来了,同样大小核设计,功耗控制优秀,不等等吗?
0Vincent0Zhang0
2021-11-03 12:03:58 +08:00
我感觉 docker 的性能还是不错的,在 docker 里编译一套 spark 才九分钟而已,而且不怎么发热,又安静得很!
[图片] imgur. com/a/3OAb6Si
jxlwqq
2021-11-03 12:19:47 +08:00
目前新的 docker 镜像都支持多平台构建了,用的是 docker buildx 。旧的、不维护的就比较麻烦了,除非自己 fork 一份,重新构建上传。
emeab
2021-11-03 12:31:55 +08:00
@rongchuan MacBook 不会再去用 Intel 了把.
conhost
2021-11-03 12:47:48 +08:00
@ShadowPower docker 不太清楚。但是深度学习的生态应该没有啥问题,TensorFlow 旧版本没有编译好的 ARM 包,需要自己编译,pytorch 倒没有任何问题。其他的科学计算相关的包也都没啥问题。但是相比之前的 intel ,pytorch 调试不会出现风扇乱叫的情况了。总之,目前来说,炼丹相关的操作没啥问题,体验比之前的 intel 好太多了。
0Vincent0Zhang0
2021-11-03 13:00:09 +08:00
@conhost 大佬,我这几天试了一下 tensorflow 发现不装 tensorflow-metal ,就是用 CPU 跑训练比装了 tensorflow-metal(0.2.0) 用 GPU 跑训练要快。
CPU 要 8 秒,但 GPU 要 60 秒的样子。
网上有人说是因为数据来少的时候,GPU 不显优势,是这原因吗?
TaiQi
2021-11-03 14:17:54 +08:00
@0Vincent0Zhang0 不再 docker 里编译一下要多长时间,i9 19 年的 16 寸 要 20 多分钟
rongchuan
2021-11-03 14:19:09 +08:00
@emeab 肯定不会呀。以我的使用场景来说,mac 和 win 一样的,如果 intel 12 代给力的话,我肯定就用 win 了
ouou0701
2021-11-03 14:27:26 +08:00
有没搞 UE4 开发得大佬说说感受
12101111
2021-11-03 15:23:19 +08:00
正式版 GCC 还不支持 m1, 因此用到 fortan 的 python 模块(主要是 blas 和 lapack )并不是使用正式版 GCC 编译的,而是使用了一个移植了一半的 GCC 分支
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
2021-11-03 17:15:52 +08:00
@ShadowPower #4
前端开发如何?
可能还会涉及到 docker 上的 PHP 、redis 、mysql (目前 intel mbp 就用了这么几个)。
ShadowPower
2021-11-03 19:08:15 +08:00
@FakerLeung 前端开发应该没什么问题,这几个都有 arm 版本的 docker 镜像
conhost
2021-11-03 19:09:10 +08:00
@0Vincent0Zhang0 我没训过,我只是用 MBP 来开发,调试。代码跑通之后直接就放服务器了。但是理论上来说不存在 batch 小的时候 CPU 比 GPU 快的情况
conhost
2021-11-03 19:11:26 +08:00
@0Vincent0Zhang0 应该还是 tf 的优化问题,具体可以参考一下: https://developer.apple.com/forums/thread/687654

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/812641

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX