自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 FrameQuant: Flexible Low-Bit Quantization for Transformers阅读

Transformers是许多视觉和自然语言处理任务中强大基础模型的核心。但它们的计算和内存/存储需求很大,因此运行这些模型成本高昂,经常需要高端硬件。为了解决这个问题,训练后量化(Post-Training Quantization)试图修改预训练模型,并将其量化到八位或更低,显著提高计算/内存/延迟效率。这类模型在量化到四位时已有成功,但会有一些性能损失。本文提出了一种简单的方法,将基于Transformer的模型量化到仅两位(加上一些开销),且准确性只略有下降。

2024-10-09 13:28:59 603

原创 Extreme Compression of Large Language Models via Additive Quantization阅读

随着高精度的大型语言模型(LLMs)的出现,促使了对高性能量化技术的竞赛,以便在终端用户设备上执行这些模型。本文重新审视了“极端”LLM压缩的问题——定义为目标极低比特数,如每个参数2到3比特——从多码本量化(MCQ)经典方法的角度出发。我们的算法AQLM,通过两项创新,推广了信息检索中的经典加法量化(AQ)方法,以提升LLM压缩的最新技术水平:1)学习输入自适应的权重矩阵加法量化,2)跨每个Transformer块的码本参数联合优化。

2024-10-09 09:57:18 968

原创 Temporal Dynamic Quantization for Diffusion Models阅读

扩散模型因其出色的生成性能和多功能性在视觉应用中受到广泛关注。然而,由于模型大小和迭代生成带来的高存储和计算需求,限制了其在移动设备上的使用。现有的量化技术在8位精度下难以维持性能,。我们引入了一种新颖的量化方法,该方法基于时间步信息动态调整量化区间,大幅提高了输出质量。与传统动态量化技术不同,我们的方法在推理过程中没有计算开销,并且兼容于训练后量化(PTQ)和量化感知训练(QAT)。我们的广泛实验表明,经过量化的扩散模型在各种数据集上输出质量显著提升。

2024-09-30 21:08:47 838

原创 Agile-Quant: Activation-Guided Quantization for Faster Inference of LLMs on the Edge阅读

大型语言模型(LLMs)在复杂的语言建模任务中表现出色,但其计算和内存需求高,限制了在边缘设备上的广泛使用。量化技术被引入以提高LLMs在设备上的效率。最近的研究表明,8位或更低的权重量化对任务性能的总体影响很小,但激活值尚未量化。另一方面,主流的通用边缘设备仍难以有效执行这些低于8位的量化网络。在本文中,我们提出了Agile-Quant,这是一种针对流行大型语言模型的激活引导量化框架,并在多个边缘设备上实现了端到端加速器以提高推理速度。

2024-09-30 17:10:11 1003

原创 秋招进度upup--大厂测试开发简历分享以及求职思考

写给所有正在经历秋招或春招,想进大厂但是被简历拒麻了;狂卷开发算法却没得到面试,对其他方向有点犹豫不决的人;或者是实习找不到就想去大厂看看的人。也写给所有想对测开有所了解的人~

2024-09-26 22:09:52 968

原创 特定transfomer架构的模型的压缩量化处理

最近在做大模型压缩这一块,我感觉从拿到一个模型,到选取一个对象选取一种压缩方法,最后查看压缩的效果,这应该算是一次完整的流程了。模型架构任务类型预训练方式主要应用编码器-解码器通用架构N/ANLP 和 CV 任务的基础架构BERT编码器文本理解(分类、问答等)Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)文本理解任务,特别是分类和问答GPT解码器文本生成语言模型(LM)预训练。

2024-09-23 13:45:32 840

原创 优化边缘设备上的大型语言模型(LLM)--tinychat

