深入學習模型推理性能調優指南
本節提供一些建議為調試和性能調優模型推理磚。概述,請參閱深度學習推理工作流。
通常模型推理有兩個主要部分:數據輸入管道和推理模型。數據輸入管道重數據I / O輸入和模型推斷是沉重的計算。確定工作流程的瓶頸是簡單的。這裏有一些方法:
減少模型到一個微不足道的模型和測量每秒的例子。如果差異之間的端到端時間模型和簡單的模型很小,那麼數據輸入管道可能是一個瓶頸,否則模型推理是瓶頸。
如果運行模型推理與GPU,檢查GPU的利用率指標。如果GPU不斷利用率不高,數據輸入管道可能的瓶頸。
優化數據輸入管道
使用gpu可以有效地優化運行速度模型推理。隨著gpu和其他加速器變得更快,重要的是,數據輸入管道跟上需求。數據輸入管道讀取數據到火花Dataframes,轉換,並加載它的輸入模型推理。如果數據輸入是瓶頸,這裏有一些建議來增加I / O吞吐量:
設置最大記錄每批。更多數量的最大值可以降低I / O開銷記錄函數調用UDF隻要記錄可以裝入內存。設置批量大小,設置以下配置:
火花。相依。集(“spark.sql.execution.arrow.maxRecordsPerBatch”,“5000”)
批量加載數據和預取預處理輸入數據的時候熊貓UDF。
TensorFlow磚,推薦使用特遣部隊。data API。你可以通過設置並行解析映射
num_parallel_calls
在一個地圖
函數和調用預取
和批處理
預取和配料。數據集。地圖(parse_example,num_parallel_calls=num_process)。預取(prefetch_size)。批處理(batch_size)
PyTorch磚,推薦使用DataLoader類。你可以設置
batch_size
批處理和num_workers
並行數據加載。火炬。跑龍套。數據。DataLoader(圖片,batch_size=batch_size,num_workers=num_process)