当前位置: 首页 > news >正文

试试号称最好的7B模型(论文复现)

试试号称最好的7B模型(论文复现)

本文所涉及所有资源均在传知代码平台可获取

文章目录

    • 试试号称最好的7B模型(论文复现)
        • 概述
        • 论文原理
        • 部署与复现
          • 推理
          • 微调
          • adapter 融合

概述

Mistral 7B 是一个新型的具有 7.3 万亿参数的大语言模型。其性能甚至优于13万亿参数的 Liama2。

Mistral 7B 在所有测试基准中都优于之前最佳的 13B 模型(Llama 2),并在数学和代码生成方面超越了最佳的 34B 模型(LLaMa 34B)。此外,Mistral 7B 在编码性能上接近于 Code-Llama 7B,而不会牺牲非代码相关基准上的性能。Mistral 7B 利用了分组查询注意力(GQA)和滑动窗口注意力(SWA)。GQA 显著加快了推断速度,同时在解码过程中减少了内存需求,从而允许更高的批处理大小,提高了吞吐量,这对于实时应用非常重要。此外,SWA 旨在以较低的计算成本更有效地处理更长的序列,从而缓解了LLM(大型语言模型)的常见限制。这些注意力机制共同促进了 Mistral 7B 的增强性能和效率。

模型论文可见Mistral 7B

论文原理

Mistral 7B 基于 transformer 架构,下图将展示该架构的主要参数

在这里插入图片描述

滑动窗口注意力(SWA)利用 transformer 的堆叠层来关注超出窗口大小 W 范围之外的信息。在层 k 中的位置 i 的隐藏状态 hi 关注前一层中位置在 i − W 和 i 之间的所有隐藏状态。递归地,hi 可以访问到距离为 W × k 个标记的输入层中的标记,如图所示。在最后一层,使用窗口大小 W = 4096,理论上的注意力跨度大约为131K个标记。在实践中,对于序列长度为16K且 W = 4096,对FlashAttention 和 xFormers 进行的修改使得相对于基准的普通注意力模型速度提升了2倍。

滚动缓存缓冲区。一个固定的注意力跨度意味着我们可以使用滚动缓冲区缩小缓存的大小。缓存的大小为 W,而在时间步 i 的键和值存储在缓存的位置 i mod W 中。因此,当位置 i 大于 W 时,缓存中的过去数值被覆盖,并且缓存的大小停止增加。下图中提供了一个以 W = 3 为例的说明。在32k个标记的序列长度上,这将使缓存的内存使用减少了8倍,而不影响模型的质量

在这里插入图片描述

预先填充和分块。在生成序列时,我们需要逐个预测标记,因为每个标记都取决于前面的标记。然而,提示是预先知道的,我们可以使用提示来预先填充 (k, v) 缓存。如果提示非常大,我们可以将其分成较小的块,并使用每个块来预先填充缓存。为此,我们可以将窗口大小选择为我们的块大小。对于每个块,我们需要计算缓存和块上的注意力。图3展示了注意力掩码如何作用于缓存和块上

在这里插入图片描述

部署与复现

首先安装所需要的依赖,推荐新建 conda 环境安装

# 确保安装了 cuda 版的 pytorch, 如果已经安装了忽视这条
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -r ./requirements.txt

须在 linux 环境下运行,因为 Windows 下 bitsandbytes 包为 bitsandbytes-windows 会造成 transfromers 包无法正常识别,且 Windows 没有 Flash Attention

推理

在此处下载模型,解压到 7b-v0.1-hf/1,运行 infer.py,输入你想使用的prompt,即可得到模型的回复。推理部分可在 Windows 下进行,速度稍慢些但可以正常走完

python infer.py --prompt="As a data scientist, can you explain the concept of regularization in machine learning?"

在这里插入图片描述

微调

使用准备好的数据集微调模型。你也可以使用自己的数据集,打开train.py 编辑dataset 的路径即可,该数据的风格为指令由 [INST] [/INST] 包围,进行微调后,模型便可以很好地处理类似的prompt,运行train.py

