【大模型】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.mzph.cn/diannao/14586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode刷题2

文章目录 前言寻找两个正序数组的中位数1️⃣ 双指针快速排序2️⃣ 第k小数解法 Z 字形变换1️⃣ 个人解法2️⃣巧妙解法13️⃣巧妙解法2 字符串转换整数 (atoi)1️⃣ 常规方法2️⃣ 作弊方法😫 整数转罗马数字1️⃣ 常规方法:按照给定规则写出判断条件即…

WSL调用docker

WSL(windows subsystem linux)是window系统的原生linux子系统,用于代码开发很方便。 希望在wsl里面运行docker,首先要安装docker在WSL中使用,大部分人的第一想法肯定是用以下命令行安装(个人不推荐&#x…

java的unsafe

在Java中,sun.misc.Unsafe 是一个强大且危险的类,它提供了一些直接操作内存、对象和线程的底层功能。这个类通常不鼓励普通开发者使用,因为它绕过了Java语言的一些安全性和内存管理机制,可能会导致难以追踪的错误和安全漏洞。 Un…

2.go环境配置与开发工具选择

go 环境配置 下载安装包 官网(https://go.dev/dl/) 下载地址(国内)(https://golang.google.cn/dl/) 根据自己的操作系统选择下载即可 下载后安装 记住地址 比如: D:\work\devtool\go 配置系统环境变量 PATH 指向 go 的安装 bin 目录 比如: 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;根据⼀个范围查找元素的操作。但…

Unity实现TableView

基于Scrollview封装的TableView&#xff0c;实现对视野外的Cell回收利用&#xff0c;减少创建Cell的开销。 核心逻辑如下&#xff1a; /***************************************动态使用cell核心逻辑开始 **************************************///计算所有cell的坐标信息 …

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

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

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 默认使…

pyqt6入门案例

效果预览 hello.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Dialog</class><widget class"QDialog" name"Dialog"><property name"geometry"><…

android studio接入facebook踩坑1

今天在接入facebook第三方登录的时候&#xff0c;点击登录按钮&#xff0c;APP闪退&#xff0c;并报错 java.lang.RuntimeException Failure delivering result ResultInfo{whonull,request64206,result-1} 新文章链接https://lengmo714.top/facebook1.html 如下图&#xff1a;…

html多节点生成图片并导出zip包

html多节点生成图片并导出zip包 背景 在做项目时遇到一个要将html节点展示的图片列表统一导出为zip包的需求。 难点 将html节点生成图片将多张图片加入zip包中&#xff0c;然后下载 解决html生成图片问题 参考html截图的思路使用 pnpm add html-to-image如何将图片资源生成z…

鸿蒙OS开发:【一次开发,多端部署】(多设备自适应能力)简单介绍

多设备自适应能力 介绍 本示例是《一次开发&#xff0c;多端部署》的配套示例代码&#xff0c;展示了[页面开发的一多能力]&#xff0c;包括自适应布局、响应式布局、典型布局场景以及资源文件使用。 名称简介 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhe…

数据可视化技术头歌测试合集

努力是为了不平庸~ 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰 目录 时间趋势可视化-柱形图 第1关&#xff1a;“大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤 任务描述 相关知识 观察和处理数据 绘…

Linux中gcc/g++的基本使用

目录 gcc/g的使用gcc/g是如何生成可执行文件的预处理编译汇编链接 库.o文件是如何与库链接的&#xff1f; debug版本和release版本 gcc/g的使用 在windows中&#xff0c;我们在VS中编写好了代码之后就可以直接在VS中对源码进行编译等操作后运行 而在Linux下&#xff0c;我们可…