OpenAI 共同創辦人 Greg Brockman《我如何成為機器學習實踐者》翻譯文

2023年11月20日

💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

今天微軟執行長 Satya Nadella 發文表示 Sam Altman 與 Greg Brockman 將與數個 OpenAI 員工一起加入微軟新成立的事業體。在 Sam Altman 被 OpenAI 董事會移除執行長職位後,共同創辦人 Greg Brockman 第一時間宣佈自己辭職同進退,現在兩人則將再度一起開啟一個嶄新的事業。

事實上,Sam Altman 幾年前曾寫過一篇文章,講述為什麼 Greg Brockman 是理想的共同創辦人,在該文的開頭 Sam 這樣寫「很多人問我理想的共同創辦人長什麼樣子,我現在有答案了,Greg Brockman 就是理想共同創辦人的樣子」。

Greg 在共同創辦 OpenAI 前,是 Stripe 的技術長,他過去的專長是軟體後端的基礎設施 (infra) 與架構 (architecture)。OpenAI 雖然是研究實驗室起家,但最開始就強調產品化,因此 Greg 在軟體設計與開發的專長讓他能協助搭建起 OpenAI 早期的系統架構。然而 OpenAI 畢竟是做 AI 研究的,因此對 AI 領域的了解是不能少的。

Greg 從傳統軟體工程師,轉向機器學習領域的學習路上,也一度信心低落。他幾年前撰寫了《我如何成為機器學習實踐者 How I became a machine learning practitioner》一文 (原文在此),紀錄了他的心路歷程。我們推薦所有想轉職的人,即使不是要轉去機器學習領域,都很值得花時間讀這篇文章。於是我們決定翻譯成中文跟大家分享。

翻譯這篇文的時候,真的很佩服 Greg 的努力、執行力,以及謙卑的心。他高中時拿國際奧林匹亞銀牌,大學錄取哈佛與麻省理工學院 (MIT),甚至當過估值超過五百億美元的 Stripe 的技術長,聰明才智絕對是少不了,但他還是在文中分享了他在轉領域所遇到的挫折,以及如何克服這些挫折。

--- (以下是我們翻譯他所寫的《我如何成為機器學習實踐者》一文) ---

在 OpenAI 的前三年,我一直夢想成為一名機器學習專家,但在往這個目標邁進的路上,一直很沒有太多進展。然而,在過去九個月,我終於實現了轉往機器學習領域的目標。這個過程雖然困難,但並非不可能,我相信大多數擁有良好程式能力,並願意去學習相關數學知識的人,都一定都能做到。網上有許多供你自學技術的課程,然而在這個過程中,我的最大阻礙,其實是我的心理障礙 — 要接受自己再次成為初學者。

早些年

在 OpenAI 的創立原則之一是研究 (research) 和工程 (engineering) 同等重要,我們的目標是打造出,能解決之前被視為不可能解決的任務的實用系統,因此我們需要研究與工程兼具 (事實上,我們團隊有 25% 的人主要運用自己的軟體開發技能、25%的人主要運用機器學習技能,還有 50% 的人則是兩者兼用)。所以從 OpenAI 創立的第一天起,我的軟體開發技能就一直很受用,但這也導致我一直拖延著學習我渴望習得的機器學習技能。

在協助建立 OpenAI Gym 之後,我參與了 Universe 專案。當 Universe 專案接近尾聲時,我們決定開始著手進行 Dota 專案,而我們需要有人把這個遊戲,在開始機器學習前,先轉變成一個強化學習 的環境。

Dota

在沒有原始碼存取權的狀況下,把 Dota 這種複雜的遊戲轉變成研究環境,是一項令人興奮的任務;每當我克服一個新的難題時,團隊的興奮和肯定讓我深感滿足。我掌握了如何突破遊戲的 Lua 沙盒、如何在 Go GRPC 伺服器中使用 LD_PRELOAD 來程序化地控制遊戲、如何逐步將整個遊戲狀態轉儲到 Protobuf,以及如何構建一個 Python 程式庫和抽象層,以適應未來可能會使用的許多不同的多代理配置。

但與此同時,我感到有點茫然。在 Stripe,雖然我更著重在基礎設施解決方案,但我可以在任何地方進行更改,因為我非常熟悉產品得程式碼。只是在 Dota 專案中,我只能透過軟體的視角來看待面對的問題,有時這意味著我試圖解決一些,只要透過稍微不同的機器學習方法就可以避免的困難問題。

我希望自己能像團隊中的 Jakub Pachocki 和 Szymon Sidor 那樣,他們對 Dota 機器人的核心突破做出了貢獻。他們挑戰了 OpenAI 內部普遍認為強化算法無法擴展的觀點。他們寫出一個名為 Rapid 的分散式強化學習框架,大約每兩週就指數級擴展一次,至今還沒有到達它的極限。我希望能夠像他們那樣,做出結合軟體和機器學習技能的關鍵貢獻。

在 2017 年 7 月,我的機會終於來了。在軟體基礎設施穩定後,我開始了一個機器學習專案。我的目標是使用行為複製,來從人類訓練數據中教導神經網絡。但那時的我,還沒有準備好像初學者一樣重新學習。

