欧美人与禽2O2O性论交,秋霞免费视频,国产美女视频免费观看网址,国产成人亚洲综合网色欲网

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

【導(dǎo)讀】

隨著大模型能力迭代迅猛,AI 賦能軟件研發(fā)工具層出不窮,軟件開發(fā)在大模型時代將面臨哪些機會和挑戰(zhàn)?當 AI 能夠?qū)懘a、改 Bug 之時,專業(yè)程序員的核心競爭力在哪里?在 SDCon 2024 全球軟件研發(fā)技術(shù)大會上,CSDN 高級副總裁、Boolan 首席技術(shù)專家李建忠發(fā)表《軟件開發(fā)智能化范式思考與探索》主題演講,深入揭示了其背后的本質(zhì)與關(guān)鍵。

作者 | 李建忠

責編 | Echo Tang

出品丨AI 科技大本營(ID:rgznai100)

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

自從大模型吹響新一輪技術(shù)革命的號角后,整個行業(yè)各個層次都面臨大模型帶來的范式轉(zhuǎn)換。我今年在 4 月份上海舉辦的全球機器學(xué)習(xí)技術(shù)大會上演講時曾提出,大模型為計算產(chǎn)業(yè)帶來了計算范式、開發(fā)范式、交互范式的三大范式改變。今天是軟件研發(fā)技術(shù)大會,我想和大家來重點談?wù)勥@一年來對軟件開發(fā)智能化范式改變的思考與探索。

我曾在去年 4 月份的全球軟件研發(fā)技術(shù)大會上提出《五級“自動軟件開發(fā)”參考框架》,借鑒了自動駕駛行業(yè)的五級劃分方法,將智能化軟件開發(fā)的水平分為 L1~L5 級。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

這一參考框架也在這一年多的研發(fā)實踐、和眾多客戶合作、海內(nèi)外專家研討的過程中,不斷得到完善和豐富。在軟件開發(fā)智能化的實踐和探索中,我也發(fā)現(xiàn)業(yè)界存在以下幾個比較突出的誤區(qū)。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

第一個誤區(qū),GitHub Copilot 等代碼大模型工具出來之后,大家會發(fā)現(xiàn)它在日常比較簡單的代碼上確實不錯,但一旦到真實的企業(yè)級項目里表現(xiàn)可能就沒有期望的那么好,為什么?目前的大模型主要都以 GitHub 等開源代碼為主在訓(xùn)練。這些代碼我稱之為結(jié)果數(shù)據(jù),是經(jīng)過編譯、運行、以及正確性驗證的代碼。但是它的過程數(shù)據(jù)基本沒有得到訓(xùn)練。這既不是人類生物神經(jīng)網(wǎng)絡(luò)ANN)學(xué)習(xí)的方式,也不是大模型這種數(shù)字神經(jīng)網(wǎng)絡(luò)(BNN)正確的學(xué)習(xí)方式。

第二個誤區(qū),目前的代碼大模型,主要基于軟件系統(tǒng)的靜態(tài)特征來進行訓(xùn)練。但是如果我們看 ChatGPT 和 Sora 等在自然語言上和視覺上的訓(xùn)練,它們的表現(xiàn)顯然效果要好于代碼領(lǐng)域,為什么?其實在自然語言領(lǐng)域和視覺領(lǐng)域的訓(xùn)練,具有相當?shù)膭討B(tài)性,語言的上下文、前因后果、故事線,視頻的時間軸……這些動態(tài)信息蘊含了豐富的知識和邏輯,但軟件開發(fā)領(lǐng)域把動態(tài)性的特質(zhì)數(shù)據(jù)引入模型訓(xùn)練還是比較少的。

第三個誤區(qū),大模型出來之后,可以說通過了圖靈測試,在某些方面也超過了普通人類的水平。這很容易給我們一個希望,去追求一個一步到位一勞永逸的智能方式。我記得去年 4 月份我們在上海舉辦 SDCon 2023 全球軟件研發(fā)技術(shù)大會的時候,很多業(yè)界朋友都特別期待說我能不能把我的需求一股腦地告訴大模型,大模型就能給我生成真正跑起來的項目?經(jīng)過一年多之后,我們越來越發(fā)現(xiàn)這是不現(xiàn)實的,我今天想講的是這個期望長期來看也是不現(xiàn)實的,因為沒有一勞永逸、一步到位的智能。

