分类: Mac

在pyenv环境下安装支持Mac M1芯片的TensorFlow

从TensorFlow v2.5开始,可以通过tensorflow-metal PluggableDevice使用Mac M1芯片的GPU加速训练。

一般情况下,只要按照苹果“Getting Started with tensorflow-metal PluggableDevice”文档中的步骤安装即可,但我的M1芯片MacBook Air中安装了pyenv,pyenv 是一个 python 版本管理工具,可以方便的在工作环境中安装、管理和切换不同版本的 python,所以我尝试在使用pyenv的情况下,安装TensorFlow。

系统要求,macOS 12.0+,需要先安装好Xcode Command Line Tools,安装命令

xcode-select --install

pyenv的安装和配置请参考网络教程,通过命令

pyenv install --list

可以列出所有可以安装的 python 版本,也会包含anaconda、pypy等不同的版本。

接下来安装Miniforge,这是由于Anaconda 无法在 M1 上运行, Miniforge 是用来替代它的。执行命令

pyenv install miniforge3

会安装最新版本的Miniforge3-MacOSX-arm64,使用pyenv versions命令,可以列出所有被 pyenv 管理的 python 版本。

通过pyenv命令,设置当前 shell 所使用的 python 版本为miniforge3

pyenv shell miniforge3

使用conda创建名为“tensorflow”虚拟环境,并激活,这里使用的python版本为3.9.5(TensorFlow所需)

conda create -n tensorflow python=3.9.5
conda activate tensorflow

安装TensorFlow dependencies

conda install -c apple tensorflow-deps

如果是升级安装新版本的TensorFlow,建议使用

# uninstall existing tensorflow-macos and tensorflow-metal
python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal
# Upgrade tensorflow-deps
conda install -c apple tensorflow-deps --force-reinstall
# or point to specific conda environment
conda install -c apple tensorflow-deps --force-reinstall -n tensorflow

安装TensorFlow

python -m pip install tensorflow-macos

安装tensorflow-metal plugin

python -m pip install tensorflow-metal

至此,TensorFlow就安装成功了,执行

conda deactivate
pyenv shell --unset

可以关闭conda虚拟环境,取消设置当前 shell 的 python 版本。

在PyCharm里使用安装在pyenv里的TensorFlow,步骤如下:

在PayCharm里新建项目

选择“Previously configured interpreter”,并点击后面的 “…” 按钮,弹出“Add Python Interpreter”窗口

选择左侧的“Conda Environment”,然后点击“Interpreter”下拉框后面的“…”按钮,弹出“Select Python Interpreter”窗口

选择miniforge3下“tensorflow”这个虚拟环境下的python文件地址,点击“OK”

在“Add Python Interpreter”窗口中,可以看到“Interpreter”已选中我们刚才所选的Python文件地址,同时选中“Make available to all projects”,也就是这个Interpreter可以被所有项目使用,点击“OK”

在“New Project”的窗口中,即可以选择我们刚才创建的“Interpreter”,点击“Create”,项目创建成功。

在main.py中测试一下TensorFlow

执行结果

我们安装的TensorFlow版本是2.7.0。

老婆家的故事

上次说了外公的故事,这次说说我老婆家的故事,确切的说是我老婆爷爷奶奶的故事,我老婆的爷爷家是地主,他们家现在那个村庄的地在解放前都是他们家的,现在还有些邻居是以前给他们家打长工的,不过我老婆的爷爷算是开明地主,后来还加入了共产党,不过也就是这个身份,当时差点丢了性命,据说被国民党抓了,本来都要枪毙了,子弹是个臭子儿,侥幸逃脱,具体啥情况我也没了解清楚,不过确实很惊险。老婆的奶奶是大家闺秀,有钱人家的小姐,陪嫁中有一张大床,据说当时就值几十个大洋,后来日本人来了,老婆爷爷奶奶的家产全被掠夺光了,据说当时拉了好几卡车,所以我对老婆说,和日本人是家仇国恨,要是没有小日本,你奶奶说不定还能给你留些好东西呢。老婆的爷爷在几年前已经去世了,奶奶健在,身体很好,我说奶奶活到100岁肯定没问题,他们都是历史的见证者,真心希望老婆的奶奶身体健康,长命百岁。

—分割线—

今天在写Objective-C时候,解析接口返回的Json数据时出现了类型转换错误,具体就是字符串转整型数字出现错误,我仔细看了一下,是PHP接口返回的Json数据中数字型的数据,被加上了双引号,解决方法是在json_encode后面的参数设置为JSON_NUMERIC_CHECK,比如json_encode($jsonmsg, JSON_NUMERIC_CHECK);

修改之后运行出现错误,我查了一下,原来JSON_NUMERIC_CHECK这个参数是在PHP5.3.3加上的,而我用的Mac版的XAMPP集成环境中,PHP只到5.3.1,看来要升级,后来发现Mac版的XAMPP没有新版了,只能使用另一个集成环境MAMP,它提供了Mac环境下的Apache、Mysql、PHP的集成环境,我已经安装的MAMP里PHP版本为5.3.14,应该没问题,我直接修改MAMP目录下Apache的配置文件,增加虚拟目录(Alias),但修改之后重启MAMP就是不生效,非常奇怪,我搜了半天,也没发现是什么问题,后来发现在MAMP的菜单里,File->Edit Template->Apache->httpd.conf,编辑httpd.conf,之后重启MAMP终于好了。

—分割线—

欢迎订阅我的微信公共帐号:“Laoer杂谈”,搜索微信号:laoertalk,或扫描页面右侧的二维码
新浪微博:@laoer
Twitter:@laoer

公共交通

