摘要:本文介紹了昇騰平臺日誌分類、日誌級別設定、日誌內容格式,以及如何獲取日誌檔案的方法。
本文分享自華為雲社群《如何檢視並讀懂昇騰平臺的應用日誌》,作者:昇騰CANN。
當您完成訓練/推理工程開發後,將工程放到昇騰平臺執行,以除錯工程是否正常執行,此時,可能會出現各種各樣、五花八門的異常狀況。
當問題發生時,我們的第一反應是不是檢視日誌,看看哪裡報錯了。昇騰平臺有哪些日誌呢?日誌檔案又在哪呢?本期帶您瞭解如何使用昇騰平臺的日誌功能。
01 瞭解日誌分類
根據工程執行過程中日誌產生的場景不同,日誌通常被分為以下4類:
- 除錯日誌(debug):記錄除錯級別的相關資訊,一般用於跟蹤執行路徑,如記錄函式的進入和退出等,大部分為程式碼級的資訊輸出,除錯日誌用於開發人員定位複雜問題。
- 操作日誌(operation):記錄裝置操作維護人員下發或透過設定相關的自動化任務下發的操作和操作結果。
- 安全日誌(security):記錄系統使用者登入、登出和鑑權,增加、刪除使用者,使用者的鎖定和解鎖,角色許可權變更,系統相關安全配置(如安全日誌內容配置)變更等活動。
- 執行日誌(run):記錄系統的執行狀況或執行流程中的一些關鍵資訊,包括異常的狀態、動作,關鍵的事件等。
02 如何獲取日誌檔案
我們現在知道了昇騰AI處理器有4類日誌,那我們需要到哪裡檢視這些日誌呢?本節來揭秘。
昇騰AI處理器具有EP和RC兩種形態,針對不同的硬體形態,日誌檔案存放位置不同,需根據實際硬體形態獲取。
EP場景日誌獲取
- 應用類日誌
使用者應用程式在Host側和Device側產生的日誌。例如,一個推理/訓練任務下發後,通常與本次推理/訓練直接相關的日誌都存放在應用類日誌中。
這類日誌預設存放在“$HOME/ascend/log”路徑下,格式如下:
├── debug │ ├── device-0 │ │ └── device-pid_*.log //Device側產生的日誌 │ └── plog │ └── plog-pid_*.log //Host側產生的日誌 ├── operation │ ├── device-0 │ │ └── device-pid_*.log │ └── plog │ └── plog-pid_*.log ├── run │ ├── device-0 │ │ └── device-pid_*.log │ └── plog │ └── plog-pid_*.log └── security ├── device-0 │ └── device-pid_*.log └── plog └── plog-pid_*.log
- 系統類日誌
非使用者應用程式在Device側產生的日誌,即Device側常駐程式執行產生的日誌通常都在存放在系統類日誌中。
這類日誌生成時預設存放在Device側/var/log/npu/slog路徑下,需要在Host側透過msnpureport工具將其匯出到Host側再進行檢視。
命令舉例:
$Driver_HOME/driver/tools/msnpureport -a
透過msnpureport工具匯出到Host側後,系統類日誌按Device側資料夾存放,格式如下:
├── debug │ ├── device-os │ └── device-os_*.log ├── operation │ ├── device-os │ └── device-os_*.log ├── run │ ├── device-os │ └── device-os_*.log ├──security │ ├── device-os │ └── device-os_*.log └── slog └── slogdlog
RC形態日誌獲取
RC形態日誌獲取比較簡單,不管是應用類日誌還是系統類日誌,均存放在/var/log/npu/slog路徑下。存放格式與EP場景類似:
├── debug │ ├── device-app-pid │ │ └── device-app-pid_*.log │ └── device-os │ └── device-os_*.log ├── operation │ ├── device-app-pid │ │ └── device-app-pid_*.log │ └── device-os │ └── device-os_*.log ├── run │ ├── device-app-pid │ │ └── device-app-pid_*.log │ └── device-os │ └── device-os_*.log ├── security │ ├── device-app-pid │ │ └── device-app-pid_*.log │ └── device-os │ └── device-os_*.log └── device-id └──device-id_*.log
03 如何讀懂日誌內容
日誌內容嚴格按照日誌規範列印,每條日誌格式一致、欄位含義明確,便於閱讀。日誌格式、欄位含義如下:
日誌內容可以透過cat、grep等命令檢視。
04 如何設定日誌級別
日誌級別定義
不同日誌級別列印的日誌內容詳細程度不同,因此,問題定位時可以使用最詳細日誌(DEBUG)列印,而驗證效能時使用最簡日誌(ERROR)列印即可。日誌功能提供了5種級別供大家選擇使用:
說明:各級別日誌詳細程度:DEBUG > INFO > WARNING > ERROR
設定日誌級別
透過上面日誌級別介紹,我們瞭解到可以根據自己需求設定不同的日誌級別、列印不同詳細程度的日誌。那應該如何設定呢?
- 應用類日誌級別設定,透過在Host側設定ASCEND_GLOBAL_LOG_LEVEL環境變數實現,例如設定INFO級別:
export ASCEND_GLOBAL_LOG_LEVEL=1
- 系統類日誌級別設定,針對EP和RC形態提供了不同的方法。
RC形態透過修改/var/log/npu/conf/slog/slog.conf配置檔案、重啟日誌程式生效。
#note, 0:debug, 1:info, 2:warning, 3:error, 4:null(no output log), default(1) global_level=1 # Event Type Log Flag, 0:disable, 1:enable, default(1) enableEvent=1 # note, 0:debug, 1:info, 2:warning, 3:error, 4:null(no output log), 5:invalid(follow global_level) SLOG=5 # Slog IDEDD=5 # ascend debug device agent DVPP=5 # DVPP CCE=5 # CCE
EP形態透過msnpureport工具設定系統類日誌級別。例如:
$Driver_HOME/driver/tools/msnpureport –g info
05 更多介紹
關於昇騰平臺日誌更多介紹,請登入昇騰文件中心查閱。