天天看點

帶你掌握如何檢視并讀懂昇騰平台的應用日志

作者:華為雲開發者聯盟

本文分享自華為雲社群《如何檢視并讀懂昇騰平台的應用日志-雲社群-華為雲》,作者:昇騰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
IDEDD=5  # ascend debug device agent
DVPP=5
CCE=5           

EP形态通過msnpureport工具設定系統類日志級别。例如:

$Driver_HOME/driver/tools/msnpureport –g info           

05 更多介紹

​關于昇騰平台日志更多介紹,請登入昇騰文檔中心查閱。

關注#華為雲開發者聯盟# 點選下方,第一時間了解華為雲新鮮技術~

華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