Fine-Tune StarCoder with Ertas

    使用寬鬆授權原始碼訓練的開放存取程式碼生成模型,提供 3B、7B 和 15B 三種規格,具備透明的訓練資料治理和強大的多語言程式設計支援。

    3B7B15BBigCode / HuggingFace

    Overview

    StarCoder 是由 BigCode(Hugging Face 和 ServiceNow Research 的合作項目)開發的以程式碼為重點的語言模型家族。該專案以其對負責任和透明 AI 開發的承諾而聞名——訓練資料完全由 The Stack v2 資料集中的寬鬆授權程式碼組成,具有明確的資料治理實踐,包括程式碼作者的退出機制。

    StarCoder 2 系列(當前一代)包含三種規格:3B、7B 和 15B 參數。15B 模型使用來自超過 600 種程式語言的約 4 兆個 token 進行訓練,使其成為語言多樣性最豐富的程式碼模型之一。儘管規格適中,StarCoder 2 15B 在 HumanEval 和 MBPP 等程式碼生成基準測試上與更大的模型達到了具競爭力的效能。

    在架構方面,StarCoder 在 15B 變體中使用具有多查詢注意力(MQA)的僅解碼器 Transformer,在 3B 和 7B 變體中使用分組查詢注意力(GQA)。所有模型支援 fill-in-the-middle(FIM)用於程式碼補全任務,具有 8K token 的上下文視窗(可透過微調擴展)。模型使用專門在程式碼上訓練的自訂分詞器,實現了程式語言語法、空白模式和常見程式碼結構的高效分詞。

    StarCoder 模型以 BigCode OpenRAIL-M 授權發布,允許商業使用並附帶負責任使用限制。透明的訓練資料來源使 StarCoder 對在訓練資料授權方面有嚴格合規要求的組織特別具吸引力。

    Key Features

    訓練資料透明度是 StarCoder 最強的差異化特色。訓練資料集中的每個檔案都來自寬鬆授權的儲存庫,BigCode 提供了 Am I In The Stack 工具,讓程式碼作者可以檢查其程式碼是否被包含並選擇退出。這種透明度在程式碼模型中是獨一無二的,使 StarCoder 從法律和合規角度來看是可辯護的——這對企業採用非常重要。

    多語言支援遠超主流語言。大多數程式碼模型專注於 Python、JavaScript、Java 和少數其他語言,StarCoder 涵蓋 600 種以上程式語言,包括 VHDL、SystemVerilog、Solidity、Julia、R、MATLAB、Fortran 等專用語言。這種廣度對使用小眾或特定領域語言的團隊很有價值。

    fill-in-the-middle(FIM)能力支援三種模式:前綴-後綴-中間(PSM)、後綴-前綴-中間(SPM)和組合模式。FIM 格式的靈活性改善了與不同 IDE 後端和程式碼補全服務的整合相容性。StarCoder 還支援儲存庫級上下文,其中檔案路徑和來自同一專案的其他檔案作為上下文包含在內,以實現更準確的補全。

    Fine-Tuning with Ertas

    StarCoder 模型是 Ertas Studio 中微調的出色候選,特別適合具有特定程式語言需求或編碼標準的組織。3B 模型使用 QLoRA 僅需 4-6GB VRAM,幾乎可在任何現代 GPU 上訓練。7B 模型需要 8-10GB,15B 模型需要 10-14GB——都在消費級硬體能力範圍內。

    對於關注訓練資料來源的組織,微調 StarCoder 提供了可辯護的基礎。從完全在寬鬆授權程式碼上訓練的模型開始,然後在您自己的專有程式碼庫上進行微調。這建立了一個法律和合規團隊可以驗證的清晰資料來源鏈。

    Ertas Studio 支援程式碼特定的微調格式,包括指令-回應對、FIM 三元組和儲存庫上下文範例。訓練後,匯出為 GGUF 並透過 Ollama 或 llama.cpp 部署。StarCoder 的適中規格意味著微調後的 GGUF 模型高度可攜帶——Q4_K_M 量化的 15B 模型約 9GB,適合作為開發工具或 CI/CD 管線的一部分分發。

    Use Cases

    StarCoder 是對訓練資料授權有嚴格要求的組織的首選。法律科技公司、政府機構和具有強合規文化的企業選擇 StarCoder,因為他們可以驗證整個訓練資料管線。在內部程式碼庫上微調後,StarCoder 成為一個完全可辯護的程式碼助手。

    廣泛的程式語言覆蓋使 StarCoder 對在專業領域工作的團隊很有價值:硬體描述語言(VHDL、SystemVerilog)、科學計算(Julia、R、MATLAB)、區塊鏈開發(Solidity)和嵌入式系統(C、Rust)。許多這些語言在通用程式碼模型中的代表性有限。

    StarCoder 的適中規格使其非常適合整合到開發工具中:VS Code 擴充功能、JetBrains 外掛、Vim/Neovim 外掛和命令列工具。3B 模型在 CPU 上足夠快以實現即時程式碼補全,而 7B 和 15B 模型為程式碼審查、文件生成和測試案例建立等離線任務提供更高品質。

    Hardware Requirements

    StarCoder 3B 在 Q4_K_M 下需要約 2GB RAM,幾乎可在任何開發機器上執行。7B 約需 4.3GB,15B 約需 9GB。這些適度的需求意味著 StarCoder 模型可以在開發者正常工作負載的同時執行,無需專用硬體。CPU 推論對 3B 模型是實用的,在現代筆記型電腦 CPU 上每秒 10-20 個 token。

    對於 GPU 推論,15B 模型在 Q4_K_M 下可在任何配備 10GB 以上 VRAM 的 GPU 上執行,在 RTX 4070 Ti 及以上每秒 40-60 個 token。完整 FP16 推論分別需要約 6.5GB(3B)、14.5GB(7B)或 30GB(15B),都可在消費級或工作站 GPU 上實現。

    在 Ertas Studio 中進行微調,3B 模型需要 4-6GB VRAM(QLoRA),7B 需要 8-10GB,15B 需要 10-14GB。小巧的規格使快速實驗成為可能:在不同資料集上訓練多個變體、比較結果並快速迭代,然後確定生產配置。

    Supported Quantizations

    Q4_0Q4_K_MQ5_K_MQ6_KQ8_0F16

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.