深入學習模型推理性能調優指南

本節提供一些建議為調試和性能調優模型推理磚。概述,請參閱深度學習推理工作流

通常模型推理有兩個主要部分:數據輸入管道和推理模型。數據輸入管道重數據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)