大模型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.2.1 文档访问:http://localhost:8000/docs

在这里插入图片描述

7.2.1.1 get 请求:/v1/models

在这里插入图片描述
postman 试一下:
在这里插入图片描述
网页端自带请求测试:
在这里插入图片描述

7.2.1.2 post 请求: /v1/chat/completions

在这里插入图片描述

# Request body  Example Value
{"model": "string","messages": [{"role": "user","content": "string","tool_calls": [{"id": "string","type": "function","function": {"name": "string","arguments": "string"}}]}],"tools": [{"type": "function","function": {"name": "string","description": "string","parameters": {}}}],"do_sample": true,"temperature": 0,"top_p": 0,"n": 1,"max_tokens": 0,"stop": "string","stream": false
}

在这里插入图片描述

#Responses 	Successful Response Example Value
{"id": "string","object": "chat.completion","created": 0,"model": "string","choices": [{"index": 0,"message": {"role": "user","content": "string","tool_calls": [{"id": "string","type": "function","function": {"name": "string","arguments": "string"}}]},"finish_reason": "stop"}],"usage": {"prompt_tokens": 0,"completion_tokens": 0,"total_tokens": 0}
}
# Responses 	Validation Error  Example Value
{"detail": [{"loc": ["string",0],"msg": "string","type": "string"}]
}

postman 试一下:

在这里插入图片描述

网页端自带请求测试:
在这里插入图片描述

{"model": "string","messages": [{"role": "user","content": "tell me a story"}]
}

response:

在这里插入图片描述

{"id": "chatcmpl-5a4587623b494f46b190ab363ac4260a","object": "chat.completion","created": 1717041519,"model": "string","choices": [{"index": 0,"message": {"role": "assistant","content": "Sure, here's a story:\n\nOnce upon a time, there was a young girl named Lily. She loved to read and always wanted to learn more about the world around her. One day, while she was wandering through the woods, she stumbled upon a mysterious old book. The book was filled with stories and secrets that she had never heard before.\n\nAs she began to read, she found herself lost in the world of the book. She knew that the book was important, but she didn't know how to get it back. She searched for hours and hours, but she couldn't find it anywhere.\n\nJust when she thought she had lost hope, she saw a group of brave young men who were searching for treasure. They were looking for a lost treasure that had been hidden for centuries. Lily was excited to join them, but she was also scared.\n\nAs they searched the woods, they stumbled upon a secret passage that led to the treasure. But as they walked deeper into the forest, they realized that the passage was guarded by a group of trolls. The trolls were fierce and dangerous, and they knew that they couldn't leave without getting hurt.\n\nThe trolls were angry and territorial, and they wanted to take control of the treasure. They charged at Lily and her friends, but they were too late. They were outnumbered and outmatched, and they were all caught in the troll's trap.\n\nIn the end, Lily and her friends had to fight off the trolls and save the treasure. They had to work together to find a way out of the troll's trap, and they did it. They had a lot of fun and learned a lot about themselves and the world around them.","tool_calls": null},"finish_reason": "stop"}],"usage": {"prompt_tokens": 23,"completion_tokens": 339,"total_tokens": 362}
}

服务终端log:
在这里插入图片描述

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

数据驱动与 LLM 微调: 打造 E2E 任务型对话 Agent
LLaMA-Factory微调多模态大语言模型教程

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

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

相关文章

一篇文章掌握Java的80%:面向对象与并发编程

Java作为一种广泛使用的计算机编程语言,其强大之处在于其面向对象的特性和对并发编程的良好支持。作为一名程序员,我深知掌握Java的面向对象概念、集合框架、多线程与并发编程,以及JVM基础对于编写高效、可维护的代码至关重要。本文将引导你快…

操作字符串获取文件名字(包含类型)

记录一种操作字符串获取文件名字的操作方式,方便后期的使用。示例: 输入:"D:/code/Test/Test.txt" 输出:"Test.txt" 设计思路: 首先查找路径中最后一个”/“,然后再通过字符串截取的…

湖南源点调研 为什么中小企业产品上市前一定要做市场调研?

本文由湖南长沙(产品前测)源点调研咨询编辑发布 可能有很多企业主会表示,市场调研,产品调研,不都是大公司、大品牌、上市公司才会有的流程吗,像我们这种小企业、小品牌、小厂家没有必要去那么做&#xff0…

Python文本分词工具库-jieba

内容目录 一、分词二、设置分词三、词性信息四、关键词提取 jieba库是一个针对中文文本的分词工具库,广泛应用于自然语言处理(NLP)领域的中文文本预处理阶段。 主要功能: 中文分词:能够将连续的中文文本切割成有意义的词语序列&a…

变压器中性点接地电阻柜的出厂标准是什么

变压器中性点接地电阻柜的出厂标准是什么? 现代电气配电系统中,接地电阻是保障人身安全的非常重要的设施。在高压电气设备中,中性点接地电阻柜的作用是限制设备中的过电流和短路故障所产生的电流,以保障人身安全。变压器中性点接…

杨辉三角形及其C语言实现

