函数Hook(LD_PRELOAD)、审计流劫持(LD_AUDIT)及函数插桩
Linux从符号劫持到运行时追踪:函数Hook(LD_PRELOAD)、审计流劫持(LD_AUDIT)及函数插桩。
Linux从符号劫持到运行时追踪:函数Hook(LD_PRELOAD)、审计流劫持(LD_AUDIT)及函数插桩。
实现DeepSeek NextN推测解码。 通过forward_batch.spec_info.hidden_states获取推测解码的隐藏状态 使用eh_proj合并当前和推测的隐藏状态 支持分布式并行计算(通过enable_dp_attention标志)
SpecDecodeWorker + Proposers (ngram, draft model) + Scorer (top-1 scoring) + Verifier (rejection sampling)
关于投机采样是什么这里就不赘述了,参考这篇大佬的文章大模型推理妙招—投机采样(Speculative Decoding),解释的很清晰。
vllm框架对投机采样(Speculative Decoding)进行了支持, 见spec_decode。
投机采样也可以翻译为推测解码,我觉得推测解码会更加容易理解一些,下文采用推测解码。
推测解码是一种推理优化技术,它在生成当前Token的同时,对未来的Token进行有根据的猜测,这一切都在一次前向传播中完成。它融入了一种验证机制,以确保这些推测出的Token的正确性,从而保证推测解码的整体输出与普通解码的输出相同。优化大语言模型(LLMs)的推理成本,可以说是降低生成式人工智能成本并提高其应用率的最关键因素之一。为了实现这一目标,有各种推理优化技术可用,包括自定义内核、输入请求的动态批处理以及大型模型的量化。
MPI(Message Passing Interface,消息传递接口)是一种并行计算的通信标准,主要用于在分布式内存系统中实现多进程间的数据交换和协同计算。它是高性能计算(HPC)领域的核心工具之一,尤其适用于超级计算机和集群环境。MPI是独立于硬件和编程语言的规范,主流实现(如OpenMPI、MPICH)支持C/C++、Fortran等语言,可在Linux、Windows等系统运行。
类似linux操作系统管理内存的机制,paged_attention用于管理LLM推理时kv cache的显存分配,通过页表机制,优化显存分配,减少碎片。
创建一个新的Arc<T>,同时为你提供对分配的Weak<T>,以便你构建一个持有对自身弱指针的T。
通常,直接或间接循环引用自身的结构不应持有对自身的强引用,以防止内存泄漏。使用此函数,你可以在T初始化期间(在Arc<T>创建之前)访问弱指针,以便你可以克隆并将其存储在T内部。
LTO(链接时优化)背后的基本原理是,将 LLVM 的一些优化过程推迟到链接阶段。为什么是链接阶段呢?因为在编译流程中,链接阶段是整个程序(即整套编译单元)能够一次性全部获取的时刻,因此跨编译单元边界的优化成为可能。
朋友们,你们好呀!
不管是Vim还是Nvim,大家肯定都会用到吧!在自己的开发机上你的vim或许特别自定义改装过了。但是偶尔我们也会去一个临时服务器,装一个最简单的原生vim使用。
如果你熟悉了解Vim的一些小技巧,可以提高你的效率呢。那么,Vim有什么奇技淫巧?一起看看作者平时常用到的一些小技巧。
(本文主要内容译自build-your-own-llama-3-architecture-from-scratch-using-pytorch)
朋友们,书接上文,上一篇的Llama3还没有分享完,接着分享输出模块(Output Block)和训练、推理。
最终Decode Block的解码器(decoder)输出将输入到Output Block中。首先,它被输入到 RMSNorm 中。然后,它将被输入到线性层中用于生成logits。
接下来,会发生以下两种操作之一。