大模型PEFT(一)之推理实践学习记录

1. 简介

  • 多种模型: LLaMA、Mistral、Mixtral-MoE、Qwen、Yi、Gemmha、Baichuan、ChatGLM、Phi等等。
  • 集成方法:(增量)预训练、指令监督微调、奖励模型训练、PPO训练和DPO训练。
  • 多种精度:32比特全参数微调、16比特冻结微调、16比特LORA微调和基于AQLM/AWQ/GPTQ/LLM.int8 的2/4/8比特 QLORA 微调。
  • 先进算法:GaLore、DORA、LongLoRA、LLaMAPro、LoftQ和Agen微调。
  • 实用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune和rsLoRA。
  • 实验监控:LlamaBoard、TensorBoard、Wandb、MLfiow等等。
  • 极速推理:基于VLLM的OpenAl风格API、浏览器界面和命令行接口。

2. 模型对比

在这里插入图片描述

  • 注意:
    默认模块应作为 --lora_target 参数的默认值,可使用 --lora_target all 参数指定全部模块以取得更好的效果。

    对于所有“基座”(Base)模型,–template 参数可以是 default, alpaca, vicuna 等任意值。但“对话”(Instruct/Chat)模型请务必使用对应的模板。

    请务必在训练和推理时使用完全一致的模板。

项目所支持模型的完整列表请参阅 constants.py。

您也可以在 template.py 中添加自己的对话模板。

3. 训练方法

在这里插入图片描述

4. 软硬件依赖

在这里插入图片描述

5. 硬件依赖

  • 估算值
    在这里插入图片描述

6. 如何使用

6.0 构建python 环境

# 创建新环境
conda create -n py310 python=3.10
#激活环境
conda activate py310

6.1 安装 LLaMA Factory

# 本次LLaMA-Factory版本 c1fdf81df6ade5da7be4eb66b715f0efd171d5aa
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .[torch,metrics]

可选的额外依赖项:torch、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality

  • 遇到包冲突时,可使用 pip install --no-deps -e . 解决。
6.1.2 Windows 用户指南

如果要在 Windows 平台上开启量化 LoRA(QLoRA),需要安装预编译的 bitsandbytes 库, 支持 CUDA 11.1 到 12.2, 请根据您的 CUDA 版本情况选择适合的发布版本。

pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl

如果要在 Windows 平台上开启 FlashAttention-2,需要安装预编译的 flash-attn 库,支持 CUDA 12.1 到 12.2,请根据需求到 flash-attention 下载对应版本安装。

6.1.3 确认自己的cuda版本
nvidia-smi

在这里插入图片描述

版本是12.2, 非常好

在这里插入图片描述
在这里插入图片描述
所以我安装的是:

pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.39.1-py3-none-win_amd64.whl

在这里插入图片描述

6.2 安装依赖

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --ignore-installed

在这里插入图片描述

6.3 大模型下载

可以在【2. 模型对比】中选择想微调的大模型,这里为了方便学习,选择Qwen1.5-0.5B大模型作为本次学习的大模型

!git lfs install
!git clone https://huggingface.co/Qwen/Qwen1.5-0.5B

在这里插入图片描述
哈哈哈哈,没下载下了,手动去网页一个个点击下载的
在这里插入图片描述
在这里插入图片描述

7. 大模型推理

当前最新版本只有 api、webui、train三种模式,cli_demo 是之前的版本。(本次LLaMA-Factory版本c1fdf81df6ade5da7be4eb66b715f0efd171d5aa)
在这里插入图片描述
但是可以试用llamafactory-cli 推理

7.1 使用openai 风格 api推理

CUDA_VISIBLE_DEVICES=0 API_PORT=8000 python src/api.py
--model_name_or_path ../models\Qwen1.5-0.5B\
#--adapter_name_or_path path_to_checkpoint\
#--finetuning_type lora\
--template qwen

  • 关于API文档请见http://localhost:8000/docs。

7.2 使用命令行推理

  • 大模型指令推理