我不斷被那些細碎的工作流程細節所困擾,這讓我不確定自己是否有進展,比如不確定某個實驗使用了哪些程式碼,或是意識到我需要和上週的某個結果進行比較,但上週的我並沒有妥善存檔。更糟的是,我不斷發現一些小錯誤,這些錯誤弄亂我的實驗結果。

我開始對自己所做的沒有信心;但更糟的是,其他人卻有。其他人常提到從人類數據中進行行為複製有多困難。我總是確保自己有糾正他們,說我是新手,這可能更多地反映了我的能力,而不是問題本身。

當我的程式碼終於被合進到機器人後,我短暫地感覺一切似乎都值得了。Jie Tang 用我的成果當做 creep blocking 的起點,然後用強化學習進行了微調。不過沒多久後,Jie 就找到了一種不使用我的程式碼就能獲得更好結果的方法。我感到自己的努力一無所獲。

從那以後,我再也沒有在 Dota 專案上嘗試過機器學習。

暫停

2018 年,我們在國際賽事中輸掉兩場比賽後,多數人認為我們的方法已達極限。但我們從數據中得知,其實我們離成功並不遠,只差在需要更多的訓練。這意味著專案需要我參與的時間減少了,到了 2018 年 11 月,我覺得我有大約三個月的時間,來冒一點險。

當我有腦中有個明確想要打造的目標時,我學新東西會學得最快。在那三個月,我決定嘗試建立一個聊天機器人。我開始自學我們為 Fellows 計劃開發的課程,只選擇與自然語言處理相關的內容。例如,我寫了並訓練了一個 LSTM 語言模型,然後也寫了一個基於 Transformer 的模型。我還研究了信息理論等主題,並閱讀了許多論文,仔細琢磨每一行,直到我完全搞懂為止。

進展雖然緩慢,但這是我預料之中的。在那段期間,我並沒有進到心流狀態中。這讓我想起剛開始學習程式時的感覺,我一直在想,要達到精通感覺,到底需要多少年。老實說,我不確定自己是否最終能精通機器學習。但我仍舊繼續努力,因為……老實說,因為我不想只懂專案的一部分。我想清楚地了解全貌。

我的個人生活也是讓我繼續前進的重要因素。我開始和一個讓我覺得就算我失敗了也沒關係的人交往。我們在一起的第一個假期時,我一直在為機器學習煩惱,但無論我們錯過多少原本計劃好的活動,她一直都陪在我身邊。

這時迎來了一個重要的概念性突破,我克服了我在 Dota 專案中,過於膽怯而不敢去做的事情:對別人的機器學習程式碼進行實質性的改變。我嘗試對我找到的聊天數據集上的 GPT-1 進行了微調,並添加了我自己的原創的程式碼。但當我嘗試用它來生成更長的訊息時,它變得極其緩慢,慢到我的挫折感超過了我的恐懼,我實作了 GPU 快取,而這個改變影響了整個模型。

我反覆地嘗試了數次。幾天後東西終於能動起來後,我意識到我學到了一些我之前認為不可能的東西:我總算理解了整個模型是如何構建的,我的理解深入到程式碼庫,如何優雅處理 TensorFlow 變數範圍這種微小的風格細節。

重新開始

經過三個月的自學之後,我覺得自己準備好參與一個真正的專案了。這也是我第一次感覺到,我能從 OpenAI 的許多專家那裡獲得幫助,當 Jakub 和我的共同創辦人 Ilya Sutskever 答應指導我時,我感到興喜若狂。

我們開始獲得非常令人興奮的成果,Jakub 和 Szymon 全職投入了這個專案。每當我看到他們在我發起的機器學習程式碼庫中提交新內容時,我都感到非常自豪。

我開始感覺到自己是有能力的,雖然我還沒有達到精通。這實際反映反映在,我能夠激勵自己專注於進行機器學習工作的時間上,現在我大約 75% 的寫程式時間,是在機器學習上。

這是我第一次感覺自己在正軌上。最開始,我被看似無窮無盡的新機器學習概念所淹沒。在接下來的六個月,我意識到我可以在不用學習全新基礎的情況下取得進展。雖然我仍然需要在許多方面累積更多經驗,例如初始化一個網絡或設定學習速率計劃;但現在的我能夠一步步地完成它們,不再感到自己不可能做到的。

從我們的 Fellows 和 Scholars 計劃中,我知道具有線性代數和概率基礎的軟體工程師,只需幾個月的自學就可以成為機器學習工程師。但在過去不知為什麼,我總覺得自己個例外,覺得自己沒辦法學會。但我錯了,即使我人身在 OpenAI 的中心,如果我不願意再次成為初學者,我將沒有辦法轉變。

你也很可能不是例外。如果你想成為深度學習實踐者,你也可以做到。你需要給自己空間和時間去失敗。如果你從足夠多的失敗中學習,你會成功的——而且這可能比你預期的要快得多。

在某些時候,讓自己被現有專家圍繞是很重要的。在這一點上,我非常幸運。如果你是一位到達這一階段的優秀軟體工程師,請記住,有一種方法可以和我一樣被這些專家圍繞 — 加入 OpenAI。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們