python train.py

在这里插入图片描述

adapter 融合

微调后的模型可以使用 PeftModel 连接 adapter,重新进行推理。所有代码已经准备在adapter.py中,运行即可,输入数据集风格的 prompt

python adapter.py --prompt="<s>[INST] How become a certified data professional [/INST]"

在这里插入图片描述

文章代码资源点击附件获取

相关文章:

试试号称最好的7B模型(论文复现)

试试号称最好的7B模型&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 试试号称最好的7B模型&#xff08;论文复现&#xff09;概述论文原理部署与复现推理微调adapter 融合 概述 Mistral 7B 是一个新型的具有 7.3 万亿参数的大语言模型。…...

CTF中文件包含

php伪协议的分类 伪协议是文件包含的基础&#xff0c;理解伪协议的原理才能更好的利用文件包含漏洞。 php://input php://input代表可以访问请求的原始数据&#xff0c;简单来说POST请求的情况下&#xff0c;php://input可以获取到post的数据。 使用条件&#xff1a;includ…...

20.指针相关知识点1

指针相关知识点1 1.定义一个指针变量指向数组2.指针偏移遍历数组3.指针偏移的补充4.指针和数组名的见怪不怪5.函数、指针、数组的结合 1.定义一个指针变量指向数组 指向数组首元素的地址 指向数组起始位置&#xff1a;等于数组名 #include <stdio.h>int main(){int ar…...

PFC和LLC的本质和为什么要用PFC和LLC电路原因

我们可以用电感和电容的特性,以及电压和电流之间的不同步原理来解释PFC(功率因数校正)和LLC(谐振变换器)。 电感和电容的基本概念 电感(Inductor): 电感是一种储存电能的组件。它的电流变化比较慢,电流在电感中延迟,而电压变化得比较快。可以把电感想象成一个“滞后…...

自定义认证过滤器和自定义授权过滤器

目录 通过数据库动态加载用户信息 具体实现步骤 一.创建数据库 二.编写secutity配置类 三.编写controller 四.编写服务类实现UserDetailsService接口类 五.debug springboot启动类 认证过滤器 SpringSecurity内置认证流程 自定义认证流程 第一步:自定义一个类继承Abstr…...

单节点集群的设置及数据写入

背景:elasticsearch单个node节点写入数据-CSDN博客 单个节点数据,如下设置参数, 在单节点集群中,设置 `gateway.recover_after_nodes` 通常是没有意义的,因为单节点集群只有一个节点,无法满足 `gateway.recover_after_nodes` 的条件。然而,如果你仍然想在单节点集群中…...

【Linux学习】【Ubuntu入门】1-2 新建虚拟机ubuntu环境

1.双击打开VMware软件&#xff0c;点击“创建新的虚拟机”&#xff0c;在弹出的中选择“自定义&#xff08;高级&#xff09;” 2.点击下一步&#xff0c;自动识别ubuntu光盘映像文件&#xff0c;也可以点击“浏览”手动选择&#xff0c;点击下一步 3.设置名称及密码后&#xf…...

自动驾驶系列—自动驾驶MCU架构全方位解析:从单核到多核的选型指南与应用实例

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

基于单片机多功能称重系统设计

** 文章目录 前言概要功能设计设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…...

PWA(Progressive web APPs,渐进式 Web 应用): manifest.json、 Service Worker

文章目录 引言I 什么是 PWA功能特性技术上分为三个部分安装应用II Web 应用清单将Web 应用清单文件链接到站点manifest.json字段说明III Service Worker( 缓存管理)IV 结合构建工具让项目支持 PWA应用使用插件vite-plugin-pwaworkbox-webpack-plugin插件扩展知识将 PWA 作为脱机…...

【学习笔记】手写 Tomcat 八

