RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

chatglm2-6b在P40上做LORA微調(diào)

京東云 ? 來(lái)源:jf_75140285 ? 作者:jf_75140285 ? 2024-08-13 17:12 ? 次閱讀

背景:

目前,大模型的技術(shù)應(yīng)用已經(jīng)遍地開花。最快的應(yīng)用方式無(wú)非是利用自有垂直領(lǐng)域的數(shù)據(jù)進(jìn)行模型微調(diào)。chatglm2-6b在國(guó)內(nèi)開源的大模型上,效果比較突出。本文章分享的內(nèi)容是用chatglm2-6b模型在集團(tuán)EA的P40機(jī)器上進(jìn)行垂直領(lǐng)域的LORA微調(diào)。

一、chatglm2-6b介紹

github: https://github.com/THUDM/ChatGLM2-6B

chatglm2-6b相比于chatglm有幾方面的提升:

1. 性能提升: 相比初代模型,升級(jí)了 ChatGLM2-6B 的基座模型,同時(shí)在各項(xiàng)數(shù)據(jù)集評(píng)測(cè)上取得了不錯(cuò)的成績(jī);

2. 更長(zhǎng)的上下文: 我們將基座模型的上下文長(zhǎng)度(Context Length)由 ChatGLM-6B 的 2K 擴(kuò)展到了 32K,并在對(duì)話階段使用 8K 的上下文長(zhǎng)度訓(xùn)練;

3. 更高效的推理: 基于 Multi-Query Attention 技術(shù),ChatGLM2-6B 有更高效的推理速度和更低的顯存占用:在官方的模型實(shí)現(xiàn)下,推理速度相比初代提升了 42%;

4. 更開放的協(xié)議:ChatGLM2-6B 權(quán)重對(duì)學(xué)術(shù)研究完全開放,在填寫問(wèn)卷進(jìn)行登記后亦允許免費(fèi)商業(yè)使用。

二、微調(diào)環(huán)境介紹

2.1 性能要求

推理這塊,chatglm2-6b在精度是fp16上只需要14G的顯存,所以P40是可以cover的。

wKgaoma7I3aASvk2AADHmpxfTLQ074.png

EA上P40顯卡的配置如下:

wKgZoma7I3iAM9EbAAQus7i5EGI540.png

2.2 鏡像環(huán)境

做微調(diào)之前,需要編譯環(huán)境進(jìn)行配置,我這塊用的是docker鏡像的方式來(lái)加載鏡像環(huán)境,具體配置如下:

FROM base-clone-mamba-py37-cuda11.0-gpu

# mpich
RUN yum install mpich  

# create my own environment
RUN conda create -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ --override --yes --name py39 python=3.9
# display my own environment in Launcher
RUN source activate py39 
    && conda install --yes --quiet ipykernel 
    && python -m ipykernel install --name py39 --display-name "py39"

# install your own requirement package
RUN source activate py39 
    && conda install -y -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 
    pytorch  torchvision torchaudio faiss-gpu 
    && pip install --no-cache-dir  --ignore-installed -i https://pypi.tuna.tsinghua.edu.cn/simple 
    protobuf 
    streamlit 
    transformers==4.29.1 
    cpm_kernels 
    mdtex2html 
    gradio==3.28.3 
	sentencepiece 
	accelerate 
	langchain 
    pymupdf 
	unstructured[local-inference] 
	layoutparser[layoutmodels,tesseract] 
	nltk~=3.8.1 
	sentence-transformers 
	beautifulsoup4 
	icetk 
	fastapi~=0.95.0 
	uvicorn~=0.21.1 
	pypinyin~=0.48.0 
    click~=8.1.3 
    tabulate 
    feedparser 
    azure-core 
    openai 
    pydantic~=1.10.7 
    starlette~=0.26.1 
    numpy~=1.23.5 
    tqdm~=4.65.0 
    requests~=2.28.2 
    rouge_chinese 
    jieba 
    datasets 
    deepspeed 
	pdf2image 
	urllib3==1.26.15 
    tenacity~=8.2.2 
    autopep8 
    paddleocr 
    mpi4py 
    tiktoken

如果需要使用deepspeed方式來(lái)訓(xùn)練, EA上缺少mpich信息傳遞工具包,需要自己手動(dòng)安裝。

2.3 模型下載

huggingface地址: https://huggingface.co/THUDM/chatglm2-6b/tree/main

三、LORA微調(diào)

3.1 LORA介紹

paper: https://arxiv.org/pdf/2106.09685.pdf

LORA(Low-Rank Adaptation of Large Language Models)微調(diào)方法: 凍結(jié)預(yù)訓(xùn)練好的模型權(quán)重參數(shù),在凍結(jié)原模型參數(shù)的情況下,通過(guò)往模型中加入額外的網(wǎng)絡(luò)層,并只訓(xùn)練這些新增的網(wǎng)絡(luò)層參數(shù)。

chaijie_default.png

LoRA 的思想:

?在原始 PLM (Pre-trained Language Model) 旁邊增加一個(gè)旁路,做一個(gè)降維再升維的操作。