第四個誤區(qū),Scaling Law 被業(yè)界奉為圭皋之后,很多人都在想去追求一個一超多能的超級智能。希望用一個超級模型,把軟件開發(fā)項目中各種復(fù)雜的問題都一股腦地解決,這個也是相當不現(xiàn)實的。正如復(fù)雜的人類世界不可能靠一個超人來解決,復(fù)雜的軟件領(lǐng)域也不可能靠一個超級模型來解決。

針對以上幾個誤區(qū),我想談一些實踐和探索的觀點和思考。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

大模型出來之后,我們一部分人老是覺得上個時代的東西都應(yīng)該徹底丟掉了,大模型給我們帶來了一個全新的世界。我想強調(diào)的是我們在上個時代積累的寶貴經(jīng)驗和智慧,不是被廢棄了,而是被 AI 壓縮和加速了。因為這些經(jīng)驗和智慧也是人類知識的一部分。

接下來我們來看看,在大模型時代,有哪些寶貴的經(jīng)驗和智慧可以幫助我們在軟件領(lǐng)域做得更好?我們說軟件系統(tǒng)有四個復(fù)雜的特征,分別是:復(fù)雜性、動態(tài)性、協(xié)作性、混沌性。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

首先來看復(fù)雜性。在軟件系統(tǒng)中解決復(fù)雜性有兩個常用的手段,第一個是分解,第二個是抽象。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

分解是我們在面向過程編程中就有的一個非常有效的手段。包括后來的分層架構(gòu)、組件化設(shè)計、微服務(wù)架構(gòu)等都源自分解思想。但很快,我們發(fā)現(xiàn)光有分解是不夠的,必須使用抽象,這就發(fā)展出來面向?qū)ο蟆?span id="6ok6p8t" class="candidate-entity-word" data-gid="2870063">泛型編程、領(lǐng)域驅(qū)動設(shè)計、概念驅(qū)動設(shè)計等方法。如果我們看大模型,它在“分解”上做得還是不錯的,但是在“抽象”上就有點差強人意。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

就目前的大模型輔助軟件研發(fā)的能力來看,它比較擅長什么?類型實現(xiàn)、函數(shù)實現(xiàn)、算法實現(xiàn)等低抽象任務(wù);但一旦遇到設(shè)計模式、架構(gòu)設(shè)計、系統(tǒng)設(shè)計等“高抽象任務(wù)”,就發(fā)現(xiàn)它往往表現(xiàn)得不夠好。在這方面,我們的建議是要向大模型導(dǎo)入我們在“高抽象任務(wù)”方面積累的寶貴的方法論、原則和最佳實踐等。它們未必是代碼,還包括設(shè)計圖、設(shè)計文檔等。這某種程度上,也是在提升大模型“System 2”的能力。

System 1 和 System 2 是諾貝爾經(jīng)濟學(xué)獎得主丹尼爾·卡尼曼在《思考,快與慢》中提出的人類的兩種思考模式。系統(tǒng)一是直覺的、快速的、無意識的,主導(dǎo)我們?nèi)粘?95%的決策。系統(tǒng)二是基于邏輯的、理性的、規(guī)劃的、緩慢的,需要高度集中注意力,主導(dǎo)我們?nèi)粘?5%的決策。System 2 的能力對于大模型在軟件開發(fā)領(lǐng)域的“抽象能力”至關(guān)重要。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

第二個部分,我想談?wù)勡浖膭討B(tài)性。所謂動態(tài)性本質(zhì)是我們的軟件系統(tǒng)一直在動態(tài)的演化。我們知道軟件開發(fā)領(lǐng)域最早一直想追求 Top-down 的瀑布模型,但后來業(yè)界越來越發(fā)現(xiàn)在很多領(lǐng)域瀑布模型很難 work。究其根本,是軟件開發(fā)過程有一個“時間”變量,軟件的需求、所處環(huán)境、開發(fā)組織等無時無刻不在變化。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

這種“動態(tài)性”在大模型時代會改變嗎?我想大概率不會。所以我們也不能追求一步到位的智能軟件開發(fā)。

