2022年推荐算法效率开发必备工具榜单
一.引言
一個優秀的算法工程師應該至少具備3類能力:
基礎能力:包含數理統計、機器學習、概率論以及深度學習等相關知識
編程能力:python、C++ or Java 以及基本的 Sql、linux、shell 命令
核心能力:對數據的敏感程度,對業務的理解程度以及 pipeline 的構建能力
這些能力都需要我們不斷地學習并實踐開發,好的工具可以使我們專注于算法的研究與實現落地,下面整理了一份 2022 年推薦算法效率開發10大必備工具,榜單主要分以下3類,快來提高自己的開發效率吧!
效率開發工具:Pycharm、Idea、Iterm2
輔助開發工具:Grafana、Jprofile、Postman、Wakatime、Xxl-job
云原生開發工具:TKE、EMR
二.效率開發
鑒于目前算法工程師大都需要具備一定大數據開發的能力,所以 Python + Java / Scala 的開發趨勢也逐漸興起,python 負責 TF 相關算法的開發,Java / Scala 負責一些框架以及大數據處理的開發,下面介紹 3 款高效開發工具。
1.Pycharm
官網:?https://www.jetbrains.com/pycharm/
Pycharm 是一種?Python?IDE(Integrated Development Environment,集成開發環境),帶有一整套可以幫助用戶在使用?Python?語言開發時提高效率的工具,例如調試、語法高亮、項目管理、代碼跳轉、智能提示、單元測試、版本控制以及依賴獲取等。在原始功能基礎上,其內部增加了豐富的插件。推薦算法工程師日常使用中最多的就是?Tensorflow、Keras、Pytorch、Sklearn、Numpy、Pandas 等,其中深度算法模型主要通過?Tensorflow 實現,由于?TF?不同版本的限制,用戶使用?Pycharm 配合?Anonconda 可以輕松實現多 python 環境的構建,從而從容的切換多個?TF + PY?環境,實現多環境快速切換,效率開發。
智能補全示例:
2.Idea
官網:?https://www.jetbrains.com/idea/
Idea 是?Java?語言開發的集成環境,是業界公認最好的?Java?開發工具之一,其具備便捷的代碼提示、代碼重構、智能補全功能,除此之外與各類版本工具例如?git、svn、github?都實現了完美整合,配合可定義的創新?GUI?設計,是Java / Scala 高效開發的不二之選。隨著大數據的興起,算法工程師的很多離線任務例如數據準備、特征處理、日志分析都離不開?Spark,而線上的實時任務例如實時請求、實時推薦則離不開?Streaming、Flink,通過離線?Spark?+ 在線?Flink?的模式構造?pipeline?管道,Idea?無疑是開發?Java?/ Scala 的利器,配合多款輔助插件,可以使開發更加得心應手。
智能聯想示例:
3.iterm2
官網:https://iterm2.com/
作為代碼與服務器溝通的橋梁,iterm2 是一款功能強大的終端工具,它支持分窗操作、自動補齊、粘貼歷史、回放功能等,同時支持快捷鍵操作與自定義 UI,既美觀又高效,正如官網說說,iterm2是 Terminal 的替代品,通過配置多個 Profiles 的 Advanced 選項,iterm2 可以實現多種自動化操作并支持多款插件,可以協助開發者更方便的進入終端并與集群完成交互。?
分屏監控示例:
通過快捷分屏可以同時實現 GPU 與 Top 指令,監測不同指標,也可以分屏處理終端的不同事務
當然也可以換上自己最喜歡的背景,開發的感覺頓時煥然一新:
??
三.輔助開發工具
推薦算法工程師日常開發中離不開數據指標的監控、任務的部署、代碼的優化、部門的協作以及工作總結,下面將基于以上幾點為大家介紹經過實戰考驗的輔助開發工具。
1.Grafana
官網:https://grafana.com/grafana
隨著業務的不斷深化與發展,業務的種類增多、服務器數量加倍、數據網絡壓力增加的問題也接踵而至,這些問題都不可避免的帶來線上事故的增多,因此隨著業務體量逐漸擴大,相對應的服務器、應用狀態、數據指標都應全方位監控,并且做到指標異常提前預警,Grafana 的出現完美解決了該問題。推薦算法場景下,從用戶數據觸發,到模型的訓練上線,再到最終模型推理得到推薦結果,這一鏈路都存在諸多需要監控的指標,最基本的數據庫以及數據集群、例如 Mysql、Redis、Hbase 以及 Kafka 等都需要做到時序的實時監控并做到異常報警,通過輔助組件狀態的可視化提高線上作業的運維效率,有效減少故障發生后的響應時間。為此 Grafana 提供了快速靈活的可視化效果,可以讓數據以任何想要的形式來可視化數據,例如時間序列、表、柱狀圖等等。
Redis 流量監控示例:
Zookeeper 流量監控示例:
推薦場景下,由于與數據庫交互較多,因此經常以時序的形式監控數據的讀寫狀態,除此之外還有很多的形式提供,開發者可根據自己的需求靈活使用:
2.Jprofile
官網:https://www.ej-technologies.com/products/jprofiler/overview.html
JProfile?是一個重量級的?JVM 監控工具,提供對?JVM?的精確監控,其中堆遍歷、CPU?剖析、線程剖析可視為定位當前系統瓶頸的得力工具,通過 JProfile 可以輕松定位?JVM?堆中的對象,優化內存并定位性能問題。除了可執行軟件外,Jprofile 還支持?Idea?內置插件,輕松與開發環境的任務相匹配并分析,提高?JVM?代碼分析能力,加速代碼優化。推薦算法場景下,常見的就是召回、排序代碼的構建,其中涉及很多需要優化的指標,例如與內存相關的物料庫、與網絡請求相關的 hbase訪問速率等等,其都可以使用?JProfile?進行相關的分析,通過分析獲取代碼運行期間的瓶頸并作出響應優化,使得代碼的編寫更加合理高效。
相關指標的分析:
通過啟動 JVM 進程與 JProfile 可以實時監測任務運行期間 JVM Memory、GC Activity、Classes 數量、Thread 數量、CPU Locd 參數
同時通過 Heap 分析可以分析 JVM 下各類數據占比,任務結束后可以通過 Snap 快照的形式獲取當前任務內存占用較大的 Class,從而對癥下藥,定點優化,提升 JVM 程序效率。?
3.Postman
官網:Postman
Postman 是一款強大的網頁調試工具的客戶端,postman 為用戶提供強大的 Web API & HTTP 請求調試功能。postman 能夠發送任何類型的 HTTP 請求 (Get, Post, Put, Patch, Delete ...),附帶任何數量的參數+ headers,是一款非常實用的調試工具。推薦算法場景下,經常需要與其他團隊進行交互協作,除了采用數據庫交互外,常常使用?Http?接口的形式,返回一些代碼所需的基礎數據信息或者上下文信息。Postman?支持?多種?http?請求類型,支持在線存儲數據,方便設置請求和?header 并支持不同的認證機制,同時提供響應數據自動高亮并在頁面清晰展示,通過?postman?可以在開發前快速便捷的測試?http?請求的訪問速度,訪問結果等,而后快速應用到于實戰代碼中,非常的方便。
Http Get 請求:
下面給出了 postman 測試 get 請求的案例,開發者需指定 http 需求,并填寫對應的 Headers 與 Query 請求參數,最后的結果可以選擇通過 Json、Xml、Html 以及 Text 多種形式,同時 Http 響應時間也會在界面展示,便于開發者評估請求耗時。
4.WakaTime
官網:https://wakatime.com/dashboard
WakaTime 是一款輕量級工作統計軟件,其通過插件配置的方式內嵌到開發常用的辦公開發軟件中,在無感知的情況下統計相關工作時間,推薦算法場景下,常用的 Pycharm、Idea、CLion、VS Code、Word、Excel、PowePoint、iterm2、Sublime Text 等均適配 WakaTime。每天各個項目的開發時長、每天瀏覽網頁與編碼時間的對比、每日代碼語言使用情況都可以詳細記錄其中。
?可以看到上面介紹的多款工具都可以用 WakaTime 進行時間統計,配合上 Git 的提交記錄,頓時感覺自己的工作量滿滿,實戰開發中可以根據 WakaTime 分析自己在各個項目的耗時情況,合理統籌分配時間。
5.xxl-job?
官網:https://github.com/xuxueli/xxl-job/
xxl-job 是一個分布式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級與易擴展。現已開放源碼,實現了開箱即用。其支持通過?Web?頁面對任務進行?CRUD?操作,操作簡單,支持動態修改任務狀態,啟動/停止任務以及終止運行中任務,即時生效。其可以看做是在?crontab 基礎上的新型任務調度平臺。推薦算法場景下,開發者經常需要打通?"數據-模型-上線-迭代-再上線"?的流程,而傳統?crontab?定時控制局限性高,不支持跨集群部署任務,且在 shell 中部署串行任務每個子任務不易控制。為此 xxjob?解決了分布式環境下多機定時任務的調度問題,并提供了豐富的路由策略與完善的調度過期策略,支持動態分配與任務狀態監控,適合推薦算法工程師部署數據分析、數據處理、模型訓練、模型上線、模型 retrain 的定時任務鏈路。
新增任務:
每個任務都有一個單獨的任務 ID,可以通過子任務 ID 連接父任務與子任務,達到跨集群調度的效果,同時支持堵塞處理策略,可以在一定程度上防止父任務執行失敗,依舊執行錯誤子任務的情況。
四.云原生開發工具
云計算的概念從 2006 年提出距今已過 15 年,以宏觀時間觀看全社會對云計算的認知過程,基本經歷了 "概念模糊 - IT 從業者認知 - IT 從業職推進 - 行業大眾認知" 的四個過程,尤其 COVID-19 的出現,更是讓大家體驗到云會議、云辦公、云協同、云課堂等云場景,加深了大家對云計算的認知。隨著云計算的普及,推薦系統也由傳統的老式集群模式逐漸向云計算遷移,在云計算時代,集群的變遷并不是簡單的機房遷移,而是需要從思想到技術落地的全面改變。最理想的狀態是數據存儲、模型開發、單元測試、推薦系統部署等都在云上實現,正是基于這樣的需求,促使了云原生技術的出現,同時基于當前推薦系統的演進與挑戰,計算云原生、數據云原生、計算云原生也在行業內得到蓬勃發展。
1.TKE - Tencent?Kubernetes Engine
1.1 TKE 簡介
官網:https://cloud.tencent.com/product/tke
容器服務 TKE 是騰訊基于原生?Kubernetes 提供的高度可擴展的高性能容器管理服務。支持智能調度,獲得國家級科技卓越獎,針對不同層級運維訴求和資源可控訴求,推出原生節點與超級節點適配不同企業需求,同時基于業務特點針對節點進行個性化優化,形態靈活,功能完備,兼容原生 Kubernetes API,助理企業降本增效。
可以看到推薦系統在線、離線任務混雜、鏈路復雜,除此之外,還有各類數據倉庫、網絡接口、消息系統都內嵌到推薦系統中,使得推薦系統整體復雜度較高。其次面對日益增長的用戶群體、商品庫的不斷豐富擴充,推薦系統面對的流量也日益增長,從而維持推薦系統的高并發與高可用對部署集群提出很高的要求。傳統集群運行不穩定、運維不及時、無法適時擴容,影響推薦系統在線整體穩定性,除此之外由于資源利用的不合理也會大大增加企業成本,而騰訊云 TKE 則完美解決上述場景問題。
1.2?TKE x 小紅書推薦系統實踐
小紅書的高速發展,得益于社區內容與興趣用戶之間的精準高效匹配,小紅書推薦系統會根據用戶的實時點擊、推薦、收藏、評論等行為數據,實時更新用戶畫像,實時產生訓練樣本,實時訓練模型,小時級迭代線上模型。
正如我們前面所說,復雜的推薦系統需要強大的底層服務,在穩定性的基礎上,還需滿足低延時與彈性擴容,騰訊?TKE?結合小紅書場景特點,與小紅書一起進行容器化改造,解決推薦系統場景下容器主要面對高并發對容器網絡吞吐、穩定性與集群統一管理兩大風險,實現了模型的小時級快速迭代, 大大提升了小紅書筆記展示給用戶的精準性與時效性。 在訓練場景,借助容器服務的彈性能力,小紅書也大幅降低了資源成本,節約成本達到 40% 以上。日常只需要 2 個 AI 工程人員負責訓練平臺底層資源運維的相關事項,團隊可以把更多的精力和人力資源聚焦在算法優化上,不斷提升模型的預測準確性。
2. EMR - 騰訊彈性 MapReduce
2.1.EMR 簡介
官網:https://cloud.tencent.com/product/emr
騰訊彈性 MapReduce 提供了高性能、高穩定性、按需靈活搭配的 Hive、Spark、Presto、Hbase、Flink、IceBerg、Alluxio 等豐富開源大數據組件,騰訊基于開源組件深度優化器性能與功能,使得 EMR 具備以下特性:
- 豐富的一體化指標,支持用戶自定義配置告警
- 支持重要事件及作業現場的故障快速回朔,大幅提升運維效率
- 按時間或按需自動負載、平滑擴縮集群資源、分鐘級擴充海量算力,做到集群的縮放自如
- 基于 VPC 網絡隔離與安全組件保證網絡安全可信
基于以上特性,騰訊 EMR 做到了資源的按需使用,在降低企業閑置成本的基礎上,做到了集群的易于維護,完美適配推薦系統場景下的大數據任務需求。
2.2 EMR x 知乎大數據集群升級實踐
知乎是中文互聯網最大的知識分享平臺,數億用戶通過知識建立連接,找到感興趣的高質量內容。為了將全平臺的優質內容與終端用戶更智能更高效的結合在一起,知乎對大數據平臺對數據工具提出更實用要求,由于原集群存在資源交付率低,運維成本高等問題,知乎選擇基于開源 Hadoop 技術棧構建的數千臺規模的大數據集群無縫升級到騰訊云大數據云原生方案,該場景面臨如下挑戰:
A.業務遷移 - 無感知
為了保證改動對原先業務完全透明,需要在業務無感知情況下,對原大數據集群進行托管。為了實現該訴求,騰訊云采用定制化開放方案,構建基于知乎軟件版本的鏡像版本并產品化上線。由于在線資源 TKE 集群與離線 Hadoop 集群一般情況下均為錯峰計算,為了解決原有資源的整體資源利用率,采用 EMR on TKE 方案,離線在線混合部署模式,提升整體資源利用率。在大數據 EMR 與 TKE 的融合過程中,為了保證離線任務與在線任務的隔離線,采用 Cgroup、BT 調度算法等方式做好資源隔離,防止離線任務資源侵占在線任務資源,影響線上服務的穩定性。例如訓練任務啟動過多節點侵占集群資源,導致線上推理任務存在資源、網絡、IO 等風險。
B.技術需求 - 版本兼容
由于知乎原本的集群是基于開源 Hadoop 構建,這與騰訊云大數據版本之間存在差異, 因此需要提供一個可行的產品化方案來解決該問題?
除此之外,為了保證大數據 EMR 集群中任務運行的穩定性,騰訊云也對 Yarn 資源調度進行改造升級,保證資源調度時?AM 管理節點分配的合理性,同時也能做到資源彈性擴容到隊列維度。
2.3 實踐價值
基于騰訊云原生 TKE?方案,騰訊云團隊探索出了 EMR 離在線混合部署策略,協助知乎由開源 Hadoop 集群無感知遷移至騰訊云大數據云原生方案,幫助知乎極大提升了資源利用率,從而大幅降低了技術成本,低峰期資源利用率提升高達5倍,達到了真正的降本增效。結合小紅書與知乎的案例可以看到大數據下的推薦系統實戰離、在線任務混合,對資源高效利用要求高,非常適配?EMR x TKE 的云原生解決方案。
五.總結
好的工具已經備好,希望各位優秀的程序員能夠在各個工作利器的加持下,碼到成功,碼出精彩。更多的好用工具可以掃碼獲取 👇👇👇
總結
以上是生活随笔為你收集整理的2022年推荐算法效率开发必备工具榜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: app启动页自动跳转源码_关于移动端Ap
- 下一篇: (转)WebSphere的web工程中怎