帶你掌握如何檢視並讀懂昇騰平臺的應用紀錄檔

2023-03-16 18:01:52
摘要:本文介紹了昇騰平臺紀錄檔分類、紀錄檔級別設定、紀錄檔內容格式,以及如何獲取紀錄檔檔案的方法。

本文分享自華為雲社群《如何檢視並讀懂昇騰平臺的應用紀錄檔》,作者:昇騰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 更多介紹

關於昇騰平臺紀錄檔更多介紹,請登入昇騰檔案中心查閱。

 

點選關注,第一時間瞭解華為雲新鮮技術~