精選聯盟

程式員敲代碼的“姿勢”,正在被大模型改寫!

作者:CSDN
程式員敲代碼的“姿勢”,正在被大模型改寫!

作者 | 《新程式員》編輯部

出品 | CSDN(ID:CSDNnews)

大型模型的興起和發展正在徹底改變着軟體行業的面貌,為開發者們帶來了更強大的工具和技術支援,使他們能夠建構更智能、更複雜的軟體系統。借助大型模型的能力,軟體産品由此也可以實作更精準的語言了解、圖像識别、自然語言生成等功能,帶來更智能和個性化的服務。

在這個充滿變革和挑戰的時代,CSDN 聯合高端 IT 咨詢與教育平台 Boolan 于 2024 年 4 月 25-26 日隆重舉辦了 ML-Summit 全球機器學習技術大會,特設“大模型賦能軟體”論壇。

本論壇邀請到了微軟首席應用科學家經理黃寓凡、阿裡巴巴通義實驗室資深算法總監李永彬、百度 Comate 架構師張立理、智譜 AI-CodeGeeX 算法工程師張鑫鵬、新浪微網誌新技術研發負責人張俊林一線專家,共同進行了技術幹貨分享和精彩絕倫的圓桌論壇,分享他們借助大模型在軟體開發上的見解和經驗,希望為開發者帶來新思路和新啟示。

程式員敲代碼的“姿勢”,正在被大模型改寫!
程式員敲代碼的“姿勢”,正在被大模型改寫!

黃寓凡:CodeLLM 在微軟開發者部門的發展及其應用

代碼補全對程式員而言,無疑是一個非常實用的功能與工具,它不僅可以提高編碼效率,也能有效減少 Bug。這也是微軟首席應用科學家經理黃寓凡及其背後的團隊一直在緻力于做的事情。

在同樣是程式員出身的黃寓凡看來,軟體開發是一個複雜的過程,遠不止編寫代碼那麼簡單。過去兩年間,微軟做了大量的關于代碼智能的工作。在主題分享中,黃寓凡以 CPT-C、Codist 為例,進行了簡單說明。

程式員敲代碼的“姿勢”,正在被大模型改寫!

黃寓凡,微軟首席應用科學家經理

其中,在前 LLM 時代,代碼補全功能通常隻能補全一個記憶體變量或者是或者是一個類方法, 通常使用統計機器學習模型,相對于現代語言模型來說,這種傳統的機器學習模型很重要的特點就是需要做特征工程。這種補全方法的正确率都不是很高,它隻能彈出一個它最有可能的一些候選集,然後讓你來選。随着 AI 的發展,微軟基于 Transformer 語言模型研發了代碼補全工具 CPT-C ,可以預測任意字元,無需特征設計,也可以結合長上下文。

微軟還帶來了一款代碼翻譯的工作 Codist,将軟體從一種語言轉換為另一種語言的過程。使用代碼翻譯技術,将代碼從原始的語言轉換為另一種語言。除了跨語言翻譯外,還有其他翻譯方法,例如跨版本轉換,即在修改代碼後将其轉換為不同的版本或架構,以滿足新的需求。

然而,代碼翻譯是一項非常具有挑戰性的任務,此前也有許多人嘗試解決難題,進而形成了三種主要方法流派:

  • 第一個流派是無監督學習,即在缺乏平行語料的情況下,嘗試使用無監督方法進行訓練。
  • 第二種流派是标注平行語料。
  • 第三種方法是嘗試找到一個中間表達。例如,如果想要進行中文到德文的翻譯,但缺乏直接的平行語料,可以先訓練一個中文到英文的翻譯模型,然後再訓練一個英文到德文的翻譯模型。通過這種方式,英文成為了中間橋梁,使得中文到德文的翻譯成為可能。代碼翻譯也使用中介語言做媒介幫助翻譯。

