左益豪:用程式碼創造一個新世界|OneFlow U

語言: CN / TW / HK

左益豪,一流科技工程師(實習),2022年本科畢業於北京郵電大學電子商務及法律專業,目前已保研到本校人工智慧學院。除了愛寫程式碼,他自稱,“琴棋書畫,樣樣不通,唱跳Rap籃球,完全不會,但偶爾會幫親朋好友維修電腦(誰說寫程式碼的都不會修電腦 [狗頭])。”

 

中學開始,他就把很多課餘時間花在學習程式設計技能上,沉浸在程式碼世界,讓他感受到擺脫現實物理定律的束縛和自由創造的滿足感。當然,最重要的是通過參與專案實踐獲得提升,在OneFlow期間,作為人生的第一份工作,他在程式設計技能、文件撰寫、工作方式等方面都收穫頗多,在他看來,這段獨一無二的經歷持續影響他在未來的學習和工作

 

以下是他的講述。 

 

 

1

從衡水中學到保研北郵

 

衡水中學,想必很多朋友都知道,它被人們一度視作“教育工廠”,我的高中就是在這裡度過的。儘管在初中時就在接受“衡中式教育”,但我一直不喜歡也不太適應這種典型的應試教育模式,初高中六年過得比較痛苦。

 

中學時,我就對計算機相關領域產生了很大的興趣,並計劃在大學裡學習計算機專業。高一,我參加了一段時間的資訊學奧賽,但後來發現和文化課程兩邊實在無法兼顧,還沒參加比賽就退出了,但這段時間對 C++ 和資料結構及演算法的學習更加深了我對計算機的興趣。高三瞭解到北郵在計算機專業方面的優勢,就把它當作高考目標。

 

填報高考志願時,基本全部是電腦科學與技術、軟體工程、網路安全之類的專業,根據分數我選了北郵的中英聯合培養的幾個專業,當時也想在研究生階段出國留學。最後就被調劑到“電子商務及法律(E-commerce Engineering with Law)”,這實際上是理工科專業,需要學習數學、計算機、電子資訊以及經管和法律類課程,不過光聽名字可能很難跟理工科聯絡起來,的確也經常引起誤解 [笑哭]。這是北郵和英國的 Queen Mary University of London 的聯合培養專案,大概是英國比較追求通識教育的緣故,這些專業在課程類別上都比較寬泛,不同於國內其他名為電子商務的專業。

 

研究生選人工智慧專業是自然而然的選擇,北郵校內的學習氛圍很濃厚,我在大一和同學做創新創業專案時接觸到了深度學習,後來上的一些課程,參加的創新創業比賽等都和深度學習、計算機視覺有很大關係,就逐漸對此產生了很大的興趣,另外從小就喜歡各種科幻類的電影、小說和遊戲,也算是一部分興趣來源。

 

於是,大三獲得保研資格後就決定攻讀人工智慧類的專業。對我來說,人生如此短暫,倘若不能做些自己喜歡的事情,就太遺憾了。

 

2

 

程式設計熱情和成就感

 

我的大部分程式設計技能都是自學習得的。接觸程式設計最早是在初二,那時候特別喜歡玩電子遊戲,也產生了按自己的想法創造遊戲的想法,於是就自己慢慢用百度搜索,瞭解到開發遊戲需要程式設計,之後就一點點搜尋如何學,用零花錢買一些書自己看。

 

那時,網路還沒有現在這麼發達,初中是寄宿制學校,每兩週大約會有一天半的假期,課程之外的書籍是嚴格禁止的。即使是寒暑假,也不能每天坐在電腦前,不然可能會被誤解為只是在玩,耽誤了學習,身邊也沒有能交流的人。雖然有著諸多的困難,但那時也慢慢地學習了一些 C 語言,那時英語水平也不高,還學了一些能用中文程式設計的易語言,一有機會就學著編寫一些十分簡單也基本沒用處的程式碼。

 

高一時參加過一段時間的資訊學奧賽,那時有老師講解 C++ 以及資料結構和演算法,雖然後來因為精力有限放棄了,但課程學習給這兩方面打下了一些基礎,最重要的是使自身的程式設計思維有了很明顯進步。在高考結束的暑假裡,為了開發 Android App 而自學了 Java,大學期間也有 Java 程式設計、網路程式開發等課程。Python 是在大一自學的,深度學習領域必會。因為課程和專案需要,也學習過 JavaScript 來開發網頁和微信小程式。

 

