《蔣思源-提升代碼生成質量:代碼大模型實踐經驗.pdf》由會員分享,可在線閱讀,更多相關《蔣思源-提升代碼生成質量:代碼大模型實踐經驗.pdf(34頁珍藏版)》請在三個皮匠報告上搜索。
1、蔣思源 aiXcoder代碼大模型算法專家負責aiXcoder大模型開發的全流程,包括數據采集與清洗、大模型構建與訓練、模型推理優化及服務、模型評估等。關注如何通過大規模分布式訓練獲得更符合軟件工程實際開發場景的基礎代碼大模型;關注構建能符合軟件開發流程、工具、行為的人類對齊訓練方法;關注如何在私有代碼上做領域化增量訓練,并盡可能降低災難遺忘等問題。演講主題:提升代碼生成質量:代碼大模型實踐經驗提升代碼生成質量:代碼大模型實踐經驗蔣思源 aiXcoder 大模型算法專家1.預訓練數據處理2.偏好對齊訓練3.軟件工程工具4.多智能體協同5.領域化訓練6.代碼質量評測l目錄軟件工程工具增強代碼質量
2、多智能體協同增強代碼質量領域化增強代碼質量強化預訓練數據處理偏好對齊增強代碼質量基礎模型質量保證工程化提升推理質量適配閉源代碼質量把控生成代碼質量評測評測指標監控生成質量預訓練數據處理PART1PART1預訓練數據處理原始代碼數據挑選項目級綜合過濾代碼文件級過濾敏感信息去除語法分析靜態分析常規預處理內容:重復性代碼自動生成的代碼無意義的代碼語法分析:不完整的代碼塊非法字符關鍵詞誤用缺少必要的語法元素無效的語法結構靜態分析:可維護性:判斷語句嵌套過深不良命名規范可靠性:資源泄露數組越界類型錯誤作用范圍錯誤未捕捉的錯誤未定義或未使用的變量安全漏洞數據預處理流預訓練數據處理-語法分析預訓練數據處理-
3、語法分析預訓練數據處理 靜態分析預訓練數據處理 靜態分析可維護性:np.is_nan()判定可靠性:構造方法不能返回值安全性:浮點數對比不安全安全性:變量釋放后使用安全性:越界寫安全性:內存溢出偏好對齊提升代碼質量PART2PART2偏好對齊Magicoder:Empowering Code Generation with OSS-INSTRUCT偏好對齊https:/ RAG 缺陷檢測通過現存的 CVE實例,多維度抽取安全漏洞知識庫給定代碼塊,檢索相應的代碼缺陷背景知識利用背景知識檢測當前代碼塊的缺陷與漏洞Vul-RAG:Enhancing LLM-based Vulnerability D
4、etection via Knowledge-level RAGAgent 增強代碼質量PART4PART4流程化-AgentSelf-planning code generation with large language model 在代碼場景中,讓模型自己對任務做拆解能有效提升效果 簡單任務可以借助 CoT 直接拆分為 Planning 復雜任務可以借助 ToT 多層拆分為 Action流程化-AgentSelf-collaboration Code Generation via ChatGPT流程化-AgentCODEAGENT:Enhancing Code Generation wi
5、th Tool-Integrated Agent Systems for Real-World Repo-level Coding Challenges流程化-Agent領域化訓練提升代碼質量PART5PART5領域化-增量訓練企業領域知識l行業業務術語與流程規范l行業技術標準與規范l企業產品和服務詳細信息l企業技術棧l編程框架.個性化訓練的價值更準確的代碼生成更好理解企業特有業務邏輯和技術細節遵循企業編碼規范,風格統一的代碼幫助新員工快速掌握技術規范.領域化-增量訓練領域化-增量訓練微調類型具體方法優點缺點Parameter-EfficientFine-Tuning(高效參數微調)LoRA節
6、省計算力:7B參數量以下可以不實現各種并行訓練策略 數十億參數量模型可以在消費級顯卡上訓練收斂速度可能不如Fine-TuningAdaptersPrefix TuningLadder Side-TuningFine-TuningFine-Tuning訓練效果有保證計算資源需求大訓練可能不穩定可能出現過擬合生成代碼質量評測PART6PART6生成準確性評測LEVELINPUTOUTPUTDATASET獨立的代碼生成NL(自然語言需求+函數簽名+輸入輸出對)function/method(完整的函數/方法)Human-EvalMultiPL-EMBPPDS-1000基于上下文的代碼補全in-fil
7、e(當前文件內上下文)single-line(單行代碼)SantaCoder-FIM function/method/single-line(完整函數/完整方法/單行代碼)aiXcoder_FIM_4kaiXcoder_FIM_8kcross-file(跨文件上下文)single-line(單行代碼)CrossCodeEvalsingle-line(單行代碼)RepoBenchmethod(完整方法)EvoCodeBench項目級開發cross_file+description(跨文件上下文+需求描述)method(完整方法)-基于多文件交互SWE-Benchmethod(完整方法)-基于調用
8、多種工具CodeAgent-Bench容易困難生成準確性評測在代碼生成與補全上,常用 PassK,ExactMatch,BLEU等評測指標我們開源的 aiXcoder-7B-Base在代碼補全與生成上擁有等量級下 SOTA效果aiXcoder-7B:A Lightweight and Effective Large Language Model for Code Completion生成質量評測方法1.為每一個 CWE 準備場景信息2.每一個場景對于 LLM 就是完整的上下文,及待補全的代碼3.大語言模型生成一系列補全候選項4.排除掉明顯語法錯誤的生成結果5.通過靜態分析工具或者人工評估代碼質量Asleep at the Keyboard?Assessing the Security of GitHub Copilots Code Contributions總結PART7PART7Takeaway:訓練數據質量對生成代碼質量極其重要后處理手段對保證生成代碼質量極其重要利用大語言模型自我修正代碼對最終生成質量作用突出軟件工程工具增強代碼質量多智能體協同增強代碼質量領域化增強代碼質量強化預訓練數據處理偏好對齊增強代碼質量基礎模型質量保證工程化提升推理質量適配閉源代碼質量把控生成代碼質量評測評測指標監控生成質量