- 博客(2508)
- 收藏
- 关注
原创 摩西十戒
第一条:“我是耶和华-你的神,曾将你从埃及地为奴之家领出来,除了我之外,你不可有别的神。”第二条:“不可为自己雕刻偶像,也不可做什么形象仿佛上天、下地,和地底下、水中的百物。不可跪拜那些像,也不可事奉它,因为我耶和华-你的神是忌邪的神。恨我的,我必追讨他的罪,自父及子,直到三四代;爱我、守我戒命的,我必向他们发慈爱,直到千代。”第三条:“不可妄称耶和华-你神的名;因为妄称耶和华名的,耶和...
2019-01-11 17:57:25 3106 1
原创 华为CANN and 英伟达CUDA
在数字时代,石油曾是工业的血液,驱动着世界的运转。然而,随着人工智能的兴起,一种新的能源正在悄然崛起,它就是算力——AI时代的新石油。这不再是关于地下的挖掘,而是关于数据的开采和智能的提炼。在这个新纪元,算力成为了衡量一个企业、一个国家乃至一个文明进步的关键指标。每一个算力时代,都有两大核心,一个是计算芯片,另一个是操作系统。在CPU时代,就是大名鼎鼎的Wintel联盟。那么在AI时代呢?目前看最有可能的就是英伟达的GPU+CUDA。
2025-01-08 17:51:25 927
原创 如何评价《将进酒》敦煌版《惜樽空》?
敦煌文献被发现之后,人们从唐人的诗稿中发现了一首叫《惜罇空》的诗,虽然也有多个不同版本,但诗句都与《将进酒》大同小异,因此产生了《惜罇空》与《将进酒》哪一个是李白原作的讨论。《将进酒》是宋人收录于《李太白诗集》中,其他版本有答主已经说了,在当时所录的诗文中也有提及,但这些版本没能引起足够的注意,直到敦煌文献中的内容被发现,证实了这些不同版本的存在,相关的讨论也就甚嚣尘上。《惜罇空》比较得到认可的版本内如如下:君不見黃河之水天上來,奔流到海不復迴。君不見床頭明鏡悲白髪,朝如青雲暮成雪。
2025-01-07 16:05:46 306
原创 Ascend C算子开发(进阶)
本课程是Ascend C算子开发的进阶教程,通过课程讲解及样例实操,帮助你学习如何使用Ascend C进行自定义算开发,并在实际应用中调用自定义算子。通过此课程,全面掌握Ascend C算子开发和调用流程,独立完成算子核函数开发、Tiling开发,并进行单算子、网络中算子调用。在昇腾AI处理器上进行Ascend C算子开发的开发人员。4、学习并完成单算子、网络中算子调用。2、掌握常用的Tiling设计和开发。1、掌握算向量算子核函数开发。3、学习并完成算子的编译部署。
2025-01-06 14:34:47 173
原创 C++ 模板常见特性(函数模板、类模板)
为了多快好省地定义出一批相似的类,可以定义「类模板」,然后由类模板生成不同的类。template //类型参数表class 类模板名成员函数和成员变量类模板名 对象名(构造函数实参表);
2025-01-06 10:36:42 815
原创 c++ auto
intmain()1.auto自动识别类型//typeid()识别变量类型2.auto关键字经常和范围for一起使用,用来遍历数组。普通的遍历数组++i)范围for:自动迭代,自动结束依次取arr中的元素,赋值给变量i(注意i是arr中元素的拷贝)
2025-01-06 07:04:54 738
原创 malloc函数和calloc函数的区别是什么?
就像刚才提到的用 calloc 分配存放双精度浮点数的内存,分配完成后,每一个双精度浮点数元素的初始值都会是 0 ,这种初始化特性使得 calloc 在一些需要初始数据为 0 的场景中非常实用,比如用于统计计数的数组,使用 calloc 分配内存后就可以直接基于初始的 0 值开始进行计数等操作了,无需额外再去初始化内存空间。,其中 5 是元素个数, sizeof(double) 是每个双精度浮点数元素的字节大小, calloc 函数会根据这两个参数来确定要分配的总内存量。
2025-01-05 18:30:44 405
原创 OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - 环境搭建 原创可用
OrangePi AIpro 香橙派 昇腾 Ascend C算子开发flyfish环境搭建部分OrangePi AIpro 香橙派的npu为310B4,通常配置的时候写 Ascend310B4社区版资源下载地址。
2025-01-04 14:41:21 263
原创 香橙派安装 opencv 4.9.0
然后使用make -j2或者make -j4来进行编译,这个编译时间比较长,j后面的数字可以修改成4,6,8,视你的机器的处理核心数来定,越高的话越快,我是make -j2,因为香橙派Orange AI Pro 总共四个核,如果全部占满,直接会卡死。配置c++了,先在/etc/ld.so.conf.d/文件夹下新建一个opencv4.conf,里面写入/usr/local/lib。这样子就可以了,接下来使用命令安装Opencv,这样会安装Opencv以及生成的pkg-config文件。
2025-01-04 13:52:38 521
原创 deepseek v3模型为啥要开源
(3)在颠覆性的技术面前,闭源形成的护城河是短暂的。我们把价值沉淀在团队上,我们的同事在这个过程中得到成长,积累很多know-how,形成可以创新的组织和文化,就是我们的护城河。(10)我们在做最难的事。我们的出发点,就不是趁机赚一笔,而是走到技术的前沿,去推动整个生态发展。(2)任何 AI 公司(短期内)都没有碾压对手的技术优势,因为有 OpenAI 指路,又都基于公开论文和代码,大厂和创业公司都会做出自己的大语言模型。(9)我们选人的标准一直都是热爱和好奇心,所以很多人会有一些奇特的经历,很有意思。
2025-01-03 17:05:16 817
原创 如何旺自己
二:在同事眼里,要感觉你是个人精,他们才不敢欺负你。永远要多请示领导,哪怕他因为你的请示嫌你笨都没事,只有你的笨才显示出他的聪明才干。与领导单独相处时,多倾听少说话,这是谨慎。同事向你抱怨时,只附和不表态,这是明智。别人请你帮忙,别马上答应,先思考再回复,这是稳重。与人争论时,懂得适时让步,这是大度。一:永远语言上利他,行为上利己。永远表面上谦逊,行动上果敢。永远言语上赞美,决策上自主。永远表面上随和,目标上明确。永远言辞上退让,时机上把握。永远说话上委婉,做事上高效。永远神态上淡定,筹谋上精细。
2024-12-30 09:44:06 331
原创 LLM推理优化技术综述:KVCache、PageAttention、FlashAttention、MQA、GQA
意思是通过合理的应用GPU显存实现IO的优化,从而提升资源利用率,提高性能。如上图,GQA以及MQA都可以实现一定程度的Key value的共享,从而可以使模型体积减小,GQA是MQA和MHA的折中方案。也就是说,存在一种优化方案是利用SRAM远快于HBM的性能优势,将密集计算尽放在SRAM,减少与HBM的反复通信,实现整体的IO效率最大化。随着大模型被越来越多的应用到不同的领域,随之而来的问题是应用过程中的推理优化问题,针对LLM推理性能优化有一些新的方向,最近一直在学习和研究,今天简单总结下学习笔记。
2024-12-26 14:58:44 844
原创 大模型推理加速:看图学KV Cache
这是因为Decoder有Causal Mask,在推理的时候前面已经生成的字符不需要与后面的字符产生attention,从而使得前面已经计算的K和V可以缓存起来。KV Cache是Transformer标配的推理加速功能,transformer官方use_cache这个参数默认是True,但是它。所以说叫KV Cache好像有点不太对,因为KV本来就需要全程计算,可能叫增量KV计算会更好理解。我们先看一下不使用KV Cache的推理过程。下面4张图展示了使用KV Cache和不使用的对比。
2024-12-26 14:22:22 378
原创 Transformer
order: 2AttentionQKVSoftmaxdkQK⊤V这个公式中的QK和V分别代表Query、Key和Value,单看这个公式,其实并不能很好地理解Attention到底在做什么,本文从Transformer所使用的Self-Attention,介绍Attention背后的原理。
2024-12-26 14:06:28 607
原创 理解语言的 Transformer 模型
在本教程中,您已经学习了位置编码,多头注意力,遮挡的重要性以及如何创建一个 transformer。尝试使用一个不同的数据集来训练 transformer。您可也可以通过修改上述的超参数来创建基础 transformer 或者 transformer XL。您也可以使用这里定义的层来创建BERT并训练最先进的模型。此外,您可以实现 beam search 得到更好的预测。
2024-12-26 13:09:28 853
原创 大模型推理性能优化之KV Cache解读
KV Cache是Transformer推理性能优化的一项重要工程化技术,各大推理框架都已实现并将其进行了封装(例如 transformers库 generate 函数已经将其封装,用户不需要手动传入past_key_values)并默认开启(config.json文件中use_cache=True)。本文尝试打开封装分析该技术内部实现,希望对大家有所帮助,文中如有纰漏,欢迎指正。
2024-12-25 13:40:06 744
原创 浅显易懂地介绍 llm.c [译]
这一过程十分艰难,因为你需要深入理解训练算法,并能够推导出所有层的前向和反向传播过程,还必须非常小心地处理所有的数组索引计算,因为 PyTorch 中的张量抽象并不可用。所有的 Tensor 操作都极为谨慎地调用了最有效的 CUDA 核函数,并且有类似 torch.compile 的工具进一步优化了你的神经网络,让其在你的计算机上运行得更加高效。但这需要更多精力和关注,如同之前提到的,如果你对神经网络或使用的计算机做了改变,可能需要调用不同的核函数,调整参数,手动做更多的修改。为什么我要投入这项工作呢?
2024-12-24 15:29:30 435
原创 大白话讲解word2vec到底在做些什么
假设语料库中有30000个不同的单词,hidden layer取128,word2vec两个权值矩阵维度都是[30000,128],在使用SGD对庞大的神经网络进行学习时,将是十分缓慢的。Word2Vec可以将One-Hot Encoder转化为低维度的连续值,也就是稠密向量,并且其中意思相近的词将被映射到向量空间中相近的位置。Skip-Gram可以制造的映射关系为(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)
2024-12-24 14:01:54 150
原创 模型并行分布式训练Megatron (5) --Pipedream Flush
PipeDream-2BW 在流水线之中维护了两个版本的模型权重,“2BW” 是 双缓冲权重(double-buffered weights)”,PipeDream-2BW 会为每个微批次生成一个新的模型版本K(K>d),但是因为有些剩余后向传递仍然依赖于旧版本模型,所以新的模型版本无法立即取代旧版本,但是由于只保存了两个版本,所以极大降低了内存占用。PipeDream不会定期Flush流水线,但会存储多个权重版本,这增加了吞吐量,但也增加了内存占用,由于内存限制,无法训练大型模型。
2024-12-22 13:18:13 856
原创 模型并行分布式训练 Megatron (4) --- 如何设置各种并行
假如每一层分为两个tensor,则 _TENSOR_MODEL_PARALLEL_GROUP 例子为:[g0, g1], [g2, g3], [g4, g5], [g6, g7], [g8, g9], [g10, g11], [g12, g13], [g14, g15]。假如数据并行度数为2,则例子为[g0, g2], [g1, g3], [g4, g6], [g5, g7], [g8, g10], [g9, g11], [g12, g14], [g13, g15]。
2024-12-22 13:04:55 381
原创 模型并行分布式训练 Megatron (3) ---模型并行实现
因为对于第二行来说,其输入Y其实本质是 XA1,XA2并行的,所以为了降低通信量,我们可以把数据通信延后或者干脆取消通信,就是把第一行最后的 all_gather 和第二行最初的 split 省略掉,这其实就是数学上的传递性和结合律(局部和之和为全局和)。NVIDIA Megatron 是一个基于 PyTorch 的分布式训练框架,用来训练超大Transformer语言模型,其通过综合应用了数据并行,Tensor并行和Pipeline并行来复现 GPT3,值得我们深入分析其背后机理。
2024-12-22 12:49:53 1021
原创 深入理解 Megatron-LM(5)张量并行
NVIDIA Megatron-LM 是一个基于 PyTorch 的分布式训练框架,用来训练基于Transformer的大型语言模型。最近在基于Megatron-LM的代码来训练大语言模型,本人觉得Megatron的代码很具有学习意义,于是大量参考了网上很多对Megatron代码的解读文章和NVIDA Megatron团队公开发布的2篇论文,并结合最近Megatron-LM代码库的更新,整理成了这几篇系列文章。简枫:深入理解 Megatron-LM(4)并行设置。简枫:Megatron-LM 近期的改动。
2024-12-22 11:55:18 334
原创 深入理解 Megatron-LM(4)并行设置
最近在基于Megatron-LM的代码来训练大语言模型,本人觉得Megatron的代码很具有学习意义,于是大量参考了网上很多对Megatron代码的解读文章和NVIDA Megatron团队公开发布的2篇论文,并结合最近Megatron-LM代码库的更新,整理成了这几篇系列文章。并行策略: 根据不同的并行策略,将节点分配给不同的并行任务。例如,数据并行可能涉及将不同的批次分配给不同节点,模型并行可能涉及将不同层分配给不同节点,流水线并行可能涉及将不同流水线阶段分配给不同节点。接下来对上述问题进行分析。
2024-12-22 11:53:37 399
原创 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
NVIDIA Megatron 是一个基于 PyTorch 的分布式训练框架,用来训练超大Transformer语言模型,其通过综合应用了数据并行,Tensor并行和Pipeline并行来复现 GPT3,值得我们深入分析其背后机理。本系列大概有6~7篇文章,通过论文和源码和大家一起学习研究。本文将对 Megatron 的基本架构做一下梳理。本系列其他文章为:源码解析] 模型并行分布式训练Megatron (1) --- 论文 & 基础。
2024-12-22 10:25:42 885
原创 模型并行分布式训练Megatron (1) --- 论文 & 基础
NVIDIA Megatron 是一个基于 PyTorch 的分布式训练框架,用来训练超大Transformer语言模型,其通过综合应用了数据并行,Tensor并行和Pipeline并行来复现 GPT3,值得我们深入分析其背后机理。本系列大概有6~7篇文章,通过论文和源码和大家一起学习研究。本文把 Megatron 的两篇论文/一篇官方PPT 选取部分内容,糅合在一起进行翻译分析,希望大家可以通过本文对 Megatron 思路有一个基本了解。
2024-12-22 10:22:09 941
原创 深入理解 Megatron-LM(2)原理介绍
在节点内部(如DGX A100服务器),张量模型的并行性表现最佳,因为这可以降低通信量。另一方面,流水线模型并行性采用更经济的点对点通信方式,可以跨节点执行,而不会受到整个计算的限制。然而,流水线并行性可能会在流水线“气泡”中消耗大量时间,因此应该限制流水线的总数,以确保流水线中微批次(micro-batches)的数量是流水线深度的合理倍数。因此,当张量模型的并行大小等于单个节点中GPU的数量(例如DGX A100有8个GPU的节点)时,性能会达到峰值。
2024-12-22 10:16:22 272
原创 万卡GPU集群落地实践
我们内部采用的是4张200Gb/s 的Mellanox CX6网卡,采用200Gb/s网卡的原因是同主机GPU与相邻的网卡之间通过PCIe Gen4 Switch芯片通信,PCIe Gen4 x16的通信带宽是单向32GB/s,网卡的通信性能是200Gb/s = 25GB/s,接近PCIe的通信性能,如果采用400Gb/s的CX7网卡,此时受限于PCIe Gen4的带宽,CX7的网卡性能很难发挥出来。针对不同类型的故障,系统应具备灵活的检测手段和自愈策略,以降低人为干预的频率,提升系统的自动化水平。
2024-12-19 13:02:56 822
原创 AI SYSTEM
点这里 AISYSTEM## 二. AI 硬件体系结构:caption: === 二. AI 硬件体系结构 ===## 三. AI 编程与编译原理:caption: === 三. AI 编程与编译原理 ===## 四. 推理系统&引擎:caption: === 四. 推理系统&引擎 ===## 五. AI 框架核心模块:caption: === 五. AI 框架核心模块 ===## 附录内容:caption: === 附录内容 ===
2024-12-15 17:19:30 591
原创 人工智能系统
适用于[License](https://github.com/microsoft/AI-System/blob/main/LICENSE)版权许可。
2024-12-15 17:01:55 1140
原创 机器学习系统:设计和实现
给大家推荐一本非常好的书《 机器学习系统:设计和实现》双击这里 《 机器学习系统:设计和实现》特别是 AI编译器那一章写的非常好
2024-12-15 16:35:31 211
原创 gdb中x命令查看内存中内容
x是gdb提供的一个内置指令,用于灵活查看和操作内存内容。它的功能来源于调试器对符号表解析和目标内存访问的能力,通过直接访问程序的运行时内存,帮助用户检查数据结构、指针和变量内容等。后面的参数是为了让x命令更加灵活,支持指定数量、格式和单位大小。这种设计使得x命令不仅可以查看内存,还能以符合数据实际存储方式的格式来显示它,非常适合调试和分析内存内容。link。
2024-12-15 14:37:17 384
原创 FPGA有哪些优质的带源码的IP开源网站
Opencores的IP核心包括处理器、总线接口、视频、音频和其他数字电路组件,这些核心都是由社区的成员设计和共享的。总的来说,Jan Gray 的 RISC CPU 网站是一个对于任何想要学习 FPGA-based CPU 设计和实现的人来说都是一个有价值的资源,也是一个寻找可用于自己项目的开源 RISC CPU 核心的硬件设计师的宝贵资料。上面就是整个网站上的内容(翻译过的,原英文网站),不能用丰富形容,简直是太丰富,常用的接口,简单的项目(很具有代表性的项目),不说什么了,赶快去试一试吧。
2024-12-15 12:24:56 1145
原创 优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
在软件方面,PicoRio设计了一个整体软件架构,具有丰富的操作系统环境以及其他程序的支持,因此拥有一个强大的软件生态。在去年推出了音视频AI专用的K210,中科蓝讯推出了一系列基于RISC-V架构的蓝牙芯片,出货量极大,其宣称是全球首家RISC-V应用量过亿(颗)的公司,而且全部搭载国产开源RT-Thread物联网操作系统。"RISC-V是开源的"表示指令集规范是开源、开放和免费的(open and free),这与x86与ARM指令集有本质不同,但并不是指具体的处理器实现也都是开源免费的。
2024-12-15 12:14:50 1189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人