CUDA_VISIBLE_DEVICES=7 API_PORT=8030 llamafactory-cli api \
 --model_name_or_path ../models\Qwen1.5-0.5B \
 --template qwen

7.3 使用浏览器推理

CUDA_VISIBLE_DEVICES=0 python src/webui.py\
--model_name_or_path ../models\Qwen1.5-0.5B\
#--adapter_name_or_path path_to_checkpoint\
#--finetuning_type lora\
--template qwen

参数简介:

  • –model_name_or_path:参数的名称(huggingface或者modelscope上的标准定义,如“meta-llama/Meta-Llama-3-8B-Instruct”), 或者是本地下载的绝对路径,如/media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct 或者 /models\Qwen1.5-0.5B
  • template: 模型问答时所使用的prompt模板,不同模型不同,请参考 https://github.com/hiyouga/LLaMA-Factory?tab=readme-ov-file#supported-models 获取不同模型的模板定义,否则会回答结果会很奇怪或导致重复生成等现象的出现。chat 版本的模型基本都需要指定,比如Meta-Llama-3-8B-Instruct的template 就是 llama3 。Qwen 模型的 template 就是qwen在这里插入图片描述
  • finetuning_type:微调的方法,比如 lora
  • adapter_name_or_path:微调后的权重位置,比如 LoRA的模型位置

最后两个参数在微调后使用,如果是原始模型的话可以不传这两个参数。


参考
非一般程序员第三季大模型PEFT(一)之大模型推理实践
LLaMA-Factory/README_zh.md
使用 LLaMA Factory 微调 Llama-3 中文对话模型
LLaMA-Factory QuickStart

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Elastic AI assistant for Observability 来分析日志

在今天的文章中,我们来参考之前的文章 “Elastic AI Assistant for Observability 和 Microsoft Azure OpenAI 入门” 来使用 Elastic AI assistant 分析日志。在本文章中,我们不使用 Azure clould。这样我们之间来进入主题,以免失去注意力。…

基于Zynq 7000 SoC的迁移设计

基于Zynq 7000 SoC的迁移设计 Vivado IDE工具使用IP集成器进行嵌入式开发。各种IP Vivado IDE IP目录中提供,以适应复杂的设计。您也可以添加 自定义IP到IP目录。 您可以将基于Zynq 7000平台处理器的设计迁移到Vivado design Suite中 使用以下步骤。 1.生成系统基础…

模型实战(20)之 yolov8分类模型训练自己的数据集

yolov8分类模型训练自己的数据集 yolov8,一个实时快速的端到端的集检测、分割、分类、姿态识别于一体的视觉算法库/框架本文将给出yolov8 分类模型的数据集制作格式及训练流程 1. 环境搭建 关于虚拟环境的搭建真的是老生常谈了,给出一个简单的搭建流程吧#新建虚拟环境 conda …

Linux 如何用上次的checkpoint文件dist_train.sh 接着训练【mmdetection】

在Linux环境下,如果你想要用上一次的checkpoint文件继续训练,你可以在你的dist_train.sh脚本中设置--resume_from参数。这个参数指定了checkpoint文件的路径,训练会从该文件的状态继续进行。 例如,如果你的checkpoint文件名为las…

【吊打面试官系列】Java高并发篇 - ConcurrentHashMap 的并发度是什么?

大家好,我是锋哥。今天分享关于 【ConcurrentHashMap 的并发度是什么?】面试题,希望对大家有帮助; ConcurrentHashMap 的并发度是什么? ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16, 这意味着最多同时…

考公事业编

一天时间就能考完。上午行测 ,下午申论。 省考国考基本一模一样。 行测基本都是客观的题目。都是选择题。 130道选择。很多计算都是初中题目。 申论是主观题。 行测申论 行测:

【Android14 ShellTransitions】(四)Transition收集动画参与者

这一节的内容在WMCore中,现在Transition已经走到COLLECTING状态了,并且可以收集动画参与者了。 那么Transition是在什么时候去收集动画参与者?回到我们最初的ActivityStarter.startActivityUnchecked: 在调用了TransitionControl…

