DeepSeek簡介
DeepSeek 是一個基于 Transformer 架構的大型語言模型(LLM),由深度求索(DeepSeek)公司開發。它能夠處理自然語言理解、生成、翻譯、問答等多種任務。DeepSeek-R1 在后訓練階段大規模使用了強化學習技術,在僅有極少標注數據的情況下,極大提升了模型推理能力。在數學、代碼、自然語言推理等任務上,性能比肩 OpenAI o1 正式版。
DeepSeek公司在開源 DeepSeek-R1-Zero 和 DeepSeek-R1 兩個參數量超過660B 模型的同時,通過 DeepSeek-R1 的輸出,蒸餾了 6 個小模型開源給社區,其中32B和70B模型在多項能力上實現了對標 OpenAI o1-mini 的效果。
模型微調簡介
大語言模型微調技術通過調整預訓練模型參數,使其適應特定任務需求。其核心價值在于讓通用的人工智能工具變得更“專業”和“實用”,就像把一個會做各種菜的廚師培訓成專精川菜的大廚。它能讓企業用較低成本獲得適合自身需求的AI能力,例如:
1.降低成本:無需從頭訓練昂貴的大模型,只需在現有通用模型基礎上“補充學習”企業內部的業務知識、行業術語,就能快速打造專屬AI助手,成本大幅降低。
2.精準解決問題:通用AI可能懂詩詞繪畫,但不懂醫療診斷或法律合同。通過微調,AI能深度掌握特定領域的專業知識,例如快速分析病歷、自動生成符合行業規范的報告。
3.保護數據隱私:企業可將內部數據安全地用于微調,既讓AI掌握核心業務知識,又避免敏感數據直接暴露在公共模型中。
4.推動普惠應用:中小型企業也能通過這項技術享受AI紅利,例如教育機構定制學習輔導AI,工廠打造設備維護專家系統,真正讓AI進入百行千業。
在下文中,我們將采用兩個具體實踐案例來說明模型微調的實際效果:
1.基于天翼云文檔數據的微調。利用企業自身的文檔數據構建微調數據集,僅使用單臺多GPU卡的云主機即可完成模型微調訓練。經過微調后的模型能夠在企業內部知識領域提供準確的回答。
2.基于醫學計算數據的微調。利用醫學領域的專業知識數據構建微調數據集,僅使用單臺多GPU卡的云主機即可完成模型微調訓練。經過微調后的模型能夠在識別與分析病例時取得更高的計算準確度。
快速微調DeepSeek
LLaMA-Factory是一個開源項目,旨在為用戶提供簡便的方式來訓練和部署大型語言模型(LLM)。這里,我們以蒸餾小模型DeepSeek-R1-Distill-Qwen-7B模型為例,講解如何在天翼云使用LLaMA-Factory運行與微調 DeepSeek模型,讀者可以根據自己實際需求選擇模型和云主機配置。
步驟一:創建GPU云主機
1.進入創建云主機頁面。
a.點擊天翼云門戶首頁的“控制中心”,輸入登錄的用戶名和密碼,進入控制中心頁面。
b.單擊“服務列表>彈性云主機”,進入主機列表頁。