經過研究發現,這三種方法都存在各自的局限性。在 Codist 中,微軟采用了代碼蒸餾的方式,核心是“關鍵詞”,實作跨語言/領域的對齊。

以上這兩種示例可以稱之為 CodeSLM,這樣的方式有優點也有缺點,優點是模型小,資源消耗少,也可以實作邊緣計算,但缺點是隻能局限在專一場景中,而并非像 LLM 一樣是針對整個開發的通用模型,此外研發成本與效率也不低,知識/性能是有上限的。

基于此,微軟已将 CodeLLM 應用于代碼智能領域。作為一項将大型語言模型應用于軟體開發領域的技術,CodeLLM 可以成為軟體研發生命周期的通用模型,也帶來了高性能基線。

程式員敲代碼的“姿勢”,正在被大模型改寫!

李永彬:通義靈碼背後的技術和思考

不久前,阿裡巴巴宣布迎來首位 AI 同僚“通義靈碼”,這位 7*24 AI 智能代碼程式設計助手,擅長 Java、Python、Go、JavaScript、TypeScript、C/C++、C# 等 200 多種程式設計語言,可以輔助開發者寫代碼、讀代碼、查 Bug、優化代碼等,進而引發衆人關注。

在本論壇中,阿裡巴巴通義實驗室資深算法專家、通義靈碼算法負責人李永彬帶來《通義靈碼背後的技術和思考》主題演講。

程式員敲代碼的“姿勢”,正在被大模型改寫!

李永彬,阿裡巴巴通義實驗室資深算法專家、通義靈碼算法負責人

李永彬表示,在代碼領域,代碼大模型的發展路線有兩條。第一條路線以自然語言為出發點,首先建立一個基于自然語言的大模型,然後,向該模型注入代碼資料,以實作一個能夠自動生成代碼的大模型;第二條路線則是從代碼的角度出發,從海量的代碼資料中進行訓練,然後注入自然語言資料,以實作代碼生成的

目标。

在李永彬看來,代碼大模型至少需要具備三層能力,即自然語言了解與生成、代碼語言了解與生成以及這兩種語言之間實作互通的橋梁。通義靈碼背後的代碼大模型 CodeQwen 就是基于通義千問大模型基座,以及通過海量技術文檔、教程、書籍等和萬億級開源代碼/積累代碼訓練而成,目前 CodeQwen 1.5 已開源:https://huggingface.co/Qwen/CodeQwen1.5-7B。

經過長時間的思考與探索,李永彬表示,想要建構開發者最喜愛的智能編碼助手,需要具備四個方面能力:

  • 首先,要滿足程式員高頻剛需。根據 JetBrains 2023 年開發者生态報告顯示,79% 的開發者稱,編寫代碼是最耗時的活動,解決代碼生成能力是智能編碼助手的基本要求。
  • 其次,作為一個好的編碼助手,要能簡單友善、又快又好地去使用,為此,通義靈碼打造了多模型協同+雲端一體的技術架構。在雲側,通義靈碼采用了多模型協同打造沉浸式程式設計體驗的政策,之是以做多個大模型協同,是因為不同的任務,使用者的實際需求不一樣,對模型的能力和響應速度的要求也不同,單一模型難以服務好使用者。而在端側,要做到本地模型及跨 IDE 端插件統一架構設計。
  • 第三,能夠非常好地了解上下文,精準了解使用者的真實需求。基于代碼的語義資訊,充分讓模型了解不同場景下所需的生成粒度,進而讓模型能夠根據目前正在編寫的代碼位置自适應決策應該生成的代碼内容。更進一步,需要做到代碼倉庫級别的全局感覺和了解,通義靈碼使用先進的端側實時代碼語義分析技術,實時分析目前正在編寫的代碼,并擷取所需的相關代碼引用、相似的代碼片段等語義資訊,彌補單純關注目前代碼檔案所需的不足,避免在生成的代碼中引用了代碼庫内不存在的API等大模型常見的“幻覺”問題。
  • 最後,如何把編碼助手和企業的私有資料資産結合到一起,做一個更契合企業需求和自己代碼環境資料的助手,也是非常重要的。

