[LLM Finetune 網(wǎng)頁(yè)格式一鍵式大模型訓(xùn)練到服務(wù)的全流程平臺(tái),包括數(shù)據(jù)上傳、微調(diào)訓(xùn)練、模型合并、模型部署服務(wù)等,無(wú)需python和shell開(kāi)發(fā)]
平臺(tái)用來(lái)給不了解研發(fā)、算法的人員使用的,所以平臺(tái)的使用盡量簡(jiǎn)單,不需要用戶(hù)了解太多的細(xì)節(jié),只需要按照流程操作即可。
用最簡(jiǎn)的頁(yè)面,包括首頁(yè)資源查看、訓(xùn)練數(shù)據(jù)上傳下載、大模型微調(diào)訓(xùn)練、大模型權(quán)重合并輸出、大模型能力評(píng)估、大模型部署服務(wù)啟動(dòng)等功能。
最后的訓(xùn)練腳本頁(yè)面,開(kāi)發(fā)人員能夠自由修改腳本,提供了更高級(jí)的使用方法。
本項(xiàng)目受益于 LLaMA-Efficient-Tuning
支持功能
[23/11/14]
配置進(jìn)一步精簡(jiǎn),基本0配置啟動(dòng);
支持chatglm3, qwen, intern, xverse, mistral;
支持大模型評(píng)估,支持C-EVAL、MMLU、CMMLU;
訓(xùn)練和合并支持指定checkpoint路徑;
系統(tǒng)監(jiān)控增加gpu進(jìn)程和docker匹配;
[23/10/28]
代碼重構(gòu),支持整體代碼整合到alita-trainer里;
yaml配置文件精簡(jiǎn)規(guī)整,多模型的訓(xùn)練、合并腳本合并統(tǒng)一;
模型部署服務(wù)bug修復(fù);
支持大模型評(píng)估,支持BLEU-4、ROUGE-1/2/L;
支持微調(diào)訓(xùn)練后的大模型作為訓(xùn)練模型再訓(xùn)練;
系統(tǒng)監(jiān)控除gpu,支持cpu、mem和disk監(jiān)控;
[23/09/28]
支持baichuan、llama2、llama、glm2等大模型,支持QLoRA;
支持gpu預(yù)覽、大模型微調(diào)訓(xùn)練、模型合并、部署服務(wù)(測(cè)試中);
支持api方式,微調(diào)訓(xùn)練、模型合并、模型發(fā)布;
增加數(shù)據(jù)管理,支持上傳excel文件;
增加訓(xùn)練腳本管理,支持自定義腳本編輯和訓(xùn)練,支持pt/sft/rm/ppo/dpo訓(xùn)練階段,支持train/eval/predict任務(wù);
增加模型快速編輯能力,能夠編輯指定問(wèn)題的回答;
支持模型
模型名 | 模型大小 | 默認(rèn)模塊 | Template |
---|---|---|---|
Baichuan | 7B/13B | W_pack | baichuan |
Baichuan2 | 7B/13B | W_pack | baichuan2 |
BLOOM | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - |
BLOOMZ | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - |
ChatGLM3 | 6B | query_key_value | chatglm3 |
Falcon | 7B/40B/180B | query_key_value | falcon |
InternLM | 7B/20B | q_proj,v_proj | intern |
LLaMA | 7B/13B/33B/65B | q_proj,v_proj | - |
LLaMA-2 | 7B/13B/70B | q_proj,v_proj | llama2 |
Mistral | 7B | q_proj,v_proj | mistral |
Phi-1.5 | 1.3B | Wqkv | - |
Qwen | 7B/14B | c_attn | qwen |
XVERSE | 7B/13B/65B | q_proj,v_proj | xverse |
軟件依賴(lài)
- Python 3.10 和 PyTorch 1.13.1
- ??Transformers, Datasets, Accelerate, PEFT 和 TRL
- sentencepiece, protobuf 和 tiktoken
- jieba, rouge-chinese 和 nltk (用于評(píng)估)
- gradio 和 matplotlib (用于網(wǎng)頁(yè)端交互)
- uvicorn, fastapi 和 sse-starlette (用于 API)
llm_finetune服務(wù),全新部署或歷史版本升級(jí)
一、環(huán)境準(zhǔn)備:
-
代碼
git clone https://github.com/simonlisiyu/llm_finetune.git
cd llm_finetune
pip install -r requirements.txt
-
目錄準(zhǔn)備
cd llm_finetune
創(chuàng)建配置目錄
mkdir config
,生成配置文件touch config/trainer.yaml
,關(guān)聯(lián)配置文件ln -s /opt/llm_finetune/config/trainer.yaml scripts/src/llmtuner/
關(guān)聯(lián)數(shù)據(jù)目錄:
ln -s /data data
關(guān)聯(lián)大模型目錄:
ln -s /llm llm
-
修改配置
vi config/trainer.yaml
注意:
- 將
$IP
替換為本機(jī)ip;(如192.168.1.100) - 將
$BASE_DIR
替換為本機(jī)llm_finetune路徑;
application: ip: '$IP' port: $PORT log_level: 'info' trainer: base_dir: '$BASE_DIR'
參考下面的例子:
application: ip: '192.168.1.100' port: 8000 log_level: 'info' trainer: base_dir: '/opt/llm_finetune/'
vi config/model_info.yaml
注意:(初始化的大模型需要手動(dòng)編輯model_info.yaml,后續(xù)訓(xùn)練的大模型會(huì)自動(dòng)更新到此文件內(nèi),無(wú)需再手動(dòng)編輯)
- 將
$MODEL_NAME
替換為模型名稱(chēng);(如chatglm2-6b) - 將
$MODEL_DIR
替換為基于BASE_DIR的模型相對(duì)路徑;(如llm/ChatGLM2-6B) - 將
$TEMPLATE
和$SIZE
和$DATETIME
替換為對(duì)應(yīng)的內(nèi)容;
{ "$MODEL_NAME": { "model_path": "$MODEL_DIR", "template": "$TEMPLATE", "size": "$SIZE", "update_at": "$DATETIME" } }
參考下面的例子:
{ "chatglm2-6b": { "model_path": "llm/ChatGLM2-6B", "template": "chatglm2", "size": "6", "update_at": "2023-07-06_15:56:28" } }
- 將
-
啟動(dòng)服務(wù)
python main.py
查看頁(yè)面
http://127.0.0.1:8000
使用介紹
首頁(yè)
- GPU資源查看
- GPU卡進(jìn)程使用情況
- CPU資源使用率
- MEM資源使用率
-
DISK資源使用率
index
數(shù)據(jù)管理
- 支持?jǐn)?shù)據(jù)上傳、下載、查看、刪除
-
支持json、excel格式的sft數(shù)據(jù)集
data
微調(diào)訓(xùn)練
- 極簡(jiǎn)頁(yè)面一鍵訓(xùn)練,支持模型選擇、數(shù)據(jù)選擇、訓(xùn)練參數(shù)(也可不填用默認(rèn)值)
- 訓(xùn)練過(guò)程中支持查看日志
-
列表展示歷史訓(xùn)練記錄
finetune
模型合并
- 極簡(jiǎn)頁(yè)面一鍵合并,支持基座模型選擇、輸出目錄指定
- 合并過(guò)程中支持查看日志
-
列表展示歷史合并記錄
merge
模型評(píng)估
- 極簡(jiǎn)頁(yè)面一鍵評(píng)估,支持模型選擇、數(shù)據(jù)選擇、評(píng)估參數(shù)(也可不填用默認(rèn)值)
- 支持BLEU&ROUGE、支持C-EVAL、MMLU、CMMLU等評(píng)估方式
- 評(píng)估過(guò)程中支持查看日志
-
列表展示歷史評(píng)估記錄
eval
模型測(cè)試(修改測(cè)試中)
- 快速部署大模型服務(wù)(fastchat+docker),支持模型命名、模型選擇、GPU卡、端口指定
- 部署過(guò)程中支持查看docker日志
-
列表展示docker部署情況,支持啟動(dòng)停止操作
chat
訓(xùn)練腳本
- 高級(jí)開(kāi)發(fā)用法,支持訓(xùn)練腳本在線編輯、運(yùn)行
-
支持預(yù)訓(xùn)練pt、微調(diào)訓(xùn)練sft、獎(jiǎng)勵(lì)模型訓(xùn)練rm、強(qiáng)化學(xué)習(xí)ppo/dpo、模型合并merge等腳本
script