Author: C3P00

Caddy 2中配置缓存Caddy 2中配置缓存

在Caddy 2中配置缓存可以使用cache-handler插件。以下是配置Caddy 2缓存的步骤: 在这个示例中,cache指令启用了缓存处理,并将请求代理到your-app:8080。 在这个示例中,所有以.css结尾的URI将使用指定的规则生成缓存键。 在这个示例中,使用Fastly作为CDN提供商,并配置了相关的API密钥、邮箱、主机名等信息。 这些是配置Caddy 2缓存的基本步骤。你可以根据需要调整和扩展这些配置选项。请参考cache-handler插件的文档以获取更多详细信息和选项[1]。 Learn more: darkweak/souin 是一个HTTP缓存系统,符合RFC标准,并与@tyktechnologies、@traefik、@caddyserver、@go-chi、@bnkamalesh、@beego、@devfeel、@labstack、@gofiber、@go-goyave、@go-kratos、@gin-gonic、@roadrunner-server、@zalando、@zeromicro、@nginx和@apache兼容[1]。它可以作为反向代理缓存系统,可以放置在当前反向代理(如Apache、Nginx)的顶部,也可以作为Træfik、Caddy或Tyk等喜爱的反向代理的插件使用。由于它是用Go语言编写的,可以部署在任何服务器上,并且由于具有Docker集成,可以轻松安装在Swarm或Kubernetes实例上。它支持Vary、请求合并、陈旧的Cache-Control和其他与RFC-7234相关的规范,还支持新编写的RFC(目前处于草案阶段)http-cache-groups和http-invalidation。它还支持ESI标签,感谢go-esi包的支持[1]。 Souin的配置文件存储在/anywhere/configuration.yml中,可以根据需要提供自己的配置文件。配置文件中包含了各种配置选项,如缓存时间、反向代理URL、API配置、缓存键配置等[1]。 Souin还提供了各种插件,如Beego过滤器、Caddy模块、Chi中间件、Dotweb中间件、Echo中间件、Fiber中间件、Gin中间件、Goa中间件、Go-zero中间件、Goyave中间件、Hertz中间件、Kratos过滤器、Roadrunner中间件、Skipper过滤器、Træfik插件、Tyk插件、Webgo中间件、Prestashop插件和Wordpress插件等[1]。 Souin还支持Prometheus API、Souin API和Security API,可以用于监控和管理缓存系统[1]。 总结:darkweak/souin是一个符合RFC标准的HTTP缓存系统,可以作为反向代理缓存系统使用,也可以作为插件嵌入到其他反向代理中。它支持各种配置选项和插件,并提供了API用于监控和管理缓存系统。 Learn more: [...]

深入解析 LoRA+:如何通过调整学习率进一步优化LLM深入解析 LoRA+:如何通过调整学习率进一步优化LLM

