国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于SWIFT和Qwen1.5-14B-Chat進(jìn)行大模型LoRA微調(diào)測(cè)試

這篇具有很好參考價(jià)值的文章主要介紹了基于SWIFT和Qwen1.5-14B-Chat進(jìn)行大模型LoRA微調(diào)測(cè)試。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

基于SWIFT和Qwen1.5-14B-Chat進(jìn)行大模型LoRA微調(diào)測(cè)試

環(huán)境準(zhǔn)備

基礎(chǔ)環(huán)境

  • 操作系統(tǒng):Ubuntu 18.04.5 LTS (GNU/Linux 3.10.0-1127.el7.x86_64 x86_64)
  • Anaconda3:Anaconda3-2023.03-1-Linux-x86_64
  • 根據(jù)服務(wù)器網(wǎng)絡(luò)情況配置好conda源和pip源,此處使用的是超算山河源
  • 服務(wù)器硬件配置:CPU 96核;GPU 8×NVIDIA A100 40GB

環(huán)境安裝

通過(guò)源代碼安裝SWIFT:

創(chuàng)建一個(gè)新的conda環(huán)境:

conda create --name swift python=3.8

激活剛剛創(chuàng)建的conda環(huán)境:

conda activate swift

下載SWIFT源碼:

git clone https://github.com/modelscope/swift.git

切換到SWIFT路徑:

cd /yldm0226/swift

安裝SWIFT:

pip install -e .[llm]

非必要步驟:檢查服務(wù)器cuda版本是否與當(dāng)前安裝的pytorch對(duì)應(yīng),詳見(jiàn):搭建一個(gè)大模型API服務(wù)

數(shù)據(jù)集準(zhǔn)備

對(duì)于數(shù)據(jù)集,我們均采用json或jsonl的格式。

在做大模型SFT(Supervised Fine-Tuning)時(shí),可以準(zhǔn)備兩種數(shù)據(jù):

  1. 單輪問(wèn)答
  2. 多輪對(duì)話

對(duì)于單輪問(wèn)答數(shù)據(jù),其格式可以為:

{"query": "11111", "response": "22222"}

對(duì)于多輪對(duì)話數(shù)據(jù),其格式可以為:

{"query": "eeeee", "response": "fffff", "history": []}
{"query": "EEEEE", "response": "FFFFF", "history": [["AAAAA", "BBBBB"], ["CCCCC", "DDDDD"]]}

同時(shí),也可以用以下兩種格式的數(shù)據(jù):

{"conversations": [{"from": "user", "value": "11111"}, {"from": "assistant", "value": "22222"}]}
{"conversations": [{"from": "user", "value": "aaaaa"}, {"from": "assistant", "value": "bbbbb"}, {"from": "user", "value": "ccccc"}, {"from": "assistant", "value": "ddddd"}]}
{"conversations": [{"from": "user", "value": "AAAAA"}, {"from": "assistant", "value": "BBBBB"}, {"from": "user", "value": "CCCCC"}, {"from": "assistant", "value": "DDDDD"}]}
{"messages": [{"role": "user", "content": "11111"}, {"role": "assistant", "content": "22222"}]}
{"messages": [{"role": "user", "content": "aaaaa"}, {"role": "assistant", "content": "bbbbb"}, {"role": "user", "content": "ccccc"}, {"role": "assistant", "content": "ddddd"}]}
{"messages": [{"role": "user", "content": "AAAAA"}, {"role": "assistant", "content": "BBBBB"}, {"role": "user", "content": "CCCCC"}, {"role": "assistant", "content": "DDDDD"}]}

在本文中,共使用了9個(gè)數(shù)據(jù)集,數(shù)據(jù)集的詳細(xì)信息如下:

序號(hào) 數(shù)據(jù)集 簡(jiǎn)介 數(shù)據(jù)量
1 Chinese_medical_dialogue_six_department 中文醫(yī)療問(wèn)答數(shù)據(jù)集,包括男科、內(nèi)科、婦產(chǎn)科、腫瘤科、兒科、外科六個(gè)科室的問(wèn)題。 792K
2 HuatuoGPT2_sft_instruct_GPT4 華佗GPT(HuatuoGPT)第二版訓(xùn)練數(shù)據(jù)集。 50K
3 ChatMed_Consult-v0.3 中文醫(yī)療在線問(wèn)診數(shù)據(jù)集ChatMed_Consult_Dataset的50w+在線問(wèn)診+ChatGPT回復(fù)。 500K
4 ChatMed_TCM-v0.2 以開(kāi)源的中醫(yī)藥知識(shí)圖譜為基礎(chǔ),采用以實(shí)體為中心的自指令方法(entity-centric self-instruct),調(diào)用ChatGPT得到11w+的圍繞中醫(yī)藥的指令數(shù)據(jù)。 110K
5 QiZhen_sft_20k 包含20k訓(xùn)練數(shù)據(jù)(該數(shù)據(jù)集來(lái)自于啟真醫(yī)學(xué)知識(shí)庫(kù)收集整理的真實(shí)醫(yī)患知識(shí)問(wèn)答數(shù)據(jù)以及在啟真醫(yī)學(xué)知識(shí)庫(kù)的藥品文本知識(shí)基礎(chǔ)上,通過(guò)對(duì)半結(jié)構(gòu)化數(shù)據(jù)設(shè)置特定的問(wèn)題模板構(gòu)造的指令數(shù)據(jù))。 20K
6 Huatuo_Lite Huatuo-Lite 是在Huatuo26M數(shù)據(jù)集的基礎(chǔ)上經(jīng)過(guò)多次提純和重寫而精煉優(yōu)化的數(shù)據(jù)集。它包含了18萬(wàn)個(gè)高質(zhì)量的醫(yī)療問(wèn)答對(duì),并具有醫(yī)院科室和相關(guān)疾病兩個(gè)額外的數(shù)據(jù)維度。 180K
7 ZhongJing_CMtMedQA 仲景SFT訓(xùn)練集。 70K
8 DISC-Med-SFT_released 包含了超過(guò)47萬(wàn)個(gè)衍生于現(xiàn)有的醫(yī)療數(shù)據(jù)集重新構(gòu)建得到的樣本。采用了目標(biāo)導(dǎo)向的策略,通過(guò)對(duì)于精心選擇的幾個(gè)數(shù)據(jù)源進(jìn)行重構(gòu)來(lái)得到SFT數(shù)據(jù)集。這些數(shù)據(jù)的作用在于幫助模型學(xué)習(xí)醫(yī)療領(lǐng)域知識(shí),將行為模式與人類偏好對(duì)齊,并對(duì)齊真實(shí)世界在線醫(yī)療對(duì)話的分布情況。 514K
9 SZY_TCM_QA 私有數(shù)據(jù)集。 12K

以下是加載后的數(shù)據(jù)集信息:

[INFO:swift] train_dataset: Dataset({
    features: ['query', 'response', 'history'],
    num_rows: 2223540
})
[INFO:swift] val_dataset: Dataset({
    features: ['query', 'response', 'history'],
    num_rows: 22460
})

數(shù)據(jù)總量為2,246,000,從中抽取出約1%作為驗(yàn)證集,其余的作為訓(xùn)練集。

通過(guò)max_lengt=4096進(jìn)行過(guò)濾后的數(shù)據(jù)集信息如下:

[INFO:swift] Dataset Token Length: 224.276768±159.001432, min=25.000000, max=4089.000000, size=2223411
[INFO:swift] Dataset Token Length: 224.254464±157.600093, min=28.000000, max=3086.000000, size=22459

編寫微調(diào)腳本

SWIFT框架提供了部分大模型的微調(diào)腳本,可以在我們下載的源碼中的swift/examples/pytorch/llm/scripts路徑中找到這些腳本。如果這些腳本能夠滿足我們大部分的微調(diào)需求,我們可以選擇直接對(duì)這些腳本進(jìn)行修改。如果找不到我們需要的腳本,需要我們根據(jù)swift/docs/source/LLM中的命令行參數(shù)文檔自行編寫訓(xùn)練腳本。

以下是對(duì)Qwen1.5-14B-Chat進(jìn)行LoRA微調(diào)的一個(gè)訓(xùn)練腳本:

nproc_per_node=8

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
NPROC_PER_NODE=$nproc_per_node \
MASTER_PORT=29500 \
swift sft \
    --model_type qwen1half-14b-chat \
    --model_id_or_path /yldm0226/models/Qwen1.5-14B-Chat \
    --model_revision master \
    --sft_type lora \
    --tuner_backend swift \
    --template_type qwen \
    --dtype AUTO \
    --output_dir /yldm0226/llm_sft_output \
    --ddp_backend nccl \
    --custom_train_dataset_path /yldm0226/data/1-Chinese_medical_dialogue_six_department.jsonl /yldm0226/data/2-HuatuoGPT2_sft_instruct_GPT4.jsonl /yldm0226/data/3-ChatMed_Consult-v0.3.jsonl /yldm0226/data/4-ChatMed_TCM-v0.2.jsonl /yldm0226/data/5-QiZhen_sft_20k.jsonl /yldm0226/data/6-Huatuo_Lite.jsonl /yldm0226/data/7-ZhongJing_CMtMedQA.jsonl /yldm0226/data/8-DISC-Med-SFT_released.jsonl /yldm0226/data/9-SZY_TCM_QA.jsonl \
    --train_dataset_sample -1 \
    --num_train_epochs 1 \
    --max_length 4096 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps $(expr 64 / $nproc_per_node) \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 3 \
    --logging_steps 10 \
    --use_flash_attn false \
    --deepspeed default-zero3 \
    --save_only_model true

