作業管理
查詢工作
若要以程式方式取得工作摘要清單,請使用 get_job_summaries()。
import qai_hub as hub
client = hub.Client()
job_summaries = client.get_job_summaries(limit=10)
print(job_summaries)
若已從 UI 取得特定的工作 ID(以 j 開頭的 ID,例如 jvgdwk7z5),即可使用 get_job() 以程式方式查詢該工作。
job = client.get_job("jvgdwk7z5")
print(job)
分析工作
分析工作的結果可以使用 ProfileJob 以程式方式獲取,如下所示:
profile = job.download_profile()
print(profile)
打印字典的輸出如下:
{
'estimated_inference_time': 2997,
'estimated_inference_peak_memory': 69177344,
'first_load_time': 2162619,
'first_load_peak_memory': 83742720,
'warm_load_time': 123904,
'warm_load_peak_memory': 73179136,
'compile_time': 0,
'compile_peak_memory': 0,
'compile_memory_increase_range': None,
'compile_memory_peak_range': None,
'first_load_memory_increase_range': (0, 0),
'first_load_memory_peak_range': (26226688, 31730736),
'warm_load_memory_increase_range': (0, 10580480),
'warm_load_memory_peak_range': (12865536, 37318656),
'inference_memory_increase_range': (0, 12160),
'inference_memory_peak_range': (12288, 21276192),
'all_compile_times': [],
'all_first_load_times': [2162619],
'all_warm_load_times': [123904],
'all_inference_times': [9130, .... ]
}
內存以Byte表示,時間以微秒表示。要獲取以毫秒為單位的延遲:
latency_ms = profile["execution_summary"]["execution_time"] / 1000
下載工作產出物(Job Artifacts)
工作(Job)在執行過程中會產生產出物。根據工作類型的不同,產出物可能包含伺服器日誌、裝置日誌、逐運算(op-by-op)的時間分析摘要,或 QNN HTP 分析摘要(QHAS)。這些產出物可用於排除工作失敗問題,或協助理解工作的行為。
若要查看已完成工作的可用產出物:
artifacts = job.get_available_artifacts()
print(artifacts)
# e.g. [<JobArtifactType.HUB_LOG: 5>, <JobArtifactType.DEVICE_LOG: 1>]
若要下載特定類型的產出物:
paths = job.download_artifacts_for_type("./artifacts", hub.JobArtifactType.HUB_LOG)
若要下載所有可用的日誌(裝置日誌與 Hub 日誌):
paths = job.download_job_logs("./artifacts")
在呼叫 download_results 時,日誌也會自動包含在下載結果中。
results = job.download_results("./results")
# results directory will contain the job's primary output (e.g. compiled model)
# as well as any available log files
可用的產出物類型列於 JobArtifactType 中。並非所有類型都適用於所有工作 — 請使用 get_available_artifacts() 來確認特定工作可取得的產出物。
備註
工作產出物的格式、內容及可用性可能會在未事先通知的情況下變更,且不屬於穩定的 API 合約範圍。