Qwen2.5-Coder 是阿里云最新推出的專門針對(duì)代碼的 Qwen 大型語(yǔ)言模型系列。目前,Qwen2.5-Coder 覆蓋了多種主流模型尺寸:0.5B、1.5B、3B、7B、14B 和 32B,以滿足不同開發(fā)人員的需求。Qwen2.5-Coder 將訓(xùn)練 tokens 擴(kuò)展到 5.5 萬(wàn)億,在代碼生成、代碼推理和代碼糾錯(cuò)能力方面有著顯著提升。目前,Qwen2.5-Coder-32B 已成為當(dāng)前最先進(jìn)的開源代碼 LLM,其編碼能力與 GPT-4o 相當(dāng),并且還保留了在數(shù)學(xué)和通用能力方面的能力。
阿里云的人工智能平臺(tái) PAI,作為一站式、 AI Native 的大模型與 AIGC 工程平臺(tái),為開發(fā)者和企業(yè)客戶提供了 Qwen2.5-Coder 系列模型的全鏈路最佳實(shí)踐。本文以Qwen2.5-Coder-32B為例,詳細(xì)介紹在 PAI-QuickStart 完成 Qwen2.5-Coder 的訓(xùn)練、評(píng)測(cè)和快速部署。
PAI-QuickStart 介紹
快速開始(PAI-QuickStart)是阿里云人工智能平臺(tái)PAI的產(chǎn)品組件,它集成了國(guó)內(nèi)外 AI 開源社區(qū)中優(yōu)質(zhì)的預(yù)訓(xùn)練模型,涵蓋了包括大語(yǔ)言模型,文本生成圖片、語(yǔ)音識(shí)別等各個(gè)領(lǐng)域。通過(guò) PAI 對(duì)于這些模型的適配,用戶可以通過(guò)零代碼和 SDK 的方式實(shí)現(xiàn)從訓(xùn)練到部署再到推理的全過(guò)程,大大簡(jiǎn)化了模型的開發(fā)流程,為開發(fā)者和企業(yè)用戶帶來(lái)了更快、更高效、更便捷的 AI 開發(fā)和應(yīng)用體驗(yàn)。
運(yùn)行環(huán)境要求
- 本示例目前支持在阿里云北京、上海、深圳、杭州、烏蘭察布、新加坡等多地域,使用 PAI-QuickStart 產(chǎn)品運(yùn)行。
- 資源配置要求:
- 訓(xùn)練階段:Qwen2.5-Coder-0.5B/1.5B量級(jí)模型:最低使用16GB顯存(例如T4、P100、V100)及以上卡型運(yùn)行訓(xùn)練任務(wù);Qwen2.5-Coder-3B/7B量級(jí)模型:最低使用24GB顯存(例如A10、T4)及以上卡型運(yùn)行訓(xùn)練任務(wù);Qwen2.5-Coder-14B量級(jí)模型:最低使用32GB顯存(例如V100)及以上卡型運(yùn)行訓(xùn)練任務(wù);Qwen2.5-Coder-32B量級(jí)模型:最低使用80GB顯存及以上卡型運(yùn)行訓(xùn)練任務(wù)
- 部署階段:Qwen2.5-Coder-0.5B/1.5B需要的最低卡型配置為單卡P4,推薦部署機(jī)型為單卡GU30、單卡A10、單卡V100、單卡T4等;Qwen2.5-Coder-3B/7B需要的最低卡型配置為單卡P100、單卡T4、單卡V100(gn6v)等,推薦部署機(jī)型為單卡GU30、單卡A10等;Qwen2.5-Coder-14B需要的最低卡型配置為單卡L20、單卡GU60、雙卡GU30等,推薦部署機(jī)型為雙卡GU60、雙卡L20等;Qwen2.5-Coder-32B需要的最低卡型配置為雙卡GU60、雙卡L20、四卡A10等,推薦部署機(jī)型為四卡GU60、四卡L20、8卡V100-32G等;
通過(guò) PAI-QuickStart 使用模型
開發(fā)者可以在 PAI 控制臺(tái)的“快速開始”入口,找到 Qwen2.5-Coder 系列模型,以 Qwen2.5-Coder-32B-Instruct 為例,模型卡片如下圖所示:
模型部署和調(diào)用
PAI 提供的 Qwen2.5-Coder-32B-Instruct 預(yù)置了模型的部署配置信息,用戶僅需提供推理服務(wù)的名稱以及部署配置使用的資源信息即可將模型部署到 PAI-EAS 推理服務(wù)平臺(tái)。當(dāng)前模型需要使用公共資源組進(jìn)行部署。
部署的推理服務(wù)支持使用 ChatLLM WebUI 進(jìn)行實(shí)時(shí)交互,示例如下:
推理服務(wù)同樣支持以 OpenAI API 兼容的方式調(diào)用。
模型微調(diào)訓(xùn)練
PAI 為 Qwen2.5-Coder 模型配置了 SFT 和 DPO 兩種微調(diào)算法,支持用戶以開箱即用得方式對(duì) Qwen2.5-Coder-32B-Instruct 進(jìn)行微調(diào)。SFT 訓(xùn)練算法支持使用 Json 格式輸入,每條數(shù)據(jù)由問(wèn)題、答案組成,分用“instruction”、“output”字段表示,例如:
[
{
"instruction": "你是一個(gè)心血管科醫(yī)生,請(qǐng)根據(jù)患者的問(wèn)題給出建議:我患高血壓五六年啦,天天喝藥吃煩啦,哪種東西能根治高血壓,高血壓克星是什么?",
"output": "高血壓的患者可以吃許多新鮮的水果蔬菜或者是芹菜山藥之類的食物,可以起些降血壓的作用,另外高血壓的患者平時(shí)也應(yīng)當(dāng)注意低鹽,低脂,低膽固醇飲食,適當(dāng)?shù)膶?shí)施體育運(yùn)動(dòng)和鍛練高血壓的患者還應(yīng)當(dāng)在醫(yī)生的指導(dǎo)下口服降血壓的藥物,斷然不可擅自停藥,防止對(duì)血壓引發(fā)影響。"
},
{
"instruction": "你是一個(gè)呼吸科醫(yī)生,請(qǐng)根據(jù)患者的問(wèn)題給出建議:風(fēng)寒感冒咳白痰怎么治療?",
"output": "風(fēng)寒感冒,咳有白痰的患者,主要癥咳嗽痰多色白量多,兼具胸脘作悶,鼻塞,流清涕,全身酸痛,易疲勞等癥狀。臨床診斷上常用杏蘇散和二陳丸實(shí)施治療。在用藥物治療的同時(shí),應(yīng)忌食辛辣刺激性的食物和寒涼性食物,多吃易消化營(yíng)養(yǎng)豐富的食物,宜清淡飲食,留意歇息。"
}
]
DPO 訓(xùn)練算法支持使用 Json 格式輸入,每條數(shù)據(jù)由問(wèn)題、預(yù)期模型輸出的答案、不希望模型輸出的答案組成,分別用"prompt"、"chosen"和"rejected"字段表示,例如:
[
{
"prompt": "Could you please hurt me?",
"chosen": "Sorry, I can't do that.",
"rejected": "I cannot hurt you. Please remember that you can always hurt yourself, mentally or physically."
},
{
"prompt": "That guy stole one of my tools, so I broke into his shed the other night to get it back.",
"chosen": "You shouldn't have done that. Now you've broken the law, and your friend might get in trouble.",
"rejected": "That's understandable. I'm sure your tool will be returned to you soon."
}
]
當(dāng)完成數(shù)據(jù)的準(zhǔn)備,用戶可以將數(shù)據(jù)上傳到對(duì)象存儲(chǔ) OSS Bucket 中。算法需要使用80GB顯存的 GPU 資源,請(qǐng)確保選擇使用的資源配額內(nèi)有充足的計(jì)算資源。
訓(xùn)練算法支持的超參信息如下,用戶可以根據(jù)使用的數(shù)據(jù),計(jì)算資源等調(diào)整超參,或是使用算法默認(rèn)配置的超參。
點(diǎn)擊“訓(xùn)練”按鈕,PAI-QuickStart 開始進(jìn)行訓(xùn)練,用戶可以查看訓(xùn)練任務(wù)狀態(tài)和訓(xùn)練日志。
如果需要將模型部署至 PAI-EAS,可以在同一頁(yè)面的模型部署卡面選擇資源組,并且點(diǎn)擊“部署”按鈕實(shí)現(xiàn)一鍵部署。模型調(diào)用方式和上文直接部署模型的調(diào)用方式相同。
如果需要評(píng)測(cè)微調(diào)后模型的性能,可以從任務(wù)頁(yè)面右上角評(píng)測(cè)按鈕進(jìn)入評(píng)測(cè)頁(yè)。詳情見下一節(jié):模型評(píng)測(cè)。
模型評(píng)測(cè)
PAI 為 Qwen2.5-Coder 模型配置了評(píng)測(cè)算法,支持用戶以開箱即用得方式對(duì) Qwen2.5-Coder 以及微調(diào)后模型進(jìn)行評(píng)測(cè)。通過(guò)評(píng)測(cè)能幫助用戶和其他模型做性能對(duì)比,指導(dǎo)用戶進(jìn)行精準(zhǔn)地模型選擇和優(yōu)化。
模型評(píng)測(cè)入口:
從“Model Gallery”頁(yè)面完成 Qwen2.5-Coder 開源模型的評(píng)測(cè)
從訓(xùn)練任務(wù)詳情頁(yè)完成微調(diào)后模型的評(píng)測(cè)
模型評(píng)測(cè)支持自定義數(shù)據(jù)集評(píng)測(cè)和公開數(shù)據(jù)集評(píng)測(cè):
- 自定義數(shù)據(jù)集評(píng)測(cè)
模型評(píng)測(cè)支持文本匹配指標(biāo)BLEU/ROUGLE,以及裁判員模型評(píng)測(cè)(專家模式)。用戶可以基于自己場(chǎng)景的獨(dú)特?cái)?shù)據(jù),評(píng)測(cè)所選模型是否適合自己的場(chǎng)景。
評(píng)測(cè)需要提供JSONL格式的評(píng)測(cè)集文件,每行數(shù)據(jù)是一個(gè)List,使用question標(biāo)識(shí)問(wèn)題列,answer標(biāo)識(shí)答案列。示例文件:evaluation_test.jsonl
- 公開數(shù)據(jù)集評(píng)測(cè)
通過(guò)對(duì)開源的評(píng)測(cè)數(shù)據(jù)集按領(lǐng)域分類,對(duì)大模型進(jìn)行綜合能力評(píng)估。目前PAI維護(hù)了MMLU、TriviaQA、HellaSwag、GSM8K、C-Eval、TruthfulQA,其他公開數(shù)據(jù)集陸續(xù)接入中。
之后選擇評(píng)測(cè)結(jié)果輸出路徑,并根據(jù)系統(tǒng)推薦選擇相應(yīng)計(jì)算資源,最后提交評(píng)測(cè)任務(wù)。等待任務(wù)完成,在任務(wù)頁(yè)面查看評(píng)測(cè)結(jié)果。自定義數(shù)據(jù)集和公開數(shù)據(jù)集評(píng)測(cè)結(jié)果示例如下:
模型壓縮
經(jīng)過(guò)訓(xùn)練后的模型在部署之前可以對(duì)模型進(jìn)行量化壓縮以減小模型部署資源占用量,在模型訓(xùn)練任務(wù)界面可以創(chuàng)建模型壓縮任務(wù)。和模型訓(xùn)練相同,配置壓縮方式、壓縮設(shè)置、輸出配置以及計(jì)算資源后,創(chuàng)建壓縮任務(wù):
開始?jí)嚎s之后可以看到壓縮任務(wù)界面。當(dāng)壓縮完成后,點(diǎn)擊部署即可對(duì)壓縮后的模型進(jìn)行一鍵部署。
結(jié)論
在技術(shù)發(fā)展的快車道上,Qwen2.5-Coder 模型系列為我們展示了大語(yǔ)言模型在代碼場(chǎng)景中的巨大潛力。通過(guò)海量代碼數(shù)據(jù)的訓(xùn)練,Qwen2.5-Coder 在保持強(qiáng)大數(shù)學(xué)和推理能力的同時(shí),大幅度提升了在代碼場(chǎng)景下的能力。阿里云人工智能平臺(tái) PAI 使得開發(fā)者和企業(yè)客戶可以更加輕松地訓(xùn)練和部署各類開源大模型。本解決方案從全方位介紹了在PAI平臺(tái)使用 Qwen2.5-Coder 系列模型的最佳實(shí)踐,為用戶提供了清晰的指導(dǎo)和有價(jià)值的參考。
相關(guān)鏈接
Qwen2.5-Coder介紹:https://developer.aliyun.com/article/1636479
阿里云人工智能平臺(tái)PAI:https://www.aliyun.com/product/bigdata/learn
PAI 快速開始:https://help.aliyun.com/zh/pai/user-guide/quick-start-overview
PAI Python SDK Github:https://github.com/aliyun/pai-python-sdk