前幾天記不清在哪個平臺上刷到有人分享在微軟的工作分享常挚,讀完別人的分享后發(fā)覺這一類的工作分享還挺有意思磅网。因而也有了自己寫一篇類似工作分享的文章搭独。
大概網(wǎng)上搜了一下有沒有高通的工作經(jīng)驗分享曙聂,寥寥無幾偿枕。在知乎上能找到幾個相關的回答鸡捐,但是感覺都好官方话侧,就是從公司的創(chuàng)建背景講到上一次公司年會。還有一些分享美國高通的工作經(jīng)歷的闯参。上述我查到的這些分享都跟我自己的經(jīng)歷“削微”有些差距瞻鹏。
我目前在高通 AI 部門悲立,base 上海張江,入職差不多一年新博。對高通 AI 部門感興趣的同學可以繼續(xù)往下看正文薪夕。但如果讀者想了解高通的其他部門,可能我這篇文章不能提供太多有用的信息赫悄。據(jù)我所知原献,高通不同不能之間不管是工作能容還是工作風格和領導風格都有較大的差異。
我這篇文章的行文風格大概是:先簡明扼要的介紹一些可能大家最關心的問題埂淮,比如部門的工作內(nèi)容姑隅,工作氛圍,工作時間倔撞,公司福利讲仰,部門領導風格。然后才會寫一些自己的主觀工作體驗痪蝇,還有一些有的沒的所思所想鄙陡。
部門情況梗概
高通中國大概有包括 無線、VR躏啰、汽車趁矾、AI 等在內(nèi)的十來個部門(具體記不清了)。高通在國內(nèi)也有很多 base给僵,我知道的有 上海毫捣、深圳、北京帝际、西安蔓同。其中上海、深圳胡本、西安都有我們 AI 部門的同事(在這些地方準備換工作的同學都可以考慮一下)。
工作內(nèi)容
本部門主要的工作內(nèi)容是開發(fā)和維護高通的神經(jīng)網(wǎng)絡加速推理框架割卖。對高通比較了解的同學可能知道高通的驍龍芯片里有一塊專門的AI引擎叫 Hexagon Processor顽腾,對應華為海思的 NPU 和 聯(lián)發(fā)科的 APU 還有蘋果的 ANE绷蹲,雖說他們的最終目的都是AI加速,但是他們的具體實現(xiàn)加速的方法天差地別披粟。
有做 AI 加速芯片的公司基本都要做配套的軟件框架。普及率最高的應該是英偉達的 CUDA/TensorRt冷冗,然后就是一眾做手機芯片的守屉,比如華為的 HiAI, 聯(lián)發(fā)科的 NeuroPilot,蘋果的 CoreML蒿辙,三星的 Samsung Neural拇泛。而我們部門負責開發(fā)和維護的就是高通的 AI 框架:Snapdragon Neural Processing Engine(SNPE)/ (Qualcomm Neural Network)QNN滨巴。
有些同學可能對這種 AI 框架沒什么概念,簡單介紹一下他們是做什么的和怎么實現(xiàn)的俺叭。在 AI 這塊領域?qū)W習或者工作的同學肯定對 Tensorflow 和 Pytorch (或者 caffe恭取?)很熟悉了。也基本都用這些個框架訓練過一兩個模型熄守。那么訓練好模型之后怎么使用呢蜈垮?如果允許在線訪問的話就很簡單,讓一臺插有GPU的服務器來運行一次前向推理就行了裕照,如果財大氣粗攒发,甚至可以直接跑pytorch 腳本來獲取模型結(jié)果,通過大量的顯卡和機器進行負載均衡來達到降低延時的效果晋南。如果資源實在有限惠猿,沒幾臺服務器,沒幾張顯卡搬俊,又想盡量降低大量的模型推理工作花費的時間紊扬,那么可能需要用到 torch (或者 Tensorflow) 的 C++ 接口(libtorch)來實現(xiàn)推理過程。成功的用 libtorch 跑一次模型之后唉擂,推理效率可能還是不能達到我們的預期餐屎。然后在谷歌搜了一圈之后發(fā)現(xiàn)英偉達有提供一套針對自家GPU進行優(yōu)化推理的框架叫 TensorRt,然后就開始學習使用 TensorRt 來跑自己的模型玩祟。如果我們的需求只是在線部署腹缩,那這里基本就到頭了。但是如果我們要在沒有(英偉達)顯卡的環(huán)境中(比如手機空扎、汽車)使用模型藏鹊,那就很麻煩了。當然我們?nèi)f能的 cpu 啥事都能干转锈,如果不介意等一分鐘來獲取一張圖片的目標錨框的話盘寡,我們都可以丟給 cpu 來做。但是顯然我們不能給用戶提供這種分鐘級別的使用體驗撮慨。當然我們也可以縮小模型來提升推理效率竿痰,但是模型的精度就不能保證了。
所以各個芯片廠商都推出了專門做 AI 加速的產(chǎn)品砌溺。有了硬件當然也要有軟件支持并提供能夠調(diào)用這些 AI 加速芯片的接口給開發(fā)者影涉。所以簡單來說, AI 框架就是做這個事情:把我們用 pytorch/tensorflow 訓練好的模型運行在各個不同的 AI 加速芯片上面规伐,能讓我們高效率的獲取到模型結(jié)果蟹倾。
具體的實現(xiàn)方法有很多不同的路線,大概思路是載入源框架(torch)的模型(.pt/.script/.tf/.onnx),然后解析 weights 和 圖結(jié)構(gòu)鲜棠,然后根據(jù)載入的圖結(jié)構(gòu)構(gòu)建我們自己的圖結(jié)構(gòu)(為什么要構(gòu)建自己的圖結(jié)構(gòu)呢肌厨?因為各個框架對算子的支持和命名方式都是不一樣的,這里相當于做一次統(tǒng)一岔留,后面我們只要實現(xiàn)我們自己定義的圖結(jié)構(gòu)里面的算子)夏哭,然后根據(jù)自己的芯片提供了哪些接口(比如矩陣乘加運輸)來實現(xiàn)各個需求的算子。這只是最上層最直觀的一種解釋献联,落實到實現(xiàn)就會涉及到億點點細節(jié)竖配,不在這里贅述了。
希望看到這里的同學能對我們部門所作的工作有個大概的了結(jié)里逆。
工作氛圍
我本人所在的 Team 非常 nice进胯,直屬領導非常貼心,平時找他聊天很親切原押,辦事也很靠譜胁镐,安排任務也比較合理,我目前的評價是"特別好評"诸衔。部門總監(jiān)接觸不是很多盯漂,目前了解下來也是個為人和技術都不錯的大佬。
兩個詞概括我這一年在高通感受到的工作氛圍:輕松笨农,充實就缆。輕松是真的輕松,基本沒人會 push谒亦,除非真的是摸了一個月啥產(chǎn)出都沒有(ps. 這里真的有這樣的人)竭宰, 上下班不用打卡,偶爾遲到早退沒什么太大的問題份招,manager 在給我派活之前都會先問我的意愿切揭,先考慮誰比較感興趣,有感興趣的人先挑锁摔,有些活誰都不想做廓旬,那就輪著來,反正就是盡量讓大家都沒有不舒服的感覺谐腰。給的時間都是比較充裕的孕豹,幾乎沒有聽到過“***之前給我結(jié)果”,所以很輕松怔蚌。同時在高通這一年也是我學到最多東西的一年巩步,在進入高通之前我只會改參數(shù)旁赊,訓模型桦踊,然后導出 torch/onnx 模型調(diào)用幾個 C++ 接口進行推理。接觸到的東西很有限终畅,自己空余的時間也很不多籍胯。在高通這一年不僅看了很多 python 和 C++ 的框架代碼竟闪,而且自己的空余時間也多了,可以在玩游戲之余再看點李沐等大佬的視頻和技術博客杖狼,所以不僅在代碼層面炼蛤,在神經(jīng)網(wǎng)絡模型編譯和模型量化方面都有了很大的進步。所以真的就是輕松且充實蝶涩。
福利待遇
外企的福利向來不差理朋,年假 15 天(起,老員工最多20天)绿聘,病假 30 天嗽上,有一天額外的員工指定假期,這兩年 CEO 每年送4天指定日期假期(這個可能不是常有的)熄攘,一年有幾次團建(看部門)兽愤,團建基本是在工作日,除非是遠游挪圾。
零食咖啡啥的也有浅萧,不過花樣不多,就是一些餅干啥的哲思。
(疫情前)公司的制度是洼畅,每周有一天可以居家辦公,然而因為今年(2022)上半年的疫情也殖,我已經(jīng)半年沒去過公司了土思。居家辦公這個事兒,各個部門或者各個 Team 怎么處理還得看領導忆嗜,我領導就不是很 care己儒,你能保證產(chǎn)出的話,一周只來一天公司也行捆毫。
節(jié)假日福利也挺實用的闪湾,發(fā)的是福利點數(shù),一點等于一塊錢绩卤,每個節(jié)假日最少發(fā)1000途样,有個高通京東商城,基本上能買到日常用到的任何東西濒憋,攢幾個1000甚至可以買手機何暇、無人機、運動相機啥的都有凛驮。
薪資這塊就不多說了裆站,從互聯(lián)網(wǎng)大廠跳到高通來的同事,最好的情況是平跳,大多數(shù)是降薪來的宏胯∮鸬眨總的來說高通在外企里不算低但也不高。薪資這種東西還是得看自己的際遇肩袍,每個人的簡歷背景和運氣差別太多了杭棵,也不好一概而論。
一些想法
經(jīng)常聽到對外企的評價是:養(yǎng)老氛赐,清閑魂爪,邊緣業(yè)務。我這一年感受下來確實挺適合養(yǎng)老的(跟互聯(lián)網(wǎng)大廠比起來)艰管,如果沒有什么經(jīng)濟壓力的話(比如上海本地人)在這干到退休(如果沒被裁)應該挺舒服的甫窟。關于清閑,我上面提到過我個人覺得還挺充實的蛙婴,不過這種感覺應該是因人而異的粗井。對我而言,工作之余街图,在游戲/看劇之余能學些技術是最讓我覺得充實的時候浇衬。如果工作之余只玩游戲,會有點空虛餐济,但如果在工作之余只學這些枯燥的技術耘擂,又會有點boring。都不是我想要的狀態(tài)絮姆。不過話說回來醉冤,想要把娛樂和學習合理的調(diào)和在一起是挺難的一件事情,“我應該去看點書” VS “再玩億把/再看億集”篙悯,這種類似的心理博弈我想大部分人都深有體會蚁阳,通常我們都會讓右邊贏,我現(xiàn)在勉強能做到偶爾讓左邊贏一兩次鸽照。而且我正在努力讓左邊多贏幾次螺捐,這種博弈本身就挺有意思的,事后回過頭去看這些拉扯更有意思矮燎,前提是左邊至少要贏過一兩次定血,不然我們也懶得回頭看了。
關于邊緣業(yè)務诞外,就高通 AI 部門而言澜沟,我倒是沒有什么體會∠恳辏可能是因為高通的主要業(yè)務就在國內(nèi)茫虽,大客戶都是國內(nèi)幾家手機廠铝条,在幫大客戶解決問題的過程中,難免會接觸到一些不那么邊緣的工作席噩。Anyway,反正 AI 框架開發(fā)在我看來應該不算特別邊緣的業(yè)務贤壁。