面向下一步發展,李永彬說代碼智能是 AGI 的先鋒和明珠。在軟體工程智能化領域,從簡單 Copilot 到項目級 Copilot,目前正在向軟體研發多智能體演進;再進一步,軟體工程隻是代碼智能的一個方向,此外代碼智能在資料科學、具身智能以及 AI4Science 等領域也有重要作用。

程式員敲代碼的“姿勢”,正在被大模型改寫!

張立理:智能化研發在百度的落地

随即,百度 Comate 架構師張立理帶來了《智能化研發在百度的落地》主題演講。在他看來,工程師最主要的工作就是編碼的問題。

程式員敲代碼的“姿勢”,正在被大模型改寫!

張立理,百度 Comate 架構師

以往的研發工作往往面臨着開發環境複雜、配置成本高、工作涉及多平台切換打斷嚴重,而且相似代碼編寫效率低等多重問題,随着 2020 年 GPT-3 大模型橫空出世,到 GPT-3.5、GitHub Copilot 産品矩陣愈發豐富,我們也親眼見證了大模型已經切切實實地成為提效的一個手段。

基于這一趨勢,張立理和他的研發團隊開始探索大模型在智能研發中的應用,最終将重點放在了“幫你想、幫你寫、幫你改”三大方向上。至此,百度内部已經有 80% 的工程師開始使用智能研發助手工具。

在建構強大的智能研發助手的過程中,張立理分享了三大挑戰:

  • 首先,擁有代碼資料用于訓練模型并不意味着這些資料具備高品質。模型的效果取決于訓練資料的品質。
  • 其次,編碼與傳統文本生成形式存在差異。
  • 最後,研發工作對于生成品質以外的因素也有一定要求。

基于這些挑戰,他提出了建構優秀研發助手的建議,即優秀的模型、推理架構與産品的協同作用能夠傳遞出優秀的智能研發工具。通過大規模的實際應用、使用者優先和回報驅動,使産品和模型不斷改進,形成良性循環。通過RAG強化、大模型思維鍊、平台開放等手段,智能研發将更貼近組織與團隊,勝任更大規模的需求實作。

程式員敲代碼的“姿勢”,正在被大模型改寫!

張鑫鵬:CodeGeeX:RAG和長文本模型在代碼項目級别的探索和應用實踐

在全球機器學習技術大會的大模型賦能軟體開發者專題研讨會上,智譜 AI 的 CodeGeeX 算法工程師張鑫鵬深入分享了從開源代碼模型到智能程式設計助手的實踐探索曆程。随着預訓練模型的不斷發展,自動代碼生成邁入了全新階段,預訓練模型讓生成複雜且正确的代碼成為了現實可能。

程式員敲代碼的“姿勢”,正在被大模型改寫!

張鑫鵬,智譜 AI 的 CodeGeeX 算法工程師

張鑫鵬還着重介紹了基于國産平台華為 Mindspore 研發的 CodeGeex 代碼模型。該模型采用了百億規模的預訓練代碼,通過無監督學習的方式,在大量的代碼語料上進行訓練,能夠完美适配 VS Code、Jetbrains、HBuilderX 等多種 IDE。

CodeGeex 的訓練資料涵蓋了 300 多種程式設計語言,包括 Python、Java、C++、JavaScript、C、Go、HTML 等主流程式設計語言以及一些小衆語言。CodeGeex 從第一版發展到當下的第三版,逐漸攻克了代碼模型準确率低、中文了解能力差、部署成本高、輸入上下文長度受限等一系列難題。而這些問題的解決,離不開 RAG 算法的引入以及 Multi-Agent 技術的有力支撐。

程式員敲代碼的“姿勢”,正在被大模型改寫!