該腳本中的一些參數(shù)在基于SWIFT和Qwen1.5-14B-Chat進(jìn)行大模型全參微調(diào)測(cè)試中已經(jīng)解釋過(guò)了,此處簡(jiǎn)單介紹一下與LoRA相關(guān)的幾個(gè)參數(shù),如果你想了解LoRA具體的原理,請(qǐng)閱讀該論文LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS:

lora_rank:微調(diào)中的秩大小。秩的值并不是越大越好,此處設(shè)置的8是LoRA原論文中測(cè)試的最優(yōu)解,根據(jù)論文中的結(jié)果,1或者2這種很小的秩的表現(xiàn)也是很好的。

lora_alpha:LoRA 微調(diào)中的縮放系數(shù)。

lora_dropout_p:LoRA 微調(diào)中的 Dropout 系數(shù)。

lora_target_modules:指定lora模塊, 默認(rèn)為['DEFAULT']. 如果lora_target_modules傳入'DEFAULT' or 'AUTO', 則根據(jù)model_type查找MODEL_MAPPING中的lora_target_modules(默認(rèn)指定為qkv)。如果傳入'ALL', 則將所有的Linear層(不含head)指定為lora模塊。 如果傳入'EMBEDDING', 則Embedding層指定為lora模塊。 如果內(nèi)存允許, 建議設(shè)置成'ALL'。 當(dāng)然, 你也可以設(shè)置['ALL', 'EMBEDDING'], 將所有的Linear和embedding層指定為lora模塊。該參數(shù)只有當(dāng)sft_type指定為'lora'時(shí)才生效。

deepspeed:用于指定deepspeed的配置文件的路徑或者直接傳入json格式的配置信息, 默認(rèn)為None, 即不開(kāi)啟deepspeed. deepspeed可以節(jié)約顯存。 SWIFT書寫了默認(rèn)的ZeRO-2配置文件, ZeRO-3配置文件。你只需要指定'default-zero2', 就會(huì)使用默認(rèn)zero2配置文件; 指定'default-zero3', 就會(huì)使用默認(rèn)的zero3配置文件。

測(cè)試

以下是訓(xùn)練過(guò)程中的部分輸出:

{'loss': 3.91967845, 'acc': 0.46053511, 'learning_rate': 0.0, 'epoch': 0.0, 'global_step': 1}                                                                                                                                                             
{'loss': 3.13938289, 'acc': 0.50242286, 'learning_rate': 3.313e-05, 'epoch': 0.0, 'global_step': 10}                                                                                                                                                      
{'loss': 2.02636986, 'acc': 0.56641636, 'learning_rate': 4.31e-05, 'epoch': 0.0, 'global_step': 20}                                                                                                                                                       
{'loss': 1.51573572, 'acc': 0.62124624, 'learning_rate': 4.894e-05, 'epoch': 0.0, 'global_step': 30}                                                                                                                                                      
{'loss': 1.37469482, 'acc': 0.65222416, 'learning_rate': 5.308e-05, 'epoch': 0.0, 'global_step': 40}                                                                                                                                                      
{'loss': 1.44527245, 'acc': 0.64013515, 'learning_rate': 5.629e-05, 'epoch': 0.0, 'global_step': 50}                                                                                                                                                      
{'loss': 1.36220665, 'acc': 0.65485716, 'learning_rate': 5.891e-05, 'epoch': 0.0, 'global_step': 60}                                                                                                                                                      
{'loss': 1.34706726, 'acc': 0.65729899, 'learning_rate': 6.113e-05, 'epoch': 0.0, 'global_step': 70}                                                                                                                                                      
{'loss': 1.3558219, 'acc': 0.65412712, 'learning_rate': 6.305e-05, 'epoch': 0.0, 'global_step': 80}                                                                                                                                                       
{'loss': 1.38924046, 'acc': 0.6498558, 'learning_rate': 6.475e-05, 'epoch': 0.0, 'global_step': 90}                                                                                                                                                       
{'loss': 1.31848869, 'acc': 0.66292844, 'learning_rate': 6.626e-05, 'epoch': 0.0, 'global_step': 100}                                                                                                                                                     
Train:   0%|▌                                                                                                                                                                                                     | 100/34740 [20:07<113:54:29, 11.84s/it]
Val:  22%|████████████████████████████████████████████                            | 615/2808 [04:56<17:36,  2.07it/s]                                                                                                                    