c.單擊“創建云主機”,進入彈性云主機創建頁。
2.進行基礎配置
a.根據業務需求配置“計費模式”、“地域”、“企業項目”、“虛擬私有云”、“實例名稱”、“主機名稱”等。
b.選擇規格。此處選擇"CPU架構"為"X86"、"分類"為"GPU加速/AI加速型"、"規格族"為"GPU計算加速型pi7"、"規格"為"pi7.4xlarge.4"。
注意本案例僅做微調流程演示,選擇的機型規格僅支持7B模型的少量數據微調,如果您的數據量較大,請選擇顯存更高的機型規格。
c.選擇鏡像。“鏡像類型”選擇“鏡像市場”,在云鏡像市場中選擇預置了DeepSeek-R1-Distill-Qwen-7B模型的DeepSeek-LlamaFactory-Ubuntu22.04鏡像。
3.網絡及高級配置
設置網絡,包括"網卡"、"安全組",同時配備 "彈性IP" 用于下載和訪問模型;設置高級配置,包括"登錄方式"、"云主機組"、"用戶數據"。注意安全組需要放行22端口(用于ssh)和7860端口(用于訪問web頁面)。
4.確認并支付
步驟二:微調DeepSeek模型
1.啟動LLaMA-Factory服務
在完成云主機開通后,即可通過ssh連接到到云主機命令行。模型及LLaMA-Factory服務均已放置在/root目錄下,且已完成配套環境安裝,可直接運行。
# 進入目錄
cd /root/LLaMA-Factory
# 啟動webui服務 (也可通過nohup放到后臺啟動)
llamafactory-cli webui
在成功啟動LLaMA-Factory服務后,您將可以通過 //{公網ip地址}:7860/ 訪問到相關頁面。
# 訪問服務
//{公網ip地址}:7860/
2.配置基礎大模型和微調方法
在成功進入LLaMA-Factory頁面后,您首先需要按照如圖的內容進行頁面語言,模型名稱和模型路徑的設置。注意模型預置在/root/DeepSeek-R1-Distill-Qwen-7B目錄下。
3.配置微調數據集
在Train頁面內,您需要配置用于微調訓練的數據集。鏡像內預置了alpaca格式的天翼云示例數據,您也可參考示例數據修改/root/LLaMA-Factory/data/目錄下的alpaca_zh_ctyun.json(微調數據集)和dataset_info.json(數據集信息)兩個文件,改用您自己的私有數據。
鏡像內置兩份數據集,單條內容示例如下:
data/alpaca_zh_ctyun.json(天翼云文檔數據集)
{
"instruction": "天翼云的通用型彈性云主機有哪些規格?",
"input": "",
"output": "<think>用戶詢問通用型云主機規格,首先需要明確通用型的定位是平衡計算和內存資源。根據產品文檔,通用型以s7系列為代表,應當列舉不同后綴規格及其配置差異,最后補充適用場景說明。</think>\n通用型彈性云主機有多個規格,例如s7.small、s7.medium、s7.large、s7.xlarge等,每種規格提供不同的vCPU和內存配置,適合多種業務場景。"
}
data/alpaca_en_medcalc_bench_max2k.json(醫學計算數據集)
{
"instruction": "A 16-year-old female adolescent was referred to our hospital with severe hypertension (systolic pressure 178 mmHg), which was first detected 7 months prior to presentation during a routine annual physical ...",
"input": "What is the patient's Creatinine Clearance using the Cockroft-Gault Equation in terms of mL/min? You should use the patient's adjusted body weight in kg instead of the patient's actual body weight if the patient is ...",
"output": "<think>The formula for computing Cockcroft-Gault is given by CrCl = ((140 - age) * adjusted weight * (gender_coefficient)) / (serum creatinine * 72), where the gender_coefficient is 1 if male, and 0.85 if female..."
}
4.配置相關訓練參數
在Train頁面內,還有大量可修改的微調訓練參數。如果您對他們還不夠了解,可暫時不進行修改。其中,訓練輪數與樣本量級關聯性較大,如果您的微調數據量很少,則可能需要設置較大的訓練輪數,才能有效果。
5.啟動微調訓練
點擊最下方的開始按鈕,即可基于上面選擇的基礎模型和微調數據集,啟動模型微調訓練。頁面下方會顯示實時的訓練進度,訓練日志和loss變化情況。
如果您的訓練樣本較多,單張A10顯卡的24G顯存很容易因為無法承載,而導致報錯"CUDA out of memory"。此時,您需要將云主機變配到顯存更大的機型規格,并開啟DeepSpeed stage3進行模型參數分片,如下圖所示。
同時,您還需要修改默認DeepSpeed配置中的部分參數,以保證訓練正常進行。修改/root/LLaMA-Factory/cache/ds_z3_config.json中的如下內容:
"zero_optimization": {
"stage": 3,
"overlap_comm": true,
"contiguous_gradients": true,
"sub_group_size": 1e9,
"reduce_bucket_size": "auto",
"stage3_prefetch_bucket_size": "auto",
"stage3_param_persistence_threshold": "auto",
"stage3_max_live_parameters": 1e4, //降低該參數以減少顯存占用
"stage3_max_reuse_distance": 1e4, //降低該參數以減少顯存占用
"stage3_gather_16bit_weights_on_model_save": true
}
步驟三:測試模型微調效果
LLaMA-Factory框架提供了模型推理的能力,可直接進入Chat頁面加載模型進行對話。
1.測試基礎大模型效果
保持模型名稱和模型路徑不變,不設置檢查點路徑,在Chat頁面直接點擊加載模型,即可測試基礎大模型的效果。
本案例使用prompt="天翼云彈性云主機包含哪些規格"進行測試。
基礎DeepSeek-R1-Distill-Qwen-7B大模型給出了通用但是錯誤的回答。
2.測試微調大模型的效果
本案例采用了lora的微調方法,因此需將檢查點路徑設置為步驟二中完成訓練的lora小模型。
本案例使用prompt="天翼云彈性云主機包含哪些規格"進行測試。
微調后的大模型能夠給出符合微調數據集的回答。
從純凈版ubuntu系統構建微調環境
除了使用預裝鏡像外, 您也可以從任意ubuntu云主機開始, 按以下步驟搭建出LLaMA-Factory微調環境, 并下載任意您需要的模型。
步驟一:安裝Nvidia顯卡驅動與CUDA庫
# 安裝nvidia顯卡驅動(如已選擇帶驅動鏡像,則忽略)
apt update
apt install ubuntu-drivers-common alsa-utils
# 查看推薦的驅動版本
ubuntu-drivers devices
# 安裝推薦版本
apt install nvidia-driver-550
# 重啟一次云主機
reboot
# 安裝cuda-12.2
wget //developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
# 注意取消對nvidia driver的安裝
sh cuda_12.2.0_535.54.03_linux.run
# 安裝完成后在~/.bashrc中寫入環境變量
# 添加CUDA可執行文件路徑
export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
# 添加CUDA庫文件路徑
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 使環境變量生效
source ~/.bashrc
步驟二:安裝git與下載模型
# 安裝git和lfs
apt update
apt install git
curl -s //packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
apt install git-lfs
git lfs install
# 下載模型
# 國內用modelscope源速度最快
git clone //www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.git
# 清理掉不用的.git目錄下lfs大文件版本數據(能節省一半存儲空間)
git lfs prune -f
步驟三:安裝LLaMA-Factory及相關訓練環境
# 安裝miniconda
wget //repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 下載完成后手動安裝
sh Miniconda3-[版本號]-Linux-x86_64.sh
# 使環境變量生效
source ~/.bashrc
# 安裝LLaMA-Factory
git clone --depth 1 //github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" -i //pypi.tuna.tsinghua.edu.cn/simple
pip install deepspeed -i //pypi.tuna.tsinghua.edu.cn/simple
pip install flash-attn --no-build-isolation -i //pypi.tuna.tsinghua.edu.cn/simple
可選步驟1:安裝vllm推理環境
# 創建新的虛擬環境(vllm和llama-factory依賴庫版本不同, 無法共存)
conda create -n vllm_env python=3.12
conda activate vllm_env
# 安裝vllm用于推理
pip install vllm bitsandbytes -i //pypi.tuna.tsinghua.edu.cn/simple
# 啟動vllm (可參考vllm官方文檔vllm serve命令)
可選步驟2:安裝open-webui可視化界面
# 拉取官方docker鏡像(需自行配置網絡代理)
docker pull ghcr.io/open-webui/open-webui:main
# 啟動容器(對照vllm啟動參數, 自行配置API_KEY, URL參數)
docker run -itd --network host -v /root/volume/open-webui:/app/backend/data -e PORT=3000 -e ENABLE_SIGNUP=true -e OPENAI_API_BASE_URL=//127.0.0.1:8000/v1 -e OPENAI_API_KEY=${API_KEY} -e HF_ENDPOINT=//www.modelscope.cn --name open-webui --restart always ghcr.io/open-webui/open-webui:main