通義千問2.5-Coder(Qwen2.5-Coder)是阿里雲最新推出的、專註於代碼處理的Qwen大語言模型系列,亦稱為CodeQwen。該系列提供六種主流模型尺寸:0.5B、1.5B、3B、7B、14B和32B,以滿足不同開發人員的多樣化需求。通過對海量代碼資料進行訓練,Qwen2.5-Coder在保持強大數學和推理能力的基礎上,顯著增強了在代碼應用情境中的表現。PAI已對該系列模型進行全面支援,本文以通義千問2.5-Coder-32B-Instruct模型為例為您介紹如何在Model Gallery中部署、微調、評測和壓縮該系列模型。
簡介
Qwen2.5-Coder是由阿里雲推出的一款具備強大編程能力的模型,支援多達128K tokens 的上下文,併兼容92種程式設計語言。該模型在多個代碼相關任務中表現卓越,包括多語言代碼產生、代碼補全和代碼修複等。在Qwen2.5-Coder的基礎上,阿里雲通過指令微調,推出了Qwen2.5-Coder-Instruct,進一步提升了模型在各項任務中的效能,並展現了出色的泛化能力。
多程式設計語言能力
Qwen2.5-Coder-Instruct展示了卓越的多程式設計語言能力。通過McEval評估基準對模型進行廣泛測試,涵蓋40多種程式設計語言,包括一些小眾語言,結果顯示模型在多語言任務中表現優異。
代碼推理
Qwen2.5-Coder-Instruct 在代碼推理任務上表現突出。採用CRUXEval作為評估基準,模型展示了強大的推理能力。值得注意的是,隨著代碼推理能力的提升,模型在複雜指令執行方面的表現也有所增強,這為進一步探索代碼能力對通用推理能力的影響提供了新的視角。
數學能力
Qwen2.5-Coder-Instruct在數學和代碼任務中均表現出色。作為代碼的基礎學科,數學與代碼密切相關,模型在這兩方面的優異表現體現了其強大的理科綜合能力。
基礎能力
在通用能力評估中,Qwen2.5-Coder-Instruct保持了Qwen2.5的優勢,證明了其在廣泛任務中的適用性和穩定性。
通過以上特性,Qwen2.5-Coder系列模型為多語言編程和複雜任務處理提供了強有力的支援人員。
運行環境要求
本樣本目前支援在華北2(北京)、華東2(上海)、華南1(深圳)、華東1(杭州)、華北6(烏蘭察布)、新加坡等地區使用Model Gallery模組運行。
資源配置要求:
模型規模
資源要求
Qwen2.5-Coder-0.5B/1.5B
訓練階段:使用16GB顯存(例如T4、P100、V100)及以上卡型。
部署階段:最低卡型配置為單卡P4,推薦部署機型為單卡GU30、單卡A10、單卡V100、單卡T4等。
Qwen2.5-Coder-3B/7B
訓練階段:使用24GB顯存(例如A10、T4)及以上卡型。
部署階段:最低卡型配置為單卡P100、單卡T4、單卡V100(gn6v)等,推薦部署機型為單卡GU30、單卡A10等;
Qwen2.5-Coder-14B
訓練階段:使用32GB顯存(例如V100)及以上卡型。
部署階段:最低卡型配置為單卡L20、單卡GU60、雙卡GU30等,推薦部署機型為雙卡GU60、雙卡L20等。
Qwen2.5-Coder-32B
訓練階段:使用80GB顯存(例如A800/H800)及以上卡型。
部署階段:最低卡型配置為雙卡GU60、雙卡L20、四卡A10等,推薦部署機型為四卡GU60、四卡L20、8卡V100-32G等。
通過PAI-Model Gallery使用模型
模型部署和調用
進入Model Gallery頁面。
登入PAI控制台。
在頂部左上方根據實際情況選擇地區。
在左側導覽列選擇工作空間列表,單擊指定工作空間名稱,進入對應工作空間內。
在左側導覽列選擇快速開始 > Model Gallery。
在Model Gallery頁面右側的模型列表中,單擊通義千問2.5-Coder-32B-Instruct模型卡片,進入模型詳情頁面。
單擊右上方部署,配置部署方式、推理服務名稱以及部署使用的資源資訊,即可將模型部署到EAS推理服務平台。本方案部署方式選擇vLLM加速部署。
使用推理服務。
服務部署成功後,您可以參考模型詳情頁面的推理方法,調用模型服務以驗證模型效果。

