算子開發到推理加速,一位00後開發者的“升級打怪”之旅

商業科技有我讀 2024-04-28 05:43:49

兩年多前,鄭輝還是一個即將畢業的大四學生,每天沉迷在代碼的世界裏,忙著准備研究生複試,從未對AI有過太多想法。

沒有人會想到,兩年後的鄭輝已經是一位資深的AI開發者,他獨立開發的NonZero算子被合入異構計算架構CANN主線,參與開發的深度學習框架降低了大模型訓練的門檻,目前正在做大模型分布式推理加速,希望可以幫助其他開發者在生産環境中高效部署在線推理服務。

在昇騰AI的生態裏,像鄭輝這樣爲大模型浪潮默默貢獻自己力量的開發者不勝枚舉。他們還不是世界的“主角”,卻在用自己的方式改變著世界。

01 “導師安排的第一個項目”

時間回到2022年4月,因爲優秀的筆試成績,鄭輝順利進入到杭州電子科技大學的研究生複試。當導師問及有沒有感興趣的研究方向時,鄭輝分享了自己解決Bug的經曆,第一次接觸到了分布式機器學習。

同樣是在2022年4月,昇騰AI開發者創享日在西安舉行,正式發布了“昇騰衆智計劃2022”,推出了包含算子、模型開發、系列創新應用在內的4000多個任務,杭州電子科技大學正是簽約合作的高校之一。

剛進實驗室的鄭輝,由此被導師安排了第一個項目——使用C++開發NonZero算子與調優。

深度學習算法由一個個計算單元組成,這些計算單元被稱爲算子,可以理解爲實現特定運算邏輯的代碼模塊,比如文本生成、翻譯、情感分析等任務。一個優秀的算子不僅可以提高模型的效率和性能,還能夠降低模型的資源消耗,在相同的計算資源下完成更多任務。

因爲算子在模型中扮演了重要角色,自己也是第一次做類似的項目,鄭輝心裏泛起了嘀咕:“我的能力夠不夠,最後能不能做好,會不會影響別人的進度?”向實驗室的師姐請教後,鄭輝“硬著頭皮”接下了任務。

爲了學習算子開發的知識,鄭輝在B站上看了不少視頻課程,發現昇思MindSpore上有詳細的開發文檔和現成的算子庫,遇到不懂的問題可以直接和昇騰AI的工程師溝通,逐漸有了把項目做好的信心。

讓鄭輝印象深刻的是:“開發算子時看到代碼裏已經有一個for循環,不理解爲何還要去實現for循環的並行,在我看來收益並不大。但昇騰AI的工程師告訴我,就算是一個微小的提升,在龐大的數據面前也會産生有價值的收益。”

經過近兩個月的鑽研,鄭輝提交的PR被審核通過,通過引入Parallel.For循環實現了算子開多核,可以進行多線程提速,讓昇思MindSpore的NonZero算子有著不遜于Tensorflow和Pytorch的精度,目前代碼已合入CANN主線。

相較于最後的結果,鄭輝認爲自己從過程中獲得了更大的價值:“算子開發是我的第一個項目,經過算子的需求分析、性能分析、開發、測試、性能優化等一整套開發流程,讓我深入了解了大模型的內部運行機制,包括數據流、計算圖和並行計算。更重要的是,讓我有勇氣去承擔更大的項目,每次遇到困難時,總會勸自己試一試,不試試怎麽知道自己不行,萬一成功了呢。”

兩個月的時間並不長,但讓鄭輝完成了從懵懂少年到“衆智開發者”的蛻變,同時也印證了昇騰AI發起衆智計劃時的構想:通過彙聚産業界智慧和力量,加速基礎軟件創新突破,共促多樣性計算産業發展和生態繁榮。

02 “難點在于找到應用場景”

喜歡琢磨事的鄭輝,不想在象牙塔裏做一個學術派,而是在項目中解決問題。在他的認知裏,人工智能落地應用最大的難點已經不是技術實現,而是場景的選擇,怎麽讓生成式AI在更多場景中發揮價值。

鄭輝的想法並非沒有道理,AI工程化早已是一個熱門課題。

即使是谷歌這樣的互聯網“頭羊”,AI科學家和工程師們也常常會遇到“開發一周,上線三月”的情況,需要對模型花費數個月的時間進行魯棒性、數據時序穿越、線上線下一致性、數據完整性等各個維度的排查。能否爲業務場景帶來更好的效果、更大的價值,將是AI走進千行萬業的關鍵。

除了算子、深度學習框架等基礎開發,鄭輝不願錯過任何一個將AI在場景中應用的機會。昇騰AI創新大賽2023的活動發起後,鄭輝毫不猶豫地參與其中,甚至沒有選擇自己有過項目經曆的昇思賽道,而是更有挑戰性的應用賽道。