演化是智能的本質(zhì)特點。智能從來都不是一步到位的,智能就是在迭代試錯反復(fù)中不斷成長的。我認為在大模型時代,敏捷軟件開發(fā)并不會被丟棄,而是從“組織的敏捷”變?yōu)椤澳P偷拿艚荨?/strong>,而且會加速敏捷。在敏捷開發(fā)之前,軟件開發(fā)的周期是以年為單位迭代,比如 Windows 95、Windows 98。在敏捷開發(fā)之后,軟件行業(yè)進入以月為單位迭代或者以周為單位迭代。在大模型時代,軟件開發(fā)將進入以天或者小時為單位進行迭代。

除了提升迭代速度外,我們也需要對更多的軟件開發(fā)過程數(shù)據(jù)進行訓(xùn)練,來幫助模型更好地理解軟件開發(fā)的“動態(tài)性”。這里可以參考一下 Google 最近發(fā)布 DIDACT(Dynamic Integrated Developer ACTivity 動態(tài)集成開發(fā)者活動)。

參考鏈接:

https://research.google/blog/large-sequence-models-for-software-development-activities/

從根本上來說,軟件開發(fā)并非孤立的過程,而是在人類開發(fā)者、代碼審查者、錯誤報告者、軟件架構(gòu)師和工具(如編譯器、單元測試、代碼檢查工具和靜態(tài)分析器等)之間進行的對話。DIDACT 使用軟件開發(fā)過程作為訓(xùn)練數(shù)據(jù)來源,而不僅是最終的完成代碼。通過讓模型接觸開發(fā)者在工作中看到的上下文,結(jié)合他們的響應(yīng)行為,模型可以學(xué)習(xí)軟件開發(fā)的動態(tài)性。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

Google DIDACT 的研發(fā)也發(fā)現(xiàn)在學(xué)習(xí)過程數(shù)據(jù)之后,模型生成軟件項目的過程,非常類似人類開發(fā)團隊,先編寫比較粗粒度的接口和框架代碼,然后一點一點把它們細化實現(xiàn),包括也有反復(fù)和試錯的過程。而不是大家最開始想象的那種從上到下一行一行寫的過程,整個項目一氣呵成。真實的軟件開發(fā)不是這樣,人類開發(fā)團隊不是這樣,大模型驅(qū)動的智能軟件開發(fā)也不會是這樣。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

接下來我想談?wù)劶軜?gòu)設(shè)計領(lǐng)域的協(xié)作性。我們知道當軟件系統(tǒng)越來越復(fù)雜時,組件與組件之間的協(xié)作,服務(wù)與服務(wù)之間的協(xié)作,會變成非常重要的課題。早在 1967 年計算機科學(xué)家 Melvin Conway 就提出了著名的“康威定律”。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

康威定律指出“組織的協(xié)作溝通架構(gòu),決定了我們的系統(tǒng)設(shè)計架構(gòu)”,這在架構(gòu)設(shè)計領(lǐng)域被奉為第一定律。那么在大模型時代,軟件內(nèi)部需不需要協(xié)作?顯然是需要的,我們?nèi)匀恍枰S許多多的組件或服務(wù)進行協(xié)作。只是這時候的組件或服務(wù)的構(gòu)建者,不見得是軟件團隊,而是一個一個智能體(Agent)。那么這些智能體之間當然也需要協(xié)作。它們的協(xié)作也要遵循康威定律。我稱之為“智能康威定律”:智能體的協(xié)作溝通架構(gòu),決定系統(tǒng)設(shè)計架構(gòu)。

我們再來談一下軟件開發(fā)中的工具,來實現(xiàn)在所謂混沌系統(tǒng)中尋求確定性的部分。我們知道現(xiàn)在大模型很多時候做的是一些非確定性的計算(或者叫概率性計算),但這并不意味著我們所有的任務(wù)都要用非確定性計算。我們在大模型之前積累了很多確定性計算的工具,它們在大模型時代也不會被丟棄,而是與大模型進行很好的融合。融合方式就是通過 Agent(工具)來實現(xiàn)工具調(diào)用。

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

簡單總結(jié)一下。針對前面提到的軟件系統(tǒng)的四大特性:復(fù)雜性、動態(tài)性、協(xié)作性、混沌性,在大模型時代智能軟件開發(fā)范式下,我們需要特別關(guān)注以下四大核心能力建設(shè):

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