大模型賦能軟體開發變革

在本次大會上,Boolan 首席咨詢師盧威作為圓桌主持人,與阿裡巴巴通義實驗室資深算法總監李永彬、百度 Comate 架構師張立理、新浪微網誌新技術研發負責人張俊林三大技術大咖,圍繞“大模型賦能軟體開發變革”以及最前沿的模型技術展開讨論。

程式員敲代碼的“姿勢”,正在被大模型改寫!

在目前行業中,Meta 最新釋出的 Llama3 模型備受關注。張俊林評價稱,「Llama 3 是一個非常重要的模型和版本,因為它的能力十分突出」。不久前,Meta 開源了 8B 和 70B 兩個 Llama 3 版本,甚至未來還将推出 405B 版本。針對這一新模型,許多人已經開始進行了中文評測。盡管 Llama 3 削弱了中文能力,但其仍然表現出非凡的實力。可以預見,未來幾個月推出的 405B 版本将取得更好的效果,很可能會超越國内絕大多數中文模型,這對國内創業型大型模型公司将帶來巨大壓力。

在本次圓桌論壇上,四位專家都同意巨大的資料量是 Llama 3 表現驚豔的最重要因素之一。可能包含大量的合成資料,并且合成資料在未來模型能力的提升中可能扮演重要的角色。張俊林和盧威分别分析了合成資料在多模态模型和代碼模型中的效果和期望。

代碼模型的性能上限,還有很大的空間。随着資料量的增加,模型性能的提升是顯而易見的。對此,李永彬指出,随着資料量的增加,我們也會面臨幾個挑戰。首當其沖的是資料品質問題,當資料量達到萬億級别時,依賴人工處理可能會顯得不太切實際;其次,如何更好地結合代碼資料本身的結構和特點去設計模型結構和訓練目标,也是一個有挑戰但充滿潛力的方向。

最後,盧威提出了一個不少開發者都非常關心的問題,即目前代碼模型的能力評估往往與人類的中上水準相媲美,是以行業中也有了不少以輔助人類(Copilot)的方式實作的應用。然而,軟體産業從業人員的技能水準與崗位要求實際上存在差異。考慮到這些因素,是否在某些環節上已經可以實作 AI 的全自動化?

針對這個問題,張立理表示,可以從幾個次元來看這件事。以 AI 對軟體開發的影響,第一階段最簡單的是代碼補全,這是最初級的應用。其次是建立一個倉庫級的代碼補全系統。這兩個層面對開發者的影響并不大。然而,第三個層面涉及到一些“威脅”,在這個階段,我們可能開始推薦 AI 來處理單個需求。第四個階段則是過渡到項目級别的應用,至于第四階段什麼時候能實作,我們也無法确定。

在這一系列環節中,就像在公司内部讨論項目或提出立項需求時一樣,從幾個人開始關鍵出發,逐漸明确需求,然後将其轉化為實際問題。在這樣的流程中,前期的環節尤為重要。

總的來說,如果不計成本地通過 Agent 等技術結合起來,或者限定問題的範圍,一些環節目前是可以全自動化的,但 AI 想要去取代某些職級能力,情況可能并不那麼容易。

對此,盧威和李永彬都指出,AI 研究和傳統軟體工程兩個領域的“相向而行”,共同努力,可預期的提升空間是巨大的。

在本次大會上,各位專家的發言讓我們深刻認識到,大模型正在以前所未有的方式滲透軟體行業,為其帶來了前所未有的機遇和挑戰。我們聽到了來自各領域的見解和經驗分享,為我們打開了新的思路和視野。正如大會期間所強調的那樣,大模型賦能軟體,影響深遠。我們期待着在未來的探索中,能夠進一步深化對大模型的了解,并将其應用于軟體領域,實作更多創新和突破。

立即掃碼預約全球機器學習技術大會PPT」,了解「2024 全球機器學習技術大會」更多資訊!

繼續閱讀