“我在團隊中是主要負責場景的選擇,以及整個船舶監測系統平台的設計。像智慧海防監測這樣的場景,對數據安全有著極高要求,特別適合運行在軟硬件一體的國産生態上。所以我們基于昇騰算力平台,將AI應用于海洋漁船作業場景,通過預測漁船航行線路,來提高安全保障。”

不同于一些爲了比賽而比賽的現象,昇騰AI創新大賽2023已經結束了半年,鄭輝所在的小組仍在繼續推進項目:“今年將不再局限于部分地區的港口,計劃將沿海各省的數據都納入範圍,我們的目標是在全國沿海城市實現這個項目,通過整合更廣泛的一個數據資源,爲出海漁船構建一道隱形的安全防線。”

很多人說2023年是“生成式AI元年”,各行各業都在訓練自己的大模型。可“大煉模型”終歸只是AI走進産業第一步,在現實和智能之間,仍然橫亘著一片鮮有人涉足的“荒海”,需要千千萬萬的開發者去扮演“渡舟”的角色,通過一個個落地應用的項目或産品,照亮千行萬業的智能化之路。

正在讀研二的鄭輝,某種程度上讓外界看到了中國AI的希望所在。

就像在“漁船航行線路”項目中,鄭輝特意提到了後續的商業化問題:“我們可以和保險公司合作,在他們的風控體系中增加漁船的航行線路,在給漁船提供金融服務的時候,有一個更全面的風險分析。”

興趣使然的開發者,總會有激情消退的時候;能看到商業機會的開發者,才會是理想的“渡舟”,最開始也許只是一條“木筏”,可只要找到了商業化的路徑,“木筏”就會一步步進化成舢舨、帆船、貨輪,載著更多場景駛向智能化的彼岸。

03 “讓大模型的推理快起來”

因爲算子開發的機會,鄭輝踏入了人工智能的河流;因爲昇騰AI創新大賽2023,鄭輝認識到了場景應用過程中的種種痛點。曾經對AI“不太感冒”的大男孩兒,慢慢有了更多的想法,開始做一些更有挑戰性的項目。

比如ChatGPT剛火的時候,鄭輝就跑去問各種問題,發現ChatGPT的回答速度很慢,認爲“這種體驗感大大降低了用戶的興趣”。原因在于,基于Transformer的大模型具有多次叠代的特性,導致在推理方面存在負載不均衡、算力資源無法充分利用等問題,在大模型的實際使用中,推理速度往往成爲制約性能的一大瓶頸。

過去一年多時間裏,大模型訓練始終是技術圈的焦點,其實推理加速比訓練加速更難。訓練加速主要受數據並行性和模型並行性的影響,而推理加速更多地受到模型結構、計算圖優化、內存訪問、實時性等方面的影響,需要在短時間內處理大量數據,而且要求極低的延遲。

爲了解決大模型推理問題,華爲2012實驗室和杭州電子科技大學聯合組建了“攻堅小組”。鄭輝主動向導師請纓,參與了MindSpore Serving的研發,旨在幫助開發者在生産環境中高效部署在線推理服務。

不同于外界降低精度來提升推理速度的做法,鄭輝的策略是實現並優化Fastserve論文,通過多級請求等待隊列,將不同請求劃分到不同的等待隊列,實現搶占式調度用于降低請求延遲、饑餓調度用于喚醒低優先級請求、主動式Kvcache管理用于充分利用算力資源,在提高推理服務系統吞吐性能的同時,降低請求的平均完成時間。

“如果沒有最初做算子開發的經驗,恐怕也不敢去做大模型的推理加速。從算子的角度看大模型,推理加速其實就是對算子的優化,然後利用算子就行腳本編寫,從而實現推理加速和吞吐量的提高。”鄭輝回憶道。

和一個人做算子開發的經曆相比,與團隊成員協同完成Fastserve策略的過程,讓鄭輝對團隊合作有了更深刻的認識:“一個人可以走的更快,但一群人可以走的更遠。個人在團隊裏好比一顆齒輪,紮實的技術深度就是齒輪駐紮在一台龐大機器裏的深度,協作能力好比齒輪的邊緣,同事的配合會使我這顆齒輪的轉動更順利。”

對于23歲的鄭輝來說,加入AI開發的時間並不算長,卻走出了一條典型的成長路線:因爲各種機緣接觸到了昇騰AI生態,開始了在AI世界的“升級打怪之旅“,起步時還有些生澀,但通過一個個項目中不斷發現問題、解決問題,對場景和技術理解的深度不斷提升,不斷攀登更高的山峰。同時在一次次碰撞中,學會了高效協同,集衆智、合衆力去解決更複雜的難題。

04 結語

以夢爲馬的奔跑,終將成就熠熠生輝的人生。

正是像鄭輝這樣有技術、有想法、有商業嗅覺的年輕人,以一種無畏向上的精神踏入人工智能賽道,沉浸在代碼的世界裏揮灑汗水,用智慧和毅力解決了一個又一個技術問題,讓我們看到了AI走進千行萬業的希望。

0 阅读:3

商業科技有我讀

簡介:感謝大家的關注