macOS M1如何配置机器学习环境(二)

2021-10-20 10:08:49 浏览数 (1)

这是奔跑的键盘侠的第193篇文章

作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(ID:runningkeyboardhero)

转载请联系授权(微信ID:ctwott)

之前写过一帖《macOS M1如何配置机器学习环境》,是基于python3.8版本配置的tensorflow,最近实验过程中发现些问题没办法解决,无奈之下卸载了重装,结果随便捣鼓一下,整个假期就快没了

至于为什么这么点背,,可能还是因为学的多了,用的模块也多了,烦恼就随之而来了。年初安装时啥都没学,就是一个试验代码通了就通了,后来随着学习的深入,发现要用到很多模块,关键嘛,这个M1设备据说python3.9更适配一些,心理也有在作祟。

之前就是装了3.8和3.9混用,实在搞不懂为毛有些模块在我M1的3.8版本死活装不上,3.9就服服帖帖。但是要跑tensorflow的话又只能滚回3.8,之前没有交叉就瞎玩,最近偶遇交叉直接死菜。

总之,恼火!

1

.condarc文档

如果不慎遭遇conda无法正常使用,可能要修改.condarc文档:

网上链接:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

代码语言:javascript复制
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

2

python3.8安装tensorflow新方法

《21年3月最新版在Macbook M1芯片上装Tensorflow》 https://zhuanlan.zhihu.com/p/358341761 Frendo, 知乎

代码语言:javascript复制
确保执行了如下语句安装了Macbook 自带的python3.8
xcode-select --install
使用如下命令从GitHub拉取最新版的Tensorflow
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/apple/tensorflow_macos/master/scripts/download_and_install.sh)"
安装好后以后每次输入如下命令都可以进入venv环境了(注意下方命令z红的aaaa请改成自己的用户名)
."/Users/aaaa/tensorflow_macos_venv/bin/activate"

3

python3.9安装tensorflow方法

《Tensorflow 2.5 on Apple M1》 https://github.com/ctrahey/m1-tensorflow-config Chris Trahey,Github

代码语言:javascript复制
Steps to recreate this environment:

conda create --name tf25 --file ./conda-explicit.txt
conda activate tf25
pip install --no-deps -r requirements.txt
python confirm.py



This is the output I get:

Init Plugin
Init Graph Optimizer
Init Kernel
Running TensorFlow 2.5.0 with 1 GPUs recognized

PS:本人mac版本11.6

按《requirements.txt》中numpy版本1.21.1安装后,出现部分异常问题,于是给卸载重新安装了1.21.2版本,问题得以解决。

另外,部分模块无法使用conda安装,找不到资源,改用pip安装,问题可解决。

opencv-python无法正常安装,又是捣鼓了好一阵。。最后改用opencv_python连接线改下划线就哦了,真实狗血的

4

python3.8-tensorflow0.1a1 PK python3.9-tensorflow2.5

跟网上大佬讲的一样,python3.8版本的速度要快,而且快很多。。原因不明

测试代码如下:

代码语言:javascript复制
#test01.py
import tensorflow as tf
import time

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

start = time.time()
model.fit(x_train, y_train, epochs=5)
end = time.time()

model.evaluate(x_test, y_test)
print(end - start)

第一张图是python3.8耗时不到4s,第二张图是python3.9耗时近35s,对比实在悬殊。

于是换一个之前的多层感知机代码跑一下,python3.8耗时22s,python3.9耗时39s,还是3.8版本完胜。

这就有些让人困顿了,不知道是算法没跟M1适配好,还是测试的代码不具有代表性。当然这些都不是很重要,并不值得去深究,毕竟个人电脑这点配置是无法胜任真正的大任务。

5

python3.8 PK python3.9

最后,关于conda在pycharm Interpreter的配置,是要在设置里面的第三个选项System Interpreter来设置。实际项目中,可随意切换版本:

-END-

0 人点赞