第一個抽象能力:怎么訓(xùn)練、怎么提升大模型的抽象能力,也就是 System 2 的能力,是一個很重要的課題。

第二個演化能力:如何支持大模型在整個軟件開發(fā)過程中加速我們的迭代周期,它不僅能快速發(fā)布高質(zhì)量的軟件,同時對模型能力也是一個快速的提升。

第三個協(xié)作能力:我們需要仔細設(shè)計智能體的協(xié)作架構(gòu),來支持我們的系統(tǒng)設(shè)計架構(gòu)。

第四個工具能力:使用工具來解決混沌系統(tǒng)中的確定性問題。

最后我想談一下,提升軟件開發(fā)的智能化水平是一個系統(tǒng)工程,前面講的這四大核心能力,它背后需要很多基礎(chǔ)建設(shè),包括模型方面的建設(shè)和數(shù)據(jù)方面的建設(shè)。我列了 10 個主要的方面:

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

第一:擴展定律。Scaling Law 并沒有停止,仍然在發(fā)揮著重要作用,這個是我們對基礎(chǔ)模型方面繼續(xù)要期待的。

第二:提高上下文窗口。上下文窗口是大模型的“內(nèi)存”,它對最大化發(fā)揮模型能力有著關(guān)鍵影響。這一塊國內(nèi)外都進展飛速。

第三:長期記憶能力。大型軟件項目蘊含的信息量浩瀚紛繁,大模型的長期記憶也很重要,雖然有 RAG 等外部檢索技術(shù)的快速發(fā)展,但基礎(chǔ)架構(gòu)方面的創(chuàng)新也值得期待。

第四:System 2 的提升。目前的大模型普遍被認為是一個高中生的水平。如何提升大模型系統(tǒng) 2 的能力,關(guān)系到大模型是否能夠成為一個深思熟慮的專家級學(xué)者,從而來勝任軟件開發(fā)這樣具有較高智慧要求的工作。

第五:降低模型幻覺。降低模型幻覺仍然是業(yè)界需要克服的一個問題,雖然我們也不要期望徹底消除幻覺。某種程度上可以說,幻覺也是智能的一部分,如果沒有幻覺,智能也將失去創(chuàng)造力。

第六:研發(fā)全流程數(shù)字化。如何把研發(fā)流程里盡可能多的開發(fā)者活動按時間順序記錄下來,比如:文檔、設(shè)計圖、代碼、測試代碼、運維腳本、會議記錄、甚至設(shè)計決策中的爭論等等各種數(shù)據(jù),然后變成數(shù)字化的語料,喂給我們的大模型。

第七:多模態(tài)數(shù)據(jù)訓(xùn)練。軟件開發(fā)領(lǐng)域不只是代碼和文本,還有很多設(shè)計圖比如 UML、表格、甚至視頻等數(shù)據(jù)。

第八:將模型做“小”。軟件開發(fā)中很多細分任務(wù)都不見得需要所謂的“大模型”,而是在高質(zhì)量垂類數(shù)據(jù)訓(xùn)練下的“小模型”,比如 Bug 修復(fù),比如開發(fā)者測試,比如 Clean Code。

第九:模型合成數(shù)據(jù)。通過模型生成代碼、設(shè)計、注釋等,作為語料供給另外的模型進行訓(xùn)練,也是在軟件開發(fā)中一個非?;钴S的發(fā)展方向。

第十:多智能體協(xié)同。針對復(fù)雜的軟件工程任務(wù),未來一定是眾多不同角色、不同模型、不同任務(wù)的智能體的群策群力。

最后,軟件開發(fā)智能化范式轉(zhuǎn)換的大幕才剛剛開啟,中間還有很多曲折等待我們?nèi)ヌ剿?,希望今天的分享能給大家?guī)韱l(fā),謝謝大家!

同時和所有開發(fā)者朋友們預(yù)告,CSDN 聯(lián)合高端 IT 教育平臺 Boolan 將于 2024 年下半年舉辦四大主題會議,歡迎大家掃碼熱情參與~

大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考(大模型驅(qū)動軟件開發(fā)的一些誤區(qū)和思考問題)

封面圖由 Meta AI 生成

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部