【大模型】fineturn Q-wen

github上下載qwen1_5源碼

修改finetun.sh

然后在路徑qwen1_5/examples/sft下修改finetun.sh, 內容如下

#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
DIR=`pwd`# Guide:
# This script supports distributed training on multi-gpu workers (as well as single-worker training).
# Please set the options below according to the comments.
# For multi-gpu workers training, these options should be manually set for each worker.
# After setting the options, please run the script on each worker.# Number of GPUs per GPU worker
GPUS_PER_NODE=$(python -c 'import torch; print(torch.cuda.device_count())')# Number of GPU workers, for single-worker training, please set to 1
NNODES=${NNODES:-1}# The rank of this worker, should be in {0, ..., WORKER_CNT-1}, for single-worker training, please set to 0
NODE_RANK=${NODE_RANK:-0}# The ip address of the rank-0 worker, for single-worker training, please set to localhost
MASTER_ADDR=${MASTER_ADDR:-localhost}# The port for communication
MASTER_PORT=${MASTER_PORT:-6010}MODEL="Qwen/Qwen1.5-7B" # Set the path if you do not want to load from huggingface directly
# ATTENTION: specify the path to your training data, which should be a json file consisting of a list of conversations.
# See the section for finetuning in README for more information.
DATA="path_to_data"
DS_CONFIG_PATH="finetune/ds_config_zero3.json"
USE_LORA=False
Q_LORA=Falsefunction usage() {echo '
Usage: bash finetune/finetune_lora_ds.sh [-m MODEL_PATH] [-d DATA_PATH] [--deepspeed DS_CONFIG_PATH] [--use_lora USE_LORA] [--q_lora Q_LORA]
'
}while [[ "$1" != "" ]]; docase $1 in-m | --model )shiftMODEL=$1;;-d | --data )shiftDATA=$1;;--deepspeed )shiftDS_CONFIG_PATH=$1;;--use_lora  )shiftUSE_LORA=$1;;--q_lora    )shiftQ_LORA=$1;;-h | --help )usageexit 0;;* )echo "Unknown argument ${1}"exit 1;;esacshift
doneDISTRIBUTED_ARGS="--nproc_per_node $GPUS_PER_NODE \--nnodes $NNODES \--node_rank $NODE_RANK \--master_addr $MASTER_ADDR \--master_port $MASTER_PORT
"torchrun $DISTRIBUTED_ARGS finetune.py \--model_name_or_path $MODEL \--data_path $DATA \--bf16 True \--output_dir output_qwen \--num_train_epochs 5 \--per_device_train_batch_size 2 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 8 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 10 \--save_total_limit 10 \--learning_rate 3e-4 \--weight_decay 0.01 \--adam_beta2 0.95 \--warmup_ratio 0.01 \--lr_scheduler_type "cosine" \--logging_steps 1 \--report_to "none" \--model_max_length 512 \--lazy_preprocess True \--use_lora ${USE_LORA} \--q_lora ${Q_LORA} \--gradient_checkpointing \--deepspeed ${DS_CONFIG_PATH}

訓練

(在qwen1_5/examples/sft路徑下開個bash里運行finetune.sh,不要在jupyter里跑)

pip install transformers==4.37.0# 要用命令行運行
# 不想用多卡訓練的時候,先 export CUDA_VISIBLE_DEVICE=0
bash finetune.sh -m "/opt/app-root/src/Qwen1.5-14B-Chat" -d "./data/traindata.jsonl" --deepspeed "ds_config_zero3.json" --use_lora True

預測

(在qwen1_5/examples/sft路徑下建個inference.py)

pip install transformers==4.33.0
from transformers import AutoModelForCausalLM, AutoTokenizer
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
device = "cuda" # the device to load the model onto
path = "output_qwen/checkpoint-70"
model = AutoModelForCausalLM.from_pretrained(path,torch_dtype="auto",device_map="cuda:0"
)
tokenizer = AutoTokenizer.from_pretrained(path)def predict_answer(messages):text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512,)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]return responsetext = "xxxx"
messages = [{"role": "user", "content": "我需要起草投標文件中的一個章節,章節內容為:\n\n\n{}\n\n\n\n請將章節內容拆分成多個小節,每個小節覆蓋一個信息點,形成一份本章節的提綱。注意,要覆蓋所有信息點,不要使用‘同上、略’等省略表述,盡可能保持原文的措詞。".format(text)}]
response = predict_answer(messages)
print(response)
訓練數據格式

