#Karpathy
撐起AI半邊天的Andrej Karpathy大神親授:如何成為任何領域的專家?
在當今這個知識爆炸、技術飛速迭代的時代,如何高效學習並掌握一門技能,直至成為專家,是許多人職業生涯中的核心命題。所以,我們今天來講講Andrej Karpathy。這個名字在AI界可謂如雷貫耳。作為OpenAI的創始成員之一、前特斯拉人工智慧總監,以及史丹佛大學著名深度學習課程CS231n的設計者和首席講師,他的職業履歷星光熠熠,充滿了傳奇色彩。Karpathy不僅在學術研究和工業應用上取得了卓越成就,更是一位熱衷於分享知識的教育者。他提出的許多學習方法和職業建議,因其深刻的洞察力和極高的實踐性,在科技圈廣為流傳,被無數人奉為圭臬。早在2020年,Karpathy就曾分享過一個看似簡單卻蘊含深意的三步框架,為有志於成為專家的人們指明了一條清晰的道路。Karpathy的核心建議主要包含以下三點:1,項目驅動,深度優先:放棄“廣度優先、自下而上”的傳統學習模式,轉而通過完成具體的項目進行“按需學習”,實現縱向的深度積累。2,教學相長,自我沉澱:用自己的話去教授或總結所學,這是檢驗和鞏固知識的最佳方式。3,對標自己,持續成長:永遠只和過去的自己比較,而非他人,專注於個人的持續進步。這三條建議看似樸素,卻直擊學習的本質。我們一條一條細品。01. 項目驅動深度優先你是否也曾有過這樣的經歷:為了學習一門新技術,收藏了無數的教學、購買了堆積如山的專業書籍,試圖從最基礎的理論開始,建構一個全面的知識體系。然而,這種“廣度優先”的學習方式,往往會讓我們陷入理論的汪洋大海,迷失方向,最終因缺乏實踐和正反饋而半途而廢。Karpathy對此提出了截然不同的見解:以項目為導向,進行“深度優先”的學習。也就是說,我們應該首先選擇一個具體、可執行的項目,然後在完成這個項目的過程中,去學習所需的知識點。這種“干中學”(Learning by Doing)的方式,能夠將學習與實際應用緊密結合,極大地提升學習效率和動力。在Karpathy廣為流傳的博文《神經網路訓練秘籍》(A Recipe for Training Neural Networks)中,他詳細闡述了如何一步步建構和最佳化一個神經網路模型。https://karpathy.github.io/2019/04/25/recipe/這篇文章本身就是項目驅動學習的絕佳範例。他沒有一上來就羅列艱深的數學公式,而是將整個過程分解為一系列可操作的步驟,比如:與資料融為一體:在寫任何程式碼之前,花大量時間去觀察和理解你的資料,尋找其中的模式和異常。搭建端到端的骨架:先用一個最簡單的模型跑通整個訓練和評估流程,確保你的管道是暢通的。過擬合:然後,嘗試讓模型在小批次資料上達到過擬合,以驗證模型的容量和程式碼的正確性。正則化與調優:在確認模型能夠學習後,再逐步引入正則化技術,調整超參數,提升泛化能力。這套流程的核心思想就是迭代和驗證:從一個最小可行性產品(MVP)開始,每一步都進行驗證,確保根基牢固,然後再逐步增加複雜性。這種方法不僅適用於訓練神經網路,也適用於學習任何新技能。例如,如果你想學程式設計,可以從搭建一個簡單的個人網站開始;想學資料科學,可以從分析一份你感興趣的公開資料集入手。在解決實際問題的過程中,你會自然而然地去學習HTML/CSS、Python庫或統計學知識,這些知識點因為有了明確的應用場景,而變得不再枯燥。在另一篇極具影響力的文章《博士生生存指南》(A Survival Guide to a PhD)中,Karpathy進一步強調了“深度”的重要性。他將博士生涯比作一次長達約10400小時的深度探索,而這恰好與馬爾科姆·格拉德威爾提出的“一萬小時定律”不謀而合。https://karpathy.github.io/2016/09/07/phd/Karpathy認為,博士的核心目標,就是在某個非常細分的領域裡,通過深度鑽研,成為世界級的專家。他建議研究者要選擇那些“肥沃”的領域,即有足夠深度和廣度,能夠讓你產出一系列相互關聯的研究成果。同時,要勇於挑戰那些比當前問題難2-3倍,但重要性高10倍的問題,避免在細枝末節上進行微小的改進。這一思想同樣適用於非學術領域。正如Karpathy所說,如果一個人的一生可以專注投入,大約能成為15個領域的專家。因此,與其將精力分散在無數個淺嘗輒輒的領域,不如選擇少數幾個你真正熱愛的方向,進行深度挖掘。在一個狹窄的領域裡做到頂尖,遠比在多個領域都表現平平更有價值。02. 教學相長自我沉澱掌握知識的第二大支柱,是主動複述和知識重構。僅僅是被動地輸入資訊,知識的留存率會非常低。而通過“教”與“寫”的方式,將所學內容用自己的語言重新組織和輸出,則能極大地加深理解,發現知識盲區。這與諾貝爾物理學獎得主理查德·費曼所倡導的“費曼學習法”不謀而合。給本科生的建議:主動復現,而非被動閱讀Karpathy在給本科生的學習建議中提到,“閱讀和理解”與“能夠復現內容”是完全不同的兩件事。他鼓勵學生在學習後,合上書本,嘗試獨立推導公式或證明,以此來檢驗自己是否真正掌握了知識。他還建議,學習初期可以獨立思考,建立自己的理解體系;後期則可以與他人協作,通過向同學解釋概念,來鞏固和深化自己的認知。為一門課程製作一份“備考清單”(Cheat Sheet),將整個課程的知識點濃縮在一頁紙上,也是一種極佳的知識梳理和內化方式。CS231n: Convolutional Neural Networks for Visual Recognition在Karpathy的職業生涯中,分享始終扮演著至關重要的角色。他不僅通過部落格文章分享自己的研究心得和實踐經驗,還積極投身於開放原始碼專案。他認為,將自己的程式碼和項目開源,不僅能幫助他人,更能督促自己寫出更規範、可復現的程式碼,這本身就是一個絕佳的學習過程。同樣,撰寫部落格或技術教學,也是一種高效的“教學相長”方式。當你試圖向他人清晰地解釋一個複雜概念時,你會被迫從讀者的角度出發,重新審視自己的知識結構,理清其中的邏輯鏈條。這個過程會暴露你理解上的模糊之處,促使你回頭去查閱資料,填補知識漏洞。Karpathy本人就是這一理念的忠實踐行者。他在史丹佛開設的CS231n課程,其詳盡的課程筆記和公開的教學視訊,已經成為全球AI學習者的入門寶典。這一舉動不僅鞏固了他自身的知識體系,更極大地放大了他的影響力。因此,在你完成一個項目或學習了一個新模組後,不妨嘗試寫一篇總結文章,或錄製一個簡短的教學視訊,分享到你的部落格、知乎或B站上。這個過程所帶來的收穫,將遠超你的想像!03. 對標自己持續成長通往專家之路 rarely 是一帆風順的。在這個過程中,我們難免會遇到挫折,看到身邊的人似乎比自己進步得更快,從而產生焦慮和自我懷疑。Karpathy的第三條建議,正是應對這種心態的良藥:只與過去的自己比較,專注於個人的成長軌跡。在Karpathy看來,學習的本質是“精神鍛鍊”。他曾在一個訪談中形象地比喻道,真正的學習應該感覺像是“精神上的流汗”(the mental equivalent of sweating)。它應該是一種費力的、充滿挑戰的過程,就像在健身房裡進行高強度鍛鍊一樣,而不是像刷短影片那樣輕鬆愉悅。如果你在學習過程中感到有些吃力,甚至痛苦,這恰恰說明你正在走出舒適區,你的認知邊界正在被拓寬。在他的《博士生生存指南》中,他也坦誠地描述了科研道路上的種種艱辛,比如實驗失敗、論文被拒,甚至產生自我認同危機。要想成為專家,必須具備強大的心理韌性和獨立思考的能力。要學會從第一性原理出發思考問題,忽略那些無意義的外部評價指標,享受在非結構化環境中探索的自由。為了更好地實踐“對標自己”的原則,一個有效的方法是記錄你的成長里程碑。你可以定期寫學習日誌,記錄下自己在這個月或這個季度學到了什麼新技能,解決了什麼難題。當你回顧這些記錄時,你會清晰地看到自己的進步軌跡:半年前還一頭霧水的概念,現在已經能夠運用自如;一年前還無法獨立完成的項目,現在已經遊刃有餘。這種自我參照的成長反饋,能極大地增強你的自信心和學習動力。你會發現,知識的積累也存在“複利效應”。每天一點點的進步,經過時間的沉澱,最終會匯聚成巨大的飛躍。Karpathy本人的成長歷程,從一個對深度學習充滿好奇的學生,成長為引領行業發展的AI領袖,就是這種長期堅持和自我超越的最好證明。Andrej Karpathy的專家養成三步法——項目驅動、教學相長、對標自己為我們描繪了一條清晰、可行的精進之路。它告訴我們,成為專家並非依賴於所謂的天賦異稟,而是一個關於刻意練習、深度聚焦、積極反思和自我衡量的系統性過程。這條路並非坦途,它需要我們付出汗水和耐心。但正如Karpathy的經歷所展示的,無論是從零開始編寫一個神經網路,還是領導一個頂尖的AI團隊,這套原則都同樣適用。2025年就要結束了,祝願每一個人都能成為某個領域的專家。 (TOP創新區研究院)
Andrej Karpathy的學習指南
在人工智慧領域,Andrej Karpathy 是一位廣受尊敬的研究者與領導者。他不僅因其在深度學習領域的開創性工作而聞名,也因其卓越的教學才能和對人才培育的深刻見解備受推崇。他曾在史丹佛大學任教,並擔任特斯拉人工智慧高級總監,親身經歷了從優秀學生到行業頂尖領袖的完整路徑。這篇文章,是 Andrej Karpathy 對自己多年學習與考核經驗的一次系統性總結。它沒有停留在“努力學習”的空泛說教上,而是提供了一套清晰、具體且極具操作性的方法論體系。這套方法源於其親身實踐,涵蓋了從日常學習、考前準備到考場發揮的每一個關鍵環節,其核心在於如何以最高的效率掌握知識,並戰略性地管理個人精力。更為難得的是,文章超越了如何“取得高分”的技術層面,指向了一個更宏大的命題:在大學這場遊戲中,真正的贏家不是成績單最完美的人,而是最懂得如何分配有限資源(時間與精力),以贏得未來最大機遇的人。Andrej Karpathy 一針見血地指出,對課程的“隧道視野”是許多天賦異稟的學生所陷入的最大誤區。因此,這不僅僅是一份“學習指南”,更是一份來自頂尖實踐者的戰略規劃。它旨在幫助讀者打破迷思,將目光從分數上移開,投向真正重要的領域:真實世界的項目經驗、有份量的推薦信,以及獨立解決問題的能力。這些,才是未來世界裡真正的硬通貨。Doing well in your courses作者:Andrej Karpathy如果年輕的本科生們希望在大學課程中取得好成績,以下是我會給予的一些建議。在我人生中經歷過多年考試(成績相當不錯),以下是我覺得對我有幫助的一些經驗法則:一、通識建議通宵熬夜真的不值睡眠能創造奇蹟。對我來說,最佳睡眠時間大約是7.5小時,絕對底線是4小時左右。我好幾次遇到這樣的情況:晚上為一個問題糾結了一兩個小時都解決不了,但第二天早上只需5分鐘就搞定了。我感覺大腦會在夜間將許多不牢固的短期記憶“固化”為穩定的長期記憶。因此,對於任何大考,我都會儘量提前幾天開始複習,那怕每天只學一會兒,目的就是為我的大腦爭取儘可能多的夜晚來消化這些材料。務必參加輔導課或複習課即使這些課程質量不佳。它們能讓你思考相關學習內容,這才是最重要的。如果覺得太無聊,你總可以在課上做些別的事情。記住,你也可以試著去聽不同助教的輔導課。二、考試:準備階段把握全域與做好規劃是關鍵制定學習計畫,即使你未能完全遵循。對我而言,這通常包括先瞭解需要掌握的所有知識點,並明確地以要點形式寫下來。仔細考慮每一點,並估算掌握它們所需的時間。如果不這樣做,你很容易在前期材料上花費過多時間,而後因為時間不足,草草略過(往往是最重要的)後續內容。在開始學習前,務必先查看往年的試題尤其是當往年試題由同一位教授出題時。這會給你強有力的提示,告訴你應該如何學習。每位教授都有不同的考核風格。一開始不必嘗試完整答題,但要仔細留意題目的類型。閱讀和理解,並不等同於能復現內容即使是我,也常犯這個錯誤:你在書中讀到一個公式、推導或證明,覺得完全理解了。現在合上書,試著把它寫下來。你會發現這個過程完全不同,而且會讓你驚訝的是,很多時候你其實寫不出來!這兩件事似乎動用了記憶中不同的部分。務必確保自己能夠實際寫下最重要的內容,並且可以隨時重新推匯出來。費曼就深諳此道。儘量與他人協作,但最好在備考後期先獨自學習,因為在學習初期,他人只會讓你分心。但在臨近考試時,要與他人一起複習:他們常常能指出重要的易錯點,提出好的問題,有時還能給你講解的機會。這也引出了下一點:不要只和比你強的學生一起學習水平稍弱的同學會讓你向他們解釋知識,你會發現,教授他人對理解知識點幫助巨大。在期末考試前,至少去找一次教授的答疑時間即使你沒有任何問題(也可以編一個!)。教授有時會願意在一對一交流中透露更多關於考試的資訊(這些是他們不會在全班面前透露的)。不要抱太大期望,但一旦發生,會對你有很大幫助。這是否讓你比其他學生有不公平的優勢?有時候是的。這有點“灰色地帶” :)但總的來說,讓教授至少對你有點印象是個好主意。提前充分複習我之前提過嗎?也許我應該再強調一遍。大腦真的需要時間來吸收知識。那些起初看起來很難的東西,隨著時間推移會變得容易。你應該為期中考試預留約3天,為期末考試預留約6天的複習時間。如果情況不妙,你感到過於疲憊,在緊急情況下,可以灌下一瓶能量飲料它們確實管用。這純粹是化學反應。對於數學這類科目:做題 > 閱讀學習到基本準備好開始做題的程度是好的,但隨後應該通過做題來填補知識空白,尤其是當你有大量習題可做時。做題也會迫使你回頭去閱讀那些你不懂的內容。為自己製作一份“小抄”(cheat sheet)即使考試不允許帶入。寫下東西本身就是有幫助的。你的目標是,將整門課程的核心內容濃縮在一頁或多頁紙上,最終你可以把它們鋪在面前,並高度自信地說:“這就是我必須掌握的全部內容。”在別人也在學習的地方學習,即使他們學的不是同一門課這會在你不學習時讓你感到愧疚。這招對我很管用 :)背景噪音大的地方不好,並且有研究支援其對學習有負面影響。圖書館和閱覽室效果最佳。三、考試:當天最佳的飲食習慣是:在考試前2小時喝咖啡和進食對我而言,在考試前立刻喝咖啡或吃東西總是很糟糕。在任何可能帶來壓力的情境前立刻喝咖啡總是很糟糕。但完全不喝咖啡也不行。我意識到關於咖啡的部分可能是我個人的主觀感受,但這值得你為自己思考一下。在考試前最後一刻也要高強度複習我看到很多人在考試前就放棄了,聲稱要“休息一下”。短期記憶是很神奇的東西,不要浪費它!在考試前儘可能高強度地學習。如果你真的覺得必須休息,請在考試前大約一小時休息,但務必確保在考前30-45分鐘進行非常專注的複習。四、考試期間考試時務必使用鉛筆這樣你才能擦掉那些垃圾“解題過程”。開始答題前,快速瀏覽所有題目每道題只看1-3秒就足夠了。只需吸收所有關鍵詞,並對整個試卷的體量有個概念。考試時,先做簡單的題不要讓自己在某一題上卡太久。稍後再回來解決。我一直在跳題……有時第一遍只能完成試卷的30%。有些題目在你“熱身”之後會變得容易得多,我無法解釋原因。試卷書寫務必整潔令人驚訝的是,很少有人意識到這個顯而易見的事實:批改你試卷的是一個人。一個心情糟糕的人會給低分。我本科時就懷疑這一點,在我當助教親自批改試卷後,更是強烈地證實了它。務必把答案用框框起來或圈出來尤其是在答案周圍有推導過程時。這能讓閱卷人快速地給你打上滿分勾,然後繼續批改。要站在閱卷人的角度思考。永遠、永遠、永遠不要提前交卷你肯定犯了愚蠢的錯誤(我保證),找到並改正它。如果找不到,那就更努力地找,直到時間用完。如果你非常確定沒有錯誤,那就花時間讓試卷更清晰、更容易批改。擦掉無用的草稿,框出答案,為證明過程加入步驟等等。我別無他言——提前交卷的人是愚蠢的。這是一個“潛在收益完全大於成本”的典型情況。與閱卷人溝通向閱卷人展示你知道的比你寫下來的更多。好吧,你可能卡在某一個步驟,但要清楚地表明,如果你能做下去,你知道接下來該怎麼做。在必要時不要害怕留下註釋。信不信由你,閱卷人通常最後會試圖幫你找分——讓他們容易幫你。考慮每道題的分值很多考試會告訴你每道題值多少分。當你做錯事時,這會給你強烈的暗示。它也會強烈提示你應該做什麼題目。當然,把太多時間花在分值低、對你來說又相對困難的題目上是愚蠢的。如果還剩不到5分鐘,而你還在某道題上卡住,請停下來你的時間最好用來重新讀題,絕對確保沒有漏掉任何小問題,並且回答了所有問題。你無法相信人們因此丟了多少愚蠢的分數。恭喜你堅持讀到了這裡!既然你在這兒,我送你最後一條(也是非常重要的)建議。這也是我本科時期望有人能告訴我的道理。本科生很容易對課程產生隧道視野,一心只想著要取得好成績等等。但關鍵在於,你要意識到:除非你的成績很糟糕,否則沒人會真正在意你的分數。我過去常說,最聰明的學生會在所有課程中都拿到85%左右的分數。這樣,你的總評成績大約能在4.0左右,但你既沒有過度學習,也沒有學習不足。你的時間是寶貴而有限的資源。學習的目標應該是確保自己不會考砸,然後就把注意力轉移到更重要的事情上。那些事情呢?獲取真實的、現實世界的經驗,在愚蠢的課程練習之外,去研究真實的程式碼庫、項目或問題,這極其重要。讓教授或認識你的人能為你寫一封有力的推薦信,證明你具備主動性、熱情和驅動力,這極其重要。你想找工作嗎?去爭取暑期實習。你想申請研究生院嗎?去獲取科研經驗!報名參加學校提供的任何項目。或者,主動聯絡一位教授或研究生,請求參與你感興趣的研究項目。如果你能讓他們覺得你足夠有動力和積極性,這招可能奏效。不要低估這件事的重要性:一位知名教授在推薦信中稱讚你富有驅動力、積極性和獨立思考能力,其份量完全碾壓其他任何東西,尤其是成績這種小事。如果你在申請前至少能擠出一篇論文,那也會有巨大幫助。同時,你要清楚,教授和研究生們最反感的就是那種一時興起、報名項目、見幾次面、問很多問題,然後在對方投入大量時間後突然放棄消失的本科生。不要做這種人(這會損害你的聲譽),也不要給對方留下任何你可能如此的印象。除了研究項目,還要參與一些團隊的課外項目,或者更好的是,從頭開始你自己的項目。為開放原始碼專案做貢獻,製作或改進一個庫。走出去,創造(或幫助創造)一些很酷的東西。好好地記錄它,為它寫部落格。這些才是人們在未來幾年裡會真正在意的東西。你的成績?它們只是你沿途必須應付的煩惱。善用你的時間,祝你好運。 (WhaleThinking)
3萬字完整實錄 | Andrej Karpathy:LLM仍是“孩子”、RL非常糟、AI是“幽靈”?
10月18日,著名電腦科學家 、OpenAI創始成員Andrej Karpathy 接受海外播客Dwarkesh Patel的訪談,本次深度對話系統性地探討了其對當前人工智慧發展的諸多觀察與思考。本次對話涵蓋了AI Agent的發展路徑、深度學習的歷史範式轉移、強化學習的根本缺陷、大語言模型的內在機制與“模型坍塌”問題、AGI對未來經濟的真實影響,以及AI在教育領域的革命性潛力。針對業內“AI Agent元年”的過度樂觀,Karpathy認為,要讓AI Agent達到能替代人類實習生的實用水平,解決其在智能、多模態、持續學習等方面的根本缺陷,至少需要十年的時間。Karpathy指出,當前主流的強化學習範式,在解決複雜認知任務上,是一種極其低效、充滿噪聲且根本上“非人”的學習方式。因為它試圖從一個極其稀疏、單一的最終結果訊號中,去反推和調整一個漫長而複雜的過程,這在資訊理論上是極度浪費的。人類根本不使用強化學習,我們還需要更多根本性的創新。他謹慎對待將AI與動物進行類比的觀點,認為兩者源於截然不同的最佳化過程(模仿學習 vs. 進化)。AI更像是在數字世界中通過模仿人類資料建構的“幽靈”或“精神體”,而非複製生物進化的產物。Karpathy警告了“模型坍塌”的風險——持續用模型自身生成的、缺乏熵的內容進行訓練,將導致其能力嚴重退化。對於未來,他預測最優的“認知核心”可能僅需十億等級參數,遠小於當前動輒兆的競賽規模,因為現有大模型的主要負擔是壓縮質量低劣的網際網路資料。對於AGI將引發經濟增長率急劇提升的普遍預期,Karpathy他認為AI只是計算技術延伸的一部分,其影響將是平滑且漸進的,會融入現有的指數增長曲線,而不會在GDP資料上造成一個清晰可見的“突變點”。Karpathy還解釋了為何標榜“通用”的AI技術,目前幾乎一邊倒地在程式設計領域創造最大價值。這不僅因為程式碼是高度結構化的文字,更因為程式設計領域已擁有完善的基礎設施(如IDE、版本控制工具)來支援AI的整合與協作。01 AI Agent的十年之路你為什麼認為這將是“AI Agent的十年”,而不是“AI Agent元年”?要讓AI Agent變得真正實用,使其能像人類同事一樣勝任工作,究竟需要實現那些能力,瓶頸又在那裡?對於實現這些能力所需的時間表,例如持續學習,你是如何判斷它需要十年,而不是一年或五十年的?Andrej Karpathy: 首先,非常感謝你的邀請,我很高興能來到這裡。你剛才提到的“AI Agent 的十年”這個說法,其實是我對一個既有觀點的回應。我記得一些實驗室 (我不確定具體是誰) 曾暗示今年將是“AI Agent 元年”,尤其是在大語言模型及其發展路徑方面。這個說法讓我覺得有必要回應,因為我感覺業記憶體在一些過度預測。在我看來,用“AI Agent 的十年”來描述現狀更為準確。儘管我們已經有了一些非常初級的 AI Agent,例如我每天都在使用的 Claude 和 Codex,它們確實令人印象深刻,但我仍然覺得還有大量工作有待完成。所以我的看法是,我們將在未來十年裡持續與這些技術打交道,它們會不斷進步,前景光明。我主要想回應的,是那種說法背後隱含的過於樂觀的時間表。(關於瓶頸)簡單來說,就是讓它真正變得實用。在我看來,或者說在那些實驗室以及我自己的設想中,一個 AI Agent 應該像一個你可以雇來共事的員工或實習生。舉個例子,你現在和一些同事一起工作,在什麼情況下你會願意讓一個像 Claude 或 Codex 這樣的 AI Agent 來替代他們完成工作呢?顯然,目前它們還做不到。那要讓它們做到需要具備什麼?你為什麼今天不直接用它們呢?原因很簡單,因為它們根本就無法勝任。它們的智能水平不夠,多模態能力不足,無法操作電腦完成各種任務。而且,它們也無法做到你之前提到的很多事情,比如持續學習,你不能告訴它一件事就指望它能記住。它們在認知能力上存在根本缺陷,無法勝任工作。我認為,要解決所有這些問題,大概需要十年時間。(關於時間表的判斷)我想這更多是基於我個人的一些直覺,以及根據我在這個領域的經驗做出的一種推斷。我在 AI 領域差不多快二十年了——抱歉說錯了,大概是15年左右,沒那麼久。你之前採訪過的 Richard Sutton,他的從業時間當然要長得多。但我確實有大約15年的經驗,見證了人們做出各種預測,也看到了這些預測的最終結果。而且我既在學術界做過研究,也在工業界工作了很長時間。所以這些經歷給了我一種大致的直覺。我感覺我們面臨的這些問題雖然棘手但可以克服。綜合權衡下來,我感覺大概需要十年。02 AI發展的範式轉移與彎路回顧過去15年AI領域的發展,在那些不同的突破性時刻,身處其中的人們對未來有怎樣的感受?這些感受在那些方面被證明是過於悲觀或過於樂觀的?可否梳理一下這期間經歷的幾次重要“範式轉移”?Andrej Karpathy: 當然,不過這是個很大的問題,因為這涵蓋了15年來的發展。AI 這個領域之所以如此奇妙,就是因為它經歷了好幾次我稱之為“範式轉移”的顛覆性變革,整個領域的研究方向會突然煥然一新。我大概親身經歷了其中的兩三次。而且我認為這種變革還會繼續發生,它們幾乎以一種令人驚訝的規律性到來。我的職業生涯始於深度學習,當時我因為在多倫多大學有幸在 Jeff Hinton 身邊而對此產生了興趣。Jeff Hinton 當然是 AI 領域的教父級人物。那時他正在訓練各種神經網路,我覺得這既不可思議又非常有趣,但這在當時遠非 AI 領域的主流,只是一個非常小眾的方向。隨之而來的 AlexNet,可以說是第一次劇烈的範式轉移。AlexNet 為整個領域指明了新的方向,所有人都開始訓練神經網路,但這仍然是為非常具體的、單一的任務而設計的。比如做一個圖像分類器,或者一個神經機器翻譯系統。然後,人們才非常緩慢地開始對 AI Agent 這樣的概念產生興趣。大家開始想:好吧,我們或許已經解決了“視覺皮層”的問題,那大腦的其他部分呢?我們如何才能建構一個能夠與世界真實互動的、完整的 AI Agent 或智能實體?在我看來,2013年左右由 Atari 遊戲引領的深度強化學習浪潮,就是早期對 AI Agent 的一次嘗試。它試圖讓 AI Agent 不僅能感知世界,還能採取行動、與環境互動並獲得獎勵。當時的環境就是 Atari 遊戲。但現在回過頭看,我感覺那其實是一個彎路。一個連我當時參與的早期 OpenAI 也曾走過的彎路。因為當時的時代潮流就是投身於強化學習環境,也就是玩各種遊戲、攻克各種遊戲。OpenAI 當時也在這方面投入了很多。那幾年,可能整個 AI 領域所有人都在遊戲上做強化學習。但這基本上是個歧途。當時在 OpenAI,我內心一直對“玩遊戲能通向 AGI”這條路徑持懷疑態度,因為在我看來,你需要的是像會計師那樣能與真實世界打交道的系統。我看不出玩遊戲如何能最終實現這個目標。因此,我在 OpenAI 曾負責一個名為 Universe 的項目,目標是讓一個 AI Agent 能用鍵盤和滑鼠操作網頁。我真正想要的,是一個能與真實數字世界互動、能完成知識工作的系統。但結果證明,這個想法在當時提出太早了,早得離譜。早到我們本不應該去嘗試,因為如果你只是讓 AI Agent 在環境中胡亂操作鍵盤和滑鼠來探索獎勵,那麼獎勵訊號會過於稀疏,它什麼也學不到,最終只會耗費掉巨量的算力而一事無成。這其中缺失的,正是神經網路強大的表徵能力。所以舉個例子,今天人們也在訓練能夠操作電腦的 AI Agent,但他們是在大語言模型的基礎上進行的。你必須先有語言模型,先獲得表徵能力,而這需要通過所有的預訓練和 LLM 技術來實現。所以,總的來說,我感覺歷史上人們曾數次過早地試圖建構完整的系統,過早地追求 AI Agent,比如 Atari 和 Universe 的嘗試,包括我自己的經歷。你必須先完成一些基礎工作,才能去建構 AI Agent。或許現在的 AI Agent 已經強大得多,但我們可能依然缺少技術堆疊中的某些關鍵部分。但我認為,回顧來看,大家所做的工作可以歸為三大類:為特定任務訓練神經網路;進行第一輪對 AI Agent 的嘗試;以及現在先通過 LLM 尋求神經網路的表徵能力,再在其之上建構其他一切。03 我們在建構模仿人類的“精神體”從零開始建構AGI的最強論點似乎是模仿動物的學習方式,它們一出生就被拋入世界,在沒有標籤的情況下自行理解一切。為什麼AI的願景不該是這樣,而是像現在這樣,通過預訓練模擬一個漫長的“進化”過程?將AI與動物類比存在那些問題?Andrej Karpathy: 我認為這是一個非常好的問題。我記得 Richard Sutton 上過你的播客,我看過那一期,還寫了一篇相關的文章來闡述我的看法。我個人對於將 AI 與動物進行類比非常謹慎,因為它們源於截然不同的最佳化過程。動物是進化而來的,它們天生就擁有大量內建的“硬體”。比如我在文章裡舉的斑馬的例子:一隻斑馬出生幾分鐘後,就能跑來跑去並跟隨母親。這是極其複雜的行為,但這並非強化學習的結果,而是被深植於基因中的本能。進化顯然有辦法將神經網路的權重編碼在 ATCG (DNA鹼基) 裡,我不知道具體原理,但它確實有效。所以我感覺,生物大腦的形成過程與我們現在做的完全不同,因此我非常不願意直接從中汲取靈感,因為我們根本無法複製“進化”這個過程。所以在我的文章中我提到,我們實際上不是在建構動物,而是在建構“幽靈”或“精神體”,隨你怎麼稱呼。因為我們的訓練方式不是通過進化,而是通過模仿人類以及他們在網際網路上產生的資料。最終你得到的,是這些近乎虛無縹緲的精神實體,因為它們是純數字的,在某種程度上模仿人類,是一種完全不同的智能。想像一個智能的“可能性空間”,我們和動物的出發點幾乎完全不同。我們並非真的在建構動物,儘管我認為隨著時間的推移,讓 AI 變得更像動物一些是可能的,而且也應該這樣做。另外還有一點,我覺得 Sutton 的框架基本上是“我們想要建構動物”。如果這能實現,當然會非常了不起。如果真的存在一個單一演算法,你只需讓它在網際網路上運行,它就能學會一切,那將是不可思議的。但我對此表示懷疑,甚至不確定這樣的演算法是否存在。而且,這顯然也不是動物的學習方式。因為動物擁有一個“進化的外循環”。很多看似“學習”的行為,其實更多是“大腦的成熟”。我認為動物真正用到強化學習的地方很少,而且大多是像投籃這種更偏向運動類的任務,而非智能任務。所以,粗略地講,我甚至認為人類在解決智能問題時,也並不真正使用強化學習。主持人:您能重複一下最後一句話嗎?很多智能不涉及運動任務,那它涉及什麼,抱歉?Andrej Karpathy: 在我看來,強化學習更多地應用於類似運動的任務,比如一些簡單的任務,像投籃之類的。但我不認為人類在處理很多智能任務 (比如解決問題等) 時會使用強化學習。主持人:我認為您暗示的是:進化所做的事情,在“建構一個能夠理解世界的基礎”這個層面上,與預訓練所做的事情有相似之處。但我猜區別在於,對於人類而言,進化的所有資訊都必須被高度壓縮在 3GB 的 DNA 中。這與模型的權重截然不同。模型的權重本身就構成了一個“大腦”,而這個“大腦”顯然不是編碼在精子和卵子裡的,它需要後天生長。而且,大腦中每一個突觸連接的資訊是絕對不可能全部儲存在 3GB 的 DNA 中的。因此,進化似乎更接近於“找到那個負責終身學習的演算法本身”。那麼,根據您的觀點,這種“終身學習”或許不等同於強化學習。我的這個理解與您想表達的一致嗎?還是您不認同?Andrej Karpathy:(關於進化與預訓練的類比)我同意你的觀點,進化過程中確實存在一種神奇的壓縮,因為神經網路的權重顯然沒有直接儲存在 ATCG 裡。存在某種程度的急劇壓縮,並編碼了一些學習演算法,這些演算法在生命周期中接管並進行線上學習。這一點我完全同意你。基本上,我會說我是一個更務實的人。我不是從“我們來建構動物吧”這樣的哲學角度出發,而是從“我們來建構有用的東西”這個視角出發。所以,我更像是一個戴著安全帽的工程師,我觀察到的現實是:我們無法實現進化,因為我不知道那該怎麼做。但事實證明,通過模仿網際網路文件來建構這些“幽靈般的實體”,是行得通的。這實際上提供了一種方式,讓你獲得一個在某種程度上擁有大量內建知識和智能的系統,這與進化所做的事情有些類似。所以,我才把預訓練稱為一種“蹩腳的進化”。它就像是在我們現有技術和可用資源的限制下,一個切實可行的版本,它能幫助我們達到一個可以真正開始進行強化學習等任務的起點。04 預訓練在吸收知識的同時“變得智能”,但知識本身可能拖累了模型進化給予我們的是發現知識的演算法,而非知識本身,這似乎與直接吸收知識的預訓練不同。預訓練究竟在做什麼?它與上下文學習有何關係?上下文學習是否是另一種形式的梯度下降?為什麼模型在上下文窗口中能實現看似真正的智能,而在預訓練中卻感覺不到?這是否與資訊儲存密度的巨大差異有關?Andrej Karpathy: 這個問題很微妙,你的質疑很有道理。基本上,預訓練在做什麼呢?你讓一個模型在整個網際網路上進行下一個 Token 的預測,並將其訓練成一個神經網路。這個過程實際上在做兩件有點不相關的事情。第一,它在吸收我所說的“知識”。第二,它在真正地“變得智能”。通過觀察網際網路資料中存在的演算法模式,它實際上在神經網路內部“啟動”了許多微小的電路和演算法,從而實現了像上下文學習等諸如此類的能力。而事實上,你可能並不需要甚至不想要那些知識。我甚至認為,知識總體上可能拖累了神經網路,因為它讓模型在某些時候過分依賴已有的知識。舉個例子,我感覺 AI Agent 的一個弱點就是,它們很難跳出現有網際網路資料的“流形” (manifold) 去思考。如果它們的知識或記憶更少一些,表現可能反而會更好。因此,我認為我們未來需要做的一件事,這也將成為研究範式的一部分,就是我們需要想辦法移除部分知識,只保留我稱之為“認知核心” (cognitive core) 的東西。這就像一個剝離了具體知識,但保留了演算法、解決問題的策略以及智能本質的純粹智能實體。(關於上下文學習)這裡有很多值得探討的話題。我們先從上下文學習談起。這一點或許顯而易見,但我認為值得我們明確地提出來並深入思考。在某些場景下,這些模型顯得最為智能,比如當我和它們對話時,我會驚嘆:“哇,對面真的有一個實體在回應我,並且像是在思考。” 如果它犯了錯,它會說:“哦等等,那種思考方式其實是錯的,我得換個思路。” 這一切都發生在上下文學習的過程中。正是在這裡,我感覺你能親眼看到真正的智能。而這種上下文學習能力,是通過預訓練階段的梯度下降發展出來的。它像是自發地通過元學習掌握了上下文學習,但是上下文學習本身並非梯度下降。這就好比我們人類處理事務的智能是由進化所塑造的,但我們有生之年的實際學習卻是通過某些其他過程實現的。主持人:我不完全同意你的看法,不過請繼續說。Andrej Karpathy: 我之所以不太願意直接說上下文學習不是梯度下降,是因為雖然它沒有執行顯式的梯度下降,但我仍然認為,可以這麼說,上下文學習的本質是在一個 Token 窗口內進行模式補全。事實證明,網際網路上存在著海量的模式,所以你的觀點是對的,模型在某種程度上學會了補全模式。這種能力就內化在模型的權重裡,神經網路的權重就是在試圖發現並補全這些模式。同時,神經網路內部也發生著某種適應過程。這個過程有些神奇,它僅僅因為網際網路上存在大量模式,就自然而然地湧現了。我讀過一些很有趣的論文,確實探究了上下文學習背後的機制。我確實認為,上下文學習很有可能在神經網路的層內部,悄悄運行著一個小型的梯度下降循環。我記得有一篇論文,研究者就用上下文學習來做線性回歸。基本上,你輸入到神經網路的是一系列在同一條直線上的 (X, Y) 坐標對,然後你給出一個新的 X,期望模型能預測出對應的 Y。當你用這種方式訓練神經網路時,它確實學會了做線性回歸。通常,在進行線性回歸時,你會用一個小型梯度下降最佳化器來分析 (X, Y) 對、計算誤差、然後計算權重的梯度並進行數次迭代更新。結果,當研究人員審視那個上下文學習演算法的權重時,他們確實發現了一些與梯度下降機制的相似之處。事實上,我認為那篇論文的觀點更進一步,因為他們甚至通過硬編碼神經網路的權重,利用注意力和所有內部機制來直接執行梯度下降。所以,我想表達的不同觀點在於:誰知道上下文學習到底是如何工作的呢?但我確實認為,它很可能在內部執行著某種形式獨特的梯度下降,我認為這是可能的。所以我只是在反駁你“上下文學習不是梯度下降”的這個論斷。沒有人確切知道它在做什麼,但它很可能在做著類似的事情,只是我們尚不清楚罷了。(關於資訊儲存密度)我通常是這樣表述的:在神經網路的訓練過程中,所有知識都像是對訓練內容的一種模糊記憶。這是因為壓縮率非常高,你將 15 兆個 Token 壓縮到最終只有幾十億參數的神經網路中,這顯然是進行了巨量的資料壓縮。所以我傾向於把權重中的知識稱為對海量網際網路文件的“模糊記憶”。然而,對於發生在神經網路上下文窗口中的任何事情,當你輸入所有的 Token,模型會建立起完整的 KV 快取表示,這些資訊是神經網路可以直接訪問的。因此,我把 KV 快取和在測試時輸入的內容比作“工作記憶”。所有在上下文窗口中的內容,神經網路都可以直接獲取。所以,大語言模型 LLM 和人類之間總是存在一些令人驚訝的相似之處,我覺得這很奇妙,因為我們當然不是在刻意直接地模仿人腦,我們只是發現這種方法有效,就去做了。但我確實認為,權重中的任何知識,都好比是你一年前讀過的東西的模糊記憶;而你在測試時作為上下文提供給它的任何內容,都直接進入了它的工作記憶。我認為這是一個非常有力的類比,可以幫助我們思考問題。比如,你問一個 LLM 關於某本書的內容,它通常能給你一些大致正確的資訊。但如果你把完整的章節內容提供給它再提問,你會得到好得多的答案,因為現在這些內容被載入到了模型的工作記憶中。總而言之,我同意你的觀點,並用上面這段話解釋了原因。05 AI缺失的大腦元件從更宏觀的角度看,在人類智能的諸多方面中,我們用現有模型最沒能成功復現的是那一部分?持續學習能力是否能像上下文學習一樣,從一個外循環的強化學習過程中自發湧現?10年後,AI模型的核心架構是否還會是Transformer?Andrej Karpathy: 我感覺,其實還有很多方面都尚未實現。也許可以這麼想,儘管類比總有不完美之處,我還是忍不住會這麼想:我們像是無意中創造出了 Transformer 神經網路,它極其強大且通用。你可以在音訊、視訊、文字或任何資料上訓練 Transformer,它都能學習到模式,並且效果非常好。對我來說,這幾乎就像是某種大腦皮層組織。它就是那樣的東西,因為大腦皮層也以其極強的可塑性而聞名。你可以給大腦的某些部分重新布線,比如有些稍微殘忍的實驗,曾將視覺皮層連接到聽覺皮層,結果實驗動物依然能正常學習。所以我認為 Transformer 就像是皮層組織。當我們利用神經網路進行推理和規劃,也就是為模型生成推理鏈時,這有點像是在模擬前額葉皮層。那麼,或許這兩項可以算是我們已經攻克的堡壘,但我仍然認為有許多大腦區域和神經核尚未被探索。比如,當我們用強化學習微調模型時,可能基底核 (basal ganglia) 在發揮一點作用。但像海馬體 (hippocampus) 呢?它在模型中對應什麼,我們還不清楚。有些部分可能不那麼重要,比如小腦 (cerebellum) 被認為對認知功能不那麼關鍵,所以或許我們可以跳過。但我仍然認為,還有例如掌管所有情感和本能的杏仁核 (amygdala)。大腦中可能還有很多其他非常古老的神經核,我認為我們都還沒有真正複製出來。我其實不確定我們是否應該致力於建構一個人腦的模擬體,畢竟我骨子裡終究是個工程師。或許回答這個問題的另一種方式是:你現在還不會把這東西當作實習生來僱傭,因為它存在很多認知缺陷,這些缺陷在我們與模型交流時都能直觀地感覺到。所以,它還沒有完全成熟,你可以理解為,我們還沒有將人腦的所有組成部分逐一“解鎖”。(關於持續學習的湧現)我不太認同這種觀點,因為我感覺這些模型,每次啟動時,如果上下文窗口裡沒有 Token,它們就完全是從零開始。所以我其實不確定在你描述的那種設想中,持續學習具體是如何實現的。這裡再次用人類來做個不完美的類比,因為我覺得這樣思考起來更具體也更有趣。我感覺自己醒著的時候,是在不斷建構一個關於當天所發生事情的上下文窗口。但當我睡著時,一些奇妙的事情發生了,我認為那個上下文窗口並不會保留下來,而是存在一個將經驗蒸餾並融入我大腦“權重”的過程。這發生在睡眠等過程中。我們在大語言模型裡並沒有與此對應的機制,而這正是我認為模型在持續學習方面所缺失的關鍵環節。這些模型沒有這樣一個蒸餾階段:它們無法回顧發生過的事情,進行分析,反覆深入地思考,本質上就是進行一種合成資料生成,然後將精華蒸餾回權重中。也許未來可以為每個人定製一個特定的神經網路,或許是通過 LoRA 這樣的技術,只改變一小部分稀疏的權重,而不是整個網路。但基本上,我們確實希望創造出擁有超長記憶的“個體化”模型。這種記憶不能只存在於上下文窗口中,因為上下文窗口會變得非常長。也許我們可以用一些非常複雜的稀疏注意力機制來處理。但我仍然認為,人類顯然有某種將知識蒸餾到權重中的過程,而我們的模型缺失了這一點。同時我也認為,人類擁有某種非常複雜的稀疏注意力機制,現在我們開始看到了一些早期的苗頭。比如,Deepseek V3.2 剛剛發佈,我就看到他們用到了稀疏注意力,這正是實現超長上下文窗口的一種方式。所以我感覺,我們似乎在用一種截然不同的方式,重現進化過程中產生的許多認知技巧,但我認為我們最終在認知架構上正在殊途同歸。(關於未來架構)我喜歡這樣來思考這個問題:讓我們用一種“時間平移不變性”的思路來推演。我們看看 10 年前,也就是 2015 年,我們處在什麼位置?那時主要是摺積神經網路 CNN 的天下,殘差網路也才剛剛問世。所以,和現在有些相似,但又有很大的不同。那時還沒有 Transformer,也沒有現在這些對 Transformer 的各種現代化改造。因此,如果我們借鑑歷史來推斷未來 10 年,我認為有些東西是可以確定的:我們可能仍然在用梯度下降以及前向和後向傳播來訓練巨大的神經網路。但也許具體形態會有些不同,而且一切的規模都會大得多。實際上,我最近回顧了 1989 年的歷史,幾年前我做過一個很有趣的練習,就是復現 Yann LeCun 在 1989 年提出的摺積網路,那是我所知的第一個在數字識別任務上通過梯度下降訓練的現代神經網路。我當時就很好奇:我該如何用現代技術來改造它?這其中,演算法、資料、計算和系統各自貢獻了多少進步?結果發現,如果我帶著 33 年後的演算法知識“穿越”回去,對 Yann LeCun 當年的工作進行調整,我能輕易地將錯誤率減半。但要想獲得更大的提升,就必須增加更多的資料,我得把訓練集擴大 10 倍。然後,還必須加入更多的計算最佳化,比如使用 dropout 和其他正則化技術,並進行更長時間的訓練。所以,這就像所有這些因素都必須同步改進。因此,未來我們可能會有更多的資料、更好的硬體、更好的計算核心和軟體,以及更好的演算法。所有這些因素,似乎沒有那個單一的佔據絕對主導地位,它們的重要性驚人地均衡。這一直是過去一段時間的趨勢。所以,我想回答你的問題就是:我預計 10 年後的演算法會和今天有所不同,但我也相信一些經過長期考驗的核心思想,比如用梯度下降來訓練一個巨大的神經網路,很可能依然存在。這會是我的猜測。06 不要寫部落格,不要做PPT,去建構程式碼,整理它,讓它跑起來從GPT-2發展到你最近完成的NanoChat項目,你認為其中是否存在單一的關鍵因素?在建構過程中有什麼意外的收穫嗎?對於想學習的人來說,最好的方法是什麼?你在建構程式碼庫時,為什麼程式設計模型(AI Agent)提供的幫助不大?Andrej Karpathy: NanoChat 是我前兩天發佈的一個程式碼庫,我都記不清了,你可以看到我為了這個項目付出了多少睡眠。它旨在成為一個最簡潔、最完整的程式碼庫,端到端地涵蓋了建構一個 ChatGPT 克隆版的整個流程。所以,它包含了所有步驟,而不僅僅是某一個孤立的步驟。我過去曾針對各個獨立步驟發佈過一些小的程式碼片段,用簡單的程式碼從演算法層面展示如何實現,但 NanoChat 則涵蓋了整個流程。至於學到了什麼,我覺得倒不是很多,我並不覺得我一定從中學到了什麼新東西。我腦子裡本來就已經有了如何建構它的藍圖,這次更多的是一個按部就班地將其實現,並把它做得足夠清晰簡潔,以便其他人能真正從中學習並覺得有用的過程。(關於學習方法)我會這麼建議:這個項目大約有 8000 行程式碼,涵蓋了整個流程。如果你有兩個顯示器,我會把我的程式碼庫放在右邊的顯示器上作為參考,然後你自己從頭開始建構。你可以參考,但不允許複製貼上。這可能是我會採用的方式。但我也認為,這個程式碼庫本身是一個相當龐大的項目。我的意思是,當你寫這樣的程式碼時,你不是從上到下按順序寫的,而是分模組進行,然後逐步擴展這些模組。但這種開發的順序和思路,在最終的程式碼裡是體現不出來的,比如你可能不知道從那裡下手。所以我認為,人們需要的不僅僅是最終的程式碼庫,更是建構這個程式碼庫的過程,那是一個複雜的、模組化生長的過程。所以這一部分目前還沒有。我非常想在這周晚些時候以某種方式把它補充上去,也許是通過一個視訊之類的。但總的來說,我會建議自己動手建構,並且不允許自己複製貼上。我確實認為,知識有兩種。一種是表層的高階知識,但關鍵在於,當你真正從零開始建構一個東西時,你會被迫直面那些你自以為懂但其實不懂的細節,而你之前甚至不知道自己不懂。這個過程總能帶來更深刻的理解。這就像是唯一的學習途徑,正如我相信是費曼所說的那句名言:“我無法創造之物,我便無法理解。” 我百分之百地堅信這一點,因為有太多微小的細節需要你親自去理順,否則你就沒有真正掌握知識,你只是自以為掌握了。所以,不要寫部落格,不要做PPT,別做那些。去建構程式碼,整理它,讓它跑起來。這是唯一的途徑。否則,你掌握的就不是真正的知識。(關於AI程式設計模型的侷限)建構這個程式碼庫,我大概花了一個多月。在我看來,當前人們與程式碼互動的方式主要可以分為三類。第一類人完全拒絕使用大語言模型,堅持從零開始編寫所有程式碼,但這可能已經不是最佳方式了。第二類,也就是我所屬的中間類別,雖然仍然會從頭編寫大量程式碼,但會利用模型普遍提供的自動補全功能。當你開始寫一小段程式碼,它會幫你補全後續部分,大部分情況下只需按下 Tab 鍵確認,結果通常是正確的,偶爾出錯再手動修改。在這種模式下,程式碼的整體架構依然由你掌控。第三類,就是所謂的“意圖導向程式設計” (vibe coding) ,你只需下達指令,比如“請幫我實現這個功能”,然後讓模型全權負責。這就是 AI Agent 的工作模式。我確實認為 AI Agent 在某些非常特定的場景下是有效的,我也會在這些場景中使用它們。但歸根結底,這些都只是可用的工具,你必須學習它們各自的優缺點,並判斷在何時使用。例如,AI Agent 在處理樣板程式碼方面就非常出色,那些大量重複、近乎複製貼上性質的程式碼,它們處理起來得心應手。它們也很擅長處理網際網路上常見的程式碼模式,因為模型的訓練資料中包含了海量的此類樣本。因此,對於具備這些特徵的任務,模型會表現得很好。但我開發的 Nano chat 並非如此,它是一個相當獨特的程式碼庫。按照我設計的架構,它的程式碼模式並不常見,也絕非樣板程式碼。恰恰相反,它更像是需要高度智力投入的程式碼,每一個部分都必須經過精確的設計和安排。而模型存在很多認知缺陷,總是無法理解我的程式碼,因為它們的“記憶”裡塞滿了網際網路上那些常規的程式設計範式,而我恰恰沒有遵循那些。例如,模型總以為我在寫普通程式碼,然而我不是。再舉個例子,關於同步機制,假設你有 8 個 GPU 需要同時進行前向和後向傳播,同步它們之間梯度的標準做法是使用 Pytorch 的分佈式資料平行 (Distributed Data Parallel, DDP) 容器,它會在後向傳播的過程中自動完成所有通訊和梯度同步。但我沒有用 DDP,因為它對我的項目來說不是必需的。所以我棄用了它,並且在最佳化器的 step 函數里編寫了自己的同步程序。結果,模型就執著地建議我使用 DDP 容器。總之,我沒有使用那個容器,因為我不需要它,我自己實現了一個功能類似的簡化版。主持人:而它們就是無法理解和接受您有自己的一套實現。Andrej Karpathy: 它們無法繞過這個彎,而且還總是試圖破壞我的程式碼風格。比如,它們寫出的程式碼防禦性過強,到處都是 try-catch 語句,總想把程式碼寫成一個生產級的程式碼庫。但我的程式碼中包含很多特定的假設,這完全沒問題,我根本不需要那些冗餘的東西。所以,我感覺它們在讓程式碼庫變得臃腫,增加了不必要的複雜性,還不停地產生誤解,甚至多次使用已經被棄用的 API,簡直一團糟。最終,它帶來的價值並不高。雖然我可以介入並清理它生成的程式碼,但這總體上是得不償失的。我還覺得,必須用英語打字來描述我的需求也很煩人,太費事了。相比之下,我只需找到程式碼中需要修改的地方,定位到新程式碼應該出現的位置,然後輸入前幾個字母,自動補全功能就會理解我的意圖並生成完整的程式碼。我認為,這種“在特定位置輸入部分程式碼”的方式,是一種資訊密度極高、能非常高效傳達意-圖的互動方式。所以我的觀點是,這些模型在技術堆疊的某些層面表現出色。實際上,有兩個很能說明問題的例子,我確實在其中借助了模型。一個是在生成項目報告時,報告的撰寫確實更偏向於樣板化的工作,所以我部分地採用了“意圖導向程式設計”的方式來完成,效果不錯,因為這部分工作不是核心關鍵程式碼。另一個例子是,當我用 Rust 語言重寫分詞器的時候,我對 Rust 並不算精通,還算是個新手。所以在編寫部分 Rust 程式碼時,我確實進行了一些“意圖導向程式設計”。但前提是,我手邊有一個自己完全理解的 Python 實現版本,我的目標只是創造一個效率更高的版本,並且有完備的測試來驗證。在這種情況下,我覺得使用模型是比較安全的。總的來說,模型降低了學習和使用一門新語言或新範式的門檻,在這方面,它們的幫助非常大。因為網路上有海量的 Rust 程式碼可供模型學習,所以它們對 Rust 的掌握相當不錯,而我恰好瞭解不多,這樣模型就派上了大用-場。07 模型不擅長編寫“前所未有”的程式碼,這恰恰是我們建構模型時真正追求的當前“AI將實現AI工程和研究自動化”是AI奇點論的核心邏輯,但你的經驗似乎表明AI在這方面恰是短板,這是否會影響你對“奇點”何時到來的預測?為什麼模型即便面對已有論文和開源實現的技術(如RoPE嵌入),也無法很好地將其整合到你的程式碼庫中?你認為AI更像是一種漸進式改進的工具(如編譯器),還是會成為程式設計師的完全替代品?Andrej Karpathy: 這個說法很貼切。這也解釋了為什麼我對 AI 發展的時間線預估會更長一些。您說得對,我認為,模型不擅長編寫“前所未有”的程式碼,而這恰恰是我們建構這些模型時真正追求的目標。(關於模型整合能力的侷限)這個問題很複雜。我覺得它們對這些概念有模糊的認知,但理解得並不透徹。它們不知道如何將這些技術,按照你的程式碼風格、在你程式碼庫的特定位置、結合你所有自訂的設定,完美地整合進去。它們也無法理解新技術如何與程式碼庫中已有的各種假設相適配。所以,我認為它們具備一定的知識,但遠未達到能夠真正整合、理解和應用這些知識的程度。當然,很多方面確實在持續進步。目前我心目中最強的模型可能是 GBT 5 Pro,它非常強大。如果我有 20 分鐘的空閒時間,我有時會把整個程式碼庫複製貼上進去,向 GBT 5 Pro 這個“神諭”請教一些問題,它的回答通常都還不錯,相比一年前的模型已經好得驚人了。但我仍然認為,整體而言,這些模型還遠遠沒有達到我們期望的水平。我感覺整個行業有點操之過急,做出了過大的跳躍,試圖宣稱 AI 已經無所不能,但實際上,很多產出都還很粗糙。我認為行業需要正視並接受這個現實,或許他們是為了融資或有其他原因。但事實是,我們正處在一個中間階段。模型本身很了不起,但它們仍需大量的改進工作。對我而言,現階段自動補全是最高效的夥伴,但有時針對特定類型的程式碼,我也會求助於 LLM Agent。(關於AI的角色定位)這或許也引出了我的另一個想法:我發現自己很難清晰地界定 AI 的起點和終點,因為從根本上說,我認為 AI 是計算技術的一種延伸。我看到的是一個連續發展的過程,一個從電腦誕生之初就開始的,不斷加速程式設計師工作效率的“遞迴式自我改進”過程。比如,程式碼編輯器、語法高亮、甚至是資料類型檢查,所有這些我們為彼此開發的工具,包括搜尋引擎。為什麼搜尋引擎不算 AI 呢?搜尋排名本身很大程度上就是 AI。Google 在很早期的時候,就將自己定位為一家利用 AI 技術做搜尋引擎的公司,我認為這完全合理。所以,在我看來,這是一個遠比大多數人想像的更加連續的光譜,我很難在其中劃出一條明確的界線。我的感覺是,我們現在有了一個性能好得多的自動補全工具,同時也有了一些像 AI Agent 這樣的新工具,它們能進行循環式的自主操作,但有時會“脫軌”。整個趨勢是,人類正逐漸從更底層的、繁瑣的工作中解放出來。例如,我們不再寫彙編程式碼,因為有編譯器幫我們把高級的 C 語言轉換過去。我們正非常緩慢地將自身的工作進行“抽象化”。我稱之為一個“自主性滑塊” (autonomy slider) :在任何一個時間點,越來越多可以被自動化的任務正在被自動化,我們人類做的事情越來越少,並將自己的角色提升到駕馭於自動化之上的、更高階的抽象層。08 強化學習的根本缺陷我們應該如何理解人類與環境互動並建立世界模型的方式?這種方式似乎獨立於任務最終的成敗獎勵。在機器學習中,與之對應的機制應該是什麼?為什麼說人類不使用強化學習,當前RL範式(如在解數學題時)的根本問題是什麼?既然基於結果的獎勵存在明顯問題,為什麼“基於過程的監督”作為替代方案,卻一直沒能成功?Andrej Karpathy: 我的看法或許可以這樣表達:人類根本不使用強化學習,我一直都這麼說。我認為人類的學習方式完全不同,人是通過體驗來學習。強化學習的實際運作方式,比大多數人想像的要粗糙得多。以解數學題為例,這本身是個很簡單的場景:給你一道題,讓你找出答案。在強化學習的框架下,你首先會平行地進行海量嘗試。面對一個問題,你會生成成百上千種不同的解法,這些解法本身可能很複雜。最終,也許某個嘗試得出了答案。然後,你用這個答案去核對標準答案,發現可能是三次嘗試得到了正確答案,而其餘的都失敗了。接下來,強化學習所做的,就是逐字逐句地去看那三個成功的解法,然後把你得出這個正確答案過程中所做的每一個決策,輸出的每一個 Token,其對應的權重全部調高,告訴模型“以後要多這麼做”。這種做法的問題在於,用術語說,是“估計器方差過高”,但通俗地講,它就是充滿了噪聲。它幾乎是盲目地假設,只要最終結果是正確的,那麼通往這個結果的每一步就都是正確的。但這顯然是錯的。你可能在找到正確答案之前,走了很多彎路,犯了很多錯誤,但只要最終結果對了,所有這些錯誤的步驟,都會被錯誤地“鼓勵”。這太糟糕了,完全是噪聲。你做了那麼多的工作,最後得到的卻是一個單一的反饋訊號,一個位元的資訊告訴你“你做對了”,然後你就用這個訊號去決定整個解題路徑是該被鼓勵還是被懲罰。我喜歡把這個過程比作“用吸管吸取監督訊號”。你完成了一次可能長達一分鐘的完整推演,最終卻只能通過一根細細的吸管,去吸取最終那個獎勵訊號所包含的微不足道的監督資訊,然後將這點資訊廣播到整個行動軌跡上,以此來調整權重。這太瘋狂了。人類絕不會這樣做。首先,人類不會進行成百上千次的盲目嘗試。其次,當一個人找到解決方案後,他會進行一個非常複雜的復盤過程,他會思考:“我覺得我做的這些部分是正確的,但那些部分其實做得不好。我或許應該這樣或那樣改進。” 這是一個深度思考的過程。目前的大語言模型中,完全沒有與此對應的機制。不過,我確實看到相關的論文開始湧現,因為這個問題對於領域內的所有人都顯而易見。在我看來,整個發展歷程是這樣的:首先是模仿學習,它的成功本身就是一個巨大的驚喜,簡直是奇蹟。我們能夠通過模仿人類的範例來微調模型,這太了不起了。因為在最初,我們只有基礎模型,它們本質上只是自動補全工具。當時我完全沒有想到,後來一篇名為 InstructGPT 的論文讓我大開眼界。它指出,你可以拿一個預訓練好的模型,它原本只會自動補全,然後只要用類似對話的文字資料對它進行微調,模型就能迅速地適應並變得非常健談,同時還保留了所有在預訓練階段學到的知識。這顛覆了我的認知,我無法想像模型在風格上竟能如此迅速地調整,僅僅通過幾輪特定資料的微調,就能轉變為一個能與使用者互動的助手。它的成功對我來說如奇蹟一般,那是大概兩三年前的重大突破。然後,強化學習登場了。它讓你能做到比單純的模仿學習更好。因為你可以定義獎勵函數,然後讓模型在這些函數上進行爬山最佳化。對於那些有明確正確答案的問題,你不再需要專家的演示軌跡,模型可以自己去探索和最佳化。這非常了不起。模型甚至能發現人類從未想到的解決方案,這無疑是驚人的。然而,它依然很“笨拙”。所以我認為,我們還需要更多根本性的創新。昨天我看到一篇來自 Google 的論文,就試圖引入“反思與復盤”的理念,好像是叫什麼記憶庫的論文。實際上,我已經看到好幾篇沿著這個思路探索的論文了。因此,我預計在不久的將來,大語言模型的訓練演算法會在這個方向上迎來一次重大的更新。在那之後,我認為我們至少還需要三到五次這樣量級的革新。(關於過程監督的困難)所謂基於過程的監督,指的是我們不再等到你工作了 10 分鐘後,才在最後給你一個獎勵訊號,告訴你做得好還是不好,而是在你工作的每一步,都告訴你做得怎麼樣。我們之所以沒有普遍採用這種方法,根本原因在於,正確地實現它非常棘手。因為當你面對的是一個未完成的中間解法時,你很難知道該如何分配功勞,也就是進行信用分配。當你得到最終正確答案時,判斷標準很簡單,就是看結果是否匹配,這非常容易實現。但如果你要進行過程監督,你該如何自動化地給中間步驟打分呢?這並沒有顯而易見的解決方案。許多實驗室正嘗試使用所謂的“LLM 評委”來解決這個問題,也就是讓大語言模型來扮演評委的角色。你會給一個 LLM 提示,比如:“嘿,這是一個學生給出的解題步驟,如果最終答案是這樣,你覺得他現在這一步做得怎麼樣?”然後研究人員會不斷調整提示詞。我認為這件事之所以棘手,其原因非常微妙。那就是,任何時候你用一個 LLM 來分配獎勵,你都要記住,這些 LLM 是擁有數十億參數的龐然大物,它們是有空子可鑽的。如果你針對這些 LLM 評委進行強化學習,我幾乎可以保證,你的模型最終會找到這些 LLM 評委的對抗性樣本。這種方法無法長久為繼。也許你迭代 10 步、20 步還行,但你絕對做不到 100 步或 1000 步。模型會找到這個龐大評委模型中那些細微的“裂縫”,在那些犄角旮旯裡發現一些虛假的關聯,然後找到欺騙它的方法。我腦海裡有一個非常鮮活的例子,這件事應該也是公開的。當時我們用一個語言模型評委作為獎勵函數,你給它一個學生模型生成的解法,然後問它這個解法好不好。我們用強化學習針對這個獎勵函數進行訓練,一開始效果非常好。突然有一天,獎勵值變得異常高,簡直是飆升,模型表現得堪稱完美。你看到這個結果會想:“哇,這學生模型太完美了,它完全解決了所有數學問題。”但當你去看模型實際生成的具體內容時,會發現它們完全是胡說八道。開頭可能還像模像樣,但很快就變成了類似“好的,我們來計算二加三,我們這樣做、這樣做……”之類的瘋言瘋語。你看著這些內容會覺得太瘋狂了,它怎麼能得到 100% 的滿分獎勵?回過頭去檢查那個語言模型評委,你就會發現,這些胡言亂語恰好是那個評委模型的對抗性樣本,評委對它給出了 100% 的置信度。這僅僅是因為,對於 LLM 評委來說,這是一個它在訓練資料中從未見過的樣本外案例,你完全進入了它的純粹泛化領域。在它從未見過的泛化領域裡,你總能找到這樣可以把它攻破的樣本。09 LLM生成的合成資料分佈是“坍塌的”,持續使用會導致模型能力嚴重下降人類學習似乎包含“反思”或“做白日夢”這類行為,它不直接創造新問題,而是在消化已有資訊。機器學習領域與此對應的機制是什麼?為什麼我們不能簡單地讓模型生成思考內容,然後用這些合成資料來訓練它?“模型坍塌”問題的本質是什麼,它與人類思維的“固化”有何相似之處?解決方案又是什麼?Andrej Karpathy: 我認為我們恰恰忽略了這其中的某些關鍵環節。舉個例子,當人讀書時,和現在 LLM 讀書的方式完全不同。LLM 讀書,本質上是我們將書本的文字序列展開,然後模型去預測下一個 Token,並從中學習知識。但這根本不是人類的學習方式,對吧?當人讀書時,我幾乎不認為書本是我要被動接收並據此訓練的材料。書本更像是一系列“提示”,激發我去進行“合成資料生成”——比如,你會因此去參加讀書會,和朋友們討論書裡的內容。正是通過這種主動加工和處理資訊的過程,你才真正獲得了知識。我認為 LLM 完全沒有與此對應的機制。它們不會這樣做。但我非常希望能在預訓練階段看到這樣一個環節:模型能夠深入思考它所讀到的材料,嘗試將其與已有的知識體系進行融會貫通,花一些時間去消化和理解。目前沒有任何與此等效的機制,這完全是前沿的研究領域。這件事之所以不簡單,背後有一些非常微妙、難以理解的原因。比如,為什麼我們不能直接讓模型生成一些思考內容,然後用這些內容來訓練它呢?因為每一個合成的樣本都有問題。假如我讓模型針對一本書生成一些思考,你看這些生成的文字,會覺得“這看起來很棒啊,為什麼不能用它來訓練呢?”你可以試試,但如果你持續這樣做,模型的能力實際上會嚴重下降。這是因為,從模型中得到的所有樣本都存在一種“隱性坍塌”的問題。從單個樣本來看,這個問題並不明顯。但實際上,這些樣本在所有可能的思想空間中,僅僅佔據了一個極其微小的子空間。所以,LLM 生成的內容,我們稱之為“坍塌的”;它們的資料分佈是“坍塌的資料分佈”。舉一個簡單的例子就是,你去問 ChatGPT 讓它講個笑話,它翻來覆去可能就只有那麼三個。它給不了你各種各樣可能的笑話,它就只會那幾個。這就是隱性坍塌。所以,你根本無法從這些模型中獲得人類所擁有的那種豐富性、多樣性和熵。人類的思想則要“嘈雜”得多,但至少我們沒有那種系統性的偏差。從統計學上講,我們的思想不是隱性坍塌的,而是保持了巨大的熵。因此,如何克服這種“坍塌”問題,在進行合成資料生成的同時,又能保持足夠的熵,這是一個核心的研究難題。(關於模型坍塌與人類思維)任何單個樣本看起來都沒問題,但它們的整體分佈卻非常糟糕。糟糕到如果你持續用模型自己生成的內容進行訓練,模型自身就會“坍塌”。我甚至認為這個問題可能沒有根本性的解決方案。而且我也認為,人類自身也會隨著時間推移而“坍塌”。這個類比再次顯示出驚人的貼切性。人類在一生中確實會經歷思維的“坍塌”。這就是為什麼小孩子還沒有過擬合。他們會說出一些讓你震驚的話,雖然你能理解他們想法的邏輯,但那完全不是成年人會說的話。就是因為他們還沒有“坍塌”。而我們成年人,已經“坍塌”了。我們最終會反覆地陷入同樣的思維模式,說的話也越來越千篇一律,學習新事物的效率不斷下降,這種“坍塌”會持續惡化,最終一切都會退化。(關於解決方案)你可以想像通過對熵進行正則化等手段來強制增加多樣性。我猜這些方法在實際應用中效果並不理想,根本原因在於:儘管現在的模型確實是“坍塌”的,但我們要求它們完成的大部分任務,其實並不需要那麼高的多樣性。這可能就是現狀的答案。頂尖的實驗室都在努力讓模型變得更有用,而在我看來,輸出的多樣性可能並不是當前最重要的事。首先,處理和評估高多樣性的輸出要困難得多。其次,在很多應用場景下,多樣性或許並不是創造核心價值的關鍵所在。10 我們最終能獲得高效的認知核心,可能只需要十億等級的參數兒童不善於記憶資訊,反而學習能力驚人;LLM能背誦海量文字,但學習抽象概念的能力有限。人類的“健忘”是否反而是一種優勢?一個最優的“智能核心”最終需要多大?未來前沿模型的規模會如何演變?Andrej Karpathy: 我認為這裡面絕對有非常值得探討的東西。與 LLM 相比,人類確實更傾向於“只見森林,不見樹木”。我們不擅長記憶,而這其實是一種優勢,而非缺陷。正是因為不擅長死記硬背,我們才被迫去尋找更具通用性的模式。相比之下,LLM 極度擅長記憶。它們可以大段大段地背誦訓練資料裡的原文。你甚至可以給它們一些完全無意義的資料,比如你把一段文字雜湊化,得到一個完全隨機的序列,然後用這個序列去訓練它,可能只需要一兩個迭代,它就能把整個隨機序列給複述出來,完全記住。任何人都無法在只看一遍的情況下背誦一長串隨機數字。人類的這種“健忘”迫使我們只學習那些可泛化的核心規律。而 LLM 則被它們腦中海量的預訓練文件記憶所幹擾,在某種程度上,這對它們而言是巨大的干擾。所以,當我談到“認知核心 (cognitive core)”的時候,我實際上是想剝離掉記憶部分。我希望未來的模型擁有更少的記憶,從而迫使它們去主動檢索資訊。它們自身只保留思考的演算法、進行實驗的思路,以及所有這些將認知串聯起來並付諸行動的“認知粘合劑”。(關於認知核心的規模)回顧這個領域的發展歷史會發現一個很有趣的現象。曾有一段時間,所有人都極度信奉 Scaling Law,覺得模型越大越好,要做兆參數的模型。但實際上,模型參數量的發展趨勢是先上升,而現在,最頂尖的模型尺寸反而開始下降了。即便如此,我仍然認為它們記憶了太多不必要的東西。所以我之前有過一個預測:我們最終能夠獲得非常高效的認知核心,可能只需要十億等級的參數。想像一下,20 年後,你和一個十億參數的模型對話,你們可以進行富有成效的交流。它會思考,行為模式更像人類。但如果你問它一個事實性問題,它可能需要去檢索資訊。關鍵在於,它知道自己不知道,也知道需要去尋找,它會做出所有這些合理的行為。(關於預測的意外之處)我的基本觀點是問題出在訓練資料上。我們的訓練資料來自網際網路,而網際網路上的內容實在太糟糕了。正因如此,這裡面才存在巨大的提升空間。當我們談論網際網路時,你我腦中想到的可能是《華爾街日報》這類高品質內容,但這根本不是我們所用資料的常態。如果你身處前沿實驗室,隨便抽一個預訓練資料集裡的網路文件來看,會發現它完全就是垃圾。我甚至都無法理解模型究竟是如何從這種資料裡學到知識的。這些文件裡可能只是一些股票程式碼,或者充斥著大量來自網際網路各個角落的殘渣和垃圾資訊。像《華爾街日報》那樣結構清晰的文章,其實是極其罕見的。所以我覺得,正是因為網際網路資料質量太差,我們才不得不建構超大規模的模型去壓縮所有資訊。而這種壓縮,絕大部分是記憶方面的工作,而不是認知方面的工作。但我們真正想要的,是模型的認知能力,並希望它能擺脫單純的記憶。也就是說,我們需要用智能模型來幫助我們提煉預訓練資料集,將其精簡為只包含認知核心的部分。到那時,我認為一個更小的模型就綽綽有餘了,因為它使用的是質量高得多的資料集。當然,這個小模型可能不是直接在這個精煉的資料集上訓練的,而更有可能是從一個更優秀的大模型通過蒸餾的方式獲得的。(關於未來模型規模)我沒有一個特別明確的預測。但我確實認為,各大實驗室正變得越來越務實。他們有固定的算力預算和成本預算,並且發現把大部分資源投在預訓練階段並非最高效的做法。這就是近年來模型規模變小的原因。因為模型小了,預訓練的成本也隨之降低,他們便可以把節省下來的資源投入到後續的強化學習、中期訓練等所有環節。所以,他們只是在務實地權衡所有階段,以獲得最高的投入產出比。因此,預測這一趨勢非常困難。我的基本預期是,這個領域還有非常多“低垂的果實”尚待採擷。所以,我對未來的可能性持一個非常開放的看法,不確定性很大。11 AGI與經濟增長我們該如何衡量AGI的進展?是看它能完成任務的時長,還是類比人的教育水平?為何你認為AGI不會帶來經濟增長率的“爆炸”,而是會平滑地延續現有趨勢?這與AI本身就是一種可無限複製的“勞動力”的觀點似乎相悖。Andrej Karpathy: 我想我有兩個答案。第一,我幾乎想從根本上拒絕這個問題。因為我一直把 AI 看作是計算技術的延伸。我們難道會去討論如何為“計算”本身繪製一幅進度圖嗎?你會如何繪製從 1970 年代至今的計算技術發展圖?它的 X 軸是什麼?所以從這個角度看,我覺得整個問題有點滑稽。不過,我還是會嘗試回答。當人們談論 AI 和最初的 AGI 時,尤其是在 OpenAI 成立之初,我們對 AGI 的定義是:一個能夠以達到或超越人類的水平,完成任何具有經濟價值的任務的系統。這就是當時的定義,我對此非常滿意,並且一直沿用至今,儘管後來人們提出了各種其他定義。現在,人們做的第一個讓步,就是排除了所有物理世界的工作,只討論純粹的數字知識工作。我覺得這相比於最初“人類能做的任何任務”(比如搬東西等等) 的定義,是一個非常大的讓步。AI 顯然還做不到這些。但我們接受這個讓步。那麼,只考慮知識工作,我們到底剔除了多大比例的經濟活動?我其實不知道具體數字,但我猜測大概是 10% 到 20%。比如那些可以在家完成所有工作任務的人。但這仍然是一個非常龐大的市場。想想整個經濟的體量,它的 10% 或 20% 是多少?即便只在美國,這也是一個數兆美元等級的市場或工作崗位。所以這個盤子依然非常大。那麼,回到那個定義,我想我會關注的是:這個定義在多大程度上被實現了?比如說,有那些工作被 AI 替代了?一個很好的例子就是 Jeff Hinton 曾預測放射科醫生這個職業將會消失。事實證明這個預測在很多方面都大錯特錯了。放射科醫生這個職業不僅依然存在,甚至還在發展,儘管電腦視覺在識別醫療影像方面已經做得非常出色了。因為這本身是一項混亂、複雜的工作,涉及到很多方面,比如與病人打交道以及理解診斷的上下文等等。所以,根據那個最初的定義,我其實不認為 AI 已經取得了巨大的進展。但是,有些工作確實比其他工作更適合被自動化,它們具備一些特徵。一個經常被提起的例子就是呼叫中心的員工,我認為這個例子很恰當。因為呼叫中心的工作在當今技術下,具備許多易於自動化的簡化屬性。他們的工作相當簡單,就是一系列相似的任務。你接一個電話,進行大約 10 分鐘或更長時間的互動,然後在某個系統裡完成一些操作,比如修改資料庫條目。你的工作就是一遍又一遍地重複這些事。所以,這裡確實需要考慮“任務時長”,即完成單次任務需要多久。同時,它的“上下文”是受限的。你不需要和公司其他部門或客戶打交道,你面對的只是資料庫、你本人以及你服務的客戶。所以它更封閉,更容易理解,而且是純數位化的。我會關注這些領域。但即使在呼叫中心,我看到的也不是完全的自動化。我看到的是一個“自主性滑塊”。我預計我們不會立刻用 AI 替換掉所有人,而是會引入 AI 來處理 80% 的業務量,然後 AI 會把剩下的 20% 疑難問題上報給人類。人類的角色轉變為監督一個由五個 AI 組成的團隊,處理那些更常規的呼叫中心工作。所以,我會去尋找那些提供新型介面或服務的公司,它們能讓你管理這些尚不完美的 AI。我預計這種模式會擴展到整個經濟體,而很多工作的複雜度要比呼叫中心高得多。主持人:我在想放射科醫生這個例子,我完全是猜測,並不知道他們實際的工作流程是怎樣的,但一個可能適用的類比是,當 Waymo 的自動駕駛汽車剛推出時,前排會坐著一個安全員,你必須讓他在那兒,確保一旦出現嚴重問題時有人監控。我認為即使在今天,仍然有人在車裡觀察以確保一切順利。剛剛部署的 Robotaxi 實際上車裡也還是有人的。我們可能正處在一個類似的情境中:當你將一份工作自動化了 99%,那剩下必須由人類完成的 1% 會變得極其有價值,因為它成了其他所有環節的瓶頸。如果這個角色,就像放射科醫生,需要經過多年的專業訓練才能提供那最後的 1% 的保障,那麼他們的薪酬理應大幅上漲,因為他們成了阻礙技術大規模部署的唯一瓶頸。所以,我認為放射科醫生的工資上漲,可能就是出於類似的原因。如果你是這最後的瓶頸,並且你的技能是不可替代的,不像 Waymo 的安全員可能相對容易被替換,那麼你可能會看到工資先是上漲,然後直到某一天,當那最後的 1% 也被技術攻克時,這個職業才會迎來真正的轉折。我在想,放射科領域是否正在發生類似的事情。Andrej Karpathy: 你是指呼叫中心員工的薪資嗎?這是個非常有意思的問題。據我瞭解,我們目前在放射科領域還沒看到這種情況。我基本上認為放射學不是一個好例子。我不知道為什麼 Jeff Hinton 當初偏要拿放射科說事,因為我認為這是一個極其混亂和複雜的專業。所以,我會對呼叫中心員工如今的狀況更感興趣,因為我預計很多重複性的工作在今天就應該能被自動化了。我雖然沒有一手資訊,但我會去關注呼叫中心行業正在發生什麼趨勢。另外,我還會預期一種可能性:也許有些公司現在正在引入 AI,但我會再等上一兩年看看。因為我很有可能會預期他們會經歷一個“回撤”階段,最終發現 AI 不行,又重新僱傭一些員工回來。(關於經濟增長率)即使我們擁有了真正的 AGI,我說的不是今天的大語言模型,我認為一切仍將照常進行。這種情況已經持續很長時間了。我再次強調,我不認為 AI 是一項與長久以來一直在發生的技術變革截然不同的東西。這就是為什麼我覺得這很有趣,因為我曾一度試圖在 GDP 資料中尋找 AI 的蹤跡。我原以為 GDP 應該會上升,但我去研究了其他一些極具變革性的技術,比如電腦、手機等等,你在 GDP 資料里根本找不到它們。GDP 曲線仍然是那條平滑的指數曲線。即使是初代的 iPhone,它也沒有應用程式商店,也沒有現在 iPhone 擁有的各種功能。所以,儘管我們認為 2008 年 iPhone 的問世是一次驚天動地的巨變,但事實並非如此。所有變革都是如此分散、滲透得如此緩慢,以至於最終都被平均到了同一條指數曲線上。電腦的出現也是完全一樣的情況,你無法在 GDP 資料中指著某處說:“看,我們有電腦了。” 變革不是那樣發生的,它是一個極其緩慢的處理程序。AI 也將遵循完全相同的模式。它只是更高階的自動化,讓我們能夠編寫以前無法編寫的不同類型的程序。但 AI 本質上仍然是一個程序,是一種新型的電腦和計算系統,它同樣面臨各種問題,會隨著時間推移慢慢滲透,最終仍然匯入那條指數增長曲線。我們依然會沿著這條曲線前行,它將變得越來越陡峭,生活在那種環境中將會是一種非常陌生的體驗。我預期增長率也會大致保持不變。(關於AI作為勞動力)或許可以提供一個反例。首先,在這一點上,我非常樂於被任何一方說服。但我想說的是,計算本身就是勞動力。在過去,計算是由人來完成的。電腦的出現讓大量工作崗位消失了,因為它們自動化了大量原本需要人來處理的數字資訊。所以,電腦就是勞動力,這個過程已經發生了。自動駕駛也是一個例子,同樣是電腦在從事勞動。因此,我認為這已經持續了很長時間,依然是常態。(對“爆炸”論的反駁)我理解你的意思。但同時,我覺得人們總是做出這樣的假設:好了,我們現在有了一個“盒中之神”,祂無所不能。但現實絕不會是那樣的。它將只能做一部分事情,在另一部分事情上會失敗,它會被逐步地引入社會。所以我預測,我們最終看到的還是同樣的模式。因為那種“突然擁有一個完全智能、靈活、通用的人在盒子裡,並且可以把它部署到社會任何問題上”的假設,我認為這種離散的跳躍是不會發生的。因此,我相信我們會看到這項技術在整個行業中以同樣漸進的方式滲透。12 程式設計:AGI出人意料的突破口理論上,AGI 作為一個能處理所有知識工作的系統 (暫不考慮體力勞動),人們可能會天真地以為,它的發展會是這樣的:先從顧問的工作中選擇一項小任務實現自動化,再從會計的工作中選擇一項,如此類推,逐步覆蓋所有知識工作領域。但事實並非如此。如果我們相信當前的技術範式正帶領我們走向 AGI,那麼它的實際發展路徑與上述設想大相逕庭。至少目前看來,顧問、會計這類職業的生產力並沒有得到巨大提升,反倒是程式設計師的工作,正一點點地被蠶食。如果我們審視這些 AI 公司的收入構成,撇開那些類似於搜尋引擎的普通聊天業務,只看 API 收入,就會發現絕大部分都來自程式設計相關的應用。所以,這個號稱“通用”、本應能勝任任何知識工作的技術,卻幾乎一邊倒地只在做程式設計。這實在是一種出乎意料的 AGI 落地方式。AGI的發展路徑為何與人們最初的設想大相逕庭?Andrej Karpathy: 這確實是一個很有意思的觀點。我堅信,程式設計是這些大語言模型和 AI Agent 的完美切入點。原因在於,程式設計的本質始終是圍繞文字展開的:電腦終端、程式碼,一切都以文字為基礎。而大語言模型,基於其在網際網路上的訓練方式,極其擅長處理文字。因此,它們是完美的文字處理器,加上網路上存在海量的程式碼資料,這兩者簡直是絕配。此外,我們已經擁有大量為處理程式碼和文字而生的現成基礎設施。例如,我們有 Visual Studio Code 或其他 IDE 來展示程式碼,AI Agent 可以直接整合進去。再舉個例子,如果一個 AI Agent 對程式碼做了一些修改,生成了一個差異檔案 (diff),我們立刻就能利用現有的無數工具來清晰地展示程式碼庫的全部變動。可以說,我們幾乎已經為程式碼應用鋪好了所有基礎設施。相比之下,其他一些領域就完全沒有這種優勢了。例如,有些人嘗試將自動化應用於幻燈片製作,這項工作的難度要大得多。難點就在於,幻燈片不是文字,它由各種小的圖形元素、空間佈局和視覺元件構成,並且完全沒有像程式碼領域那樣現成的基礎設施。比如,如果一個 AI Agent 修改了你的幻燈片,你要用什麼工具來展示這些改動呢?你如何查看這些差異?根本沒有現成的工具可以用來比較幻燈片的版本差異,一切都得從零開始開發。所以結論就是,很多領域本質上並不適合目前以文字處理為核心的 AI,但出人意料的是,程式設計恰恰非常適合。主持人: 為什麼即使在純語言領域,除了程式設計之外,我們也很難從這些模型中挖掘出巨大的經濟價值?Andrej Karpathy: 你說的有道理。我並非認為所有文字任務都輕而易舉。我確實覺得程式碼是高度結構化的。相比之下,普通文字的變化更豐富,或者說文字中含有更高的“熵”,我暫時想不到更確切的詞來形容。此外,程式設計本身是一件難事,所以即便是從大語言模型那裡獲得一些簡單的知識輔助,也能讓人感覺能力得到了極大的增強。說實話,我並沒有一個非常完美的答案。我的觀點是,AI 處理文字的能力確實使其應用門檻降低了很多,但這並不意味著所有與文字相關的任務都毫無難度。13 LLM目前沒有文化,也沒有與自博弈等價的機制,它們仍是“孩子”進化偶然催生了智能這件事,會讓你感到更驚訝還是理所當然?智能的出現是罕見事件嗎?我們訓練AI的方式,是否使其天然具備了人類花費數萬年才建立的“文化循環”?你設想的“大語言模型文化”是怎樣的,為何它至今仍未出現?Andrej Karpathy: 順便一提,我很喜歡 Nick Lane 的書。我剛才還在聽一個相關的播客。談到智能及其進化,我確實認為它的出現相當晚,可以說是在非常近的時期。它的進化令我感到驚訝。我覺得思考宇宙中其他所有可能的世界是一件非常迷人的事。比如,假設有一千個像地球一樣的行星,它們會是什麼樣子。我想 Nick Lane 探討過一些早期演化的階段,他預想,在大多數這樣的行星上,基本上都會有非常相似的、大致像細菌一樣的生命形式。然後,進化過程中會出現幾次重大的突破。我直覺地認為,智能的進化應該是一個相當罕見的事件。我們可以從物種存在的時間長度來推斷。例如,細菌存在了 20 億年,卻沒有任何進一步的發展,那麼演化到真核生物 (eukaryotes) 可能就非常困難,因為細菌在地球進化史的早期就已經出現了。所以,動物出現多久了?大概幾億年吧,像是那些會跑動、爬行的多細胞動物,這大約只佔地球生命史的 10%。從這個時間尺度上看,智能的出現或許並非難事,但我個人仍然覺得這很令人驚訝。我直覺地認為,這種發展是出乎意料的。我也許會預料到宇宙中只存在大量像動物一樣的生命,做著動物會做的事。但最終能誕生出可以創造、積累文化和知識的物種,這著實令我驚奇。(關於AI文化)我的看法是,大語言模型其實並沒有真正意義上的文化。或許是我們給它們“喂”了太多現成的資訊,反而使它們失去了創造自身文化的動機。人們所說的文化,包括書面記錄、個體間的筆記傳遞等,我認為目前的大語言模型中不存在任何與此等價的東西。所以,大語言模型現在並沒有文化,我認為這恰恰是其發展的障礙之一。(關於“大語言模型文化”的設想)在最簡單的情況下,它可以是一個所有大語言模型都能編輯的巨大“草稿板”。當一個大語言模型在閱讀資料或幫助人類工作時,它可以為自己和其他同伴編輯、更新這個草稿板。為什麼一個大語言模型不能為其他大語言模型寫一本書呢?這會非常酷。為什麼其他大語言模型不能閱讀這本書,並從中受到啟發或感到震驚呢?目前,這一切都還不存在。(關於多智能體系統與瓶頸)我認為在多智能體領域,有兩個非常強大的理念至今仍未被真正實現。第一個就是我剛才提到的“文化”,即大語言模型為自身目的去擴充知識庫。第二個則非常像“自博弈”這個強大理念,在我看來它極具潛力。在進化過程中,競爭是驅動智能演化的重要因素。從演算法層面看,AlphaGo 正是通過與自己對戰,才學會在圍棋上達到頂尖水平。但在大語言模型領域,目前還沒有與自博弈等價的機制,儘管我堅信它應該存在,只是還沒人實現。比如,為什麼不能讓一個大語言模型創造一系列問題,由另一個大語言模型來學習解決?出題的大語言模型不斷提升難度,諸如此類。我認為有很多方式可以組織這種互動,這本身就是一個研究領域。但我還沒看到任何令人信服的研究同時實現了“文化”和“自博弈”這兩種多智能體帶來的提升。我們目前的研究很大程度上仍停留在單個智能體的範疇,但我認為這種情況即將改變。此外,在“文化”這個大類下,我還想加入“組織”的概念,我們同樣沒有看到任何有說服力的 AI 組織出現。所以,我們仍處於非常早期的階段。我想說的是,一個有些不可思議的類比似乎總是成立,儘管它本不該如此。那些較小、能力較弱的模型,在某種程度上確實很像幼兒園學生,大一點的就像小學生或高中生。但我們似乎還沒有“畢業”,模型的能力還沒有成熟到可以自主發展的階段。即使是像 Codex 這樣的程式碼模型,給我的感覺仍然像個小學生。我知道它們能通過博士等級的考試,但在認知層面,它們仍然像幼兒園或小學的孩子。所以我認為它們無法創造文化,因為它們自己還是“孩子”。它們就像是“學者綜合症兒童”,對海量資訊擁有完美的記憶力,能夠令人信服地生成各種看似精美的“垃圾內容”。但我仍然認為,它們並不真正理解自己在做什麼,也尚未集齊我們期待的、真正認知能力所需要滿足的全部條件。14 從自動駕駛到未來教育你在特斯拉領導自動駕駛團隊的經歷,對於理解AI從“演示”到“產品”的鴻溝有何啟示?為什麼這個過程如此漫長?你現在投身教育領域,創辦Eureka項目,是出於怎樣的考慮?你理想中的AI導師是怎樣的,以及如何才能教好技術和科學內容?Andrej Karpathy: 首先,我必須反駁一點:自動駕駛這項工作還遠沒有完成,在很多方面都如此。我確實認為自動駕駛是一個非常有意思的領域,我從中獲得了很多直覺,畢竟我為此投入了五年時間。這個領域有很長的歷史,最早的自動駕駛演示可以追溯到 1980 年代。你甚至能找到 1986 年 CMU 的一個演示,一輛卡車在路上自動行駛。快進到我加入 Tesla 的時候,我體驗過一個非常早期的 Waymo 演示,大概是在 2014 年,它給了我一次完美的駕駛體驗。那是在十年前,一次完美的 Waymo 自動駕駛,載著我們在 Palo Alto 轉了一圈,因為我有個朋友在那裡工作。當時我感覺這項技術已經非常接近成功了,但之後仍然花了很長的時間。我確實認為,對於某些類型的任務和工作,從“演示”到“產品”之間存在著巨大的鴻溝。演示可能看起來很容易,但打造成熟的產品卻異常艱難,在自動駕駛這類失敗成本極高的領域尤其如此。在許多其他行業,任務和工作可能不具備這個屬性,但一旦你面對這個屬性,項目的時間線就必然會大大延長。我認為,在軟體工程領域,這個屬性同樣存在。對於那種憑感覺、為了好玩的“氛圍程式設計”來說可能不存在,但如果你寫真正的生產級程式碼,我認為這個屬性就必須被考慮,因為任何一個錯誤都可能導致安全漏洞,進而造成數百萬甚至上億使用者的個人敏感資訊洩露。所以我認為,在軟體開發領域,人們也應該像對待自動駕駛一樣謹慎。在自動駕駛中,如果出錯,可能會導致人員受傷;而在軟體領域,我幾乎覺得某些潛在的糟糕後果是無法估量的。所以我認為兩者共享這一屬性。我認為,之所以花費這麼長時間,關鍵在於要理解這是一個“九的行軍”,每提升一個“9”的可靠性,都需要付出同等量級的努力。當你做出一個演示,能在 90% 的情況下工作,這只是第一個“9”。接下來你需要第二個“9” (99%),第三個“9” (99.9%),第四個,第五個。我在 Tesla 的五年裡,我們大概經歷了三個或兩個“9”的迭代,具體記不清了,但就是這樣不斷提升可靠性的過程。而且,前面還有更多的“9”等著我們去實現。這就是為什麼這類項目如此耗時。這段經歷對我思想的形成至關重要。我曾經非常容易對演示感到驚豔,現在每當我看到任何產品的演示,我仍然會印象深刻。但你要知道,別人精心準備後展示給你的演示,是最具迷惑性的。如果你能親手操作一下,情況會好一些。但即便如此,你離真正的產品還差得遠。一個真正的產品需要直面現實世界中所有預想不到的挑戰,以及無數需要修補的、零散的邊緣行為場景。所以我認為,我們將會看到這一切在 AI 其他領域重演。“九的行-軍”中,每個“9”都代價恆定。演示固然鼓舞人心,但要走的路還很長。我認為這確實是一個性命攸關的安全領域,除非你只是在做一些好玩有趣的“氛圍程式設計”。因此,這段經歷也塑造了我對 AI 發展時間線的看法。(關於Eureka項目與教育)我想可以這麼說,我感覺那些頂尖 AI 實驗室正在做的事情,其發展路徑在某種程度上是註定的。我覺得自己雖然可以參與其中,但我並不認為我的加入能帶來什麼獨一無二的改變或提升。我個人最大的擔憂是,很多 AI 的發展會繞開人類進行,導致人類最終被邊緣化,喪失自主權。我關心的不僅僅是 AI 將以完全自主的方式為我們建造戴森球那樣的宏偉工程。我更關心人類的命運,我希望人類在未來能過得很好。我覺得,相比於在前沿實驗室裡做出一些增量式的改進,我能在這裡 (教育領域) 創造出更獨特的價值。所以對我而言,教育是實現這一目標的途徑。關於 Eureka,我想最簡單的比喻就是建立一個“星際艦隊學院”,不知你是否看過《星際迷航》。星際艦隊學院就是一個精英機構,專注於前沿技術,比如建造宇宙飛船,並培養學員成為駕駛這些飛船的飛行員。所以我設想的也是這樣一個頂尖的精英技術知識學府,一所非常與時俱進的頂尖院校。(關於AI導師與教學方法)關於 Eureka,教育領域有一點讓我非常著迷,那就是 AI 的加入必將從根本上改變教育。我認為教育體系必須進行某種程度的重塑和變革。目前我們還處於非常早期的階段。我想,很多人會去嘗試那些顯而易見的應用,比如用一個大語言模型來問問題,做一些目前通過提示就能完成的基本操作。這固然有幫助,但在我看來還非常粗放和不成體系。我希望用一種更嚴謹的方式來做這件事,但目前的技術能力還達不到我的要求。我想要的是一種真實的、一對一的導師體驗。我腦海裡有一個很典型的例子,就是我最近學習韓語的經歷。起初,我在網上自學;後來,我在韓國參加了一個小班課,和大概十來個同學一起跟著一位老師學習,那段經歷很有趣。最後,我換成了一對一的家教。這段經歷讓我非常感慨,因為我遇到了一位極好的導師。回想起來,她為我所做的一切,那種學習體驗,簡直不可思議,也為我最終想要打造的產品設立了極高的標準。她非常敏銳,僅通過一次簡短的對話,就能立刻瞭解我作為學生的水平,知道我懂什麼、不懂什麼,並且能精準地提出問題來探查我的知識體系。目前沒有任何一個大語言模型能做到這一點,甚至差得很遠。但一位優秀的導師就能做到。一旦她瞭解了我的情況,她就能精準地為我提供我當前能力水平所需要的一切內容。我總是能獲得難度適中的挑戰,既不會太難,也不會太簡單。一位好導師就擅長於提供這種恰到好處的學習材料。所以,我當時感覺自己成了學習的唯一瓶頸,唯一的障礙就是我自己的吸收和記憶能力,而不是找不到知識或者知識講解得不好。這正是我希望為所有人實現的目標。(關於如何教好技術)我認為這是一個相當寬泛的話題。我感覺自己大概有十到二十個或多或少會有意無意使用的小技巧。但從宏觀層面來說,我想這很大程度上源於我的物理學背景,我真的非常享受這段經歷。我甚至極力主張,每個人在基礎教育階段都應該學習物理。因為我認為基礎教育的目的不是為了日後工作而去積累知識,而是為了啟發心智。物理學在這方面獨樹一幟,因為它能讓你在腦中進行的某些思維訓練,對未來非常有價值。比如,建立模型和抽象概念的思路,以及理解系統總可以用一個一階近似來描述大部分情況,但其後還可能存在二階、三階、四階項。再比如,你觀察到的系統可能充滿噪聲,但實際上存在可以抽離出來的基本頻率。就像物理學家走進教室說:“假設有一頭球形奶牛……”,大家聽了都會笑,但這其實是非常了不起的思維方式,在各行各業都具有極強的普適性。因為在很多情況下,一頭牛確實可以被近似成一個球體。得益於這種訓練,我在觀察一個系統或事物時,總是試圖找出它的一階項和二階項。當我腦中有一堆錯綜複雜的想法或知識時,我會努力尋找什麼才是真正關鍵的?什麼是一階份量?我該如何簡化它?如何用最簡單的模型來展示其核心?然後再去處理其他次要項。我的一個項目 micrograd,或許可以很好地說明這一點。micrograd 用 100 行程式碼就展示了反向傳播。你可以用加法、乘法等簡單的操作來建構神經網路,就像搭樂高積木一樣。你建立一個計算圖,執行一次前向傳播和一次反向傳播來獲得梯度。這正是所有神經網路學習的核心。所以,micrograd 這 100 行 Python 程式碼,包含了理解神經網路訓練所需的全部精髓。其他的一切,都只是為了提升效率。我非常喜歡找到這些更低階的核心要素,然後將它們清晰地呈現出來。我覺得教育是智力上最有趣的事情,因為你面對的是一團錯綜複雜的知識,而你的任務是把它梳理清楚,鋪設成一條知識的坡道,讓後面的每一步都建立在前面一步的基礎之上。我發現,這種梳理知識的過程,本身就是一項極富智力趣味的認知任務。所以我個人非常享受這個過程,並著迷於如何以特定的方式將知識呈現出來,這或許對我的教學很有幫助。 (數字開物)
Karpathy「瘋狂之作」:100美元、4小時,就能訓練你自己的「小型GPT」
【新智元導讀】AI傳奇人物、前特斯拉AI總監Karpathy重磅推出全新開放原始碼專案「nanochat」,以不到8000行程式碼復現ChatGPT全流程,只需一台GPU、約4小時、成本僅百美元。該項目在GitHub上線不到12小時即獲4.2k星標!AI傳奇人物、前特斯拉AI總監Karpathy宣佈發佈全新項目nanochat!一個極簡但完整的「從零建構ChatGPT」訓練框架。Karpathy說這是他寫過的最瘋狂的項目之一!相當於每個人都可以自己擁有一個專屬的ChatGPT。項目剛放出還不到12個小時,GitHub星標就破4.2kStar!(還在持續瘋漲中)GitHub項目:https://github.com/karpathy/nanochat全是社區自來水流量,這就是Karpathy在AI領域的號召力!與早期的nanoGPT不同,nanochat不僅涵蓋預訓練,還囊括了從資料準備、預訓練、中期訓練(對話、多項選擇題、工具使用)、SFT、RL微調到推理部署的全流程。整個系統僅約8000行乾淨程式碼,啟動一台GPU機器、運行一條指令碼,4小時後你就能在網頁介面與自己訓練的「小ChatGPT」對話。Karpathy將其稱為LLM101n的「壓軸之作」,同時也可能成為未來研究基線和開源社區的實驗平台。讓我來仔細看看如何僅僅用8000行來「克隆」ChatGPT:使用全新的Rust實現訓練分詞器在FineWeb上對TransformerLLM進行預訓練,評估多個指標下的CORE分數在來自SmolTalk的使用者-助手對話、多項選擇題、工具使用資料上進行中期訓練進行SFT,在世界知識多項選擇題(ARC-E/C、MMLU)、數學(GSM8K)、程式碼(HumanEval)上評估聊天模型使用「GRPO」在GSM8K上對模型進行強化學習微調(RL)在帶有KV快取的引擎中實現高效推理,簡單的預填充/解碼,工具使用(在輕量級沙箱中的Python直譯器),通過CLI或類ChatGPT的網頁介面與其互動。撰寫一份單一的Markdown成績單,總結並將整個過程遊戲化。項目全程花費低至約100美元(約在一台8XH100節點上訓練4小時)。可以訓練、克隆一個可以對話的小型ChatGPT,它能創作故事/詩歌、回答簡單問題。只需要訓練約12小時即可超過GPT-2的核心指標。隨著進一步擴展到約1000美元(約41.6小時訓練),模型會迅速變得更連貫,能解決簡單的數學/程式碼問題並做多項選擇題。訓練24小時的模型(其FLOPs大致相當於GPT-3Small125M,約為GPT-3的1/1000)在MMLU上能進入40分段,在ARC-Easy上進入70分段,在GSM8K上進入20分段等。總結一下就是:100美元→可訓練出一個能寫詩、回答基礎問題的OpenAI同款「小型ChatGPT」;1000美元→達到近GPT-2以上的表現,可做基礎推理與程式碼生成。這個項目體現出他的核心理念:「降低 LLM 研究與復現門檻,讓每個人都能親手訓練自己的模型。」這種民主化路線,與他在nanoGPT時期倡導的「從零實現Transformer」如出一轍。項目地址:https://github.com/karpathy/nanoGPTKarpathy說他的目標是把完整的「強基線」棧整合到一個連貫、極簡、可讀、可修改、可最大化派生的倉庫中。nanochat將成為LLM101n(仍在開發中)的壓軸項目。Karpathy認為nanochat也有可能發展成一個研究工具或基準,就像之前的nanoGPT一樣。nanoGPT教你造大腦,nanochat教你造ChatGPT。如果說nanoGPT是「Transformer原始碼教學項目」。那麼,nanochat則是「LLM生態系統微縮版」、OpenAI同款、你的專屬AI。二者關係可理解為「從神經網路基礎到產品級對話系統」的兩步閉環。從Vibe Coding到nanoGPT,再到如今的nanochat,Karpathy不愧是「AI教育者」的最佳代言人。這一「瘋狂之作」並非狂想,而是Karpathy對AI開放、可學習、可復現理想的又一次踐行。小型ChatGPT效果展示Karpathy在WebUI部署了nanochat項目。他還給出了「與價格為100美元、運行4小時的」nanochat的示例對話。很……有趣!下面這張圖展示的是Karpathy在nanochat「$100速度跑」實驗(即只用一台GPU、約4小時訓練出的ChatGPT 小模型)中生成的「成績單」部分內容,說明模型規模、訓練耗時、以及在各類標準評測上的性能。Characters: 333989 —— 程式碼總字元數。Lines: 8304 —— 大約 8300 行乾淨、註釋良好的程式碼。Files: 44 —— 工程檔案數量。Tokens: 約83,497 —— 程式碼中的token數(大致對應8萬詞)。Dependencies: 2004行uv.lock依賴清單 —— 表明依賴極少、項目結構輕。這些數字展示了nanochat的「極簡」精神:完整實現了 ChatGPT 的訓練、微調與推理,卻仍保持在8000行程式碼以內。(新智元)
前特斯拉 AI 總監、OpenAI 顧問 Karpathy 和前亞馬遜和Google大神 Yegge 預言:未來十年,程式設計師身價只會漲
你刷著科技資訊,突然又看到那句老調重彈的斷言:“AI 將在 2026 年取代所有開發者。”可就在這時,OpenAI 聯合創始人 Andrej Karpathy 和亞馬遜、Google老將 Steve Yegge 卻給出了完全不同的預測。他們的觀點,直接顛覆了這種說法。他們的看法?大家都想反了。我這幾個月一直在密切使用 AI 程式設計工具,當這兩位大佬不約而同得出同樣的結論時,我就知道這事得好好琢磨一下。他們的觀點不僅和那些“末日論”截然不同,甚至可以說是完全相反。他們是誰?為什麼值得你關注Karpathy 可不是那種只會炒作 AI 的人。他是 OpenAI 的創始成員,曾任特斯拉 AI 總監,親手搭建了如今大家爭論不休的那些 AI 系統。AI 的侷限在那,他比誰都清楚。Yegge 則是在亞馬遜和Google負責過核心基礎設施的老兵,那時候“規模”這個詞的含義和現在完全不同。如今他在 Sourcegraph,直接和企業團隊合作,把 AI 真正落地到生產環境裡——不是做演示,而是要讓程式碼真正在現實中跑起來。當這兩位都看著 AI 程式設計的熱潮說“開發者不會消失”,我會認真聽。顛覆認知的核心觀點我突然明白了:這根本不是“取代”,而是“新一層抽象”。想想看,現在還有多少開發者寫彙編?幾乎沒有。高級語言出現後,程式設計師的飯碗沒丟,反而行業爆發式增長——因為大家能更快地做出更複雜的東西。Karpathy 和 Yegge 都認為,這個歷史正在重演。用 Yegge 的話說:“企業級軟體開發永遠都極其複雜,所以工程師和 AI 會聯手一起搞定它。”關鍵詞就是“聯手”,不是“AI 接管”,而是“協作”。現實中,這到底是什麼樣?給你舉個實際例子。Karpathy 發明了一個詞叫“vibe coding”(氛圍程式設計),非常貼切地描述了現在的變化:“現在有一種新型程式設計方式,我叫它‘vibe coding’,你完全順著感覺走,擁抱指數級提升,甚至忘了程式碼本身的存在。”聽起來挺嚇人?其實操作很簡單。Karpathy 做周末項目時,幾乎不碰鍵盤,直接和 Cursor Composer 對話:“把側邊欄的內邊距減半。”AI 就幫他改好了。看著沒問題,他就繼續。再也不用翻 CSS 檔案、偵錯邊距。遇到報錯,他直接把錯誤資訊貼上給 AI,什麼都不說。“通常就能搞定。”關鍵在於:這種方式是可以根據項目重要性靈活調整的。隨便玩玩的周末小項目?全程交給 AI,自己只管氛圍。企業級生產系統?就得像 Yegge 說的那樣用“監督式 AI”——AI 負責體力活,你全程把關、稽核。同樣的工具,具體怎麼用,取決於你在做什麼,人工介入的深淺也隨之變化。Yegge 的技術進化論(發展速度驚人)Yegge 一直密切關注著這場變革。他大約一年前提出了“對話式程式設計”這個概念——也就是通過與 AI 對話來寫程式碼,而不是依賴自動補全。但現在呢?“對話式程式設計還算主流,但智能體程式設計已經以指數級的速度超越了這種方式,效果遠勝以往。”所謂智能體程式設計,就是讓 AI 能夠獨立完成整個工作流程,你只需在旁邊觀看。與其說“幫我寫個函數”,不如直接讓 AI “為這個應用建構使用者登錄功能,包括密碼重設”。這場進步的速度令人咋舌。從自動補全到對話,再到自主智能體,前後不過一年半。三大程式設計時代(我們正步入第三階段)Karpathy 把這個過程分為三個清晰的階段:第一代:你寫出詳細的指令。比如要排序資料,就得手寫排序演算法。第二代:你給出示例,電腦通過學習樣本找出規律。比如要做圖片分類,就用成千上萬張帶標籤的照片訓練神經網路。第三代:你用英語描述需求。比如要使用者認證,只需說“建立一個帶密碼重設功能的安全登錄系統”。他的核心觀點是:“大語言模型(LLM)是一種全新的電腦,而你用英語來程式設計。”這不僅僅是工具的升級,而是讓任何能清楚表達想法的人都能參與程式設計。產品經理可以自己做原型,設計師也能無需等工程師就搭建互動演示。這不會取代開發者——而是讓所有人的能力成倍提升。一個鮮有人提及的問題:參差不齊的智能但我對此也有保留,Karpathy 的坦率讓人耳目一新。AI 存在所謂的“參差智能”——它能解決極其複雜的問題,卻也會在簡單問題上犯低級錯誤。AI 可能能完美實現複雜演算法,卻又信誓旦旦地告訴你 9.11 比 9.9 大。“目前,這一點尤其值得注意,特別是在生產環境中。要用 LLM 做它擅長的事,但要警惕那些‘參差邊界’,並始終讓人類參與把關。”這也是 “AI 會取代所有開發者”這種說法站不住腳的原因。AI 有時極其聰明,有時又愚蠢得不可思議,且難以預測。生產系統無法承受這種不穩定,必須有人類監督。經濟現實(已經在發生)有一點你必須重視:“有些公司已經裁掉了 30% 不願意用 AI 的工程師。”不是將來,而是已經發生。“有錢的公司可以直接投入,但其他公司就要做艱難選擇——要麼承擔成本、要麼被競爭對手甩開、要麼裁員來彌補新開支。”換句話說,如果一個用 AI 工具的開發者能頂仨人幹活,你覺得那兩個會被裁掉?這不是理論,我現在就在現實公司裡看到這種情況。會用這些工具的開發者變得極其搶手,而忽視 AI 的人正在被淘汰。你真正需要學什麼(和你想的不一樣)真正重要的能力,並不是死記硬背新 API,或者學點提示詞工程的小技巧。更高階的能力其實有以下幾種:AI 監督力:學會分辨 AI 輸出到底靠譜還是胡說八道。這種能力其實可以訓練出來——你會逐漸發現 AI 常犯的錯誤模式。問題架構力:把複雜需求拆解成 AI 能穩妥處理的小塊。這其實是傳統工程師的老本事,只不過用在了新工具上。質量把控力:能迅速發現 AI 帶來的那些隱蔽 bug。這和普通偵錯不一樣,因為 AI 的錯誤有自己獨特的規律。自然語言表達力:能更清晰地描述需求。如果程式設計越來越像對話,那溝通能力就成了技術能力。有趣的是,這些本質上都是人的能力,和 AI 協作後會被放大,而不是被取代。關於進展(別被炒作帶偏,關注現實)Karpathy 對“ 2025 年 AGI 就要來了”這種說法潑了盆冷水:“每當我看到‘2025 是智能體元年’這種說法,我都很擔心,其實我覺得這應該是‘智能體的十年’。”十年,不是一年。“可惜的是,華爾街並不懂得耐心,所以 AI 的炒作還會繼續喧囂下去,而真正的從業者還在摸索如何開啟新的計算時代。”但現在已經有些現實成果你可以用上:像 GitHub Copilot、Cursor 這樣的工具,已經讓開發者在日常任務上提速 30% 到 50%。這不是理論上的提升,而是你今天就能看到的實際效果。這場變革來得不算太快,你有時間適應;但也不算慢,現在就該開始行動。為什麼我對這場變革反而樂觀說實話,我一開始也很懷疑。“AI 讓程式設計大眾化”這種說法,聽起來就像矽谷的老套忽悠。但真正用這些工具做了幾個項目後,我突然明白了。每一次程式設計範式的變遷,都是類似的軌跡:從彙編到 C,從 C 到 Python,從命令列到圖形介面。每次大家都擔心門檻降低會讓行業變弱,但每次結果都是行業變大、變有創造力。那些最終脫穎而出的開發者,從來不是死守舊工具的人,而是善於用新工具做出以前做不到的東西的人。這次的變化更大。我們不只是換了種語法,而是獲得了一種全新的問題解決方式——更重視清晰表達,少了死記 API 的負擔。正如 Yegge 所說:“電腦科學教育確實需要進化,但基礎依然重要。當年彙編被高級語言取代時,大家擔心程式設計能力會退化,結果反而行業擴張、崗位增加。”現在最吃香的開發者,不是那些精通 React hooks 或 Kubernetes 配置的人,而是能清楚表達自己想法,並能引導 AI 正確實現的人。本周你該做什麼別再光看資料了,趕緊上手試試吧。挑一個 AI 程式設計工具用起來——如果你想要穩定一點的體驗,就選 GitHub Copilot;如果你想嘗鮮最新功能,那就試試 Cursor。先從一個無關緊要的小項目開始,做點有趣又無壓力的東西,比如隨機語錄生成器、簡單的待辦事項應用之類的。這種項目對程式碼完美與否沒什麼要求,放手去做就好。別想著一口氣徹底革新你的整個開發流程。先在這些低風險的小項目裡,適應一下人與 AI 協作的節奏。那些已經在 AI 時代如魚得水的開發者,從來不是等到工具完善、教學齊全才開始的。他們都是邊試邊錯,邊做邊學。真正的未來Karpathy 和 Yegge 都明白一件事,而那些“AI 取代人類”的說法卻忽略了:這項技術是放大人類智慧,而不是取而代之。我們不會被淘汰,我們會變成指揮者。AI 不是來搶我們的飯碗,而是讓我們和它配合,去解決單靠自己搞不定的大難題。未來屬於那些能站在更高層次思考、善於溝通、懂得如何指揮 AI 解決複雜問題的開發者。如果你已經走到今天這一步,其實你已經具備了大部分所需的能力。你只需要開始學會和 AI “共舞”。說真的,這支舞一旦跳順了,還挺有意思的。革命不是即將到來,而是已經發生。問題只在於,你是要參與塑造它,還是被它塑造。 (大模型技術共學營)
軟體正在發生根本變化:Andrej Karpathy 舊金山 AI創業學院演講萬字實錄
Andrej Karpathy 剛剛在舊金山舉行的Y Combinator AI 創業學院的最新主題演講,這是Andrej最新的關於軟體工業領域正在發生巨變的集大成思考,我給大家把完整的中文文字版和視訊版都整理出來了,強烈建議收藏反覆觀看和閱讀Andrej 融合了他在史丹佛、OpenAI 和特斯拉的工作經驗,洞察到一場變革正在發生。軟體,正再次迎來巨變。Andrej認為我們已經進入了“軟體 3.0”時代——在這個時代,自然語言成為了新的程式設計介面,而模型則負責完成其餘的工作Andrej深入探討了這場變革對開發者、使用者乃至軟體設計本身的意義,並指出:我們不僅僅是在使用新工具,更是在建構一種全新的電腦演講的核心觀點 (來自 Andrej Karpathy 本人!):可以肯定地說,軟體正在再次發生根本性的變革。大語言模型(LLM)是一種全新的電腦,而你用英語就能對它進行程式設計。因此,從軟體的角度來看,它們完全配得上一次重大的版本升級大語言模型兼具了公共設施(utilities)、晶圓廠(fabs)和作業系統(operating systems)的特性 → 這催生了新的“大語言模型作業系統”(LLM OS),它由頂尖實驗室(labs)“製造”(fabbed),並像公共設施一樣分發(目前如此)。許多歷史上的類比都適用——我們正處於電腦發展的“1960 年代”LLM 心理學:大語言模型如同“人類心智的幽靈”(people spirits),它們是人類的隨機模擬,其模擬器是一個自回歸 Transformer 模型。由於它們基於人類資料訓練,因而湧現出一種獨特的心理學特性——在某些方面超越人類,但在許多其他方面又難免犯錯。鑑於此,我們該如何與它們高效地攜手合作呢?大語言模型是“人類心智的幽靈” → 這意味著可以建構“部分自主”的產品大語言模型可以用英語程式設計 → 這讓軟體開發變得極其大眾化!(就是所謂的“憑感覺程式設計”或“氛圍感程式設計”/ vibe coding)大語言模型是數字資訊新的主要消費者和處理者(在圖形介面/人類和 API/程序之外)→ 為 AI 代理(Agent)而建構!以下是演講視訊以及中文文字版實錄軟體再次迎來根本性變革:LLM,用英語程式設計的新型電腦今天我很高興能在這裡和大家聊一聊 AI 時代的軟體。我聽說在座的很多是學生,比如本科生、碩士、博士等等,你們即將進入這個行業。我認為,現在進入這個行業,正是一個極其獨特且非常有趣的時刻。究其根本,我認為原因在於,軟體正在再次發生變革。我之所以說“再次”,是因為我其實已經講過這個話題了。但問題是,軟體一直在變,所以我總有大量的新材料來創作新的演講。而且我認為這次的變革是相當根本的。可以說,軟體在過去 70 年裡,從未在如此基礎的層面上發生過大的變化,然而在最近幾年裡,它卻迅速地變革了大約兩次。這意味著有海量的工作等著我們去做,有海量的軟體需要我們去編寫和重寫。讓我們來看一下軟體的全貌。如果我們把這張圖想像成“軟體地圖”——這是一個叫做“GitHub 地圖”的炫酷工具——這基本上就是所有被編寫出來的軟體,它們是給電腦下達的、用於在數字空間執行任務的指令。如果你放大看,這裡都是不同類型的程式碼倉庫,這就是所有已被寫就的程式碼幾年前,我觀察到軟體似乎在變化,出現了一種新型的軟體。當時我稱之為軟體 2.0。這個想法是說,軟體 1.0 是你為電腦編寫的程式碼;而軟體 2.0,基本上就是神經網路,尤其是神經網路的權重。你不是直接編寫這些“程式碼”,更多的是在調整資料集,然後運行一個最佳化器來生成這些神經網路的參數。當時,神經網路還被看作是一種分類器,和決策樹之類的東西差不多。所以,我認為我提出的這個框架是更恰當的現在,我們實際上有了一個軟體 2.0 領域的等價物。我認為 Hugging Face 基本上就是軟體 2.0 時代的 GitHub。還有一個叫 Model Atlas 的東西,你可以在上面可視化所有在那裡編寫的“程式碼”。順便說一句,如果你好奇,中間那個巨大的圓點,是 Flux(圖像生成器)的參數。每當有人在 Flux 模型之上進行微調時,就相當於在這個空間裡建立了一個 Git 提交,從而創造出一種不同風格的圖像生成器所以,基本上我們有:軟體 1.0:程式設計電腦的電腦程式碼。軟體 2.0:程式設計神經網路的權重。這裡有一個例子,AlexNet,一個圖像識別神經網路。到目前為止,我們直到最近才熟悉的神經網路,都像是功能固定的電腦,比如“圖像到類別”的轉換器。我認為,真正發生變化的,也是一個相當根本性的變化,是神經網路通過大型語言模型(LLM)變得可程式設計了。我視其為一種非常獨特的新事物,一種新型的電腦。因此,在我看來,它值得一個新的稱號:軟體 3.0。基本上,你的提示(prompt)現在就是用來給 LLM 程式設計的程序。而最了不起的是,這些提示是用英語寫的,這真是一種非常有趣的程式語言所以,總結一下這三者的區別:以情感分類為例,你可以編寫一段 Python 程式碼來做這件事(軟體 1.0),或者你可以訓練一個神經網路(軟體 2.0),再或者,你可以給一個大型語言模型下達提示(軟體 3.0)。這裡是一個少樣本提示(few-shot prompt),你可以想像如何修改它,用一種稍微不同的方式來“程式設計”這台電腦所以我們有了軟體 1.0、軟體 2.0,而且我認為我們正在看到一個新的程式碼類別在增長。也許你已經注意到,很多 GitHub 上的程式碼不再是純粹的程式碼,而是夾雜了大量的英語。這不僅是一種新的程式設計範式,更讓我驚嘆的是,它竟然是用我們的母語——英語——來實現的。幾年前,當這個想法讓我大開眼界時,我發了條推文,吸引了很多人的注意。這至今仍是我的置頂推文:我們竟然開始用英語給電腦程式設計了。當我在特斯拉工作時,我們致力於開發 Autopilot(自動輔助駕駛)。我當時展示過這樣一張幻燈片:你可以想像,車輛的輸入在底部,經過一個軟體棧,最終輸出方向盤和油門的控制。我當時的觀察是,Autopilot 中有大量的 C++ 程式碼,也就是軟體 1.0 的程式碼,同時也有一些用於圖像識別的神經網路。我觀察到一個趨勢:隨著我們不斷改進 Autopilot,神經網路的能力和規模都在增長。與此同時,所有的 C++ 程式碼都在被刪除,許多最初用軟體 1.0 實現的功能和能力,都被遷移到了軟體 2.0。舉個例子,大量拼接不同攝影機圖像資訊、以及跨時間資訊融合的工作,都由一個神經網路完成了。我們因此得以刪除了大量程式碼。所以,軟體 2.0 技術堆疊毫不誇張地“吞噬”了 Autopilot 的軟體棧。我認為,當時這非常了不起,而現在我們又一次看到了同樣的事情發生。我們有了一種新型的軟體,它正在吞噬舊的技術堆疊。我們現在有三種完全不同的程式設計範式。如果你即將進入這個行業,精通所有這三種範式是個非常好的主意。因為它們各有優劣,你可能需要決定某個功能是用 1.0、2.0 還是 3.0 來實現。你是要去訓練一個神經網路?還是僅僅給 LLM 寫個提示?或者這應該是一段明確的程式碼?我們都需要做出這些決策,並且可能需要在這些範式之間流暢地切換LLM 的三重身份:公共設施、晶圓廠與作業系統新的 LLM 作業系統,由各大實驗室“製造”,並(暫時)像公共設施一樣分發。許多歷史類比都適用——在我看來,我們正處於計算科學的 1960 年代。接下來,在第一部分,我想談談 LLM,以及如何理解這個新的範式、它的生態系統是怎樣的。這種新型電腦到底是什麼樣子的?它的生態系統又是什麼樣的?我被吳恩達(Andrew Ng)多年前的一句話深深打動。我想 Andrew 馬上就要在我之後演講了。他當時說:“人工智慧是新的電力。” 我確實認為這句話捕捉到了一些非常有趣的東西。LLM 現在無疑感覺具備了公共設施(utilities)的屬性。LLM 實驗室,比如 OpenAI、Gemini、Anthropic 等,它們投入資本支出(capex)來訓練 LLM,這就像是建設電網。然後,它們投入營運支出(opex),通過 API 向我們所有人提供智能服務。這是通過按量計費的方式實現的,比如我們按每百萬 token 付費。我們對這種 API 的要求,也非常像對公共設施的要求:我們要求低延遲、高可用性、質量穩定等等在電力系統中,你會有轉換開關,可以在電網、太陽能、電池或發電機之間切換電源。在 LLM 領域,我們可能有像 OpenRouter 這樣的服務,可以輕鬆地在不同類型的 LLM 之間切換。因為 LLM 是軟體,它們不爭奪物理空間,所以同時擁有六個“電力供應商”並能在它們之間切換是完全沒問題的,因為它們不構成那麼直接的競爭還有一點很有意思,就在過去幾天,許多 LLM 服務都當機了,人們感覺被困住,無法工作。這讓我覺得很奇妙:當最先進的 LLM 當機時,實際上就像是世界範圍內的“智能斷電”(intelligence brownout),就像電網電壓不穩一樣。我們對這些模型的依賴越深,地球就會變得越“笨”。這種依賴已經非常顯著,而且我認為還會繼續增長。但 LLM 不僅僅有公共設施的屬性,我認為說它們具備晶圓廠(fabs)的某些屬性也是公平的。原因在於,建構 LLM 所需的資本支出確實非常龐大,這可不像建個發電站那麼簡單。你投入的是巨額資金。而且,這項技術的技術樹正在飛速發展。我們身處一個擁有深度技術樹、研發秘密的世界,而這些都集中在 LLM 實驗室內。不過,這個類比也有點模糊,因為正如我所說,這是軟體,而軟體的可防禦性較低,因為它非常易變所以,這是一個值得思考的有趣問題。你可以做出很多類比,比如 4 奈米工藝節點,或許類似於一個擁有特定最大浮點運算能力的計算叢集。當你使用輝達的 GPU,只做軟體而不做硬體時,這就像是無廠模式(fabless model)。但如果你像Google一樣,自己製造硬體,在 TPU 上訓練,那更像是英特爾模式(Intel model),即擁有自己的晶圓廠。所以這裡有些類比是說得通的。但實際上,我認為最貼切的類比或許是:在我看來,LLM 與作業系統(operating systems)有非常強的相似性。這不僅僅是電或水,不是那種從水龍頭裡流出來的商品。它們正日益成為複雜的軟體生態系統。它們不是像電力那樣的簡單商品讓我感到有趣的是,這個生態系統的形成方式也與作業系統非常相似。你有少數幾個閉源提供商,比如 Windows 或 macOS,然後你有一個開放原始碼的替代品,比如 Linux。對於 LLM,我們同樣有幾個相互競爭的閉源提供商,而 Llama 生態系統目前可能最接近於未來可能成長為像 Linux 那樣的事物。當然,現在還為時過早,因為它們還只是簡單的 LLM,但我們開始看到它們將變得遠比現在複雜。這不僅僅是 LLM 本身,還關乎工具使用、多模態以及所有這些如何協同工作當我前段時間意識到這一點時,我試著畫了一張草圖。在我看來,LLM 就像一個新的作業系統。LLM 是一種新型電腦,它就像是 CPU 的等價物。上下文窗口就像是記憶體。而 LLM 則利用所有這些能力,來協調記憶體和計算,以解決問題。從這個角度看,它確實非常像一個作業系統。再舉幾個例子。比如你想下載一個應用,你訪問 VS Code 官網,你可以下載並在 Windows、Linux 或 Mac 上運行它。同樣地,你可以拿一個 LLM 應用,比如 Cursor,然後在 GPT、Claude 或 Gemini 系列上運行它,只是一個下拉菜單的選擇而已。所以在這方面也很相似更多讓我感觸的類比是,我們彷彿正處於1960年代左右的時期。對於這種新型電腦來說,LLM 的算力仍然非常昂貴。這迫使 LLM 集中在雲端,而我們都只是通過網路與之互動的“瘦客戶端”。我們沒有人能完全獨佔這些電腦。因此,採用分時共享(time-sharing)是合乎邏輯的,我們都只是雲端電腦執行階段批處理(batch)中的一個維度。這與那個時代的電腦非常相像:作業系統在雲端,所有東西都通過流式傳輸,並且有批處理。所以,LLM 的個人計算革命尚未到來,因為它在經濟上還不划算。但我想有些人正在嘗試,比如 Mac mini,事實證明它非常適合某些 LLM,因為如果你做單批次推理(batch-one inference),這完全是記憶體密集型的,所以效果不錯。我認為這些可能是個人計算的一些早期跡象,但這還沒有真正發生。它會是什麼樣子,沒人知道。也許在座的某些人會去發明它是什麼,它如何工作,或者它應該是什麼樣還有一個類比我想提一下。每當我在文字介面中直接與 ChatGPT 或某個 LLM 對話時,我都感覺自己像是在通過終端與作業系統對話。它就是文字,是與作業系統的直接互動。一個通用的圖形使用者介面(GUI)還沒有真正被發明出來。比如,ChatGPT 應該有一個除了聊天氣泡之外的 GUI 嗎?當然,我們稍後會講到的一些應用有 GUI,但還沒有一個跨所有任務的通用 GUI不過,LLM 在某些相當獨特的方面也與早期的作業系統和計算有所不同。我曾寫過關於一個讓我印象深刻的、非常與眾不同的特性:LLM 顛覆了技術擴散的方向。通常,對於像電力、密碼學、計算、飛行、網際網路、GPS 等許多革命性新技術,政府和企業通常是第一批使用者,因為它們新技術、價格昂貴等等,之後才會擴散到消費者層面。但我感覺 LLM 卻反過來了。比如,早期的電腦主要是用於彈道計算和軍事用途,但對於 LLM,它關心的卻是如何煮雞蛋之類的事情。這確實是我的很多用法。所以,我們有了一台神奇的新電腦,它卻在幫我煮雞蛋,而不是幫政府做一些非常了不得的事情,比如軍事彈道計算或某些特殊技術,這讓我覺得很奇妙。事實上,企業和政府在採用這些技術方面,反而落後於我們普通大眾。這完全是反向的。我認為這或許能為我們思考如何使用這項技術,或者它的首批應用會在那裡提供一些啟示。總結一下到目前為止的觀點:LLM 實驗室、LLM,我認為用這些詞語是精準的。但 LLM 是複雜的作業系統,它們處於計算科學的 1960 年代,我們正在重新經歷計算的演進。它們目前通過分時共享的方式提供,並像公共設施一樣分發。前所未有的是,它們並非掌握在少數政府和企業手中,而是掌握在我們所有人手中。因為我們都有電腦,它只是軟體,而 ChatGPT 就像是被瞬間傳送到了數十億人的電腦上,一夜之間。這太瘋狂了。我至今仍覺得這事不可思議。而現在,輪到我們進入這個行業,為這些電腦程式設計了。這太瘋狂了。所以我認為這非常了不起。LLM 心理學:人格幽靈、超人與凡人的結合體LLM = “人格幽靈”,是對人的隨機模擬,其模擬器是一個自回歸 Transformer。由於它們在人類資料上訓練,因此擁有一種湧現出的心理特質,既在某些方面是超人,又在許多其他方面容易犯錯。鑑於此,我們如何與它們高效地攜手合作?在為 LLM 程式設計之前,我們必須花點時間思考這些東西到底是什麼。我尤其喜歡談論它們的“心理學”。我喜歡把 LLM 想像成 “人格幽靈”(people spirits)。它們是對人的隨機模擬,而這個模擬器恰好是一個自回歸的 Transformer。Transformer 是一個神經網路,它以 token 為單位,一塊一塊地向前推進,每個 chunk 的計算量幾乎相等。這個模擬器當然包含了一些權重,我們用網際網路上所有的文字資料來擬合它。最終,你就得到了這樣一個模擬器。因為它是在人類資料上訓練的,所以它擁有一種類似人類的、湧現出的心理特質你首先會注意到的當然是,LLM 擁有百科全書式的知識和記憶力。它們能記住很多東西,遠超任何單個的人類。這讓我想起了電影《雨人》(Rainman),我非常推薦大家去看,那是一部很棒的電影。達斯汀·霍夫曼在片中扮演一個自閉症天才,他擁有近乎完美的記憶力,可以讀完一本電話簿後記住所有的名字和號碼。我感覺 LLM 非常相似,它們能輕易記住 SHA 雜湊值和各種各樣的事情。所以,在某些方面,它們無疑擁有超能力但它們也有一系列的,我稱之為 “認知缺陷”。它們會頻繁地產生幻覺,編造事實,並且沒有一個非常好的、或者說至少是不足夠的內部自我認知模型。雖然這一點有所改善,但仍不完美。它們表現出 “參差不齊的智能”(jagged intelligence)。它們在某些問題解決領域是超人,但又會犯一些基本上沒有人類會犯的錯誤,比如堅稱 9.11 大於 9.9,或者草莓(strawberry)裡有兩個 R。這些都是些著名的例子。基本上,你隨時可能被它粗糙的邊緣絆倒它們還患有 “順行性遺忘症”(anterograde amnesia)。我這裡想說的是,如果一個新同事加入你的公司,他會隨著時間的推移瞭解你的組織,並積累大量關於組織的背景知識。他們回家睡覺,鞏固知識,並逐漸建立起專業技能。LLM 本身並不會這樣做。這在 LLM 的研發中也尚未得到解決。所以,上下文窗口實際上更像是“工作記憶”,你必須非常直接地去程式設計這個工作記憶,因為它們不會默認就變得更聰明。我認為很多人都被這方面的類比誤導了在流行文化中,我推薦大家看兩部電影:《記憶碎片》(Memento)和《初戀50次》(50 First Dates)。在這兩部電影裡,主角的“權重”是固定的,他們的“上下文窗口”每天早上都會被清空。當這種情況發生時,去工作或維持人際關係會變得極具挑戰性。而這正是 LLM 時時刻刻在經歷的還有一點我想指出,是與使用 LLM 相關的安全限制。例如,LLM 相當容易上當受騙,它們容易受到提示注入(prompt injection)風險的攻擊,可能會洩露你的資料等等。還有許多其他與安全相關的考量。所以,長話短說,你必須同時面對這樣一個事實:這是一個擁有超能力,但又有一堆認知缺陷和問題的存在。然而它們又極其有用。那麼,我們該如何為它們程式設計?如何繞過它們的缺陷,同時享受它們的超能力?轉換思路,談談機遇…從“人格幽靈”到“部分自治產品”現在我想切換到談論機遇:我們該如何使用這些模型?最大的機遇在那裡?這並非一個詳盡的列表,只是我在這次演講中認為有趣的一些點。我首先感到興奮的,是我稱之為 “部分自治應用”(partial autonomy apps) 的東西。以程式設計為例,你當然可以直接去 ChatGPT,開始複製程式碼、貼上錯誤報告,然後獲取程式碼再貼上回來。但你為什麼要這麼做呢?為什麼要直接和作業系統打交道?擁有一個專門為此設計的應用要合理得多。我想你們中的許多人都在用 Cursor,我也在用。Cursor 就是你想要的東西,而不是直接去 ChatGPT。我認為 Cursor 是早期 LLM 應用的一個絕佳範例,它具備了許多我認為在所有 LLM 應用中都通用且有用的特性具體來說,你會注意到,我們有一個傳統的介面,允許人類像以前一樣手動完成所有工作。但除此之外,我們現在有了這個 LLM 整合,它讓我們能以更大的區塊進行操作。我認為 LLM 應用共享的一些有用特性包括:LLM 負責大量的上下文管理工作。它們編排對 LLM 的多次呼叫。 以 Cursor 為例,它在後台呼叫了用於處理所有檔案的 embedding 模型、實際的聊天模型,以及將程式碼變更(diffs)應用到程式碼的模型,這一切都為你編排好了。應用專屬的圖形介面(GUI)及其重要性。 這一點非常重要,但可能沒有得到應有的重視。因為你不想直接用文字與作業系統對話。文字很難閱讀、解釋和理解。而且,你也不想在文字中本地執行某些操作。直接看到一個用紅色和綠色表示的變更 diff,看到增加了什麼、刪除了什麼,要容易得多。用 Command + Y 接受或 Command + N 拒絕,也比我必須在文字中輸入要方便得多。GUI 讓人類能夠審計這些易錯系統的工作,並提高效率。 我稍後會再回到這一點。最後一點我想指出的特性是,我稱之為 “自治滑塊”(autonomy slider)。例如,在 Cursor 中,你可以只用 Tab 補全,這時你主要還是自己掌控。你可以選中一段程式碼,用 Command + K 只修改那一段。你可以用 Command + L 修改整個檔案。或者你可以用 Command + I,讓它在整個程式碼庫裡自由發揮。這就是完全自治的智能體(agentic)版本。所以,你掌控著這個自治滑塊,根據手頭任務的複雜性,你可以調整你願意放棄的自主權程度。再舉一個相當成功的 LLM 應用的例子,Perplexity。它也具備我剛才在 Cursor 中指出的非常相似的特性。它打包了大量資訊,編排了多個 LLM,它有一個 GUI 讓你審計它的部分工作,比如它會引用來源,你可以檢查它們。它也有一個自治滑塊:你可以做一個快速搜尋,或者進行“研究”(research),或者進行“深度研究”(deep research),然後 10 分鐘後再回來看結果。這些都是你交給工具的不同程度的自主權所以我的問題是,我感覺大量軟體都會變得部分自治。我正在思考這會是什麼樣子。對於你們中許多維護產品和服務的人來說,你將如何讓你的產品和服務部分自治?LLM 能看到人類能看到的一切嗎?LLM 能以人類能採取的所有方式行動嗎?人類能監督並保持在這個活動循環中嗎?因為再說一次,這些是易錯的、尚不完美的系統。一個在 Photoshop 裡的“diff”會是什麼樣?而且,現在很多傳統軟體有各種開關和設定,都是為人類設計的。所有這些都必須改變,變得能為 LLM 所用。對於許多我提到的 LLM 應用,有一點我想強調,但我不確定它是否得到了應有的關注。我們現在正與 AI 合作,通常是它們進行生成,我們人類進行驗證。讓這個循環儘可能快地運轉,符合我們的利益,這樣我們才能完成大量工作。我認為有兩種主要方式可以實現這一點:大幅加快驗證速度。 我認為 GUI 在這方面極其重要,因為它利用了我們大腦中的電腦視覺 GPU。閱讀文字是費力的,不好玩,但看東西是好玩的,它就像一條通往你大腦的高速公路。所以我認為 GUI 對於審計系統和視覺化表示非常有幫助。我們必須給 AI 繫上韁繩。 我認為很多人對 AI 智能體(AI agents)過於興奮了。給我一個一萬行程式碼的變更提交到我的程式碼庫,這對我沒什麼用。我仍然是瓶頸。即使那一萬行程式碼是瞬間生成的,我必須確保它沒有引入 bug,確保它做的是正確的事情,確保沒有安全問題等等。所以,基本上,讓這兩者(生成與驗證)的流程變得非常快,符合我們的利益。我們必須設法給 AI 繫上韁繩,因為它反應太過度了。這就是我在進行 AI 輔助程式設計時的感受。如果我只是做一些小規模的編碼,一切都很好。但如果我真的想完成工作,有一個反應過度的智能體在做各種事情,感覺並不好這張幻燈片不太好,抱歉。但我想,和你們許多人一樣,我正在摸索一些在我的編碼工作流中利用這些智能體的方法。在我自己的工作中,我總是害怕得到太大的變更(diffs)。我總是以小步、增量的方式進行,確保一切都好,我想讓這個循環轉得非常非常快。我專注於單一、具體的小塊工作。我想你們很多人可能也在形成類似的使用 LLM 的工作方式。我也看到一些部落格文章,試圖總結出與 LLM 工作的最佳實踐。這是我最近讀到的一篇,我覺得寫得很好。它討論了一些技巧,其中一些就與如何給 AI 繫上韁繩有關。舉個例子,如果你的提示很模糊,AI 可能不會完全按你的意圖行事,那樣驗證就會失敗。如果驗證失敗,你就會開始兜圈子。所以,花多一點時間,讓你的提示更具體,這會增加驗證成功的機率,你就能繼續前進。這更有意義。我認為我們很多人最終都會找到這樣的技巧。在我自己的工作中,我目前對 AI 和 LLM 時代的教育是什麼樣子的很感興趣。對我來說,一個很大的思考點就是如何給 AI 繫上韁繩。我不認為直接去 ChatGPT 說“嘿,教我物理”是行得通的。因為 AI 會在“樹林裡迷路”。所以對我來說,這實際上是兩個獨立的 App:一個是給老師建立課程的 App,另一個是接收課程並服務於學生的 App。在這兩種情況下,我們都有了一個中間產物——課程,它是可審計的,我們可以確保它質量好、內容一致。AI 被限制在某個教學大綱、某個項目進度的“韁繩”之內。這是給 AI 繫上韁繩的一種方式,我認為這樣成功的可能性要大得多,AI 也不會迷路我還想提到的一個類比是,我對部分自治並不陌生。我在特斯拉為此工作了五年。那也是一個部分自治產品,並且有很多共同的特性。比如,儀表盤上就是 Autopilot 的 GUI,它向我展示神經網路看到了什麼。我們也有自治滑塊。在我任職期間,我們為使用者增加了越來越多的自動化任務我想簡單講一個故事。我第一次乘坐自動駕駛汽車是在 2013 年。我有一個在 Waymo 工作的朋友,他邀請我在帕洛阿爾托兜了一圈。我當時用Google眼鏡拍了這張照片。你們很多人可能太年輕,都不知道那是什麼了。但當時這可是風靡一時。我們坐上這輛車,在帕洛阿爾托的高速公路和街道上行駛了大約 30 分鐘。那次駕駛是完美的,零干預。那是 2013 年,距今已經 12 年了。這讓我很震驚,因為當我經歷那次完美的駕駛、完美的演示時,我感覺自動駕駛馬上就要實現了,這太不可思議了。但 12 年後的今天,我們仍然在研究自動駕駛,仍在研究駕駛智能體。甚至現在,我們都還沒有真正解決這個問題。你可能會看到 Waymo 的車在路上跑,看起來是無人駕駛,但背後仍有大量的遠端操作和人工介入。所以我們甚至還沒有宣佈成功。但我認為它最終肯定會成功,只是花了很長時間所以我覺得,軟體真的很難,就像駕駛一樣棘手。所以當我看到像“2025 年是智能體元年”這樣的說法時,我會非常擔憂。我感覺,這應該是智能體的十年,這需要相當長的時間。我們需要人類在環,我們需要謹慎地做這件事。這是軟體,我們嚴肅點。還有一個我總是在思考的類比,就是鋼鐵人戰衣。我一直很喜歡鋼鐵人,我認為它在很多方面,對於技術及其發展方向的描繪都是正確的。我喜歡鋼鐵人戰衣的一點是,它既是一種增強(augmentation)——托尼·斯塔克可以駕駛它,它同時也是一個智能體(agent)——在一些電影裡,鋼鐵人戰衣相當自主,可以飛來飛去找到托尼。這就是自治滑塊:我們可以建構增強工具,也可以建構智能體。我們想兩者兼顧但在現階段,與這些易錯的 LLM 合作,我會說,我們需要的不是鋼鐵人機器人,而更多是鋼鐵人戰衣。 不是去建構炫酷的自主智能體演示,而是去建構部分自治的產品。這些產品有定製的 GUI 和使用者體驗,這麼做是為了讓人類的“生成-驗證”循環變得非常快,但我們又不失一個願景:原則上,這項工作是可以自動化的。你的產品裡應該有一個自治滑塊,你應該思考如何滑動這個滑塊,讓你的產品隨著時間的推移變得更加自主。這就是我認為存在大量機會的地方,在這些類型的產品裡用英語程式設計:軟體的普及化與“氛圍感程式設計”的興起現在我想換個角度,談談另一個我認為非常獨特的維度。不僅出現了一種新的、允許軟體實現自主性的程式語言,而且正如我所說,它還是用英語程式設計的,這是一種自然的介面。突然之間,每個人都成了程式設計師,因為每個人都會說像英語這樣的自然語言。這對我來說是極其利多且非常有趣的,也是完全前所未有的。過去,你可能需要花五到十年學習某樣東西,才能在軟體領域做點什麼。現在不再是這樣了我不知道有沒有人聽說過 “氛圍感程式設計”(vibe coding)?就是這條推文引入了這個詞。但我聽說這現在已經成了一個大梗了。關於這個有個有趣的故事:我在推特上大概有 15 年了,但我仍然不知道那條推文會火,那條會無人問津。我當時以為這條會是後者,就是個靈光一閃的想法。但它成了一個徹頭徹尾的梗,我真的搞不懂。但我想,它觸動了大家的共鳴,給了一種大家都能感覺到但說不出來的東西一個名字。現在它都有維基百科頁面了是的,這現在成了我的一個重大貢獻之類的了Hugging Face 的 Tom Wolf 分享了一個我很喜歡的、非常美好的視訊。這些是正在進行“氛圍感程式設計”的孩子們我發現這個視訊特別暖心。我愛這個視訊。你怎麼能看著這個視訊還對未來感到悲觀呢?未來是美好的。我認為這最終會成為通向軟體開發的入門“敲門磚”。我對下一代的未來並不悲觀。是的,我愛這個視訊。我也試了一下“氛圍感程式設計”,因為它太好玩了。當你想建構一個超級定製化、似乎不存在的東西,並且只是因為是周六想隨便搞搞時,“氛圍感程式設計”就太棒了。我做了這個 iOS 應用,我其實不會用 Swift 程式設計,但我能做出一個超級基礎的應用,這讓我非常震驚。我就不解釋它是什麼了,挺傻的。但這只花了一天的工作量,當天晚上它就在我手機上運行了。我當時就覺得:“哇,太神奇了。” 我不必為了入門而去讀五天的 Swift 文件我還“氛圍感程式設計”了這個叫 MenuGen 的應用。它現在是上線的,你可以在 menu.gen.app 上試試。我當時遇到的問題是,每次去餐廳,我看完菜單,完全不知道那些菜是什麼,我需要圖片。但沒有這樣的東西。所以我想:“嘿,我要‘氛圍感程式設計’一個。”它看起來是這樣的,你訪問 menu.gen.app,給菜單拍張照,然後 MenuGen 就會生成圖片。每個註冊使用者都能免費獲得 5 美元的額度,因此這成了我生活中的一個主要成本中心。所以這對我來說是一個負收入應用。我在 MenuGen 上已經虧了一大筆錢了。但 MenuGen 對我來說最奇妙的一點是,程式碼本身,也就是“氛圍感程式設計”的那部分,反而是最簡單的部分。 大部分的工作,是在我試圖讓它真正可用的時候產生的:身份驗證、支付、域名、Vercel 部署……這些都非常困難。而且所有這些都不是程式碼,所有這些 DevOps 的東西都是我在瀏覽器裡點來點去完成的。這過程極其緩慢,又花了我一周時間這真的很有趣:我在幾小時內就在我筆記本上做出了 MenuGen 的演示版,但之後花了一周時間才讓它真正上線。原因就是,這個過程太煩人了。比如,如果你想給你的網頁加上Google登錄,我知道這字很小,但這是 Clerk 這個庫告訴我的海量指令,關於如何整合它。這太瘋狂了。它告訴我:去這個 URL,點選這個下拉菜單,選擇那個,再去那個地方,點選那個。它像電腦一樣告訴我應該採取什麼行動。你來做啊,為什麼讓我來做?搞什麼鬼!我不得不跟著所有這些指令操作,太瘋狂了為智能體而建構:迎接數字資訊的全新消費者因此,我演講的最後一部分,關注的就是:我們能直接為智能體(agents)而建構嗎?我不想做這些工作,能讓智能體來做嗎?粗略地說,我認為出現了一個全新類別的數字資訊消費者和操縱者。過去只有通過 GUI 的人類,或通過 API 的電腦。現在,我們有了一個全新的東西——智能體。它們是電腦,但又有點像人,對吧?它們是網際網路上的“人格幽靈”。它們需要與我們的軟體基礎設施互動。我們能為它們而建構嗎?這是一個新事物舉個例子,你可以在你的域名上放一個 robots.txt 檔案,來指示——或者說建議——網路爬蟲在你的網站上應該如何行為。同樣地,你或許可以有一個 lm.txt 檔案,就是一個簡單的 Markdown,告訴 LLM 這個域名是關於什麼的。這對 LLM 來說非常易讀。如果它非得去獲取你網頁的 HTML 並嘗試解析,那將非常容易出錯,很困難,而且會搞砸。所以我們可以直接與 LLM 對話,這值得做大量的文件目前是為人類編寫的。你會看到列表、粗體、圖片,這些都無法被 LLM 直接訪問。我現在看到一些服務正在將它們的文件大量地轉向專門為 LLM 設計。例如,Vercel 和 Stripe 是這方面的先行者,但我已經看到了更多。它們用 Markdown 提供文件。Markdown 對 LLM 來說超級容易理解,這太棒了再舉一個我自己的簡單例子。也許你們有人知道 3Blue1Brown,他在 YouTube 上製作非常精美的動畫視訊。是的,我愛他寫的那個庫 Manim。我想自己也做一個。Manim 有詳盡的文件說明如何使用。我不想真的去讀它,所以我把整個文件複製貼上給了一個 LLM,然後描述了我想要什麼。它直接就成功了。LLM “氛圍感程式設計”給了我一個我想要的動畫。我當時就覺得:“哇,太神奇了。” 所以,如果我們能讓文件對 LLM 來說易於理解,將會解鎖海量的用途。我認為這非常棒,應該更多地發生另一件我想指出的事是,不幸的是,這不僅僅是把你的文件變成 Markdown 那麼簡單,那只是容易的部分。我們實際上必須改變文件的內容。任何時候你的文件裡說“點選這裡”,這都很糟糕。LLM 目前無法本地執行這個操作。所以 Vercel 正在把所有出現的“點選”取代為等效的、你的 LLM 智能體可以代為執行的 curl 命令。我認為這非常有趣當然,還有 Anthropic 的模型上下文協議(Model Context Protocol),這也是另一種直接與作為新消費者的智能體對話的協議。我對這些想法非常看好。另一件我非常喜歡的事,是出現了一些小工具,它們幫助以 LLM 友好的格式攝取資料。比如,當我訪問一個 GitHub 倉庫,像我的 nanoGPT 倉庫,我沒法把它喂給一個 LLM 然後提問,因為這是 GitHub 上的人類介面。但當你把 URL 從 github.com 改成 git-ingest.com,它實際上會把所有檔案拼接成一個巨大的文字,並建立一個目錄結構等等。這樣就準備好被覆制貼上到你喜歡的 LLM 裡去用了一個可能更極致的例子是 Deep Demos,它不只是提供檔案的原始內容。這是來自 Devin 的,他們讓 Devin 分析 GitHub 倉庫,然後 Devin 會為你的倉庫建構一整套文件頁面。你可以想像,把這個複製貼上到你的 LLM 裡會更有幫助。我喜歡所有這些你只需要改一下 URL 就能讓某些東西變得能被 LLM 訪問的小工具所以,這一切都很好。我認為應該有更多這樣的東西。我還想補充一點,未來 LLM 完全有可能——不,甚至今天就可能——四處遊走並點選東西。但我仍然認為,與 LLM 相向而行,讓它們更容易地訪問所有這些資訊,是非常值得的。因為使用那些(視覺點選)工具仍然相當昂貴,也困難得多。所以我確實認為,會有大量長尾的軟體不會主動適配,因為它們不是“活躍玩家”的程式碼庫或數字基礎設施,我們將需要這些工具。但對於其他所有人來說,我認為在某個中間點相遇是非常值得的。所以,我對兩種方式都看好總結一下:這是一個多麼令人驚嘆的、進入行業的時刻!我們需要重寫海量的程式碼。大量的程式碼將由專業人士和編碼者來編寫。這些 LLM 有點像公共設施,有點像晶圓廠,但尤其像作業系統。但現在還太早了,就像是 1960 年代的作業系統,很多歷史類比都適用。這些 LLM 又像是易錯的“人格幽靈”,我們必須學會與它們合作。為了做好這一點,我們需要調整我們的基礎設施來適應它。當你在建構這些 LLM 應用時,我描述了一些與這些 LLM 有效合作的方法,以及一些使之成為可能的工具,以及你如何能非常快速地轉動這個(生成-驗證)循環,從而創造出部分自治產品。然後,是的,大量的程式碼也需要更直接地為智能體而編寫。但無論如何,回到鋼鐵人戰衣的類比,我認為在未來十年左右,我們將看到的是,我們會把那個自治滑塊從左向右移動。那會是什麼樣子,將會非常有趣。我迫不及待地想和大家一起去建構它 (AI寒武紀)