高二時做過一個自娛自樂小軟體,當年那份熱情和成就感至今還記憶猶新。當時在用電腦時感覺在桌面上建資料夾、放快捷方式的管理方式比較低效,於是使用 C++ 和 Qt 寫了一個簡易的程式&檔案啟動器之類的軟體。用動態的太陽系作為背景,太陽是所有專案的彙總,一級類別用恆星來表示,包括開發工具、系統工具、收藏的資料夾/檔案等。二級類別用恆星的衛星表示,當滑鼠指標懸停上去時,恆星和衛星會發生旋轉來顯示該類別的內容,另外用星星的排列顯示一些諸如天數倒計時之類的資訊。

 

當時,每 2 或 3 周只有一個 23 小時左右的假期可以回家。回到家有機會就邊學邊做,然後不斷完善,算上寒假大概得做了大半年,基本完成後,成就感相當強烈,感覺像造物主一樣自由地按自己的想法創造一個世界。那種在程式碼的世界裡擺脫現實世界中物理定律的束縛,目前只有寫程式碼時能夠感受到。

 

由於有著強烈的興趣,我願意把時間花在學習程式設計技能上面。在接觸得比較廣泛之後,會發現很多東西都是相通的,掌握了一種語言之後,其他的學起來也就很快,最重要的是多實踐,比如參與校企合作的專案,或是到 OneFlow 這樣的公司進行實習。

 

3

 

第一次實習在OneFlow

 

最早是在知乎刷到了有關 OneFlow 的介紹,高效能的 OneFlow 深度學習框架讓我印象十分深刻,也對此充滿了好奇。

 

當時是想尋找視覺演算法方面的實習崗位,瀏覽時恰好發現 OneFlow 在招聘這類崗位,與自己的意向非常契合,於是就毫不猶豫地投了簡歷。公司遠端實習給我帶來了很大便利,讓我有機會在寒暑假多陪伴家人。

 

進入 OneFlow 之前,自己只是在單方面的開源使用者,並沒有深入參加過其他的開源專案,對開源的瞭解也甚少,或者可以說從未體會到開源的精神以及工作方式。比如之前在使用 MMDetection 的過程中發現了 bug,由於感覺可能會很麻煩也並沒有去提個 PR,只是在本地 fix 後繼續用。

 

來到 OneFlow 之後,我瞭解到開源的精神和意義,也熟悉了開源專案的工作流程,能和全世界各地的開發者們共同為一個專案做貢獻還是很快樂。

 

我一開始是在OneFlow新手村,主要負責在雲平臺上開發專案。首先實現了使用 Oscar 模型來進行 Image Captioning 任務,還寫了一個可以線上推理的 Web Demo;其次是使用 Lightweight OpenPose 演算法來實現人體姿態評估的訓練和推理,有一個可以在瀏覽器中進行實時人體姿態評估的 Web Demo。後來,我還承擔了一些文件方面的工作,包括更新現有教程中的一些內容,撰寫實踐指南中的 《OneFlow 與 ONNX 互動》、《自動混合精度訓練》、《Activation Checkpointing》等教程。還有為 OneFlow 調整過 error message,更新 oneflow.to_global 和 oneflow.to_local 來支援任意型別的輸入,以及支援大模型的分片儲存和載入。另外,還為 LiBai 模型庫撰寫教程和視訊課程指令碼。

 

在框架方面,我最開始在課程中接觸到的 TensorFlow 2,後來也隨著趨勢轉到了 PyTorch。現在體驗了 OneFlow,它和 PyTorch 基本對齊的特點使得學習和遷移成本很低,還有 OneFlow 的 Global Tensor 和 SBP 等分散式方面的優勢,的確要比其他深度學習框架方便很多,在如今的大模型趨勢下,OneFlow 在這方面的創新使得分散式訓練的門檻大大降低,是分散式訓練領域的“領頭羊”。

 

在工作交際方面,我自己和陌生人相處起來比較慢熱,不是很擅長和別人打交道,但在這裡工作完全沒有社交壓力。雖然在整個實習期間都沒有機會和同事們見面,但實際上大家都很熱情,袁老師非常平易近人,姚遲許嘯宇兩位導師給了我很多教導和包容,在此感謝。

 

在 OneFlow 實習實際上是我人生中第一份正式的工作,讓我在程式設計技能、文件撰寫、工作方式等方面的收穫相當大,意義非凡。另外,在工作中也意識到自己還很菜,接下來的研究生階段還要更加努力才行。

 

當你看到這篇推送時,我已經準備繼續去完成學業了。在此誠摯祝願 OneFlow 蒸蒸日上、大展巨集圖;祝福各位同事工作順利、心想事成!再會!

 

其他人都在看

歡迎體驗OneFlow v0.8.0:http://github.com/Oneflow-Inc/oneflow/

 


本文分享自微信公眾號 - OneFlow(OneFlowTechnology)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。