忘記密碼
算法崗可謂人工智能領域最受歡迎的崗位之一,然而不少人對于算法崗真正的工作內容和技能要求卻不是很了解,對于算法崗的面試技巧也只局限于在簡歷上“堆項目”“放頂會”。
春招已至,面對心儀的崗位,上海人工智能實驗室OpenDILab團隊傾囊而出,為大家詳解AI算法研究員究竟在做什么,以及一名合格的AI算法研究員應有的素質。
【AI算法研究員與AI算法工程師的區別】
算法崗一般可以細分為研究和工程兩類崗位。首先,必須要為大家解釋一下這兩種崗位的區別。
AI算法從研究到落地,需要多個崗位、不同職能的角色共同努力才能完成,單打獨斗難以推動企業級別的AI產品化。而其中和技術息息相關的崗位就是AI算法研究員和AI算法工程師。
AI算法研究員
相比之下,AI算法研究員就更側重于面對未知問題找到解決方案。同樣的例子,算法研究員需要思考的是,這三種模型各自發揮作用的核心思路是什么,它們針對該問題的數據分布和hard case的綜合表現如何,該如何取舍。更重要的是結合這些模型的設計思路,以及個人在該研究領域的經驗,對現有模型和方法進行調整,甚至提出新的解決方案。
這就要求算法研究員有扎實的數學功底、機器學習的理論素養和對某個研究領域的深入了解,而且對問題的前沿拓展能作出快速而準確的把握。更高階的要求,是研究員自己有實力作為這一研究領域的帶頭人,提出最新最有效的算法了。
AI算法工程師
AI算法工程師的工作內容更接近于一般的軟件開發,其主要的技能都是圍繞算法的落地部署而展開,但這并不意味著只要會做開發寫代碼就可以勝任算法的工程部署。要知道,真正行之有效的AI算法不是靠數據、算力堆砌而成,而是要實現在有限的資源和生產環境的限制下,可以最大化地發揮其優勢。
因此AI算法工程師很重要的一個能力,就是將深度學習常用算法在各種環境中進行部署。例如,解決一個生產問題有三種方案,算法工程師需要依照經驗,判斷實際生產環境中運行效率更高的模型結構,或依照標準的測試流程,快速得出結論。
算法工程師除了部署能力外,也應該對各類主流深度學習算法的計算圖和實現細節有充分的了解,同時充分掌握對應用平臺的計算特點、擅長處理的計算流程和應盡量避免的計算模式。
【AI算法研究員的關鍵技能是什么】
優秀的AI研究員擁有兩個最重要的“秘密武器”——Idea和Reality。既要有思路,又要能落地。
所謂Idea,即研究員從已有方法出發,結合實際問題的表現和特點,找到最合適的算法或修改思路。這就要求AI算法研究員要深入理解算法的內核,而不是成為“調包俠”,直接使用現成代碼來“跑跑看”。
AI算法研究員需要特別關注解決問題思路的可解釋性,以及邏輯的連貫性。
例如,對于方法A,研究員需要根據自己的理解,設計一些實驗來評估不同的模塊和流程究竟起到了什么作用,所呈現的過程和結果是否如算法的提出者所言而表現一致。針對一些學術方法,研究者是否講清楚了每一部分的設計思路,是否提供了關鍵細節和核心參數,是否實驗完善等。
通常來說,根據問題難易,實際數據分布與學術工作所用的數據集會有一定差距。那么,怎樣將現有方法的優勢應用到實際環境中來,這都是需要研究員解決的問題。
所謂Reality,指的是將Idea轉換為現實可行的算法的能力。這包括了算法在工程上的復現和模型的訓練調優。
前者需要AI算法研究員具備基本的工程能力,尤其是一些開源算法在不同平臺、不同計算庫下會有細微的差距,研究員需要有甄別這些差異的能力。
至于后者,很多人會把這一步理解為“煉丹”。但其實,所謂“煉丹”能力的好壞,直接決定了一個研究員的生產效率。
簡單來講,“煉丹”能力可以形容為在相同數據集、相同算、相同性能指標下(包括模型表現和運算速率),不同研究員能“煉”出怎樣水平的“丹”。
雖說煉丹一般是拿來調侃深度學習模型的不確定性和不可解釋性,但好的研究員總有一些積累下來的經驗或獨到的理解可以在這一環節脫穎而出。研究員訓練模型的本領越強,就越能專注于算法流程和模型結構設計上,大大提升了研究任務的生產效率。
【優秀AI算法研究員的自我修養】
既然對算法研究員有多角度、高標準的要求,那一名優秀的AI算法研究員應當具備哪些素質呢?
首先是過往經驗。
主要體現在過往研究經歷中的貢獻度、研究深度和實現能力。對自己在研究項目中完成的部分的重要性要有充分而準確的認識。研究深度體現在對算法有清晰的邏輯鏈條和思路,對每件設計和每次嘗試都能知其所以然;實驗設計合理,結論扎實;即使實驗效果不好也能總結出原因和后續的改進方向。第三點就是對項目細節的掌握,不論是關鍵參數的調節,還是一些實現和訓練技巧,都是應該掌握的細節。
其次是關鍵技能。
當下,AI技術正向著前所未有的深度與廣度發展,所以通過簡單看一些技術博客,跑跑開源代碼顯然不能滿足要求。AI算法研究員要磨煉自己的算法基本功、多讀論文、多思考,建立起一套利用算法解決問題的方法論,并多參與相關方向的工作。注重積累,并能將經驗和技能同時遷移到相關問題上,要具備這樣的能力,需要有扎實的算法功力,也需要多涉獵其他領域解決問題的思路,做到融會貫通。
最后是工程實現能力。
實際上,這里談到的“工程”能力和平常刷題、寫代碼的能力是兩個概念。工程能力是駕馭代碼解決問題的能力,而非對代碼多么熟悉。因此除了一定量的刷題,優秀的AI算法研究員應當對通用的編程思想,如數據結構的設計、面向對象編程、并行化的效率優化思路等有所認知。其實有時候算法題卡住是很正常的現象,只要能夠按照正常的解決問題的思路去作出嘗試即可。總的來說,工程實現能力考察的維度應該是“思路>方法>實現”,對API的使用和語法上的關注度反而相對更低。
OpenDILab(開源決策智能平臺)于 2021 年 7 月 8 日世界人工智能大會的開幕式和科學前沿全體會議上正式發布。該平臺作為上海人工智能實驗室開源平臺體系OpenXLab的重要組成部分,是國際上首個覆蓋最全學術界算法和工業級規模的決策AI平臺,具備一套完備的決策 AI 訓練與部署框架,自頂而下涵蓋了包括應用生態層,算法抽象層,異步分布式管理層和最底層的分布式執行層,適配從單機到萬 CPU/GPU 聯合訓練的全尺度調度系統優化。
具體開源代碼實現詳見 GitHub:https://github.com/opendilab/