日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于Python技术栈的算法落地踩坑

發布時間:2025/3/14 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Python技术栈的算法落地踩坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景介紹

  在一些業務場景,我們需要把離線訓練好的模型以微服務部署線上,如果是簡單的使用sklearn pipeline,可以保存為XML格式的pmml供Java調用,
在配置為4 core,8G內存的docker環境可以提供8K左右的高并發,并且這種docker可以快速大規模部署到PaaS云平臺,優勢相當明顯,實際情況是
算法人員會基于Python自定義lambda處理數據,而自定義的lambda是很難保存到pmml中的,并且很多公司的算法團隊也是要求基于Python技術棧是

落地的。

踩坑過程

  算法人員序列化訓練好的模型無外乎pkl 、h5,就以pkl為例,pkl中包含了數據的預處理、模型的pipeline等,把這種模型包裝為微服務也不難,可以

選擇flak+gevent+Gunicorn,前兩個可以包裝標準的API接口,Gunicorn是web容器可以提供異步高并發服務,在測試服務器(8 cores, 16G內存)QPS達到

10K +,性能還是可以的。

  1)docker部署踩坑,Python工程根目錄下自己編寫docker file,可以從開源鏡像庫選擇自己的一款,Dockerfile里面命令行類似shell,比如下圖:

Python以來的相關模塊、工程路徑等要加上,接著docker build構建鏡像,把鏡像push到公司鏡像庫,在PaaS云平臺pull鏡像,整個流程不是太復雜,

但是壓測的時候,幾秒之內會發現docker的使用情況是CPU全部滿負載100%,內存倒是50%左右,其實模型就是簡單的分類算法,這其中的瓶頸主要是

兩方面的:

  a)docker內部的Python應用與外部的通信鏈路比較耗時,優化代價較高,需要專業的docker專家來優化;

  b)Python應用本身既要有多線程、多協程的開銷,是消耗CPU資源的,并且分類算法本身就是很耗費CPU資源的,屬于計算密集型,所以docker的CPU很快

滿負載,除非把算法的計算單獨剝離出去;

至此基于docker的Python微服務行不通。

  2)直接把Python應用部署物理機,gunicorn作為web容器可以設置IP、port、工作進程數、最大并發數等等,可以參照gunicorn docs,具體策略有:

  a)application部署采用多進程部署,代碼內部采用多線程、協程處理請求響應;

  b)對于一些重復的請求參數,引入LRU cache既降低了延時也避免了重復調用;

  c)由于Python是動態解釋語言,可以想辦法做到靜態語言的水平,借助cython可以把Python工程編譯為C文件及.so(linux)文件,這時可以把請求響應

延時進一步降低30%以上;

?  延伸:YouTube在使用Python構建高并發服務值得借鑒,使用Python做到快速靈活的開發和部署,使用psyco,一種Python到C的動態編譯器,該編譯器

使用一種JIT編譯方法來優化內層循環,再將內容完整的Python對象緩存起來,整體達到很高的性能。

refer:

https://gunicorn.org/#docs

https://www.cnblogs.com/break-python/p/5459169.html

https://docs.docker.com/engine/reference/builder/#format?

https://blog.csdn.net/wo18237095579/article/details/80540571

http://www.browserwork.com/architecture/youtube-architecture

轉載于:https://www.cnblogs.com/John-Geek-2018/p/9941943.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的基于Python技术栈的算法落地踩坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。