类似地,对于QM_x86,TinyChatEngine将一个256位的权重向量[w0, w1, …默认指令集用于处理单个数据操作,而SIMD指令集(如ARM的NEON和x86的SSE/AVX)则是这些架构的扩展指令集,用于在一条指令中并行处理多个数据元素。reference.cc使用三个嵌套的循环遍历矩阵:外层的 row 和 col 循环遍历矩阵 C 的每一个元素,内层的 ch 循环则用于计算。A 矩阵的维度是 m x k,B 矩阵的维度是 k x n,因此 C 矩阵的维度为 m x n。

2024-09-08 16:02:27 719

原创 模型训练坎坷路--逐步提升模型准确率从40%到90%+

剪枝实验的基准得是一个微调好的准确率保持较高的模型,按照我之前yolov5的经验来看,这还不简单?选模型+合适的数据集,20轮就OK!我计划使用 ResNet-18模型加上Cifar-10数据集,训练轮次100轮,准确度达到95%我就立马停下。可是过程却不大对劲,都20轮了我的准确率还是40%上下窜,一点进步的痕迹都没有,于是,果断按下停止键…from torchvision import models # 引入torchvision.modelstry:def train(

2024-08-15 14:48:17 1011

原创 基于Mac OS的黑马头条踩坑记录

首先我觉得做完苍穹外卖且背完八股之后就可以去找实习了。这个黑马头条微服务太老了肯定不能一步一步跟着做,而且理解它这个业务不如找个厂上上班理解下实际的业务。这个项目给我的帮助就是了解了微服务Kafka等基本知识,还是有所帮助的。自学开发挺没意思的,不如赶紧实习边拿工资边交朋友边学习。

2024-08-13 14:18:09 1023

原创 全网最最实用--边缘智能的常见微调方式以及适用场景

BitFit:适用于资源受限和简单任务,计算成本低但适应性有限。Adapter:适用于多任务学习和可扩展性需求,模块化设计节省存储,但增加计算开销。:适用于快速原型开发和灵活任务调整,参数开销低但任务依赖性强。:适用于文本生成和逐步引导任务,参数高效但需要设计和调优。LoRA:适用于中大型模型和资源受限场景,参数高效且表达能力强,但设计复杂。QLoRA:适用于超大模型和边缘计算,存储和计算资源优化,但可能引入量化误差。LongLoRA:适用于需要处理长序列依赖的任务,参数高效但设计复杂。

2024-08-06 17:55:06 509

原创 模型高效推理--量化基础

由于定点数值无法用于反向梯度计算,实际操作过程是在某些op前插入伪量化节点(fake quantization nodes), 用于在训练时获取流经该op的数据的截断值,便于在部署量化模型时对节点进行量化时使用。混合精度量化通过分析各层的特点,动态地选择合适的量化精度,以最大限度地减少精度损失,同时降低计算和存储需求。二值化量化是一种极端的模型压缩技术,其主要目标是通过将神经网络的权重和激活值限制为仅包含两个离散值(通常是 +1 和 -1 或 0 和 1)来显著减少模型的存储需求和计算复杂度。

2024-07-26 23:35:15 742

原创 模型高效推理--剪枝基础

剪枝(Pruning)是指通过移除神经网络中的不必要部分(如权重、神经元或层)来减少模型的复杂度和运行成本。剪枝的目标是提高模型的计算效率、降低模型的存储需求以及减少能耗,同时尽量保持模型的原始性能。非结构化剪枝:剪去单个权重,导致稀疏矩阵。硬件支持:在GPU上效果不好,需要专用加速器(如EIE)。

2024-07-24 15:01:27 1361

原创 机器学习--神经网络各个组件以及效率指标 (含代码助理解,粘贴即用)

基于自注意力机制的模型,适用于序列到序列的任务,在自然语言处理领域取得了巨大成功,如BERT、GPT等。在实际应用中,能效的优化需要综合考虑上述各个因素,通过模型压缩、量化、剪枝、知识蒸馏等技术手段来减少模型的大小和计算复杂度,同时保持或提升模型的性能。这种向量通常是通过学习得到的,可以捕捉单词之间的语义关系。例如,在迁移学习中,通常会冻结预训练模型的卷积层参数,只微调归一化层的参数,以适应新任务的数据分布。池化层的主要作用是减少特征图的尺寸,提取特征图中的主要信息(如最大值或平均值),而不需要学习权重。

2024-07-23 16:34:03 912

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab11

【代码】全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab11。

2024-07-22 18:51:25 186

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab10

在16int prot;int flags;int nvma;

2024-07-22 18:17:24 680

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab9

这个文件系统的实现是基于磁盘布局和 inode 结构的,通过超级块和位图来管理文件系统的元数据和数据块的分配。sys_symlink:创建一个新的 inode,类型为 T_SYMLINK,并将目标路径字符串写入该 inode 的数据块中。这个函数 sys_link 的主要功能是创建一个新的路径 new,使其指向与现有路径 old 相同的 inode。sys_symlink:不更新现有 inode 的链接数,而是创建一个新的 inode 并写入目标路径。sys_link:更新现有 inode 的链接数。

2024-07-22 12:42:53 664

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab8

13// 假设有13个桶struct {// 每个桶一个锁// 定义缓冲区// 定义桶} bcache;

2024-07-19 15:13:17 1110

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab7

当线程到达屏障时,它们需要等待,直到所有其他线程也到达屏障。一旦所有线程都到达,屏障应该让所有线程继续执行,并递增屏障的轮次。以及其内部的链表是共享数据结构,因此我们需要对它们的访问进行同步。为了使程序能够正确地从多个线程使用,我们需要确保对共享数据结构的访问是线程安全的。在这个练习中,我们需要实现用户级线程系统的上下文切换机制。用于保存当前线程的寄存器状态,并恢复下一个线程的寄存器状态。中,我们需要初始化线程的栈和寄存器,并设置线程的入口函数。中,我们需要找到一个可运行的线程,并调用。

2024-07-18 11:46:36 724

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab6

在复制父进程的内存到子进程的时候,它是将父进程的页表内容复制到子进程的页表中。并且我们关注到 从页表项中获取物理地址后我们应该对父进程的标识位进行修改,并且我们需要一个标识去标记懒拷贝的页。相反,仅仅创建子进程的页表,并将其页表项指向父进程的相应物理页。同时,确保在父进程和子进程的页表中,所有用户空间的页表项都被标记为不可写。那么大体逻辑我们知道了,需要一个标识去标记懒拷贝页面,因此我们应该随之调整整个页的生命周期的一些涉及到页的东西,使得懒拷贝页标识的加入不会引起故障。这通常涉及到引用计数的使用。

2024-07-17 11:02:22 287

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab5

函数负责处理从用户空间进入内核的各种情况,包括系统调用、设备中断和异常,确保正确地处理这些事件并安全地返回到用户空间。函数是在 RISC-V 架构的操作系统中处理从用户空间进入内核的中断、异常或系统调用的核心函数。系统调用的实现,用于增加或减少进程的数据段(堆)的大小。如果不是从用户模式进入的,则触发。如果是负数,则需要减少进程的大小,并确保不会减少到低于初始堆栈位置。是该结构体中的一个字段,表示进程的当前内存大小(即数据段的末尾地址)。之前的堆的末尾地址,用户程序可以使用这个地址来管理新分配的内存。

2024-07-16 17:31:59 507

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab4

在中添加和2223。

2024-07-16 15:11:57 864

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab3

1. **硬件设备映射**:- **UART0**、**VIRTIO0**、**CLINT**、**PLIC**等定义了硬件设备的物理地址和中断号。这些地址是硬件设计时确定的,操作系统需要知道这些地址才能正确地与设备通信。- 例如,UART0用于串行通信,操作系统需要知道其寄存器地址`0x10000000L`和中断号`10`来初始化和处理串行通信。

2024-07-15 19:51:03 631

原创 编译汇编链接--从此看懂之后遇到的每一个.ld链接文件

这几天做MIT操作系统实验的时候看到了.ld还有.s和.c文件,由此对看懂这些代码起了执念。

2024-07-15 15:23:09 1319

原创 全网最最实用--教你用gradio搭网页、部署模型等(代码粘贴即用、不讲虚的)

Gradio 是一个用于快速创建和共享机器学习模型的 Python 库。它允许开发者通过简单的代码定义输入和输出组件,创建一个Web 界面,用户可以通过该界面进行机器学习模型的交互。Gradio 支持多种输入和输出类型,包括文本、视频、文件、滑块、单选、收听等,使得用户说过的演示模型。pip install gradio #安装,python大于等于3.8。Gradio 提供了多种组件,用于创建交互式界面。gr.Interface:用来构建可视化界面。gr.Image:用于图像输入和输出。

2024-07-09 18:09:20 3141 6

原创 大模型算法八股

BART和T5使用encoder-decoder架构,适合于翻译和摘要等任务;GPT和LLaMA主要采用 decoder-only架构,优于生成任务;PaLM的架构虽然基于Transformer,但其具体设计旨在通过大规模训练提升模型的通用性和效率。

2024-07-08 12:03:06 691

原创 基于mybatis-plus实现一个自己设计的POST接口

这是一个提交接口,提交的内容涉及到四个表单。所以目前需要一个新的VO来承载这些数据,并且我希望四个实体类能利用这VO初始化自己的属性。要关注的有两个点:用户id如果数据库中已经存在就不插入用户表,否则插入用户表,密码为默认;时间如果传过来为空那么自己设定为当前时间。

2024-07-07 17:14:21 542

原创 基于mybatis-plus实现一个自己设计的GET接口

application.yml 中设置 server.address 和port。一般是自己的IP和自定义的端口。但是假如你设置为 192.168 .1.100,那么服务器将尝试绑定到这个 IP 地址。如果这个 IP 地址在你的网络中不存在或者不可达,服务器将无法启动。配置自己的banner如果你没有在 application.yml 中配置banner,但启动时输出了 banner.txt 的内容,这通常是因为Spring Boot默认加载了类路径下的 banner.txt 文件。

2024-07-05 15:48:32 1051

原创 以开发的角度看大模型--零基础小白大模型python java接口调用包教会

【代码】实习摸鱼--以开发的角度看大模型:零基础小白大模型接口调用包教会。

2024-06-28 16:29:11 466

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab2

在此作业中,您将添加一个系统调用跟踪功能,该功能可能有助于您调试后续的实验。例如,要跟踪 fork 系统调用,程序会调用trace(1

2024-06-26 11:33:49 238

原创 全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab1

操作系统学习和实践

2024-06-17 16:20:44 1257 1

原创 基于macOS的苍穹外卖踩坑记录

学之前java、maven,spring略有了解。基本上是all in两周写完的(不包括周末,纯工作日公司带薪学习哈哈)。新手入门,技术栈过浅,不因写入简历,应该以这个为跳板进行更深的项目学习。

2024-05-28 15:01:24 852

原创 洛谷P1996约瑟夫问题

题目描述nn 个人围成一圈,从第一个人开始报数,数到 mm 的人出列,再由下一个人重新从 11 开始报数,数到 mm 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n-1 名小朋友,而该题是全部出圈。输入格式输入两个整数 n,mn,m。输出格式输出一行 nn 个整数,按顺序输出每个出圈人的编号。输入输出样例输入 #1复制10 3输出 #1复制3 6 9 2 7 1 8 5 10 4说明/提示1 \

2022-07-04 20:36:43 157 1

原创 洛谷P1449后缀表达式

题目描述所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。输入格式输入:后缀表达式输出格式输出:表达式的值输入输出样例输入 #1复制3.5.2.-*7.+@输出 #1复制16说明/提示字符串长度,1000内。唉,路途遥远,我这么拉,再不学一学我就比小学生还不如

2022-07-03 22:35:21 160

原创 洛谷P1241括号序列

题目描述定义如下规则序列(字符串):1.空序列是规则序列;2.如果S是规则序列,那么(S)和[S]也是规则序列;3.如果A和B都是规则序列,那么AB也是规则序列。例如,下面的字符串都是规则序列:(),[],(()),([]),()[],()[()]而以下几个则不是:(,[,],)(,()),([()现在,给你一些由‘(’,‘)’,‘[’,‘]’构成的序列,你要做的,是补全该括号序列,即扫描一遍原序列,对每一个右括号,找到在它左边最靠近它的左括号匹配,如果没有就放弃。在以这种方式把原序列匹配完成后,把剩下的

2022-07-03 19:56:40 235

原创 洛谷P1160(链表查找造成超时怎么办)

一个学校里老师要将班上 N 个同学排成一列,同学被编号为 1∼N,他采取如下的方法:先将 11 号同学安排进队列,这时队列中只有他一个人;2−N 号同学依次入列,编号为 i 的同学入列方式为:老师指定编号为 i 的同学站在编号为 1∼(i−1) 中某位同学(即之前已经入列的同学)的左边或右边;从队列中去掉 M(M...

2022-06-30 20:23:07 413 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除