Apple M1基于Docker和Visual Studio code快速搭建Tensorflow的AI開發(fā)環(huán)境

1 Apple M1芯片介紹

1.1確認(rèn)芯片類型

首先查看自己mac電腦的芯片類型罩句,看是Intel引颈,amd紊服,還是蘋果基于arm架構(gòu)自研的arm64芯片伦泥,方法:在終端命令行輸入uname -a 或者uname -m? 可以看到芯片內(nèi)核架構(gòu),M1是arm64芯片架構(gòu)芝雪;tensorflow官方鏡像截止2022-02-08為止减余,不支持arm64架構(gòu)芯片(查看支持芯片類型請參照docker簡介部分),程序運(yùn)行時會提示內(nèi)核崩潰惩系,無法運(yùn)行程序位岔;

2 Docker簡介

2.1介紹

docker官方正式介紹在此不再贅述,可以查看docker官網(wǎng)www.docker.com堡牡,推薦中文學(xué)習(xí)網(wǎng)站https://www.runoob.com/docker/docker-tutorial.html

2.2 docker4大核心:

(1)image鏡像:提供基礎(chǔ)的程序運(yùn)行環(huán)境抒抬,只讀,不可編輯更改晤柄;以“層”的方式進(jìn)行疊加起來的運(yùn)行環(huán)境擦剑;

(2)container容器:鏡像啟動時,在鏡像層的基礎(chǔ)之上新增的一層,可編輯惠勒,用于存儲用戶自己的內(nèi)容赚抡;

(3)volume掛載卷:用于持久性地存儲數(shù)據(jù);容器運(yùn)行時纠屋,容器產(chǎn)生的數(shù)據(jù)都會存儲在volume中涂臣,否則當(dāng)容器停止運(yùn)行后,數(shù)據(jù)就會丟失售担;

(4)compose組件赁遗;多容器運(yùn)行,連接的關(guān)鍵部分族铆;

2.3優(yōu)點

我主要看中它的幾個優(yōu)點:(1)實現(xiàn)不同的開發(fā)環(huán)境之間的隔離以及開發(fā)環(huán)境和物理機(jī)之間的隔離岩四,實現(xiàn)即插即用,用完即毀骑素,減小對物理機(jī)資源的占用炫乓;(2)利用別人制作好的鏡像快速搭建開發(fā)環(huán)境,免去各種繁雜的安裝配置過程献丑,如果想對鏡像做優(yōu)化配置,可以給予別人現(xiàn)有的鏡像基礎(chǔ)之上侠姑,利用dockerfile的構(gòu)建鏡像方法创橄,構(gòu)建自己想要鏡像。(3)利用docker官方提供的遠(yuǎn)程開發(fā)環(huán)境搭建流程莽红,可以快速集成到Visual studio code中進(jìn)行開發(fā)妥畏;開發(fā)后可以上傳到自己在docker官網(wǎng)上的存儲庫;(4)團(tuán)隊協(xié)作時安吁,團(tuán)隊成員可以快速地配置統(tǒng)一的開發(fā)環(huán)境醉蚁,避免環(huán)境不一致導(dǎo)致的bug,簡單鬼店、高效网棍;

3 Visual studio code介紹

一句話:簡直就是一款開發(fā)神奇。微軟出品的開發(fā)工具妇智,簡稱vs code或者vsc滥玷,自從微軟收購了GitHub后,vsc無縫連接GitHub巍棱、微軟云Azure惑畴、Docker,各種神插件航徙,特別有一個叫GitHub copilot的自動編程的插件如贷,根據(jù)你編寫的函數(shù)名稱能自動編寫函數(shù)體內(nèi)容,根據(jù)編寫語句上下文,能自動編寫相關(guān)語句杠袱,開發(fā)效率提高十倍不止尚猿。具體介紹參見https://copilot.github.com/

4 Tensorflow鏡像介紹

不用過多介紹,谷歌出品的AI開發(fā)框架霞掺;

5 搭建流程

5.1安裝基礎(chǔ)工具

根據(jù)需要該注冊賬號就注冊