模型微調訓練
Model Gallery為通義千問2.5-Coder-32B-Instruct模型配置了SFT和DPO兩種微調演算法,您可以通過開箱即用的方式對該模型進行微調。
SFT監督微調
SFT訓練演算法支援使用JSON格式輸入,每條資料由問題、答案組成,分別用"instruction"、"output"欄位表示,例如:
[
{
"instruction": "Create a function to calculate the sum of a sequence of integers.",
"output": "# Python code\ndef sum_sequence(sequence):\n sum = 0\n for num in sequence:\n sum += num\n return sum"
},
{
"instruction": "Generate a Python code for crawling a website for a specific type of data.",
"output": "import requests\nimport re\n\ndef crawl_website_for_phone_numbers(website):\n response = requests.get(website)\n phone_numbers = re.findall('\\d{3}-\\d{3}-\\d{4}', response.text)\n return phone_numbers\n \nif __name__ == '__main__':\n print(crawl_website_for_phone_numbers('www.example.com'))"
}
]DPO直接偏好最佳化
DPO訓練演算法支援使用JSON格式輸入,每條資料由問題、預期模型輸出的答案、不希望模型輸出的答案組成,分別用"prompt"、"chosen"、"rejected"欄位表示,例如:
[
{
"prompt": "Create a function to calculate the sum of a sequence of integers.",
"chosen": "# Python code\ndef sum_sequence(sequence):\n sum = 0\n for num in sequence:\n sum += num\n return sum",
"rejected": "[x*x for x in [1, 2, 3, 5, 8, 13]]"
},
{
"prompt": "Generate a Python code for crawling a website for a specific type of data.",
"chosen": "import requests\nimport re\n\ndef crawl_website_for_phone_numbers(website):\n response = requests.get(website)\n phone_numbers = re.findall('\\d{3}-\\d{3}-\\d{4}', response.text)\n return phone_numbers\n \nif __name__ == '__main__':\n print(crawl_website_for_phone_numbers('www.example.com'))",
"rejected": "def remove_duplicates(string): \n result = \"\" \n prev = '' \n\n for char in string:\n if char != prev: \n result += char\n prev = char\n return result\n\nresult = remove_duplicates(\"AAABBCCCD\")\nprint(result)"
}
]在Model Gallery頁面右側的模型列表中,單擊通義千問2.5-Coder-32B-Instruct模型卡片,進入模型詳情頁面。
在模型詳情頁單擊右上方訓練。關鍵配置如下:
資料集配置:當完成資料的準備,您可以將資料上傳到Object Storage Service Bucket中,或是通過指定一個資料集對象,選擇NAS或CPFS儲存上的資料集。您也可以使用PAI預置的公用資料集,直接提交任務測試演算法。
計算資源配置:演算法需要使用80 GB顯存及以上的GPU資源,請確保選擇使用的資源配額內有充足的計算資源。其他規模的模型所需資源規格,請參見運行環境要求。
超參數配置:訓練演算法支援的超參資訊如下,您可以根據使用的資料,計算資源等調整超參,或是使用演算法預設配置的超參。
超參數
類型
預設值
是否必須
描述
training_strategy
string
sft
是
訓練演算法,可以為SFT或DPO。
learning_rate
float
5e-5
是
學習率,用於控制模型權重,調整幅度。
num_train_epochs
int
1
是
訓練資料集被重複使用的次數。
per_device_train_batch_size
int
1
是
每個GPU在一次訓練迭代中處理的樣本數量。較大的批次大小可以提高效率,也會增加顯存的需求。
seq_length
int
128
是
序列長度,指模型在一次訓練中處理的輸入資料的長度。
lora_dim
int
32
否
LoRA維度,當lora_dim>0時,使用LoRA/QLoRA輕量化訓練。
lora_alpha
int
32
否
LoRA權重,當lora_dim>0時,使用LoRA/QLoRA輕量化訓練,該參數生效。
dpo_beta
float
0.1
否
模型在訓練過程中對偏好資訊的依賴程度。
load_in_4bit
bool
false
否
模型是否以4 bit載入。
當lora_dim>0、load_in_4bit為true且load_in_8bit為false時,使用4 bit QLoRA輕量化訓練。
load_in_8bit
bool
false
否
模型是否以8 bit載入。
當lora_dim>0、load_in_4bit為false且load_in_8bit為true時,使用8 bit QLoRA輕量化訓練。
gradient_accumulation_steps
int
8
否
梯度累積步驟數。
apply_chat_template
bool
true
否
演算法是否為訓練資料加上模型預設的chat template,以Qwen2系列模型為例,格式為:
問題:
<|im_end|>\n<|im_start|>user\n + instruction + <|im_end|>\n答案:
<|im_start|>assistant\n + output + <|im_end|>\n
system_prompt
string
You are a helpful assistant
否
模型訓練使用的系統提示。
單擊訓練,Model Gallery自動跳轉到任務詳情頁面,並開始進行訓練,您可以查看訓練任務狀態和訓練日誌。

訓練好的模型會自動註冊到AI資產-模型管理中,您可以查看或部署對應的模型,詳情請參見註冊及管理模型。
模型評測
科學、高效的模型評測,不僅能協助開發人員有效地衡量和對比不同模型的效能,更能指導他們進行精準地模型選擇和最佳化,加速AI創新和應用落地。
Model Gallery為通義千問2.5-Coder-32B-Instruct模型配置了評測演算法,您可以通過開箱即用的方式對該模型(或微調後的模型)進行評測。關於模型評測詳細的操作說明,請參見模型評測、大模型評測最佳實務。
模型壓縮
經過訓練後的模型在部署之前可以對模型進行量化壓縮,可有效減少儲存和計算資源的使用。關於模型壓縮詳細的操作說明,請參見模型壓縮。