在当前大规模语言模型(LLM)的参数高效微调方法中,LoRA(Low-Rank Adaptation)无疑是一个重要的手段。此前,我们在《梯度视角下的LoRA:简介、分析、猜测及推广》中曾简单讨论过LoRA。今天,我们来学习LoRA的一个新结论:给LoRA的两个矩阵分配不同的学习率,LoRA的效果还能进一步提升。这一结论出自最近的论文《LoRA+: Efficient Low Rank Adaptation of Large Models》(下称“LoRA+”)。 为什么调整学习率显得如此重要? 乍一看,给不同的矩阵分配不同的学习率似乎并没有什么特别之处,因为配置不同的学习率相当于引入了新的超参数,而通常来说,只要引入并精调超参数,模型性能都会有所提升。然而,“LoRA+”的特别之处在于,它从理论角度肯定了这一必要性,并且明确指出最优解必然是右矩阵的学习率大于左矩阵的学习率。 LoRA基本原理回顾 假设预训练参数为 ,如果使用全量参数微调,那么增量也是一个 ( n \times m ) 矩阵。为了降低参数量,LoRA将更新量约束为低秩矩阵,即设 ( W = W_0 + AB ),其中 。在训练时,只更新 ( A [...]

论文分享:Score Identity Distillation——更快更好的扩散模型蒸馏方法论文分享:Score Identity Distillation——更快更好的扩散模型蒸馏方法

引言 今天我们分享的是一篇名为《Score Identity Distillation: Exponentially Fast Distillation of Pretrained Diffusion Models for One-Step Generation》的新论文。该论文探讨了如何更快更好地蒸馏扩散模型。 即便没有做过蒸馏,大家可能也能猜到蒸馏的常规步骤:随机采样大量输入,然后用扩散模型生成相应结果作为输出,用这些输入输出作为训练数据对,来监督训练一个新模型。然而,众所周知,作为教师的原始扩散模型通常需要多步(比如1000步)迭代才能生成高质量输出,所以且不论中间训练细节如何,该方案的一个显著缺点是生成训练数据太费时费力。此外,蒸馏之后的学生模型通常或多或少都有效果损失。 有没有方法能一次性解决这两个缺点呢?这就是上述论文试图要解决的问题。 思路简介 论文将所提方案称为“Score Identity Distillation(SiD)”,基于几个恒等式来设计和推导了整个框架。实际上,它的设计思想与几个恒等式并没有直接联系,其次几个恒等式都是已知的公式而不是新的,所以这个名字显得相当随意。 本文将其称之为“重现江湖”,是因为SiD的思路跟之前在《从去噪自编码器到生成模型》介绍过的论文《Learning Generative Models using Denoising Density Estimators》(简称“DDE”)几乎一模一样,甚至最终形式也有五六分相似。只不过当时扩散模型还未露头角,所以DDE是将其作为一种新的生成模型提出的,在当时反而显得非常小众。而在扩散模型流行的今天,它可以重新表述为一种扩散模型的蒸馏方法,因为它需要一个训练好的去噪自编码器——这正好是扩散模型的核心。 接下来笔者用自己的思路去介绍SiD。 初级形式 假设我们有一个在目标数据集训练好的教师扩散模型 [...]

Fast Transformer Decoding: One Write-Head is All You NeedFast Transformer Decoding: One Write-Head is All You Need

引言 《Fast Transformer Decoding: One Write-Head is All You Need》是一篇提出了一种变换模型多头注意力机制变体的研究论文。该论文解决了变换模型在增量推理过程中由于反复加载大规模“键”和“值”张量而导致的内存带宽成本问题。 论文要点 1. 多查询注意力(Multi-Query Attention) 作者提出了一种称为多查询注意力的变体,其中键和值在所有注意力头之间共享。这种方法减少了张量的大小以及在增量解码过程中对内存带宽的需求。 2. 内存带宽的减少 通过共享键和值,所提出的方法显著减少了在解码过程中反复加载这些张量的内存带宽成本。 3. 更快的解码速度 采用多查询注意力的模型在解码速度上比传统的多头注意力模型要快得多。 4. 质量轻微下降 作者通过实验验证了多查询注意力模型在相较于基线模型的情况下,质量仅有轻微下降。 进一步了解 通过这篇论文,我们可以看到在不牺牲太多模型质量的前提下,通过优化内存带宽和共享键值对,可以显著提高变换模型的解码速度。这对于提升自然语言处理任务中的推理效率具有重要意义。 多查询注意力 多查询注意力是一种注意力机制,其中键和值在所有注意力头之间共享。这意味着在解码过程中,只需要加载一次键和值向量,从而显著减少了内存带宽成本。 传统多头注意力 传统的多头注意力是一种注意力机制,其中每个注意力头都有自己的键和值向量。这意味着在解码过程中,需要反复加载这些向量,从而导致内存带宽成本高。 [...]

OpenVINO-Java-APIOpenVINO-Java-API

📚 简介 OpenVINO™ 是一个用于优化和部署 AI 推理的开源工具包,旨在提升深度学习在计算机视觉、自动语音识别、自然语言处理和其他常见任务中的性能。它支持使用流行框架(如TensorFlow,PyTorch等)训练的模型,减少资源需求,并在从边缘到云的一系列英特尔®平台上高效部署。 该项目通过Java Native Access (JNA) 实现了基于OpenVINO™工具套件的OpenVINO™ Java API,旨在推动 OpenVINO™在Java领域的应用。由于是基于 OpenVINO™ 开发,OpenVINO™ Java API 支持的所有平台与OpenVINO™ 一致。 版本计划 Java库公示 ⚙ 如何安装 以下文章提供了OpenVINO™ Java API在不同平台的安装方法,可以根据自己使用的平台进行安装。 简短安装步骤 详细使用文档 🏷 [...]

GQA: 从多头检查点训练广义多查询变换模型GQA: 从多头检查点训练广义多查询变换模型

引言 在自然语言处理领域,如何在不牺牲模型质量的前提下实现更快的推理速度一直是一个重要的研究课题。本文将介绍一篇名为《GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints》的研究论文,该论文提出了一种从多头检查点训练广义多查询变换模型的方法,旨在解决这一挑战。 论文贡献 1. 现有多头语言模型检查点的再训练 论文提出了一种再训练现有多头语言模型检查点的方法,将其转换为具有多查询注意力(MQA)的模型。MQA使用单个键值头,大幅加快解码器推理速度。通过仅使用原始预训练计算量的5%,再训练现有模型,作者旨在实现更快的推理速度,而无需单独训练一个新模型。 2. 引入分组查询注意力(GQA) 论文引入了GQA,作为MQA的一种广义形式。GQA使用中间数量的键值头,数量介于1和查询头总数之间。该方法旨在平衡MQA的速度和多头注意力的质量。作者通过实验表明,再训练的GQA模型在保持与MQA相当速度的同时,能够达到接近多头注意力的质量。 方法与实验结果 再训练方法 论文详细介绍了再训练现有多头语言模型检查点的具体步骤。通过仅使用原始预训练计算量的5%,再训练现有模型,使其具备MQA的特点,从而实现更快的推理速度。 GQA的实现 GQA通过使用中间数量的键值头,增加了模型的灵活性和适应性。实验结果表明,再训练的GQA模型在多个自然语言处理任务中表现出色,质量接近于多头注意力,同时推理速度与MQA相当。 结论 本文提出的方法为实现更快的推理速度提供了一个有效的解决方案,而无需牺牲模型质量。通过再训练现有多头语言模型检查点,并引入分组查询注意力(GQA),可以在保持高质量的同时,实现高效的推理。这一研究对于提升变换模型在各类自然语言处理任务中的效率和性能具有重要意义。 进一步了解: [...]

缓存与效果的极限拉扯:从MHA、MQA、GQA到MLA缓存与效果的极限拉扯:从MHA、MQA、GQA到MLA

引言 最近,幻方发布的DeepSeek-V2引起了广泛关注。其1块钱100万token的价格令人惊叹,而背后的关键技术之一——MLA(Multi-head Latent Attention)更是备受瞩目。本文将带大家梳理从MHA、MQA、GQA到MLA的演变历程,并深入介绍MLA的设计思路。 MHA:多头注意力 MHA(Multi-Head Attention)是《Attention is all you need》提出的注意力机制的基础。它通过多个独立的单头注意力拼接而成,广泛应用于当前的主流LLM(大语言模型)。 MHA的设计使得每个注意力头(Head)都有独立的键(Key)、值(Value)和查询(Query)向量,这些向量通过线性变换得到。MHA的计算量和存储开销较大,特别是在长上下文(Context)情况下,KV Cache(键值缓存)会占用大量显存。 瓶颈:为何降低KV Cache大小如此重要? LLM的推理主要在GPU上进行,而GPU显存有限。一部分显存用于存放模型参数和激活值,另一部分用于存放KV Cache。随着上下文长度增加,KV Cache的大小会逐渐占据主导地位,可能超出单张卡甚至单台机器的显存容量。 减少KV Cache的目的是在更少的设备上推理更长的上下文,或在相同上下文长度下提高批处理大小,从而实现更快的推理速度或更大的吞吐量,最终降低推理成本。 MQA:多查询注意力 MQA(Multi-Query Attention)是减少KV Cache的一次尝试,首次提出于《Fast Transformer Decoding: One Write-Head is All [...]

生成扩散模型漫谈(二十四):少走捷径,更快到达生成扩散模型漫谈(二十四):少走捷径,更快到达

引言 在生成扩散模型的应用中,如何在保证生成质量的前提下减少采样步数一直是一个关键问题。本文将介绍一种名为“Skip Tuning”的加速技巧,该技巧出自论文《The Surprising Effectiveness of Skip-Tuning in Diffusion Sampling》。通过合理的调节Skip Connection的权重,可以在保持生成质量的同时进一步压缩采样步数,实现更快速的采样过程。 模型回顾 首先,我们需要回顾一下生成扩散模型中的主流架构——U-Net。U-Net最早出自论文《U-Net: Convolutional Networks for Biomedical Image Segmentation》,其特点是输入和输出的大小一致,适合图像分割任务。U-Net在生成扩散模型中也被广泛采用,因为它能够很好地捕捉图像的细节信息。 U-Net的核心是Skip Connection,即在逐层下采样和上采样的过程中,添加了额外的连接来避免信息瓶颈。这些Skip Connection使得第一层的输出可以直接传递到倒数第一层,第二层的输出可以传递到倒数第二层,依此类推。这样可以解决信息流动受限的问题,尤其是在重构和去噪任务中,避免生成模糊的结果。 Skip Tuning 方法 Skip Tuning是一种特别简单有效的加速技巧,适用于已有的加速技术。其核心思想是通过调节Skip Connection的权重来补偿加速过程中损失的非线性能力。具体来说,在扩散模型的采样过程中,采样是一个多步递归地从初始状态到目标状态的过程,这构成了一个复杂的非线性映射。Skip Tuning通过调节Skip Connection的权重来增加模型的非线性能力,从而提高采样质量或者减少采样步数。 [...]

学习超越模式匹配?评估LLMs的数学理解能力学习超越模式匹配?评估LLMs的数学理解能力

作者 Siyuan Guo, Aniket Didolkar, Nan Rosemary Ke, Anirudh Goyal, Ferenc Huszár, Bernhard Schölkopf 摘要 本文《学习超越模式匹配?评估LLMs的数学理解能力》探讨了大语言模型(LLMs)在数学问题解决中的领域知识和理解能力。作者不仅研究了预训练LLM已经掌握的知识,还考察了它们在上下文学习或指令微调过程中如何通过信息来学习。研究旨在评估LLMs在解决问题时理解不同数学技能的能力,以及其利用数学中复杂知识结构的能力。 受到神经切线核(NTK)概念的启发,作者提出了一种名为NTKEval的方法,通过训练不同类型的数学数据来评估LLM概率分布的变化。论文中进行的分析显示了在上下文学习期间领域理解的证据,表明LLMs能够有效地学习和利用相关的数学技能。然而,某些指令微调技术导致的性能变化与训练数据无关,这表明在不同技能之间缺乏领域理解。 主要内容 1. 引言 大语言模型(LLMs)在各种自然语言推理任务中展示了显著的成功。本文评估了LLMs在解决数学问题时所需的不同数学技能的理解能力,不仅关注预训练模型已经掌握的知识,还关注其在上下文学习或指令微调期间如何学习。 2. 相关工作 现有的研究主要关注LLMs在数学问题解决中的表现,然而很少有研究探讨其在不同数学技能上的理解能力。本文提出的方法旨在填补这一空白。 3. 背景 神经切线核(NTK)是一种用于分析神经网络泛化特性的工具。本文将NTK扩展到语言模型,提出NTKEval方法来评估模型在不同数学数据上的训练效果。 4. 方法 NTKEval通过计算在不同技能数据集上的概率分布变化来评估LLM的学习效果。具体来说,本文利用重要性采样方法来计算不同模型在相同输入下生成正确答案的概率差异。 [...]

多模态数据集提升药物不良事件检测:语料库创建与模型开发多模态数据集提升药物不良事件检测:语料库创建与模型开发

引言 药物不良事件(Adverse Drug Events,ADEs)的挖掘在药物警戒中至关重要,通过识别与药物相关的潜在风险,提高患者安全性,促进不良事件的早期检测,并为监管决策提供指导。传统的ADE检测方法虽然可靠,但速度较慢,难以适应大规模操作,并且提供的信息有限。随着社交媒体内容、生物医学文献和电子病历(EMR)等数据源的迅猛增长,从这些非结构化文本中提取相关的ADE信息变得至关重要。 相关工作 文本数据与电子病历 传统的ADE检测多基于文本数据,如电子病历和医学案例报告。这些数据源提供了患者病历记录、治疗情况、病情和潜在风险因素的全面信息。然而,这些方法往往忽视了视觉线索,导致上下文理解不足,影响了准确的解释。 社交媒体数据集 社交媒体因其实时性和多样化的用户生成内容,在ADE检测中也发挥了越来越重要的作用。通过分析社交媒体上的用户评论,可以识别潜在的ADE。然而,这些方法也存在局限性,因为它们仅依赖于文本数据。 语料库开发 为了弥补现有方法的不足,我们创建了一个多模态药物不良事件(MultiModal Adverse Drug Event,MMADE)检测数据集,将ADE相关的文本信息与视觉辅助信息相结合。具体包括以下步骤: 数据收集 我们从社交媒体、医疗博客和医学案例报告中收集数据,确保数据的多样性与代表性。例如,从Twitter收集了大量的推文,并筛选出与ADE相关的内容。 数据注释 为了确保数据注释的准确性,我们邀请了医学专业学生和博士生参与注释工作,并制定了详细的注释手册。通过多数投票确定最终的标签,以确保注释的一致性。 数据分析 我们对收集的样本进行了分析,确定了13种显著的ADE类型,并根据其来源将其分类,形成了一个多样化的ADE数据集。 方法论 我们利用大型语言模型(Large Language Models,LLMs)和视觉语言模型(Vision Language Models,VLMs),如InstructBLIP,对MMADE数据集进行训练,生成详细的医学图像描述。这些模型在视觉问答、图像字幕生成等任务中表现优异,通过集成复杂的联合表示学习机制,能够更好地捕捉文本和视觉模态之间的复杂关系。 实验结果与分析 通过一系列实验评估,我们发现多模态模型在捕捉视觉信息和生成文本描述方面表现优越。特别是经过领域特定数据微调后的InstructBLIP模型,在各种评估指标上均表现出色,显著提升了ADE检测的准确性。 发现 结论与未来工作 [...]