【TensorFlow】01 TensorFlow簡介與Python基礎
707
2025-04-05
本次MindSpore實戰營就5個Part:
MindSpore21天實戰營Part1實戰筆記——使用MindSpore Lite實現移動端圖像分類?https://bbs.huaweicloud.com/blogs/205515
MindSpore21天實戰營Part2實戰筆記——使用MindSpore和ModelArts實現Bert中文新聞分類?https://bbs.huaweicloud.com/forum/thread-86316-1-1.html
MindSpore21天實戰營Part3實戰筆記——使用MindSpore實現Resnet50毒蘑菇識別?https://bbs.huaweicloud.com/forum/thread-86319-1-1.html
MindSpore21天實戰營Part4實戰筆記——使用ModelArts實現YoloV3-DarkNet50籃球檢測模型?https://bbs.huaweicloud.com/blogs/207008
今天終于迎來了張小白的最后1Part 。
實驗的內容是跑完CTR的體驗和進階任務。
這里先嘮嗑兩句CTR。(這些話應該是聽了集美貌與智慧于一身的何蘆微老師的直播?https://www.bilibili.com/video/BV1CV411y7oj/? )
深度學習的應用包含:自動駕駛、物體識別、人臉識別、語音識別、拍照翻譯和智能推薦
CTR——Click-Trough-Rate:點擊通過率。點擊某網站的次數/搜索出所有網站的總次數。也就是,給你做推薦時,你有多大的概率進入這個網站。
CTR預估:通過深度學習實現CTR。
CTR預估應用:微博的信息流排序;豆瓣的基于看過影視劇類型的推薦;淘寶京東基于點擊和歷史購物的推薦;廣告點擊率的預估。
推薦算法的流程:
粗排:Retrieval,選擇前100個應用,可能有經驗和人工的因素
精排:Ranking,使用Wide&Deep模型做精度更高的排序
Log:然后不停的微調。
Wide&Deep模型組成
好了,其他的技術環節暫時不多說了,有興趣的人可以去聽回放。。
這次的實驗要求是需要到?https://github.com/mindspore-ai/mindspore-21-days-tutorials/tree/main/chapter5?代碼倉去取。不過因為眾所周知的原因,github不是你想連就能連的:
雖然你也能慢速地將其下載下來:(每秒30K的速度)
有時候配圖就會掛了。。
但是總要有解決方案的吧。。
目前一個好的辦法是:你在gitee.com上導入github的代碼倉。
你需要到github找到相關的代碼倉的位置:
將https的地址復制下來:
https://github.com/mindspore-ai/mindspore-21-days-tutorials.git
然后在gitee導入倉庫的界面導入就可以了。
好了,下面的文檔都在gitee上看,也不會有速度慢,或者圖掛掉的問題了。。
下面就來瞧瞧最后一課到底要干嘛:
具體應該是打開?https://github.com/mindspore-ai/mindspore-21-days-tutorials/blob/main/chapter5/wide_deep_ascend/operation.md?這個鏈接,不過既然我已經fork到gitee了,就打開對應的gitee鏈接:
https://gitee.com/zhanghui_china/mindspore-21-days-tutorials/tree/main/chapter5
作業給了2種實驗環境,一個是基于ascend的,一個是基于GPU的。
顯然,ascend環境應該可以從 ModelArts建Notebook就可以了。GPU的環境也能也可以。但是ModelArts昇騰上肯定有強勢的地方。
所以張小白果斷選擇了?wide_deep_ascend?這種方式,鏈接如下:https://gitee.com/zhanghui_china/mindspore-21-days-tutorials/blob/main/chapter5/wide_deep_ascend/operation.md
我們打開 目錄下的 operation.md文件
可以看到以下內容:
當然,以上先拋去了 進階作業部分。先看看能不能搞定體驗作業。
張小白按照上述方式,新建了個Notebook:
下一步:
確認后進入Notebook。
點擊New-Teminal進入終端。。
按operation.md的要求操作了一番,
。。。(以上省略一萬字。。)
結果發現根本不對頭,怎么還有docker run gpu環境的內容?
張小白就問了下群里的?蘆葦老師,得到的答復是:需要看最新的pdf。
、
趕緊去下了最新的pdf(親愛的老師,我get到了。。。)
原來這些作業是:先把 相關資料全下到本地,然后放上obs,建立作業去run 體驗和進階作業,其實跟前幾天是一樣的方式。
這就好辦了。。
OBS這里還有個小插曲,早上收到了一條短信:
原來我的OBS套餐的使用量額度已經用完了。再用就要按量收費了。。。張小白想想這怎么可以?多AZ的OBS服務用完了,那么我這次實驗用單AZ的貝。。。
張小白花了27元買了 單az 3年的套餐。(9元包年,雖然沒有代金券可用,但是也算是對華為的死忠粉了吧。。)
然后使用obs browser+ 新建 mindspore-21day-singaz桶。
一、體驗作業
下載 預訓練模型?https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/wide_deep.ckpt
下載體驗作業的數據集(10%全量,mindrecord格式)?https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/train_demo.tar.gz
本地代碼倉已經從github->gitee克隆號,并且下到了本地。
在?mindspore-21day-singaz 桶下新建 wind_deep目錄,用以存放體驗的相關文件。
其中:
ckpt目錄,存前面的 wide_deep.ckpt預訓練模型
data目錄,下再建tran_demo,存放 tran_demo.tar.gz文件。
log目錄。空。
output目錄。空。
wide_deep_ascend目錄,存放gitee clone的chapter5目錄下的所有代碼。
最后如下所示:
下面在ModelArts的訓練管理-》訓練作業中新建體驗作業:
其中:
啟動文件:/mindspore-21day-singleaz/wide-deep/wide_deep_ascend/eval.py
ckpt_url:?s3://mindspore-21day-singleaz/wide-deep/ckpt/wide_deep.ckpt (這里錯了。。。)
其他都按照上圖所示輸入。
點下一步確認后再點提交,開始推理訓練。
居然運行失敗了。
其實提示非常清楚:ckpt_path不是一個目錄。說明我錄入的參數ckpt_url寫錯了。仔細看了下 @Helloway 老師的手把手教的文檔,ckpt_url應該是obs桶的一個路徑。。
所以,將 ckpt_url改為?s3://mindspore-21day-singleaz/wide-deep/ckpt
再重新提交作業。
終于運行成功了。
查看日志:
這個就是老師想要的結果。趕緊上傳吧。。
二、進階作業
需要準備這個1%的數據?https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/mini_demo.txt
將其傳到obs 相應data的mini_demo目錄下。
新建訓練+驗證作業。
其中:
代碼目錄:/mindspore-21day-singleaz/wide-deep/wide_deep_ascend/
啟動文件:/mindspore-21day-singleaz/wide-deep/wide_deep_ascend/precess_train_eval.py
數據存儲位置:/mindspore-21day-singleaz/wide-deep/data/mini_demo/
訓練輸出位置:/mindspore-21day-singleaz/wide-deep/output/
作業日志路徑:/mindspore-21day-singleaz/wide-deep/log/
其他都默認。
下一步,確認后
提交,運行訓練作業。2分35秒后訓練成功。。。
OBS output生成了 widedeep_train-1_26.ckpt.
這次的進階作業其實不難(當然是在老師寫好了指南的情況下。。。)
三、PyCharm Kit的登場
有人說,張小白,你寫了那么多是在耍我們是吧?請問你標題中的?ModelArts的PyCharm Kit?在哪里?
看官別急,如果張小白僅僅寫了上面那一部分,那么張小白跟咸魚也就沒啥區別,因為昨天關于籃球比賽的YoloV3-DarkNet50 檢測模型實踐中寫的也是類似的內容,而張小白總不能老是吃老本,得玩些新的東西。
打開ModelArts,屏幕往下拉,會發現有兩個開發工具,PyCharm ToolKit和ModelArts SDK.
剛學了一點Python皮毛的 張小白,自然對PyCharm ToolKit有點感興趣,先點擊立即下載:
然后按照 了解詳情頁的指示,在PyCharm里面安裝這個插件。
進入File-Settings-Plugins-小齒輪-Install Plugins from Disk
選擇 下載的?Pycharm-ToolKit-2.1.zip ,PyCharm就會自動將 Huawei EI ModelArts的插件給你安裝好了。
安裝完之后,PyCharm的菜單下會出現 ModelArts的一系列菜單。
我們點擊 Edit Credential
可以錄入我們的AK、SK,實現PyCharm跟服務器端華為云ModeArts的綁定。
然后通過 Edit Traning job Configuration實現對訓練作業的配置。
此時,其實只有一個好處,就是代碼可以不上傳到OBS運行了。而是可以選擇本地的python腳本執行。但是訓練數據集這些,還是放到OBS上面去,跟原來一樣。
張小白就按照這樣的想法去配置體驗作業的 訓練作業吧。。。
其中:
AI引擎,環境規格這些,跟在ModelArts里面的配置是一樣的。
略有區別的是下面幾個:
Boot File Path,就是“啟動文件”,設置為?F:\learn\courses\mindspore-21-days-tutorials\chapter5\wide_deep_ascend\eval.py
Code Directory,就是“代碼目錄”,設置為?F:\learn\courses\mindspore-21-days-tutorials\chapter5\wide_deep_ascend
以上兩個是張小白git clone的教程的代碼倉下第五章的相關代碼的目錄和地址。
OBS Path:/mindspore-21day-singleaz/wide-deep/ckpt/? 這個感覺填的不對,但是可能也沒啥影響。(事實證明這個字段沒啥用)
Data Path in OBS,訓練集的地址:體驗作業設置為 /mindspore-21day-singleaz/wide-deep/data/tran_demo/
Running Parameter,運行參數,將原來體驗作業配置的三項拷貝過來,中間用分號做分割:
tran_url=/mindspore-21day-singleaz/wide-deep/output1;data_url=/mindspore-21day-singleaz/wide-deep/data/tran_demo/;ckpt_url=s3://mindspore-21day-singleaz/wide-deep/ckpt1
(其實只寫最后一個也能成功:ckpt_url=s3://mindspore-21day-singleaz/wide-deep/ckpt)
配置完畢后,點擊 Apply and Run可以直接運行,也可以點擊Apply,然后在ModelArts菜單再點擊 Run Traning Job運行這個訓練作業。
點擊運行后,PyCharm的下面兩個跟蹤狂(框)會顯示以下內容:
等著作業啟動,右邊的job日志會刷刷的刷(這個看起來比在ModelArts里面需要反復的做頁面刷新看日志好多了。。)
不一會兒,訓練結束了。
我們看右邊的作業日志,往上翻一點:
這也是老師要的結果。。你Get到了嗎?
補充幾句,這個訓練作業,在ModelArts控制臺一樣是能看到的。。
日志:
那我們再進一步做進階作業吧。。。
打開Edit Traning Job Configurations菜單,點擊Job Name右邊的?加號新建一個訓練作業,如下所示:
Boot File Path選為:F:\learn\courses\mindspore-21-days-tutorials\chapter5\wide_deep_ascend\train_and_eval.py
其實Code Directory會自動彈出為:F:\learn\courses\mindspore-21-days-tutorials\chapter5\wide_deep_ascend
OBS Path:/mindspore-21day-singleaz/wide-deep/
Data Path in OBS:選擇訓練作業的數據集位置:/mindspore-21day-singleaz/wide-deep/data/mini_demo/
Running Parameters:tran_url=/mindspore-21day-singleaz/wide-deep/output1;data_url=/mindspore-21day-singleaz/wide-deep/data/mini_demo/
Event Log開始記錄作業:
Job-pycharm-wide-deep-fu.0開始記錄本作業的日志:
耐心等待日志記錄完畢。。。
貌似完成了,可是。。。
好像出錯了啊。。啥結果也沒出來。
到ModelArts里面去看下日志呢?
真的不行。。看來這個真的問老師了。。
@Helloway 老師說,我的代碼倉的代碼好像有點舊,比如requirement.txt已經刪除了,我這里還有。。。
確實,不聽老師的話,是要踩坑的。
趕緊先把gitee的代碼跟 github做個強制同步。
這回目錄下好像只有幾個文件了。。
換個目錄重新拉文件吧(其實也可以做git update的吧,還是新下載吧,省得煩了。。。)
然后重新配置PyCharm的訓練作業:這回把目錄都換成新的吧。。
PyCharm重新打開工程:
配置訓練作業:
具體配置如下:
Boot File Path:F:\learn\mindspore-21-days-tutorials\chapter5\wide_deep_ascend\train_and_eval.py (這個經過證明是錯的)
Code Directory:F:\learn\mindspore-21-days-tutorials\chapter5\wide_deep_ascend
OBS Path:/mindspore-21day-singleaz/wide-deep/
Data Path in OBS:/mindspore-21day-singleaz/wide-deep/data/mini_demo/
查看的日志:
好像是一樣的問題。。
再把日志發上去問 蘆葦老師。。。
老師明確告訴張小白:運行的腳本寫錯了。
應該用 process_train_eval.py , 小白不愧為小白,選了 tran_and_eval.py.....
唉。就記得自己要做 訓練和推理作業。有train訓練和eval評估兩個詞就以為是對的。。哪里知道這還有組合關系。。。看來在AI不是那么智能的幫張小白選擇python腳本之前,做對的事情還是要靠張小白自己。。。
改吧。。
Boot File Path?F:\learn\mindspore-21-days-tutorials\chapter5\wide_deep_ascend\precess_train_eval.py
其他不動。重新Apply and Run。。
終于如老師所愿。。。
其中感謝 @Helloway 老師的多次耐心回答問題。找出BUG。其實通過PyCharm的ToolsKit插件本身體驗是很簡單的,但是由于張小白眼花,加上盲目的自信等因素,導致花了將近一上午才解決了這個問題(同時發了這個博文),教訓是深刻的,老師的幫助是要感謝的。
最后還是看一下,PyCharm ToolKit和在ModelArts里面運行的區別吧。
首先,盡管在PyCharm 配置中沒有配置具體的版本路徑,但是其實 系統會將 本地的代碼傳到 OBS目錄下 以 本地訓練作業為名的目錄下:
這個目錄下的子目錄由系統自動建立三個目錄:code,log和output。
code下,系統會把本地的python代碼傳到這個目錄下。
log下是訓練作業的運行日志:
output下帶版本號的目錄 (如V0004),應該是多次執行訓練作業后的輸出,也就是訓練好的ckpt文件。
其實這說明,PyCharm ToolKit,其實是在OBS上建了一個對應的目錄,將運行作業所需的文件同步過去,然后執行。(只是目錄名有些糾結。。)
所以,并不是張小白想象的,在本地執行Python。。。(甚至本地的Python環境包不全,估計也能跑,張小白就這樣想著。。。。想著想著,就覺得可以把這篇博文發表了。)
再次感謝? 美麗智慧的何盧微?老師的大力支持。沒有您,就沒有這篇踩坑出坑的文字。(看看這次能不能把老師的名字寫對不。。)
(全文完,謝謝閱讀)
AI開發平臺ModelArts EI企業智能 MindSpore Python 昇騰
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。