AI 編程「神器」國產化!華為耗時 8 個月,這個能用中文生成代碼的模型誕生了

作者 | 鄭麗媛

出品 | CSDN(ID:CSDNnews)

作為近年來最火的科技突破之一,AI 的應用已逐漸滲透至方方面面。前有各類 AI 工具寫小說、編劇本、畫插圖,後有 AI 代碼生成神器 Github Copilot 幫寫代碼,解放程序員的雙手。

在此熱潮下,近日華為研製出了當前業界最新的代碼生成模型 HUAWEI PanGu-Coder。據介紹,HUAWEI PanGu-Coder 由華為諾亞方舟實驗室語音語義實驗室聯合華為雲 PaaS 技術創新實驗室共同研發,不但熟悉常見算法,還能熟練地使用各種 API,甚至可以求解高等數學問題。在代碼生成的一次通過率(PASS@1)指標上,HUAWEI PanGu-Coder 大幅超越同等參數規模的模型,為更好地服務使用中文的開發者,它在中文上也有十分出色的表現

目前,處於內測階段的 HUAWEI PanGu-Coder 還在不斷迭代與演進,尚未正式對外開放,但我們或許可以通過對華為雲 PaaS 技術創新實驗室主任王千祥的訪談,提前窺見有關 HUAWEI PanGu-Coder 的更多細節及其從無到有的故事。

HUAWEI PanGu-Coder 誕生前傳

科技圈中近年來一直流傳着一句話:軟件正在吞噬世界。

這句話所代表的數字化轉型意味着大量的編碼工作,背後則是無數程序員的辛苦勞動。但伴隨着數字化轉型日益成為大勢所趨,程序員肩負的重擔也愈發沉重。王千祥指出:「與各個行業對代碼的需求相比,目前程序員的產出差距還是太大了。」

針對這一痛點問題,AI 代碼生成模型正在成為破局的關鍵,成為提升代碼產出率的利器。

實際上,王千祥在北大時就曾探索過這個技術,後來入職華為也時常琢磨,但當時並沒有投入太多。他在 2018 年還曾就這個話題與華為創始人任正非簡單討論過:「我當時說,AI 編程離進入實用階段還很遠,但任總不這麼認為。

因此,當去年 6 月微軟發佈了 Copilot,王千祥發現其背後模型 Codex 在解答 OJ 題(Online Judge,在線編程練習系統)方面取得了突破性進展(正確率高達 70% 以上)時,給了他相當大的震撼,也由此激發出要打造一款國產代碼生成模型的決心:「微軟的 Copilot 集成了 Codex 的能力,很好地展示出了代碼生成模型的威力。華為既然長期關注軟件開發能力的提升,希望利用智能化技術來提升軟件開發的生產力,自然需要開展這方面的研發。」

在王千祥所在的華為雲 PaaS 技術創新實驗室關注到 Codex 的同時,華為諾亞方舟實驗室語音語義實驗室也在研究此事,而推動雙方決定共同加大研發力度的,主要有兩件事:一是去年 9 月 OpenAI CEO 預告 GPT-4 將更關注代碼;二是去年 10 月 Github 聲明內部團隊中 30% 的新代碼是在 Copilot 的幫助下完成的,同時Copilot 的用戶留存率也超過了 50%

基於此,去年 11 月華為雲 PaaS 技術創新實驗室和華為諾亞方舟實驗室語音語義實驗室共同成立了一個聯合工作組,以打造一款國產代碼生成模型為目標,在 12 月正式開工——於是,HUAWEI PanGu-Coder 項目開始啟動。

考慮到目前在該領域中較著名的唯有 OpenAI 的 Codex 和 DeepMind 的 AlphaCode,便可以預想到,開發一款成熟的 AI 代碼生成模型並不容易。王千祥坦言,在 HUAWEI PanGu-Coder 的整個開發過程中,他們面對的困難不僅源自客觀資源,也來自主觀上的質疑。

  • 第一個挑戰:計算資源

谷歌 2 月份發表的論文顯示,AlphaCode 參加編程競賽時,每道題都投入了 7500 多張 TPU 卡——訓練大模型需要大量計算資源,這個是業界共識,這也就是為什麼只有少數大型企業才能開展這方面的探索。在訓練 HUAWEI PanGu-Coder 時,開發團隊為解決計算資源不足的難題,向華為內部的 AI 全棧軟硬件生態進行了協調。

  • 第二個挑戰:各種質疑

質疑來自很多方面。首先是公司內部的,很多同事、包括高級專家都認為程序員不太可能接受這樣的代碼。其次是公司外部的,在 Copilot 推出不久,王千祥聯繫了幾位在美國微軟工作的學生,發現他們甚至沒聽說過這項技術。這讓他開始仔細考慮 AI 生成代碼的應用場景。

將 3 億參數的 HUAWEI PanGu-Coder 模型訓練到最優

歷經 8 個月,克服重重阻礙,HUAWEI PanGu-Coder 終於在今年 7 月底問世了。

由於 PanGu-Alpha 所採用的的自回歸 Transformer 架構具備強大的文本生成能力,因此 HUAWEI PanGu-Coder 也將此模型架構用於代碼生成任務。其架構如下圖所示:

同時,HUAWEI PanGu-Coder 也沿用了 PanGu-Alpha 的中英文多語詞表,具備支持中英文輸入的能力,尤其在中文上的表現也十分出色