一、引言 杨辉三角形(Pascal’s Triangle),又称帕斯卡三角形,是一个在数学中经常出现的数表。它的构造规则非常简单:三角形中的每个数字等于它上方两数字之和(或者说,它是位于它肩上的两个数字…

开源VS闭源:大模型发展路径之争,你站哪一派?

文章目录 引言一、数据隐私1.1开源大模型的数据隐私1.2 闭源大模型的数据隐私1.3 综合考量 二、商业应用2.1 开源大模型的商业应用2.2 闭源大模型的商业应用2.3 商业应用的综合考量 三、社区参与3.1 开源大模型的社区参与3.2 闭源大模型的社区参与3.3 综合考量 结论 引言 在人…

解析“分层引流”在颅内感染治疗中的价值意义

临床中,化脓性颅内感染的治疗一直是界内关注的重点。近年来,得益于医疗技术的持续革新与提升,颅内感染的治疗方法也获得了不断的更新与优化。在此背景下,北京精诚博爱医院所倡导的“分层引流”理念,作为一种新兴的治疗…

外贸小白到销冠,如何30天快速提升?

外贸从业8年,在工厂从0-1做外贸,外贸的坑踩过很多,也做出了很多出色的业绩,希望这篇文章可以给到外贸新人快速提升的思路。 对于刚刚进入外贸行业的职场新人?应该怎么做? 第一个月应该学什么?…

什么牌子的开放式耳机质量好?2024超强实力派品牌推荐!

耳机对于一个音乐人有重要这个不必多说,我朋友是个音乐编辑,他经常需要长时间佩戴耳机进行音频编辑和混音工作。在尝试过多款开放式耳机后,都没找到合适的。今天,我将从专业角度为大家带来几款热门开放式耳机的测评报告&#xff0…

第二证券炒股知识:股票内盘外盘代表什么意思?

股票内盘是主动性卖盘,表明以买入价成交的股数,持股的投资者主动以等于或是低于买一、买二、买三、买四、买五的价格卖出手中持有的股份,买入成交数量核算参加内盘。 股票外盘是主动性买盘,表明以卖出价成交的股数,场…

跟着大佬学RE(一)

学了一个 map()函数的使用 import base64rawData "e3nifIH9b_CndH" target list(map(ord, rawData)) # map 函数将 rawData 中的每个字符传递给 ord 函数。ord 函数返回给定字符的 Unicode 码点 print(target) # 打印 map 对象的内存地址&…

电脑中病毒了怎么办?7招教你保护电脑安全!

“不知道怎么回事,我的电脑莫名其妙就中病毒了,实在不知道应该怎么操作了,希望大家可以帮我!” 在数字化时代的浪潮中,电脑已成为我们生活与工作中不可或缺的一部分。然而,就像任何事物都有其阴暗面一样&am…

Python | 武理刷题

1. 为什么是非法的? a1a1 在Python(以及大多数其他编程语言)中,表达式 a1a1 是非法的,因为它试图将一个值(a1 的结果)赋给一个表达式(a1 本身),而不是一个…

ip地址快速切换软件有哪些好处

ip地址快速切换软件有哪些好处?IP地址快速切换软件具有诸多显著的好处,以下是对其主要优势的详细阐述: 首先,IP地址快速切换软件极大地提升了网络活动的灵活性和便捷性。对于需要经常切换网络环境或进行多账号管理的用户而言&…

新版 Vivado 2024.1分享(附安装包)

Vivado新版本来了,文末附下载方法。 Vivado 2024.1版本的亮点主要集中在多个方面的功能增强和优化上。 Vivado 2024.1版主要亮点: 通用访问与性能提升: MicroBlaze™ V软处理器(基于RISC V开源ISA)提供了更广泛的通…

Python应用开发——Streamlit 创建多页面应用程序进行APP的构建

创建多页面应用程序 在附加功能中,我们介绍了多页面应用程序,包括如何定义页面、构建和运行多页面应用程序,以及如何在用户界面的页面间导航。更多详情,请参阅多页面应用程序指南Multipage apps - Streamlit Docs 在本指南中,让我们通过将上一版本的 streamlit hello 应…

基于深度学习的音乐合成算法实例

基于深度学习的音乐合成算法可以生成高质量的音乐片段。以下是一个简化的基于深度学习的音乐合成算法实例,使用了LSTM网络来生成音乐序列。这个示例展示了如何使用LSTM网络来训练和生成音乐。 数据准备 首先,需要准备训练数据。可以使用MIDI文件作为训练数据,并将其转换为…

AI大模型在穿戴设备健康中的心率深度融合与案例分析

文章目录 1. 架构设计2. 应用场景3. 实现步骤3.1 步骤1:数据预处理3.2 步骤2:边缘计算初步分析3.3 步骤3:数据上传到云端3.4 步骤4:云端复杂分析3.5 步骤5:深度学习模型训练与部署 4. 云端API设计4.1 安装Flask4.2 API…

美国前总统特朗普竟然入驻TikTok,粉丝破24万

大家好! 我是老洪! 刚看到一则关于美国前总统特朗普的新闻, 特朗普竟然入驻TikTok了,太令人惊讶了。(为什么惊讶,后面再说) 更为惊人的是,他的到来竟然引来了众多粉丝的热烈追捧&…