日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

华为最新开源框架mindspore学习

發布時間:2024/4/18 编程问答 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为最新开源框架mindspore学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近的項目用到了mindspore框架,關于如何手把手在自己電腦上運行一個完整的例子,大家可以去官網中的教程中查看:https://www.mindspore.cn/tutorial/training/zh-CN/master/quick_start/quick_start.html

你也可以直接跳過基礎版,使用進階版,如何利用華為載有Ascend(昇騰910,華為自研的人工智能芯片)的服務器上運行代碼,大家按照這個例子來:https://www.mindspore.cn/tutorial/training/zh-CN/master/advanced_use/use_on_the_cloud.html#ai

這里有幾個問題需要大家注意一下:

1.如何創建OBS桶;

2.如何創建訓練任務;

3.深入認識--data_url和--train_url這兩個參數,這兩個參數需要你在自己的代碼中進行一個重寫,即你加載的數據集以及訓練的輸出是需要在代碼中給出參數的,不必賦值(賦值在創建訓練任務的的時候自動進行),寫出即可:

例:

//-----------------------------------------------------------------------------------------------------//

下面是我在項目過程中遇到的一些問題和相應的解決方法:

1.最開始,我是參照這個鏈接來運行(這是另一種使用服務器的方法,即不用在線創建訓練作業)的,教你如何在Pycharm上使用相關toolkit使用modelarts(即華為的服務器平臺),但是我忽略了一點

,這個例子中使用的深度學習框架是MXNet,我仿照他的方式對我使用mindspore框架的源碼進行修改,最關鍵的部分就是參考它是如何將 數據集路徑 加載進來的,仿照他的方式改好后,產生了第一個令我頭大的問題:

ValueError: The folder s3://modelarts-zjw/Mnist_data/train/ does not exist or permission denied!,即我的路徑是不存在的或者沒有訪問權限,我分別再代碼里添加了
1.os.file.exist(path),來檢驗是否存在,輸出True
2.os.access(path,R_OK),檢驗是否有權限讀取,輸出False
事實證明,問題出現在了這里,這個問題我嘗試解決了很久,但沒有能夠解決,因為是mindspore的源碼報錯,后來官方給的說法是,使用Pycharm這種方法確實不行,原因大概是,服務器在執行時,會在服務器本地創建一個桶的虛擬映射(類似緩存),進而達到訪問桶中數據的目的,通過在網頁上創建訓練任務可以完成這種映射,但是在pycharm上不可以,目前只在使用mindspore框架時遇到了這種問題。所以建議大家不要用pycharm,還是直接在網頁上創建訓練任務比較靠譜。

//------------------------------------------------------------------------------------------------------//

1.自定義 callback 類

我們可以理解為回調函數,正是通過這種回調函數可以實現我們對訓練過程中的參數進行打印,舉個例子:
?

class EvalCallBack(Callback):def __init__(self, batch_size):super(EvalCallBack, self).__init__()self.batch_size = batch_sizeself.last_step = 0self.epoch_begin_time = 0def step_begin(self, run_context):self.step_begin_time = time.time() #在每一個step開始時,獲取當前時間def step_end(self, run_context):step_time = time.time() - self.step_begin_time #在每一個step結束時,計算每個step花費的時間print(f'step time: {step_time}')def epoch_begin(self, run_context):self.epoch_begin_time = time.time() #在每一個epoch開始時,獲取當前時間def epoch_end(self, run_context):params = run_context.original_args()cost_time = time.time() - self.epoch_begin_timetrain_steps = params.cur_step_num -self.last_step #獲取epoch結束時一共經過了多少個stepprint("----")print(f'epoch {params.cur_epoch_num} cost time = {cost_time}, train step num: {train_steps}, 'f'one step time: {1000*cost_time/train_steps} ms, ')self.last_step = run_context.original_args().cur_step_num

這里值得注意的是:step_num = len(dataset) // batch_size?

還有loss,也可以通過回調來進行打印

loss = LossMoniter()

這樣就可以實現每一個step結束后,打印這個step的loss值

def epoch_end(self, run_context):params = run_context.original_args()cost_time = time.time() - self.epoch_begin_timeloss = params.net_outputstrain_steps = params.cur_step_num -self.last_step #獲取epoch結束時一共經過了多少個stepprint("----")print(f'epoch {params.cur_epoch_num} cost time = {cost_time}, train step num: {train_steps}, 'f'one step time: {1000*cost_time/train_steps} ms, 'f'loss: {loss}' )self.last_step = run_context.original_args().cur_step_num

2.自定義保存ckpt文件和計算圖

#這里解釋一下這兩個參數, 1.save_checkpoint_steps:每xx個step保存一次ckpt文件 2.keep_checkpoint_max:最多保存多少個ckpt文件,從最后一個算起,最先保存的會被刪掉config_ck = CheckpointConfig(save_checkpoint_steps = 900, keep_checkpoint_max = 10)#1.prefix:ckpt文件的名稱 #2.directory:模型保存的位置,我們又見到了train_url這個參數 #3.config_ck:配置方式ckpoint_cb = ModelCheckpoint(prefix = "checkpoint_lenet", directory=args.train_url, config = config_ck)

這里又有一個小問題,就是,我發現即使我的路徑是完全沒得問題的,但是當模型運行結束后,我去查看我桶中特定的路徑,并沒有發現保存的文件。于是我就采用了這樣的方式

import mox mox.file.shift('os', 'mox')#將原有的os文件操作替換為mox,(如果需要)print(f'Start save model') local_checkpoint_path = './cache/model_path' #在服務器上設置一個文件夾,用來暫時保存模型 config_ck = CheckpointConfig(save_checkpoint_steps = 900, keep_checkpoint_max = 10) ckpoint_cb = ModelCheckpoint(prefix = "checkpoint_lenet", directory=local_checkpoint_path, config = config_ck)#注意這里將模型先保存在服務器中的文件夾 mox.file.copy_parallel(src_url=local_checkpoint_path, dst_url=args.train_url)#再將服務器文件 夾里的文件copy到桶里的文件夾

注意:

  • MoXing是華為云ModelArts團隊自研的分布式訓練加速框架,它構建于開源的深度學習引擎TensorFlow、MXNet、PyTorch、Keras之上。 相對于TensorFlow和MXNet原生API而言,MoXing API讓模型代碼的編寫更加簡單,允許用戶只需要關心數據輸入(input_fn)和模型構建(model_fn)的代碼,即可實現任意模型在多GPU和分布式下的高性能運行,降低了TensorFlow和MXNet的使用門檻。另外,MoXing-TensorFlow還將支持自動超參選擇和自動模型結構搜索,用戶無需關心超參和模型結構,做到模型全自動學習。學習鏈接:https://github.com/huaweicloud/ModelArts-Lab/tree/master/docs/moxing_api_doc

總結

以上是生活随笔為你收集整理的华为最新开源框架mindspore学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。