格式為jsonl,每行一條json,位于qwen1_5/examples/sft/data下,不妨命名為traindata.jsonl

{"type": "chatml", "messages": [{"role": "user", "content": "PROMPT"}, {"role": "assistant", "content": "ANSWER"}], "source": "self-made"}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14586.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14586.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14586.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

批處理--將指定磁盤根目錄所有隱藏的文件(包括文件夾)去除隱藏屬性

如下是實現的腳本:-------------------------------------------------- :loopcd / set /p driverName"請輸入驅動器盤符(例如:C或c):"%driverName%: dir /AH %driverName%: pausefor /f "delims"…

Leetcode刷題2

文章目錄 前言尋找兩個正序數組的中位數1?? 雙指針快速排序2?? 第k小數解法 Z 字形變換1?? 個人解法2??巧妙解法13??巧妙解法2 字符串轉換整數 (atoi)1?? 常規方法2?? 作弊方法😫 整數轉羅馬數字1?? 常規方法:按照給定規則寫出判斷條件即…

前端面試題日常練-day32 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備,答案在文末。 1. 在jQuery中,以下哪個選項用于獲取元素的文本內容? a) text() b) html() c) val() d) attr() 2. jQuery中,以下哪個選項用于在元素上添加一個自定義數據屬性…

感動心靈的聲音——帶情緒的AI配音技術在影視和廣告領域的應用

近年來,隨著人工智能技術的飛速發展,帶情緒的AI配音技術作為其中一項重要應用,正逐漸在影視和廣告行業展現其獨特的魅力和應用價值。傳統的配音工作不僅需要具備優秀的嗓音和表演能力,還要求配音演員能夠準確捕捉并表達角色的情感…

WSL調用docker

