llm_finetune網(wǎng)頁(yè)一鍵式大模型訓(xùn)練到服務(wù)的全流程平臺(tái)

[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í)的使用方法。

llm_finetune github

本項(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)備:

  1. 代碼

    git clone https://github.com/simonlisiyu/llm_finetune.git

    cd llm_finetune

    pip install -r requirements.txt

  2. 目錄準(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

  3. 修改配置

    vi config/trainer.yaml

    注意:

    1. $IP 替換為本機(jī)ip;(如192.168.1.100)
    2. $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)編輯)

    1. $MODEL_NAME 替換為模型名稱(chēng);(如chatglm2-6b)
    2. $MODEL_DIR 替換為基于BASE_DIR的模型相對(duì)路徑;(如llm/ChatGLM2-6B)
    3. $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"
      }
    }
    
  4. 啟動(dòng)服務(wù)

    python main.py

  5. 查看頁(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容