(1)去docker官網(wǎng)(https://www.docker.com/products/personal)下載安裝桌面版的Docker工具谊路。

Docker

(2)去官網(wǎng)https://code.visualstudio.com/下載安裝vs code工具。


vs code


推薦安裝的擴(kuò)展插件



5.2尋找可用鏡像

docker官網(wǎng)找能用的tensorflow鏡像?https://hub.docker.com/??

如果缺少第3步菩彬,則搜索出來排在前面的是Google官方提供的鏡像缠劝,但都不支持Apple M1芯片。

圖中排在前3個都是經(jīng)過官方認(rèn)證的骗灶,應(yīng)該是優(yōu)先推薦的惨恭,但是經(jīng)過實際測試,鏡像中安裝的python版本太多耙旦,導(dǎo)致編程時脱羡,import導(dǎo)入模塊時(例如tensorflow和numpy模塊)提示模塊找不到,但是在終端命令行或者用jupyter瀏覽器編程免都,就是沒有問題的锉罐。對于想要體驗vscode智能編程的我,果斷放棄了這種鏡像绕娘。于是有了下面第4步

不過很期待谷歌官方發(fā)布支持arm64脓规,且能支持GPU的鏡像

5.3基于docker搭建遠(yuǎn)程開發(fā)環(huán)境




至此遠(yuǎn)程Tensorflow的AI開發(fā)環(huán)境已搭建完畢,為啥說遠(yuǎn)程呢险领?因為docker是一種C/S架構(gòu)侨舆,docker 容器環(huán)境本質(zhì)上是服務(wù)端,本機(jī)電腦是客戶端绢陌,所以說是遠(yuǎn)程開發(fā)環(huán)境挨下。

6 需要識別和避免的坑

(1)TensorFlow鏡像和電腦芯片不匹配問題;

(2)啟動鏡像脐湾,登錄容器時臭笆,非root用戶無root權(quán)限時,vscode無法遠(yuǎn)程進(jìn)入容器沥割,啟動命令行終端失敽睦病;此問題是由于鏡像創(chuàng)建時机杜,在dockefile中指定的帜讲,若不指定,則默認(rèn)為root用戶椒拗,但這在后期團(tuán)隊開發(fā)過程中產(chǎn)生次生問題似将,解決方法:①docker run時指定root用戶获黔,如docker run -u root ……;② dockefile 中給非root用戶賦予root權(quán)限在验;③找符合要求的鏡像玷氏,如上文推薦的;

?(3)鏡像中由于層層疊加腋舌,按照python版本過多盏触,編輯器編程導(dǎo)入模塊時無法識別模塊;

(4)加載卷volume無法保存數(shù)據(jù):由于鏡像中設(shè)置的工作文件路徑是home/tensorflow块饺,且只能在此文件夾下進(jìn)行編輯赞辩,而從docker官方進(jìn)入vscode,會默認(rèn)創(chuàng)建一個home/vscode的文件授艰,所有新增的數(shù)據(jù)文件都只能保存在此文件夾下辨嗽,由于沒有編輯home/vscode的權(quán)限,所以無法保存新增數(shù)據(jù)淮腾。解決方法糟需,對home/vscode進(jìn)行授權(quán),在終端命令行輸入sudo chmod 777 vscode? 提示輸入密碼password時谷朝,輸入tensorflow即可洲押;因為鏡像在創(chuàng)建賬戶tensorflow時,把密碼和賬戶設(shè)置成了一樣圆凰。

(5)鏡像中會存在一些依賴庫缺失的情況诅诱,自己可以手動用pip命令安裝依賴,但是當(dāng)鏡像容器停止送朱,重新啟動后,新安裝的依賴會丟失干旁,此時驶沼,需要需要自己重新打包,生成自己專屬的鏡像争群,

以上就這些吧回怜,用了近一周時間,踩了很多坑换薄,嘗試了很多模式玉雾,找到了此種我認(rèn)為簡單、好用的方法轻要,歡迎私信交流复旬。

7 如何基于別人現(xiàn)有的鏡像,打包冲泥、構(gòu)建自己專屬的鏡像

此部分屬于升級部分驹碍,請私聊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壁涎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子志秃,更是在濱河造成了極大的恐慌怔球,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浮还,死亡現(xiàn)場離奇詭異竟坛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钧舌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門担汤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人延刘,你說我怎么就攤上這事漫试。” “怎么了碘赖?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵驾荣,是天一觀的道長。 經(jīng)常有香客問我普泡,道長播掷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任撼班,我火速辦了婚禮歧匈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砰嘁。我一直安慰自己件炉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布矮湘。 她就那樣靜靜地躺著斟冕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缅阳。 梳的紋絲不亂的頭發(fā)上磕蛇,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音十办,去河邊找鬼秀撇。 笑死,一個胖子當(dāng)著我的面吹牛向族,可吹牛的內(nèi)容都是我干的呵燕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼炸枣,長吁一口氣:“原來是場噩夢啊……” “哼虏等!你這毒婦竟也來了弄唧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤霍衫,失蹤者是張志新(化名)和其女友劉穎候引,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敦跌,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡澄干,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了柠傍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麸俘。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惧笛,靈堂內(nèi)的尸體忽然破棺而出从媚,到底是詐尸還是另有隱情,我是刑警寧澤患整,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布拜效,位于F島的核電站,受9級特大地震影響各谚,放射性物質(zhì)發(fā)生泄漏紧憾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一昌渤、第九天 我趴在偏房一處隱蔽的房頂上張望赴穗。 院中可真熱鬧,春花似錦膀息、人聲如沸般眉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煤篙。三九已至,卻和暖如春毁腿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苛茂。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工已烤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妓羊。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓胯究,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躁绸。 傳聞我的和親對象是個殘疾皇子裕循,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容