?訓(xùn)練的時(shí)候固定 PLM 的參數(shù),只訓(xùn)練降維矩陣A與升維矩B。而模型的輸入輸出維度不變,輸出時(shí)將BA與 PLM 的參數(shù)疊加。

?用隨機(jī)高斯分布初始化A,用 0 矩陣初始化B,保證訓(xùn)練的開始此旁路矩陣依然是 0 矩陣。

3.2 微調(diào)

huggingface提供的peft工具可以方便微調(diào)PLM模型,這里也是采用的peft工具來(lái)創(chuàng)建LORA。

peft的github: https://gitcode.net/mirrors/huggingface/peft?utm_source=csdn_github_accelerator

加載模型和lora微調(diào):

    # load model
    tokenizer = AutoTokenizer.from_pretrained(args.model_dir, trust_remote_code=True)
    model = AutoModel.from_pretrained(args.model_dir, trust_remote_code=True)
    
    print("tokenizer:", tokenizer)
    
    # get LoRA model
    config = LoraConfig(
        r=args.lora_r,
        lora_alpha=32,
        lora_dropout=0.1,
        bias="none",)
    
    # 加載lora模型
    model = get_peft_model(model, config)
    # 半精度方式
    model = model.half().to(device)

這里需要注意的是,用huggingface加載本地模型,需要?jiǎng)?chuàng)建work文件,EA上沒(méi)有權(quán)限在沒(méi)有在.cache創(chuàng)建,這里需要自己先制定work路徑。

import os
os.environ['TRANSFORMERS_CACHE'] = os.path.dirname(os.path.abspath(__file__))+"/work/"
os.environ['HF_MODULES_CACHE'] = os.path.dirname(os.path.abspath(__file__))+"/work/"

如果需要用deepspeed方式訓(xùn)練,選擇你需要的zero-stage方式:

    conf = {"train_micro_batch_size_per_gpu": args.train_batch_size,
            "gradient_accumulation_steps": args.gradient_accumulation_steps,
            "optimizer": {
                "type": "Adam",
                "params": {
                    "lr": 1e-5,
                    "betas": [
                        0.9,
                        0.95
                    ],
                    "eps": 1e-8,
                    "weight_decay": 5e-4
                }
            },
            "fp16": {
                "enabled": True
            },
            "zero_optimization": {
                "stage": 1,
                "offload_optimizer": {
                    "device": "cpu",
                    "pin_memory": True
                },
                "allgather_partitions": True,
                "allgather_bucket_size": 2e8,
                "overlap_comm": True,
                "reduce_scatter": True,
                "reduce_bucket_size": 2e8,
                "contiguous_gradients": True
            },
            "steps_per_print": args.log_steps
            }

其他都是數(shù)據(jù)處理處理方面的工作,需要關(guān)注的就是怎么去構(gòu)建prompt,個(gè)人認(rèn)為在領(lǐng)域內(nèi)做微調(diào)構(gòu)建prompt非常重要,最終對(duì)模型的影響也比較大。

四、微調(diào)結(jié)果

目前模型還在finetune中,batch=1,epoch=3,已經(jīng)迭代一輪。

wKgaoma7I3qAVUBDAAW1M1mXOuk426.png