vb.net打开CAD指指定路径文件

首先打开vsto,创建窗体,添加一个按钮,双击按钮录入代码: Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim cad As Objectcad CreateObject("autocad.Application")cad…

代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

242.有效的字母异位词 题目链接: 203.移除链表元素 文档讲解:代码随想录 状态:so easy 思路:使用计数器数组统计字符串中字符出现频率。 题解 public boolean isAnagram(String s, String t) {// 将输入的字符串s转换为字符数组…

World Creator v2.1.0 解锁版安装教程 (GPU三维地形生成软件)

前言 World Creator是一款功能相当强大的地形景观生成器;可以完全根据自己的需求来对地形、景观生成您需要三维模型,内置的大量预设,让您的创建拥有无限的可能性。 一、下载地址 下载链接:http://dygod/ITSource 点击搜索&…

前后端部署笔记

windows版: 如果傻呗公司让用win电脑部署,类似于我们使用笔记本做局域网服务器,社内使用。 1.安装win版的nginx、mysql、node、jdk等 2.nginx开机自启参考Nginx配置及开机自启动(Windows环境)_nginx开机自启动 wind…

学习100个Unity Shader (18) --- 几何着色器(Geometry Shader)

文章目录 概述编写格式举例应用举例(用预制体球的每个顶点画一个立方体)参考 概述 vertex shader --> [geometry shader] --> fragment shader。[]: 可选阶段。输入图元 —> geometry shader —> 其他图元 编写格式 [maxcertexcount(N)] …

源码编译安装LAMP与部署

目录 一、LAMP架构的简述 1.LAMP搭建时各组件安装顺序 二、编译安装Apache httpd服务 1.关闭防火墙,将安装Apache所需软件包传到/opt目录下 2.安装环境依赖包​编辑 3.配置软件模块 4.编译及安装 5.优化配置文件路径,并把httpd服务的可执行程序文…

2024斯佩菈音乐剧暑假训练营 30天创造奇迹培育坚强自信好少年

以声问本,素质教育,融会中西,知行合一。音乐是生活的灵魂,艺术的真正意义在于使人幸福,得到鼓舞和力量。多一把衡量的尺子,就会多出一批好学生。 相对学校语数英等学科教育,孩子心灵成长方面很…

新建gitee项目关联idea中的springboot项目

新建项目关联仓库步骤 以gitee为例新建项目 进入gitee新建项目 新建项目后进入复制项目地址 可以直接拉取本项目然后再这个目录下创建各种功能,我习惯于以下步骤。 下一步再idea新建springboot项目 我使用的是idea2023 选择Manager remote 点击加号 新建一个远…

1+x(Java)中级题库易混淆理论题(二)

冷备份实质就是数据库相关文件的复制 System.in是字节流 Map集合中的key是无序的 protected不能用于修饰类 接口中所有抽象方法默认使用public修饰 DML操作有:INSERT UPDATE DELETE SQL 语句中进行 group by 分组时,可以不写 where 子句 使…

什么是HTTP代理?适用于哪些场景?

HTTP代理是一种网络代理服务器,它主要用于处理HTTP协议的请求和响应。HTTP代理充当客户端(如浏览器)和目标服务器之间的中介,允许客户端通过代理服务器来发送HTTP请求,并接收来自服务器的响应。HTTP代理可以分为正向代…

C语言文件编程

C语言文件编程 第一部分 基本概念 1、Linux文件类型 1.-普通文件:存在于外部存储器中,用于存储普通数据。 1.txt 1.c 1.mp3 1.mp4 2.d目录文件:用于存放目录项,是文件系统管理的重要文件类型。 文件夹 3.p管道文件&#x…

LDRA Testbed(TBrun)软件单元测试_操作指南

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建 LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果 LDRA Testb…

探索循环逻辑:for逻辑分支与容器遍历的深度剖析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:for逻辑与循环体的奥秘 二、for逻辑与循环体的结合使用 1. 函数与循环…