《A1--蔣思源--提升代碼生成質量:代碼大模型實踐經驗.pdf》由會員分享,可在線閱讀,更多相關《A1--蔣思源--提升代碼生成質量:代碼大模型實踐經驗.pdf(38頁珍藏版)》請在三個皮匠報告上搜索。
1、提升代碼生成質量:代碼大模型實踐經驗蔣思源 aiXcoder 大模型算法專家目錄C O N T E N T S1.預訓練數據處理2.偏好對齊訓練3.軟件工程工具4.多智能體協同5.領域化訓練6.代碼質量評測軟件工程工具增強代碼質量多智能體協同增強代碼質量領域化增強代碼質量強化預訓練數據處理偏好對齊增強代碼質量基礎模型質量保證工程化提升推理質量適配閉源代碼質量把控生成代碼質量評測評測指標監控生成質量預訓練數據處理01預訓練數據處理原始代碼數據挑選項目級綜合過濾代碼文件級過濾敏感信息去除語法分析靜態分析 常規預處理內容:重復性代碼 自動生成的代碼 無意義的代碼 語法分析:不完整的代碼塊 非法字符
2、關鍵詞誤用 缺少必要的語法元素 無效的語法結構 靜態分析:可維護性:判斷語句嵌套過深 不良命名規范 可靠性:資源泄露 數組越界 類型錯誤 作用范圍錯誤 未捕捉的錯誤 未定義或未使用的變量 安全漏洞數據預處理流預訓練數據處理-語法分析預訓練數據處理-語法分析預訓練數據處理 靜態分析可維護性:np.is_nan()判定可靠性:構造方法不能返回值安全性:浮點數對比不安全安全性:變量釋放后使用安全性:越界寫安全性:內存溢出預訓練數據處理 靜態分析偏好對齊提升代碼質量02偏好對齊Magicoder:Empowering Code Generation with OSS-INSTRUCT偏好對齊https
3、:/ Test Case Generation for Detecting Tricky Bugs 給定功能描述與代碼,生成測試用例 給定功能描述生成測試用例輸入的生成代碼 通過運行時生成一組測試用例的輸入 如果被測函數生成結果不一致,投票排除錯誤結果偏好對齊-基于模型的數據過濾我們會從 語義邏輯、代碼質量、代碼性能等五個方面評估總體質量,只有所有分數都是最高,才會保留作為訓練數據。工程處理提升代碼質量03工程工具 RAG 缺陷檢測 通過現存的 CVE實例,多維度抽取安全漏洞知識庫 給定代碼塊,檢索相應的代碼缺陷背景知識 利用背景知識檢測當前代碼塊的缺陷與漏洞Vul-RAG:Enhancing
4、 LLM-based Vulnerability Detection via Knowledge-level RAGAGENT 增強代碼質量04流程化-AgentSelf-planning code generation with large language model 在代碼場景中,讓模型自己對任務做拆解能有效提升效果 簡單任務可以借助 CoT 直接拆分為 Planning 復雜任務可以借助 ToT 多層拆分為 Action流程化-AgentSelf-collaboration Code Generation via ChatGPT流程化-AgentCODEAGENT:Enhancing
5、Code Generation with Tool-Integrated Agent Systems for Real-World Repo-level Coding Challenges領域化訓練提升代碼質量05領域化-增量訓練企業領域知識l行業業務術語與流程規范l行業技術標準與規范l企業產品和服務詳細信息l企業技術棧l編程框架.個性化訓練的價值更準確的代碼生成更好理解企業特有業務邏輯和技術細節遵循企業編碼規范,風格統一的代碼幫助新員工快速掌握技術規范.領域化-增量訓練領域化-增量訓練微調類型具體方法優點缺點Parameter-EfficientFine-Tuning(高效參數微調)LoRA
6、節省計算力:7B參數量以下可以不實現各種并行訓練策略 數十億參數量模型可以在消費級顯卡上訓練收斂速度可能不如Fine-TuningAdaptersPrefix TuningLadder Side-TuningFine-TuningFine-Tuning訓練效果有保證計算資源需求大訓練可能不穩定可能出現過擬合生成代碼質量評測06領域化-增量訓練1.同時考慮 pass1測試用例通過率,以及secure1生成代碼安全性2.經過更加嚴格的預訓練數據篩選,訓練出來的基礎模型能生成更高質量的代碼生成質量評測方法https:/ PassK,ExactMatch,BLEU等評測指標我們開源的 aiXcoder
7、-7B-Base在代碼補全與生成上擁有等量級下 SOTA效果生成質量評測方法1.為每一個 CWE 準備場景信息2.每一個場景對于 LLM 就是完整的上下文,及待補全的代碼3.大語言模型生成一系列補全候選項4.排除掉明顯語法錯誤的生成結果5.通過靜態分析工具或者人工評估代碼質量Asleep at the Keyboard?Assessing the Security of GitHub Copilots Code Contributions總結07軟件工程工具增強代碼質量多智能體協同增強代碼質量領域化增強代碼質量強化預訓練數據處理偏好對齊增強代碼質量基礎模型質量保證工程化提升推理質量適配閉源代碼質量把控生成代碼質量評測評測指標監控生成質量Takeaway:訓練數據質量對生成代碼質量極其重要后處理手段對保證生成代碼質量極其重要利用大語言模型自我修正代碼對最終生成質量作用突出感謝聆聽關注公眾號