今天早上地铁1号线是真够挤的,其实以前,我从未觉得上海地铁有多挤,以前上班,老婆把我载到2号线静安寺站,我从静安寺坐到浦东张江,基本上我不会觉得地铁车厢里挤,就是有时候人多,到了陆家嘴,也会下去一大批,车厢里基本上就空了,所以我觉得坐地铁还挺舒服,但去年下半年,搬家到1号线沿线,乘1号线转2号线,1号线真是挤啊,人民广场之前都是上的多下的少,车厢就像沙丁鱼罐头。其实1号线不算是最挤的,上海地铁里6号线、8号线的拥挤程度比1号线还要高。

上海的公共交通总体上来说还是不错的,轨道交通运营里程全国第一,而且实行机动车牌照拍卖制度,上海的机动车保有量在国内大城市里算是低的,比起北京动不动就堵死在路上,上海已经算是好多了,但我仍然觉得上海的公共交通仍有不足,在轨道交通方面,首先是高峰时间运力还是不足(不过据说很多线路的运力已经饱和了,是人实在太多了),其次就是地铁结束运营的时间太早了,虽然1、2号等线路能到晚上11年,但还是会有很多人路程比较远,或是工作、娱乐等事情赶不上末班车,所以我觉得地铁主要线路是应该通宵运营的。公共交通一定要公众感觉到方便、舒适,如果大家觉得公共交通不方便,还是选择私家车出行,那城市交通拥堵、环境等问题是无法解决的。

—分割线—

Mac下有一款非常好的SVN客户端软件–Cornerstone,但是这个软件实在是有点贵,一个单用户license要$59,实在是承受不起,它有14天的免费试用期,要想一直试用,就要在免费期快到时,重置一下,则又开始14天的免费试用期了,具体方法是进入终端,在~/Library/Preferences/ByHost/下,找到一个.GlobalPreferences开头的plist文件,用工具软件打开这个文件,比如PlistEdit,但如果你装了Xcode,则用Xcode打开plist文件更好编辑,在终端输入命令

open .GlobalPreferences.XXXXXX.plist

打开后可以看到,有com.zennaware.Cornerstone开始的这行,删除这行,保存后重新打开Cornerstone,试用期又重头计算了。

—分割线—

今日调查《打车软件调查》,欢迎各位参与,结果下次公布。

欢迎订阅我的微信公共帐号:“Laoer杂谈”,搜索微信号:laoertalk,或扫描页面右侧的二维码
新浪微博:@laoer
Twitter:@laoer

竞购搜狗,三国演义?

这两天360、百度、腾讯竞购搜狗的新闻突然冒了出来,不论是否靠谱,也确实是非常吸引眼球,这3家都有收购搜狗的理由,从业务和产品线重合度来说,360与搜狗最接近,都有搜索和浏览器,无论从资本层面还是实际产品业务整合都可以占领更多的市场份额,可以在搜索上与百度抗衡,对于百度来说,自从360出了搜索,就对自身产生了不小的威胁,如果360和搜狗结合成功,自有的搜索市场就会继续被蚕食,从这个角度,百度不希望搜狗被360收购,最后是腾讯,这个360的死敌,态度上应该是只要360赞成的他都反对,这个事情上一定要搅局,腾讯的搜索已经死了,似乎拿了搜狗搜索也没用,但搜狗的浏览器和输入法还是不可忽视的,腾讯在桌面客户端软件可以做到占有率第一,而且互联网“得入口者得天下”,凭借搜狗浏览器和输入法这两大入口,腾讯也可以玩出很多花样了。

搜狗现在是皇帝的女儿不愁嫁,可以坐地起价了,如果只想变现,卖给谁都会是一个不错的买卖,但我们不知道张朝阳和王小川的真实想法,也不知道是否有更深层的布局,只有拭目以待了。

—分割线—

谈到搜狗,正好说说Mac下的中文输入法,首先Mac自带的中文输入法很难用,之前有3个比较好的三方输入法,分别是QIM、sunpinyin和FIT,QIM是付费的,做的确实不错,功能强大,我之前一直用QIM,后来也装过FIT,但感觉不如QIM,后来FIT和sunpinyin合并了,但我也没有再用过,再到后来搜狗、腾讯、百度都出了Mac下的输入法,而QIM在Mac升级到10.7之后出了不少问题,QIM2.0宣布免费,但是毕竟是一个人在做,相对搜狗、腾讯、百度这样大公司背景来说,有点势单力薄。搜狗、腾讯、百度的Mac输入法我都用了,现在用搜狗输入法稍多一些,就在昨天搜狗输入法Mac版发布了2.3版,我正在试用,腾讯的QQ输入法最近的版本是2.6,今年2月发布的,但我用的比较少,百度输入法Mac版,在它发布之后我也试用了一段,但有一次把我的机子搞死机了,就不敢用了,4月24发布了3.0版,我这才又升级并再次尝试一下如何。另外不得不说一款开源的输入法,名字叫鼠须管,名字很怪吧,这款输入法最大的特色是速度快,就是配置比较麻烦,可改进的空间很大,有兴趣的同学可以尝试一下,https://code.google.com/p/rimeime/

—分割线—

上次调查《收购搜狗》的调查结果如下

你认为下面哪家企业最有可能竞购搜狗成功
360(61.5%)
百度(23.1%)
腾讯(15.4%)

看来大部分人认为360竞购搜狗成功的可能行最大。

昨天一篇硕士博士争做城管的新闻引人注意,所以今天的调查就是针对这个话题,《如何看待博士硕士争做城管》,欢迎各位参与,结果下次公布。

欢迎订阅我的微信公共帐号:“Laoer杂谈”,搜索微信号:laoertalk,或扫描页面右侧的二维码
新浪微博:@laoer
Twitter:@laoer