WSL(windows subsystem linux)是window系統的原生linux子系統,用于代碼開發很方便。 希望在wsl里面運行docker,首先要安裝docker在WSL中使用,大部分人的第一想法肯定是用以下命令行安裝(個人不推薦&#x…

java的unsafe

在Java中,sun.misc.Unsafe 是一個強大且危險的類,它提供了一些直接操作內存、對象和線程的底層功能。這個類通常不鼓勵普通開發者使用,因為它繞過了Java語言的一些安全性和內存管理機制,可能會導致難以追蹤的錯誤和安全漏洞。 Un…

前端生成二維碼

直接img標簽顯示 npm i use_qrcode npm包地址 <img :src"qrcode" alt"QR Code" /> const txt: any ref(https://baidu.com) const qrcode useQRCode(txt) const qrcodeLogo useQRCode(txt, { logoSrc: https://www.antdv.com/assets/logo.1ef800…

2.go環境配置與開發工具選擇

go 環境配置 下載安裝包 官網(https://go.dev/dl/) 下載地址(國內)(https://golang.google.cn/dl/) 根據自己的操作系統選擇下載即可 下載后安裝 記住地址 比如&#xff1a; D:\work\devtool\go 配置系統環境變量 PATH 指向 go 的安裝 bin 目錄 比如&#xff1a; D:\work…

若依前端vue實現 輸入框下拉選擇加搜索用戶

探索代碼以及詳細的注解 <template><div><el-select v-model"selectedUserId" filterable placeholder"選擇用戶" change"handleChange"><el-optionv-for"user in filteredUsers":key"user.userId":l…

集合框框框地架

這一次來介紹一下常用的集合&#xff1a; 首先是兩種集合的《家庭系譜圖》&#xff1a; 接下來介紹一下集合的種類&#xff1a; Collection Set SetTreeSet&#xff1a;基于紅?樹實現&#xff0c;?持有序性操作&#xff0c;例如&#xff1a;根據?個范圍查找元素的操作。但…

如何使用純原生的ADO.NET技術進行數據讀取

目錄 1. 引用命名空間 2. 創建連接字符串 3. 打開數據庫連接 4. 執行SQL查詢 5. 讀取結果集 6. 處理異常和關閉連接 1. 引用命名空間 在代碼文件中引用幾個關鍵的System.Data.SqlClient命名空間&#xff0c;這些命名空間包含了用于數據庫操作的類。 using System.Data.Sq…

Unity實現TableView

基于Scrollview封裝的TableView&#xff0c;實現對視野外的Cell回收利用&#xff0c;減少創建Cell的開銷。 核心邏輯如下&#xff1a; /***************************************動態使用cell核心邏輯開始 **************************************///計算所有cell的坐標信息 …

利用java8 的 CompletableFuture 優化 Flink 程序,性能提升 50%

你好&#xff0c;我是 shengjk1&#xff0c;多年大廠經驗&#xff0c;努力構建 通俗易懂的、好玩的編程語言教程。 歡迎關注&#xff01;你會有如下收益&#xff1a; 了解大廠經驗擁有和大廠相匹配的技術等 希望看什么&#xff0c;評論或者私信告訴我&#xff01; 文章目錄 一…

flume sink 簡介及官方用例

1、HDFS Sink 此sink將事件寫入 Hadoop 分布式文件系統 &#xff08;HDFS&#xff09; 中。它目前支持創建文本和序列文件。它支持兩種文件類型的壓縮。可以根據經過的時間或數據大小或事件數定期滾動文件&#xff08;關閉當前文件并創建一個新文件&#xff09;。它還按事件起…

AI圖書推薦:用100個ChatGPT提示詞掌握Python編程

《用100個ChatGPT提示詞掌握Python編程》&#xff08;ChatGPT:Your Python Coach Mastering the Essentials in 100 Prompts&#xff09; 塞爾吉奧羅哈斯-加萊亞諾&#xff08;Sergio Rojas-Galeano&#xff09;是一位熱情的計算機科學家&#xff0c;對人工智能、機器學習、進化…

C++中獲取int最大與最小值(補)

上文中&#xff0c;我們學習了C中獲取int最大與最小值的兩種方法&#xff1a;C庫和移位運算&#xff0c;這篇文章將解決在移位運算中遇到的各種報錯&#xff0c;并提出一種新的生成int最值的方法 上文鏈接&#xff1a;http://t.csdnimg.cn/cn7Ad 移位運算取最值常見報錯 Dev…

匯編語言(STC89C52)

指令是計算機計算CPU根據人的意圖來執行某種操作的命令。一臺計算機所執行的全部指令的集合&#xff0c;稱為這個CPU的指令系統。而想要使計算機按照人們的要求完成一項工作&#xff0c;就必須讓CPU按順序執行預設的操作&#xff0c;即逐條執行人們編寫的指令。這種按照人民要求…

C++ 寫的_string類,兼容std::string, MFC CString和 C# 的string

代碼例子&#xff1a; using namespace lf; int main() { CString s1 _t("http://www.csdn.net"); _string s2 s1; CString s3 s2; _pcn(s1); _pcn(s2); _pcn(s3); return 0; } 輸出&#xff1a; _Str.h /***************************************…

網創教程:WordPress插件網創自動采集并發布

網創教程&#xff1a;WordPress插件網創自動采集并發布 使用插件注意事項&#xff1a; 如果遇到404錯誤&#xff0c;請先檢查并調整網站的偽靜態設置&#xff0c;這是最常見的問題。需要定制化服務&#xff0c;請隨時聯系我。 本次更新內容 我們進行了多項更新和優化&#x…

深入解析kube-scheduler的算法自定義插件

目錄 ?編輯 一、問題引入 二、自定義步驟 三、最佳實踐考慮 一、問題引入 當涉及到 Kubernetes 集群的調度和資源分配時&#xff0c;kube-scheduler 是一個關鍵組件。kube-scheduler 負責根據集群的調度策略&#xff0c;將 Pod 分配到適當的節點上。kube-scheduler 默認使…