1.問題描述
使用Flask做MXnet模型推理API時,每呼叫一次API,顯存持續增長,直至最終顯存爆炸強制退出程式, 注:使用MXnet做模型推理時,存在輸入圖片size不固定的情況,
2.解決方法
1)flask2.0的app.run()中默認打開了threaded=True來支持多執行緒并發請求,從而導致顯存泄漏,
最簡單的解決方法為:把多執行緒改為單執行緒,設定app.run()中threaded和debug為False,示例如下:

2)使用MXnet做圖片的模型推理時,若不固定輸入圖片的size,每次resize圖片尺寸,mxnet都將開啟一塊新的顯存用于存盤,導致顯存增加,看著就像“顯存泄漏”,但理論上存在著最大size的圖片從而顯存占用最大,不會再持續增加,經測驗,隨著持續輸入不固定size的圖片,顯存持續增大到最大值將不再增加,并保持穩定,
3)解決2)最好的辦法是:在輸入模型前,固定輸入圖片的size,考慮等比例縮放圖片可以使用mask擴充圖片的邊界,這樣可以避免顯存的增長,
4)還可能跟Python的GC策略有關,在每次跑完一張圖過后強制執行一次Python的GC看看有沒有用,執行指令為:gc.collect() ,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/416493.html
標籤:AI
