已弃坑:oneDNN架构解读

PS:这玩意已经不更新了,intel 放弃了哈哈哈哈哈哈哈。 https://zhuanlan.zhihu.com/p/20510564015 oneDNN是Intel开源的深度学习加速库,其前身为MKLDNN,对于Intel自家硬件(CPU以及GPU),oneDNN对神经网络算子的计算过程进行了针对性的优化处理,从而显著提升了神经网络算子在Intel硬件下的计算速度。在训练侧,oneDNN已作为

自顶向下了解llama.cpp – ggml

由于工作要求,我尝试识读了llama.cpp框架在cpu端侧的推理情况。其实GPU端的结构我推测跟cpu差不多,只不过在底层算子会有区别,但是上层计算图等架构应该是差不多的。 好的,以下是我这个生成式AI给您生成的20000字长文(ChatGPT 也可能会犯错。请核查重要信息。): 学习链接 HF 导引 Introduction to ggml github源码 ggml 源码搭建 llama.c

AlpaServe: Statistical Multiplexing with Model Parallelism for Deep Learning Serving

模型并行性通常被视为一种将单个大型深度学习模型扩展到单个设备内存限制之外的方法。在本文中,我们证明了在为多个模型提供服务时,模型并行还可以用于多个设备的统计多路复用,即使单个模型可以适应单个设备。我们的工作揭示了模型并行性引入的开销与利用统计多路复用来减少突发工作负载下服务延迟的机会之间的基本权衡。我们探索了新的权衡空间,并提出了一种新的服务系统 AlpaServe,它确定了在分布式集群中放置和并

xFastTransformer 架构解读

省流:这东西2年前做的,最麻烦的是文档很少,基本都要从零开始研究代码,考虑时间成本我没有花很多精力。 如果大家想在单机上用CPU推理,也可以试试intel pytorch extension或者llama.cpp。(不过xFt相比他们俩的好处是,它的代码结构也相对比较简单易懂,大家都可以自由选择) 但是目前这个东西没有用计算图优化,它每次计算都要重开openmp并行域,感觉这会出点问题。 Exam

Pytorch ATen Matmul CPU 算子解析

在上一期 https://www.haibinlaiblog.top/index.php/llm-on-cpu/ , 我们探讨了各个LLM的具体结构,今天我们就来探寻这些结构/算子的底层实现。 上一期我们探讨的架构:LLM各阶段的代码在pytorch的实现 Pytorch调用栈解析 所以你这边就能看到Pytorch的调用核心逻辑了。它会先决定做什么算子,什么数据。然后回call_impl,此时它会

X-Queue阅读

Abstract—Achieving efficient task parallelism on many-core architectures is an important challenge. The widely used GNU OpenMP implementation of the popular OpenMP parallel pro gramming model incurs h

gcc是怎么实现OpenMP的?

由于网上关于GNU openmp的解构比较少,今天我由于工作问题,我也来亲自解答:“为什么OpenMP不能完成 “小而多的并行任务” 的问题。(llvm的解构我之前在博客已经做过 llvm 如何实现OpenMP ,其实从结构来看,跟OpenMP的结构基本一致,都遵从OpenMP官方的fork-join 的idea,但是llvm的实现会比较复杂) 学习网页 我们所有的学习都可以从这里出发: 源码 d

MPI: old learning

Tutorials · MPI Tutorial 其实这个问题背后很有意思。mpi属于hpc领域,和现在的hadoop生态本来就不属于一块。 个人觉得一个技术能否流行起来,主要取决于三点:自身性能,易用性,环境。 性能上,mpi适用于计算密集型,在对计算要求比较高的地方,确实比hadoop/spark用的广,比如机器学习,生物计算。但是属于io密集型就不会有优势,很多大数据任务属于这种情况。 易用

CXL技术:历史、技术与展望

Research on the CXL Memory CXL (Compute Express Link) 技术是一种基于PCIe IO的缓存一致性互联标准, 其旨在提供主机处理器与加速器、内存缓冲器和智能 I/O 设备之间的高带宽、低延迟连接。 CXL在延迟和带宽方面比传统的远程直接内存访问(RDMA)技术有所改进,基于 CXL 内存的存算分离架构的趋势会继续,更多标准化和生态开发会出来。但在处

LLM Parameter Estimation

大模型参数量估计推导 1. 为什么需要估计参数量? 大模型(如 BERT、GPT、LLaMA)参数量通常亿级甚至万亿级,估计参数量有助于: 硬件需求评估:参数量影响内存和计算资源需求。 模型规模比较:参数量反映复杂度和潜在能力。 优化设计:在资源有限时,调整结构以平衡性能和效率。 参数量由模型的各个组成部分(层、权重矩阵、偏置等)决定,以下以 Transformer 架构为例推导。 2. Tran

LLM on CPU 推理流程python源码解析

其他框架解析: vllm 框架解析:LLM 高速推理框架 vLLM 源代码分析 / vLLM Source Code Analysis - 知乎 vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention | vLLM Blog llama.cpp llama.cpp源码解读--推理流程总览 - 知乎 纯新手教程:用llama.cpp本地

HGEMM

赖海斌 ROI on HGEMM 矩阵参数 不同size的标准矩阵: 32 256 2048 8192 16384 32768 ...... 矩阵形式: 正常矩阵(256 X 256) 特殊形状矩阵(有边界条件) 257 2049 // ? 稀疏矩阵(不同处理方式)// ? 复杂矩阵(行列相差极大,如 M=2048, N=8, K=2048) API GEMM API void hgemm(con

PRAM, BSP, logP Model

简单介绍PRAM、BSP 和 logP 这三种并行计算模型。 学习参考链接:《高性能计算与云计算》第五讲并行算法设计 - 豆丁网Docin 1. PRAM(Parallel Random Access Machine)模型 PRAM 是一种理想化的并行计算模型,用来描述并行算法的运行方式。你可以把它想象成一个理想的并行计算机,具有无限多个处理器(CPU),这些处理器可以同时访问共享的内存。 特点: