近日,OpenAI 發布首個視頻生成“Sora”模型,該模型通過接收文字指令,即可生成60秒的短視頻。
而在2022年末,同樣是OpenAI發布的AI語言模型ChatGPT,簡化了文本撰寫、創意構思以及代碼校驗等任務。用戶僅需輸入一個指令,ChatGPT便能生成圖片、文字或代碼等多種形式的內容。
這一系列的進展不僅僅是技術上的突破,它們預示著一場全面的AI革命的到來,影響范圍遠超從前。AI技術的應用已經拓展到聊天機器人、繪圖、音樂創作、代碼生成、視頻生成等領域,每一次迭代和升級都引起了全球的關注和熱議。
在編程領域,AI的崛起,如ChatGPT和Github Copilot,正在改變開發者獲取信息和編寫代碼的方式。在Andrej Karpathy的博客《Software 2.0》中,他探討了人工智能如何改變軟件開發方式:“Software 2.0代表著我們可以用大量的數據和算力來解決以前需要大量人力和成本來解決的復雜問題。” AI 編碼助手則是上述的具體實現。
資料圖片來源:Github
調查數據顯示,AI編碼工具不僅提高了整體生產力,還帶來了技能提升的機會。75%的開發者表示在使用GitHub Copilot時感到更加充實,在具體的生產數據方面,Copilot能夠完成高達46%的代碼,幫助開發人員將編程速度提高了 55%。
大模型給已有的開發工作“降本增效”
未來的編碼工作流程將呈現全新的面貌:AI 編碼工具將可以大量生成短期的軟件和測試解決方案,不再追求長期的可重復利用性,由于生產過程的高效自動化,未來的推理成本、推理延遲性都將大幅降低。另一方面,工程發展好壞并非在理論上有挑戰,而是在工程實踐中的持續優化和迭代,這主要體現在未來代碼大模型將被提煉成中小型模型,從而實現在邊緣設備運行的可能性。
在代碼訓練推理領域,實際上并不需要前后的歷史知識和上下需要索引人文典故,可以預見的將來大模型會逐漸蒸餾成一個中小型模型,可能是70個億的參數、10個億參數或者100億參數,這種規模就已經非常有效果了。
相對較小的模型讓在邊緣設備、個人電腦上的大模型運行成為可能。此外,硬件架構的升級讓消費級硬件能夠運行更大規模的模型,目前強大的Mac Pro等已經可以承載數百億參數的模型。隨著這種參數量化的發展,更多模型將能在邊緣設備上運行,這是功能上的進步,并不涉及理論上的難點。這種發展在未來幾年內將變得更加普遍。
同時**隨著生成式 AI 的發展,編程語言之間的差異變得不再那么明顯。隨之帶來的是編程語言的學習門檻降低。**目前學習一門新的編程語言,其中一個關鍵點在于掌握其生態系統,包括語法和庫的使用。舉個例子,區分成熟的 Java 工程師和專業的 Java 工程師的主要因素之一是對各種庫的熟悉程度和使用直覺。
未來,生成式AI的存在可能極大地簡化這一過程。例如,當需要進行 JSON 解析時,生成式 AI 可以自動推薦合適的庫。這就像有一個助手在一旁,不僅幫助選擇合適的工具,還可以解釋不熟悉的代碼片段。因此,學習新語言將變得更加直觀和簡單。
這種變化預示著未來編程的重點可能會從對工具的關注轉移到提供端到端體驗上,開發者可以更加專注于創意和解決方案的實現,而不是編碼的具體細節。
面向未來:MoonBit——為AI原生應用打造的編程語言
正是在這樣的背景下,MoonBit應運而生。MoonBit在2022年10月推出,此時恰逢ChatGPT剛剛問世。MoonBit平臺的出現不僅僅作為一種編程語言,更是提供一個完整的開發工具鏈,包括IDE、編譯器、構建系統、包管理器等。我們處在一個特殊的位置,有機會去重新構想整個編程語言工具鏈該如何與AI更好地協作,開啟了編程與AI結合的新篇章。
在不斷的探索中,我們的努力得到了學術界的認可。最近,MoonBit團隊的研究論文「MoonBit: Explore the Design of an AI-Friendly Programming Language」已經榮幸地被LLM4Code 2024接收!
同時,我們在ai.moonbitlang.com上設計了一個簡單的MoonBit AI demo,非常歡迎你來嘗試!我們也非常期待你的反饋,可以隨時通過我們的論壇/微信小助手/用戶群等渠道進行反饋。
讓我們看看下面的視頻,更具體地了解使用MoonBit AI進行端到端開發的體驗是什么樣子:
從上面的視頻可以看到,不同于ChatGPT,MoonBit AI可以實現從需求設定到代碼實現,再到運行調試的無縫銜接,確保編程過程更加流暢高效。用戶可以實時修改MoonBit AI生成的代碼,獲得即時反饋。同時,MoonBit AI重視用戶體驗,為大家提供一個更加便捷易用的用戶界面。無論你是編程新手還是資深的開發者,都能輕松上手。
在文章接下來的部分,我們主要將討論兩個主要方面:
- MoonBit如何設計成一種出色的、對AI友好的編程語言
- 是什么驅動了MoonBit AI
MoonBit:平坦化設計,適配Transformer架構
MoonBit作為AI時代的開發平臺,設計強調清晰和簡單,特別強調在頂層(toplevel)和局部(local)定義之間的清晰區分。MoonBit還采用了結構化接口實現(structural interface implementation),在這種方式中,一個類型通過實現其方法來實現一個接口,因此消除了額外嵌套代碼塊的必要性。
現有的大模型基本都基于自回歸的 Transformer 架構。這意味著隨著上下文窗口增長,生成單個 token 的復雜度呈 n2 上升。也就是說,大模型的推理會越來越慢。一個沒有嵌套的編程語言有著較好的可讀性,同時也能夠在各個層級(RAG,decoder correction,backtrack)做到 KV 緩存友好,實現更高的推理速度。
讓我們一起來看一個例子:
在圖1(a)中所示的例子中,一名程序員正在為類型Llama實現特性Agent中的方法think。他們發現類型Llama缺少在特性LLM中定義的generation方法。由于他們處于一個嵌套代碼塊中,需要回到頂層來為類型Llama實現特性LLM。然而,在大型語言模型(LLMs)的上下文中,修改幾個函數之前的提示會導致相關KV緩存段的無效,這在圖中以紅色突出顯示。經過這樣的修改,所有這些函數都要重新評估,這不僅浪費了計算資源,更關鍵的是,延長了輸出的延遲時間。
相比之下,如圖1(b)所示,MoonBit允許程序員和大型語言模型(LLMs)線性地開發他們的程序,無需頻繁地來回跳轉。通過結構化接口,實現接口的函數不限于特定的代碼塊。這允許幾乎線性地生成接口及其各自的實現,從而有效地最大化利用KV緩存。
圖1
MoonBit AI:快速實時的語義補全
MoonBit AI由兩種定制的采樣算法驅動:局部采樣和全局采樣。局部采樣使用AI生成的代碼進行實時調整,以確保代碼遵循語法規范,而全局采樣進一步驗證代碼的語義正確性。隨著大型語言模型(LLM)生成新的token,MoonBit采樣器將從局部和全局收集并利用信息,以確保每個生成的token不僅在語法上正確,而且沒有明顯的類型錯誤。這種方法提供了更可靠、更準確的代碼生成,減少了后續調試和錯誤糾正的需要。
例如,當LLM編寫程序時,它可能會生成一個不好的token。我們維護一個推測緩沖區來存儲最后一個token。一旦token由LLM完成,我們將檢查token是否有效。如果有效,我們接受它并將其提交給用戶,如果不有效,我們就回溯并重試。為了防止LLM重復同樣的錯誤,我們將告知LLM可能的繼續操作,以做出更好的選擇。
我們的實驗顯示,MoonBit采樣器在編譯率方面取得了顯著提高,性能損失僅約3%。
當然,這只是個開始!
我們目前正在搭建一個包管理器,這對于收集額外數據以微調模型至關重要。未來,我們將持續增強MoonBit AI能力,包括加入代碼輔助、審查、問答界面、測試生成和驗證機制等功能。同時,我們正計劃開發一個快速解釋器,在運行時提供實時反饋。這將進一步提高AI生成代碼的可靠性。
歡迎持續關注MoonBit AI的進展!