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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

MindInsight训练可视整体设计介绍

發布時間:2023/11/28 生活经验 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MindInsight训练可视整体设计介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MindInsight訓練可視整體設計介紹
MindInsight是MindSpore的可視化調試調優組件。通過MindInsight可以完成訓練可視、性能調優、精度調優等任務。
訓練可視功能主要包括訓練看板、模型溯源、數據溯源等功能,訓練看板中又包括標量、參數分布圖、計算圖、數據圖、數據抽樣、張量等子功能。
本文主要介紹MindInsight訓練可視功能的邏輯架構、代碼組織和數據模型。
訓練可視邏輯架構
在架構上,訓練可視功能的邏輯架構分為兩部分:訓練信息收集架構,訓練信息分析及展示架構。

圖1 MindInsight訓練可視邏輯架構
訓練信息收集架構
訓練信息收集功能在MindSpore中,包括訓練信息收集API模塊和訓練信息持久化模塊。
訓練信息收集API包括:
? 基于summary算子的訓練信息收集API。這部分API主要包括4個summary算子,即用于記錄標量數據的ScalarSummary算子,用于記錄圖片數據的ImageSummary算子,用于記錄參數分布圖(直方圖)數據的HistogramSummary算子和用于記錄張量數據的TensorSummary算子。請訪問算子支持列表以獲取關于這些算子的信息。
? 基于Python API的訓練信息收集API。通過SummaryRecord.add_value方法,可以在Python代碼中完成訓練信息的收集。
? 易用的訓練信息收集callback。通過SummaryCollector這一callback可以方便地收集常用訓練信息到訓練日志中。
訓練信息持久化模塊主要包括用于管理緩存的summary_record模塊和用于并行處理數據、寫入文件的write_pool模塊。訓練信息持久化后,存儲在訓練日志文件(summary文件中)。
訓練信息分析及展示架構
訓練信息分析及展示架構在MindInsight中,包括Web UI和后端兩大部分。后端從下到上可以分為數據加載及緩存層、業務邏輯層、API 層。數據加載及緩存層主要由訓練日志文件發現模塊、訓練日志文件解析模塊及緩存管理模塊組成。業務邏輯層主要由訓練看板業務模塊和溯源業務模塊組成。API層主要由RESTful API模塊組成。各模塊的主要功能如下:
? 訓練日志文件發現模塊:用于在給定的訓練日志根目錄(summary-base-dir)中掃描并發現含有訓練日志文件的訓練日志目錄。只有含有訓練日志文件的目錄會被識別為訓練日志目錄。
? 訓練日志文件解析模塊:用于解析訓練日志文件。
? 緩存管理模塊:用于管理訓練日志解析任務,緩存訓練日志解析結果。其會定期調用訓練日志發現模塊,掃描最新的訓練日志目錄列表;然后調用解析模塊解析文件內容,將解析結果存儲在緩存中以供UI查詢。
? 訓練看板模塊:用于提供訓練看板功能的業務邏輯,支撐UI查詢訓練看板數據。
? 溯源模塊:用于提供模型溯源和數據溯源的業務邏輯,支撐UI查詢溯源數據。
? RESTful API模塊:用于將業務模塊提供的接口包裝為RESTful API。
代碼組織
以下是MindInsight代碼倉庫中的部分重要目錄及說明。

訓練可視數據模型
訓練信息數據流
訓練信息產生于用戶訓練的過程中。用戶可以通過訓練信息收集API將這些訓練信息收集起來,并通過訓練信息持久化模塊將這些訓練信息保存到磁盤上,產生訓練日志文件(summary文件)。訓練日志文件生成后,便可以使用MindInsight對其中的信息進行可視化。

圖2 訓練信息數據流
數據模型
MindInsight的簡要數據模型如圖3所示。一個訓練日志目錄會被MindInsight識別為一個訓練作業。訓練作業是MindInsight的最小管理單元。一個訓練作業可以關聯0-1個溯源數據,關聯0-1個訓練過程數據。訓練過程數據內部有著豐富的結構,每一個具體的數據,可以通過給定的插件名稱、標簽和迭代唯一確定。下面將分別介紹這些概念。

圖3 以UML類圖表示的數據模型
訓練作業
MindInsight通過目錄來區分不同的訓練作業。為了方便用戶區分不同訓練作業的訓練日志文件,SummaryCollector、SummaryRecord都要求用戶指定存放訓練日志文件的目錄。相同目錄中的訓練日志文件,被認為是同一次訓練作業中產生的訓練數據,不同目錄中的訓練日志文件,被認為是不同訓練作業中產生的文件。
在MindInsight的代碼中,一次訓練一般被稱為一個TrainJob。TrainJob的id即該次訓練的日志所在目錄的目錄名(例如 ./train_my_lenet_1)。
一次訓練的過程中,一般會產生該次訓練的溯源數據文件(文件名以_lineage結尾)和訓練過程數據文件(文件名一般以_MS結尾)。其中溯源數據主要從全局出發,描述該次訓練的不變性質,例如訓練所用的數據集路徑、訓練所用的優化器、以及用戶自定義的溯源信息。這些信息最突出的特點是不會在訓練過程中變化。而訓練過程數據主要描述該次訓練的變化情況,例如loss值、參數分布、一個迭代中送入模型的圖片數據等。這些信息最突出的特點是每個迭代都會發生變化。
需要注意的是,關于訓練信息是否發生變化的分類,并不是絕對的。比如訓練過程數據文件中會含有計算圖數據,其一般在訓練開始的時候就確定了。
溯源數據
溯源數據主要從全局出發,描述某次訓練的不變性質。當MindInsight識別到多個訓練日志目錄時,這若干次訓練的溯源數據,被組織成表格的形式展示,以方便對比和分析。
訓練過程數據
? 插件名稱(plugin_name)
對于訓練過程數據,首先將這些訓練數據按類型分為標量數據(scalar)、直方圖數據(histogram)、圖片數據(image)、張量數據(tensor)等類型,這些類型在MindInsight的中被稱為插件名稱(plugin_name),當前mindinsight支持的插件名稱定義在mindinsight.datavisual.common.enums.PluginNameEnum中。
? 標簽(tag)
無論數據屬于何種類型,其都會依照tag進一步被分為不同的序列。tag一般由用戶命名,用于對數據進行區分。比如記錄loss值的標量數據,其tag名可以為loss。需要說明的是,MindInsight在對數據進行處理時,會根據插件名稱自動為tag附加后綴。例如tag為loss的數據為標量數據,則該tag會被自動重命名為loss/scalar。
? 迭代數(step)
訓練過程數據是在訓練的每個迭代中產生的,為了區分這些數據,數據會被標記上該數據所對應的迭代數。
? 數據的查詢和展示
在展示數據時,用戶常常希望看到某個標簽下的數據,隨著訓練過程的變化情況。因此,查詢數據時,一般不會指定迭代數,而是直接指定訓練作業、插件名稱和標簽,查詢該標簽下所有迭代的數據。

總結

以上是生活随笔為你收集整理的MindInsight训练可视整体设计介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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