「這其實是一個超出預期的結果,因為我們在收集和加工訓練數據時並沒有刻意包含中文。」HUAWEI PanGu-Coder 開發團隊對這一現象進行了深入的分析,應該是預訓練模型具備優秀的跨語言遷移能力,訓練總數量又很大(超過兩千億 token 數),從而促成了 HUAWEI PanGu-Coder 能夠很好地支持中文描述。

目前,華為開發團隊正在訓練多個規模的 HUAWEI PanGu-Coder 模型,包括 3 億參數、26 億參數甚至更大規模的,但王千祥透露,現階段更關注如何將 3 億參數的模型訓練到最優

「現階段很多參數量很大的模型並沒有被充分訓練,更大的參數也意味着推理成本增加和響應時間變長。因此在算力成本受限的情況下,是存在一個最優模型規模的,並非越大越好。」

事實證明,這個想法是正確的。模型的一次生成通過率(PASS@1)是代碼語言生成模型最重要的能力衡量指標,從這個數據上來看,採取數據集構建策略和分階段訓練設計的 HUAWEI PanGu-Coder 在 3 億級別上的準確率相比其它公開模型要高很多:3 億參數的 HUAWEI PanGu-Coder 模型(PASS@1=17.07%)超越了 Codex(PASS@1=16.22%)接近 7 億參數的模型結果,基本持平了谷歌 10 億的模型

HUAWEI PanGu-Coder 模型目前已集成到了華為雲的代碼開發輔助工具中,可以在 IDE 插件中使用自然語言描述生成函數級的 Python 代碼,或根據上下文進行補全。值得一提的是,這個基於 HUAWEI PanGu-Coder 內核構建的 IDE 插件在前後處理上有很大的發揮空間,為儘可能生成更可靠、可用的代碼,該插件融合了華為近年來在代碼可信方面的積累,並通過後處理的方式來保證提供給程序員的代碼質量。

得益於以上措施,HUAWEI PanGu-Coder 在內測階段已表現不俗:熟悉常見的數據結構算法、會寫 SQL 查詢功能,能使用機器學習工具創建文本分類器,還能求解高等數學題

以下例舉兩個 HUAWEI PanGu-Coder 在內測中的實際表現:

  • 用中文讓 HUAWEI PanGu-Coder 編寫 SQL 查詢語句

  • 讓 HUAWEI PanGu-Coder 求微分:

為了進一步讓 HUAWEI PanGu-Coder 更貼合真實的編程場景,而不是目前各文章介紹的編程競賽場景,其開發團隊目前還在努力提升代碼生成的能力,計劃未來對外發佈具備代碼生成能力的 IDE 插件

「工具是人類的助手,而非殺手」

然而,隨 着 Codex、HUAWEI PanGu-Coder 等越來越多 AI 代碼生成模型的出現,開發者圈內有關它們的爭議和討論也愈發激烈,對此王千祥也給出了他的獨到見解。

CSDN:從行業角度來看,自微軟 AI 編程工具 GitHub Copliot 推出以來,不少人對生成的代碼版權問題一直表示擔憂,HUAWEI PanGu-Coder 在代碼生成上是否有這樣的困擾?

王千祥:我們注意到了一些個人與團體對代碼生成的版權疑慮。在我看來,首先,知識共享是社會進步的重要因素;其次,共享的同時要尊重原創者。像學術界的研究工作,需大量參考其他同行的進展,並在文章中列出參考文獻。開源是新時代的知識共享方式,並由此衍生出了很多不同的開源協議

目前的 AI 代碼生成技術,是利用機器學習技術以及大量開源代碼去訓練一個模型,然後利用這個模型將一段自然語言轉換為代碼。這個過程就像是一個程序員新手閱讀了大量開源代碼後,具備了一定的能力,在遇到類似問題時,會參考着編寫出類似的新代碼。只要寫出來的代碼不是對原來代碼的簡單複製,我認為不必上升至版權問題的層面

當然,版權問題一個不是單純的技術問題,現在還缺乏一些共識,新的開源協議也在不斷產生,從而促進創新並保護原創。

CSDN:你如何看待「代碼生成工具的普及將逐漸取代程序員人類」這種言論?

王千祥:這種言論類似於 19 世紀出現的「機器的普及將逐漸取代工人」的說法,這個擔心是沒有必要的。

實際上,從微軟 Copilot 的名字上也可以看出:Copilot 是程序員的協同駕駛員,是程序員的聰明助手。代碼生成工具也有它的適用場景,那就是重複性的低級編碼。軟件開發是充滿創新的智力活動,讓工具去做重複性勞動,節省出程序員的一些時間,投入到更高價值的創新活動中不是很好嗎?工具是人類的助手,而非殺手。

當然,具體到程序員個人層面,則需要逐步提升能力,不要與工具去爭搶低級重複性勞動。另外,還有一點需要強調,代碼生成工具的能力是有邊界的,不要對它期待值過高,以免產生不切實際的期望

CSDN:HUAWEI PanGu-Coder 的到來,將為開發者帶來哪些影響?在使用方面,你有哪些建議可以給到開發者?

王千祥:開發者的新生力量可能更容易受影響,因為新人往往更願意去接觸新技術。如果要給開發者一些建議的話,我建議大家以後着重增強自己的設計能力,並多利用工具的實現能力。這些設計能力主要包括:

1)如何用機器容易懂的方式描述意圖;

2)如何準確地定義接口,尤其是方法級的接口;

3)如何給出最佳的測試數據,用來自動驗收工具生成的代碼。