?審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LoRa
    +關(guān)注

    關(guān)注

    349

    文章

    1689

    瀏覽量

    231910
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2423

    瀏覽量

    2640
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    P40能像P2那樣擁有FRL嗎

    VDI運(yùn)行一個(gè)工程團(tuán)隊(duì),其中3個(gè)主機(jī)具有K2,并且剛剛獲得了帶有P40的新服務(wù)器。到目前為止,我沒(méi)有體驗(yàn)到P40的任何優(yōu)點(diǎn)。如果有什么
    發(fā)表于 09-12 15:52

    怎么P40看到cinebench性能

    我想在P40看到cinebench性能,4GB RAM和3vCPU以及不同的P40配置文件P40-24Q,P40-12Q,
    發(fā)表于 09-12 15:55

    P40置于圖形模式是否無(wú)法進(jìn)行遠(yuǎn)程渲染?

    試圖Windows Server Azure VM使用P40獲取圖形模式(WDDM)并收到“不支持”消息。是否無(wú)法將P40置于圖形模式以進(jìn)行遠(yuǎn)程渲染?我們目前正在使用M60,它運(yùn)行
    發(fā)表于 09-12 16:13

    NVIDIA Tesla P40動(dòng)態(tài)GPU內(nèi)存分配可能嗎?

    你好是由VM分配的P40修復(fù)的GPU內(nèi)存還是動(dòng)態(tài)的? p40有24GB gpu ram所以讓我們采取以下的配置文件p40-1q1024 mb幀緩沖2個(gè)虛擬顯示器頭最大分辨率4096x2
    發(fā)表于 09-25 17:27

    華為P40系列曝光P40采用了平面設(shè)計(jì)P40 Pro采用了曲面設(shè)計(jì)

    整體來(lái)看,華為P40P40 Pro采用了相似的設(shè)計(jì)語(yǔ)言,當(dāng)然細(xì)微之處還是有差異的。比如屏幕,P40采用平面設(shè)計(jì),P40 Pro則采用曲面設(shè)計(jì),而且從特寫圖來(lái)看是四曲面屏幕,這一點(diǎn)和數(shù)
    發(fā)表于 12-19 13:48 ?4130次閱讀

    華為P40帶殼渲染圖曬出,設(shè)計(jì)風(fēng)格與華為P40 Pro類似

    今日早間,消息報(bào)道稱,華為P40和華為P40 Pro的設(shè)計(jì)風(fēng)格類似,但是有一些細(xì)節(jié)是不一樣的。華為P40顯示屏為6.1英寸到6.2英寸,平面設(shè)計(jì);華為P40 Pro顯示屏尺寸為6.5英
    的頭像 發(fā)表于 12-20 14:33 ?2954次閱讀

    p40怎么升級(jí)鴻蒙系統(tǒng) 華為p40現(xiàn)在可以更新鴻蒙系統(tǒng)嗎?

    自從華為62號(hào)的鴻蒙發(fā)布會(huì)之后,有很多小伙伴都在問(wèn)華為p40現(xiàn)在可以更新鴻蒙系統(tǒng)嗎?
    的頭像 發(fā)表于 06-07 11:35 ?1.1w次閱讀

    四川移動(dòng)發(fā)布:將采購(gòu)華為P40P40 PRO公開版手機(jī)63000臺(tái)

    11月2日消息,近日,四川移動(dòng)終端公司發(fā)布公告稱,將采購(gòu)華為P40P40 PRO公開版手機(jī)。 公告顯示,本次四川移動(dòng)采購(gòu)的華為手機(jī)型號(hào)為P40(ANA-AN00
    的頭像 發(fā)表于 11-02 16:03 ?2281次閱讀

    華為p40如何升級(jí)鴻蒙系統(tǒng) 操作步驟如下

    華為62日召開了鴻蒙系統(tǒng)發(fā)布會(huì),華為官方正式發(fā)布了鴻蒙系統(tǒng),也公布了第一批支持更新的機(jī)型,當(dāng)然華為p40升級(jí)鴻蒙系統(tǒng)的隊(duì)里,華為
    的頭像 發(fā)表于 06-15 09:44 ?8642次閱讀

    華為p40鴻蒙系統(tǒng)怎么升級(jí)

    大家都知道華為鴻蒙HarmonyOS 2發(fā)布會(huì)已于62日開啟,目前華為P40也是支持鴻蒙系統(tǒng)全新升級(jí)的。那么華為P40如何升級(jí)鴻蒙系統(tǒng)呢?
    的頭像 發(fā)表于 06-16 15:20 ?5059次閱讀

    p40怎么更新鴻蒙系統(tǒng)

    p40怎么更新鴻蒙系統(tǒng)?p40可以更新鴻蒙系統(tǒng)嗎?下面小編就為大家簡(jiǎn)單介紹一下!
    的頭像 發(fā)表于 07-08 10:07 ?4338次閱讀

    ChatGLM-6B的局限和不足

    ;ChatGLM-6B 參考了 ChatGPT 的設(shè)計(jì)思路,千 億基座模型 GLM-130B 中注入了代碼預(yù)訓(xùn)練,通過(guò)有監(jiān)督微調(diào)等技術(shù)實(shí)現(xiàn)與人類意圖對(duì)齊(即讓機(jī) 器的回答符合人類的期
    的頭像 發(fā)表于 06-25 11:50 ?5445次閱讀
    <b class='flag-5'>ChatGLM-6B</b>的局限和不足

    ChatGLM2-6B:性能大幅提升,8-32k上下文,推理提速42%,中文榜單位列榜首

    主要評(píng)估LLM模型中文能力的 C-Eval 榜單中,截至6月25日 ChatGLM2 模型以 71.1 的分?jǐn)?shù)位居 Rank 0 ,ChatGLM2-6B 模型以 51.7 的分?jǐn)?shù)位
    的頭像 發(fā)表于 06-26 14:30 ?978次閱讀
    <b class='flag-5'>ChatGLM2-6B</b>:性能大幅提升,8-32k上下文,推理提速42%,<b class='flag-5'>在</b>中文榜單位列榜首

    ChatGLM2-6B解析與TPU部署

    ChatGLM2-6B解析與TPU部署
    的頭像 發(fā)表于 08-18 11:28 ?795次閱讀
    <b class='flag-5'>ChatGLM2-6B</b>解析與TPU部署

    探索ChatGLM2算能BM1684XINT8量化部署,加速大模型商業(yè)落地

    1.背景介紹2023年7月時(shí)我們已通過(guò)靜態(tài)設(shè)計(jì)方案完成了ChatGLM2-6B單顆BM1684X的部署工作,量化模式F16,模型大小12GB,平均速度約為3token/s,詳見《
    的頭像 發(fā)表于 10-10 10:18 ?3699次閱讀
    探索<b class='flag-5'>ChatGLM2</b><b class='flag-5'>在</b>算能BM1684X<b class='flag-5'>上</b>INT8量化部署,加速大模型商業(yè)落地
    RM新时代网站-首页