訓(xùn)練一個(gè)epoch大約需要114小時(shí);進(jìn)行一次驗(yàn)證大約需要22分鐘。(這里的時(shí)間只是一個(gè)大概值,在訓(xùn)練時(shí),不同數(shù)據(jù)的處理速度不同,花費(fèi)的總時(shí)間會(huì)一直變化)。

相比于全參,LoRA的微調(diào)方式能夠節(jié)約大量的顯存,因此我們可以將nproc_per_node設(shè)置的大一些,以提高訓(xùn)練的速度。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-837691.html

到了這里,關(guān)于基于SWIFT和Qwen1.5-14B-Chat進(jìn)行大模型LoRA微調(diào)測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 開(kāi)源語(yǔ)音大語(yǔ)言模型來(lái)了!阿里基于Qwen-Chat提出Qwen-Audio!

    開(kāi)源語(yǔ)音大語(yǔ)言模型來(lái)了!阿里基于Qwen-Chat提出Qwen-Audio!

    論文鏈接: https://arxiv.org/pdf/2311.07919.pdf 開(kāi)源代碼: https://github.com/QwenLM/Qwen-Audio 大型語(yǔ)言模型(LLMs)由于其良好的知識(shí)保留能力、復(fù)雜的推理和解決問(wèn)題能力,在通用人工智能(AGI)領(lǐng)域取得了重大進(jìn)展。然而,語(yǔ)言模型缺乏像人類一樣感知非文本模態(tài)(如圖像和音頻)的

    2024年01月18日
    瀏覽(87)
  • 【AIGC】Baichuan2-13B-Chat模型微調(diào)

    【AIGC】Baichuan2-13B-Chat模型微調(diào)

    微調(diào)框架:LLaMA-Efficient-Tuning 訓(xùn)練機(jī)器:4*RTX3090TI (24G顯存) python環(huán)境:python3.8, 安裝 requirements.txt 依賴包 1、準(zhǔn)備數(shù)據(jù)集 2、訓(xùn)練及測(cè)試 1)創(chuàng)建模型輸出目錄 2)創(chuàng)建deepspeed配置文件目錄 3)創(chuàng)建deepspeed配置文件 4)訓(xùn)練模型 測(cè)試模型 3、注意事項(xiàng): 1)我用的是3090TI顯卡,使用

    2024年02月08日
    瀏覽(51)
  • 大模型使用——超算上部署LLAMA-2-70B-Chat

    大模型使用——超算上部署LLAMA-2-70B-Chat

    前言 1、本機(jī)為 Inspiron 5005 ,為 64 位,所用操作系統(tǒng)為 Windos 10 。超算的操作系統(tǒng)為 基于Centos的linux , GPU 配置為 A100 ,所使用開(kāi)發(fā)環(huán)境為 Anaconda 。 2、本教程主要實(shí)現(xiàn)了在超算上部署LLAMA2-70B-Chat。 實(shí)現(xiàn)步驟 1、連接上超算以后,執(zhí)行如下命令在超算上創(chuàng)建一個(gè)虛擬環(huán)境。

    2024年02月13日
    瀏覽(17)
  • 【大模型】0.5B的大模型通義千問(wèn)1.5-0.5B-Chat來(lái)了??!

    Qwen1.5是Qwen2的測(cè)試版,這是一個(gè)基于轉(zhuǎn)換器的純解碼器語(yǔ)言模型,在大量數(shù)據(jù)上進(jìn)行了預(yù)訓(xùn)練。與之前發(fā)布的Qwen相比,改進(jìn)之處包括: 顯著改善了人類對(duì)聊天模型的偏好; 對(duì)基本模式和聊天模式的多語(yǔ)言支持; 穩(wěn)定支持32K上下文長(zhǎng)度,適用于各種尺寸的模型 不需要trust_r

    2024年02月20日
    瀏覽(25)
  • NLP(六十一)使用Baichuan-13B-Chat模型構(gòu)建智能文檔問(wèn)答助手

    NLP(六十一)使用Baichuan-13B-Chat模型構(gòu)建智能文檔問(wèn)答助手

    ??在文章NLP(六十)Baichuan-13B-Chat模型使用體驗(yàn)中,我們介紹了Baichuan-13B-Chat模型及其在向量嵌入和文檔閱讀上的初步嘗試。 ??本文將詳細(xì)介紹如何使用Baichuan-13B-Chat模型來(lái)構(gòu)建智能文檔問(wèn)答助手。 文檔問(wèn)答流程 ??智能文檔問(wèn)答助手的流程圖如下: 文檔加載(Document

    2024年02月15日
    瀏覽(32)
  • 【深度學(xué)習(xí)】微調(diào)Qwen1.8B

    【深度學(xué)習(xí)】微調(diào)Qwen1.8B

    ????????使用地址數(shù)據(jù)微調(diào)Qwen1.8B。Qwen提供了預(yù)構(gòu)建的Docker鏡像,在使用時(shí)獲取鏡像只需安裝驅(qū)動(dòng)、下載模型文件即可啟動(dòng)Demo、部署OpenAI API以及進(jìn)行微調(diào)。 ? ? ? ? github地址:GitHub - QwenLM/Qwen: The official repo of Qwen (通義千問(wèn)) chat pretrained large language model proposed by Alibaba Cl

    2024年02月22日
    瀏覽(20)
  • 純新手 docker langchain Qwen1.5 部署

    一、所需資源: docker23 鏡像:qwenllm/qwen:cu121 模型:Qwen1.5-Qwen-7B-Chat langchain 二、技巧 1、下載模型 使用下載的鏡像,啟動(dòng)容器,使用modelscope命令下載 #模型下載 from modelscope import snapshot_download model_dir = snapshot_download(\\\'qwen/Qwen1.5-7B-Chat\\\') 三、安裝步驟 1、啟動(dòng)容器 掛載磁盤、映射

    2024年03月25日
    瀏覽(14)
  • 【通義千問(wèn)】大模型Qwen GitHub開(kāi)源工程學(xué)習(xí)筆記(5)-- 模型的微調(diào)【全參數(shù)微調(diào)】【LoRA方法】【Q-LoRA方法】

    本文介紹了使用微調(diào)技術(shù)進(jìn)行自然語(yǔ)言生成的方法。通過(guò)使用transformers庫(kù)中的AutoModelForCausalLM和AutoTokenizer,可以在多節(jié)點(diǎn)環(huán)境下進(jìn)行微調(diào)。 你需要將所有樣本放到一個(gè)列表中并存入json文件中。每個(gè)樣本對(duì)應(yīng)一個(gè)字典,包含id和conversation,其中后者為一個(gè)列表。示例如下所示:

    2024年01月23日
    瀏覽(29)
  • 【AI實(shí)戰(zhàn)】開(kāi)源中文 llama2 來(lái)了,30 分鐘搭建 130 億參數(shù)大模型 Llama2-Chinese-13b-Chat

    【AI實(shí)戰(zhàn)】開(kāi)源中文 llama2 來(lái)了,30 分鐘搭建 130 億參數(shù)大模型 Llama2-Chinese-13b-Chat

    Llama2 2023年7月19日:Meta 發(fā)布開(kāi)源可商用模型 Llama2。 Llama2 是一個(gè)預(yù)訓(xùn)練和微調(diào)的生成文本模型的集合,其規(guī)模從70億到700億個(gè)參數(shù)不等。 LLaMA2 的詳細(xì)介紹可以參考這篇文章:【大模型】更強(qiáng)的 LLaMA2 來(lái)了,開(kāi)源可商用、與 ChatGPT 齊平 Llama2-Chinese Llama2中文社區(qū) Llama2-Chinese Git

    2024年02月12日
    瀏覽(22)
  • 開(kāi)源模型應(yīng)用落地-qwen-7b-chat與vllm實(shí)現(xiàn)推理加速的正確姿勢(shì)(一)

    一、前言 ? ? ?基于真實(shí)生產(chǎn)級(jí)項(xiàng)目分享,幫助有需要的同學(xué)快速構(gòu)建完整可交付項(xiàng)目 ? ? 項(xiàng)目流程包括(去掉業(yè)務(wù)部分): ? 開(kāi)源模型測(cè)試,包括baichuan、qwen、chatglm、bloom ? 數(shù)據(jù)爬取及清洗 ? 模型微調(diào)及評(píng)估 ? 搭建AI交互能力 ??搭建IM交互能力 ? 搭建違禁詞識(shí)別能力

    2024年02月02日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包