目录 一、NIO 1. 创建 Tomcat NIO 类 2. 启动 Tomcat 3. 测试 二、解析请求信息 三、响应数据 创建响应类 修改调用的响应类 四、完整代码 五、测试 六、总结 七、获取全部用户的功能 POJO 生成 POJO 1. 在 Dao 层定义接口 2. 获取用户数据 3. 在 Service 层定…...

24年九月份生活随笔

九月份最后一天&#xff0c;烈士纪念日。 上午看了一会儿直播&#xff0c;庄重的仪式&#xff0c;铭记先辈为新中国抛头颅洒热血&#xff0c;当今盛世&#xff0c;如您所愿。 郑州马拉松官方通告&#xff0c;今天十点公布直通&#xff0c;中签&#xff0c;候补结果。 看完直…...

[含文档+PPT+源码等]精品大数据项目-基于Django实现的高校图书馆智能推送系统的设计与实现

大数据项目——基于Django实现的高校图书馆智能推送系统的设计与实现背景&#xff0c;可以从以下几个方面进行详细阐述&#xff1a; 一、信息技术的发展背景 随着信息技术的飞速发展和互联网的广泛普及&#xff0c;大数据已经成为现代社会的重要资源。在大数据背景下&#xf…...

Leecode刷题之路第七天之整数反转

题目出处 07-整数反转 题目描述 个人解法 思路&#xff1a; 1.将整数转换为字符串 2.倒序输出字符串 3.兼容负数case 代码示例&#xff1a;&#xff08;Java&#xff09; public int reverse(int x) {Integer integer new Integer(x);String s integer.toString();Strin…...

SpringBoot项目 | 瑞吉外卖 | 短信发送验证码功能改为免费的邮箱发送验证码功能 | 代码实现

0.前情提要 之前的po已经说了单独的邮箱验证码发送功能怎么实现&#xff1a; https://blog.csdn.net/qq_61551948/article/details/142641495 这篇说下如何把该功能整合到瑞吉项目里面&#xff0c;也就是把原先项目里的短信发送验证码的功能改掉&#xff0c;改为邮箱发送验证…...

Windows暂停更新

目录 前言注册表设定参考 前言 不想Windows自动更新&#xff0c;同时不想造成Windows商店不可用&#xff0c;可以采用暂停更新的方案。 但是通过这里设定的时间太短了&#xff0c;所以我们去注册表设定。 注册表设定 win r 输入 regedit进入注册表 HKEY_LOCAL_MACHINE\SOFT…...

alpine安装docker踩坑记

文章目录 前言错误场景正确操作最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;最近使用alpine操作系统上docker遇到了一些错误&#xff0c;尝试解决之后就准备输出一篇博客&#xff0c;帮助有需要的后人能够少踩坑&#xff0c;因为淋过雨所以想给别人撑伞 错误场景 我…...

使用openpyxl轻松操控Excel文件

目录 1. openpyxl 简介2. 安装与快速入门2.1 安装 openpyxl2.2 快速创建一个 Excel 文件2.3 读取 Excel 文件 3. openpyxl 的核心概念3.1 工作簿&#xff08;Workbook&#xff09;3.2 工作表&#xff08;Worksheet&#xff09;3.3 单元格&#xff08;Cell&#xff09;3.4 行与列…...

指定PDF或图片多个识别区域,识别区域文字,并批量对PDF或图片文件改名

常见场景 用户有大量图片/PDF文件&#xff0c;期望能按照图片/PDF中的某些文字对图片/PDF文件重命名。期望工具可以批量处理、离线识别&#xff08;保证数据安全性&#xff09;。手工操作麻烦。具体场景&#xff1a;用户有工程现场照片&#xff0c;订单&#xff0c;简历等PDF或…...

Web3中的跨链技术:实现无缝连接的挑战

Web3的到来为互联网带来了去中心化的愿景&#xff0c;而跨链技术则是实现这一愿景的关键。跨链技术旨在解决不同区块链之间的互操作性问题&#xff0c;使得用户和应用能够在多个区块链网络之间无缝地传输数据和价值。尽管这一技术具有广阔的前景&#xff0c;但在实现过程中仍面…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...