AI研发工程师成长指南
AI研發工程師成長指南
本文為數據茶水間群友原創,經授權在本公眾號發表。
關于作者:Japson。某人工智能公司AI平臺研發工程師,專注于AI工程化及場景落地。持續學習中,期望與大家多多交流技術以及職業規劃。
0x00 前言
首先,《AI研發工程師成長指南》這個題目其實有些標題黨了,準確地來說,本文內容應該是:“要想成為一名AI研發工程師,需要具備哪些技能”。
其次,本文對“AI研發工程師”這個title的定義,也并不是大家第一印象中的“算法工程師”、“數據科學家”。
再次,本文實際上作者結合現階段行業發展、技術趨勢以及自身工作性質做出的關于自身定位、職業技能、發展方向的思考。就像魔獸世界中的“職業攻略”,當我們在游戲中新建一個角色時,會先去了解這個職業的特點、天賦、技能樹等信息,這樣才會在“練級”的過程中少走些彎路。
最后,作者不是從一個很高的角度來對整個成長體系進行一個全面地闡述。而是站在道路的地點,不斷摸索、不斷前進、不斷地調整自己的規劃。因此本文不算是Best Practices,勉強算是Beta version,也希望能和大家不斷交流,不斷“發版”。
0x01 關于AI行業的思考
算法工程師的門檻
AI算法工程師年薪百萬,應屆畢業生年薪都有80w…
去年AI人才缺口就已經過百萬,今年將達500w…
加入《XXX訓練營》,XX天打造AI算法工程師…
在網絡上充斥著各種類似上面那樣的吸引眼球的文章標題,向你訴說著人工智能這一火的不能再火的領域美好的前景。仿佛我們看了兩遍西瓜書、處理了MNIST和幾朵鳶尾花、在自己的筆記本電腦上掉了幾個包、得到了和教程上一樣的結果,打了幾場比賽,我們就已經拿到了AI領域的通行證、成功轉型算法工程師、接大廠offer到手軟了一樣。
但實際,現在AI算法工程師的就業難度和準入門檻,遠比我們想象的要高。
上一張網絡上流傳的“諸神黃昏”吧
可以說一點不夸張,現在很多大廠的校招算法崗,門檻就是海外名校/985工科院校的博士/碩士。除了擁有與學歷匹配的學術能力以外,工程基礎也要非常扎實。
有人說:“我看網上說,AI人才缺口非常大,我不去大廠不就行了?其他的公司要求沒那么高吧?”
要求高不高我不知道,但是有一下兩點:
絕大多數公司,是不需要雇傭AI算法工程師,即沒有相關的業務需求,也負擔不起算法團隊的開銷
2019年研究生報考人數290萬人,預計招生70萬人,其中計算機是熱門專業,并且其中多數人的研究方向都是:
機器學習、數據挖掘之類。
此間競爭之激烈,諸如此類,雖未得其皮毛,也略見一斑。
AI企業痛點
當然,我說這些不是為了打擊大家的信心,而是要指出現在行業內的痛點:AI工程化。
人工智能發展到現階段,已經從實驗室中的算法走向了工程化應用的階段。但是算法落地并沒有想象中的順利,開始有越來越多諸如場景碎片化、應用成本高、實驗室場景到實際應用場景效果差距較大等問題被暴露出來,而這些也成為當前階段AI落地應用過程中新的痛點。
領域內高水平的paper都是公開發表的,除了少數的核心算法,人才濟濟的AI企業很難在算法性能上與友商拉開距離。那么AI企業想要商業化,想要創收,行業細分領域縱深成了決定成敗的重要因素。需要下沉到業務領域,真刀真槍地進行拼殺。
在技術突破-商業化-產品化-工程化的階段路線中,除了技術強,接下來還有很多路要走。誰能夠更好更快地把算法從實驗室中拿出來、賣出去;更好更快地將模型交付到業務場景,真正產生實際的價值,讓客戶滿意,誰才能活得更久。
對于Scientist/Researcher而言,技術可以是一篇論文、一項 ImageNet 競賽的冠軍、也可以是一個重要數值(比如人臉識別準確率)的突破;但在商務側來說,論文與冠軍并不實用,如果技術無法融進安防、汽車、金融等行業,變成切切實實的產品,客戶與合作伙伴就會拒絕買單。
對于AI企業來說,能否深入了解各行業的業務流程、業務規則、知識經驗,進而將技術能力轉化為業務解決方案創造價值,是發展的保障。
那么對于我們個人來說,應該如何發展呢?
0x02 AI研發
AI工程化
在《ML/DL科普向:從sklearn到tensorflow》一文中,我們談到:
…… 那么對于我們這些非算法崗位的人來說,就沒有辦法涉及這一領域了么?其實我認為,對于企業來說,對于AI人才的需求分為兩種:一種是學術界的牛人,發過大paper,有學術界比賽的結果的。公司需要他們去做算法研究,保持技術的領先性,在業內贏得口碑,這樣才能在領域內保持頭部領域。另一方面,人工智能早已不是一個概念了,企業需要把業務部門的算法落地的人,能夠快速、穩定、高效地把實驗室中的算法落實到生產環境中,解決實際問題的人。這就需要那些工程底子扎實、能夠實打實地寫代碼,并且對算法模型理解深刻,能夠快速將AI項目工程化、落地有產出的復合型人才。
還是基于這個觀點,我決定將自身的技能樹偏向企業需要的第二種人,也就是標題所提出的“AI研發工程師”。從實際的工程應用角度出來,focus人工智能項目落地的全流程以及解決方法,提高自己的AI工程化能力,以此作為個人核心競爭力。
AI項目全流程
網絡上很多文章描述的所謂“機器學習項目全流程”,例如:數據收集處理、特征工程、訓練模型、模型測試等等。這套流程對不對?對。但是遠遠不能滿足企業的需求。
AI項目是團隊創造出的具有商業價值的產品、服務以及交付產物。有著明確的需求、計劃、周期、成本、交付流程以及驗收標準。
以下以toB業務為例,對AI項目全流程進行簡單梳理。toC業務大體如此,只是將客戶替換成公司業務方即可。
初步需求溝通確認
POC階段
場景方案確認
建模開發階段項目詳細規劃數據處理特征工程建模系統研發
測試上線
0x03 核心競爭力&技能樹
核心競爭力
通過對AI項目全流程的介紹,我們將目光瞄準到“建模開發階段”的“系統研發”部分。雖然在上面只是一句話帶過,但是其中的工作量和技術含量不小。
提起機器學習,尤其是深度學習,大家可能會對諸如Tensorflow,Pytorch,Caffee的工具耳熟能詳。但其實在實際的機器學習的生命周期中,訓練模型(上述工具主要解決的問題)只是整個機器學習生命周期的很小一部分。
數據如何準備?如何保證線上線下一致性?模型訓練好了如何分布式部署?如何構建HA?需要批量處理還是實時處理?實時數據如何拼接?如何對模型服務進行監控、告警?做成PaaS還是MLaaS?
機器學習具有天然的Pipline特性,在企業需求中,大大小小的業務場景有眾多的模型,這些模型如何進行打包、處理、發布?離線訓練、批量預估、實施預估、自學習等任務類型交錯,不同建模工具Sklearn、Tensorflow,Pytorch構造的模型如何進行整合?開發框架Spark ML、Flink ML等如何協同、對接。生產環境如何進行擴展和伸縮?如何支持AB Test?
為了解決這些問題,新生的開源框架層出不窮:Google自研的對接Kubernets和Tensorflow的開源平臺Kubeflow;Spark團隊打造的ML pipelines輔助工具MLflow;雅虎提供的機器學習及服務平臺BigML;阿里巴巴推出的分布式機器學習平臺SQLflow等等。眾多廠商紛紛發力,目的就是解決AI工程化應用的痛點。
這些工作都是需要一大批工程師去完成。因此,我認為了解AI工程化場景、解決方案;熟悉AI項目流程、機器學習Pipline;掌握AI系統研發、服務部署上線能力的工程師將會逐漸成為AI團隊的中堅力量。
技能樹
之前鋪墊了那么多,既是梳理思路,也是為接下來的系列做一個開篇。按照我的初步計劃,技能樹大概包括(不分先后):
工程能力:
身為工程師首先要有工程能力,springboot/Netty/Thrift/等相關工具框架一定要掌握,微服務是機器學習平臺的基礎。
Spark SQL、Spark ML等更是大數據工程師用來做機器學習的利器,不但要掌握、更要從中抽象出流程和處理方法。
容器化:
docker和k8s現在幾乎是機器學習部署的必備技能,也是眾多平臺的基礎。
是重要的前置技能。
機器學習&深度學習:
不要求能夠手推算法、模型優化,但要能夠了解含義、上手使用,起碼要成為一名優秀的調包俠(也便于吹水)。
開源框架:
其實我最近打算學習kubeflow,并輸出學習筆記及總結實踐。
本文其實是這個系列的開篇。
當然,后續還有有調整。
0xFF 后記
其實這種類型的文章,比單純的學習筆記、技術文章難寫多了。一方面,拖延癥迫使我把難寫的文章放在后面寫,另一方面,強迫癥又迫使我一定要在系列前出一個開篇。其實寫到最后,總覺得核心部分還差點兒意思,沒有搔到癢處,這是因為目前我還沒有能力站在一個全局的角度對職業技術體系進行劃分,只能梳理出目前的規劃和看法。后續要還需和朋友們進行交流。
有些事情是一定要做的,縱觀一些大牛前輩,無一不是在正確的時候做了正確的事。明確自己的目標,在前進的道路上不斷微調自己的方向,這樣才能在這個競爭激烈的職業中生存下去。
接下來會有系列的技術學習筆記,考慮到學習的連貫性,前期可能是一些基礎的docker/k8s等系列,后期會研究一些開源框架。技術文章可能會枯燥乏味,知識點也缺乏新意,但是經過自己的整理和實踐,再加上自身的理解感悟,相信會不斷完善自己的知識體系。
最后留下一個互動問題:
大家是如何理解AI項目全流程?大家心中的“AI研發工程師”應該如何加技能點呢?
歡迎拍磚&評論。
作者的更多文章:
當我們談“業務”的時候,我們在談些什么
ML/DL科普向:從Sklearn到TensorFlow
總結
以上是生活随笔為你收集整理的AI研发工程师成长指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell中I/O重定向的用法笔记
- 下一篇: mysql8.0.11 安装顺序_mys