- 博客(181)
- 收藏
- 关注
原创 偏应用实例
偏应用”(Partial Application)是函数式编程的概念,核心是固定一个函数的部分参数,生成一个新的可调用对象。这个新对象就是“偏应用实例”。它的本质是:不改变原函数/类的逻辑,只是提前“冻结”部分参数,后续调用时只需传入剩余未固定的参数,从而简化重复调用的流程。这行代码返回的就是一个。
2025-10-21 17:22:48
95
原创 *args, **kwargs的用法
args, **kwargs是python中用于灵活传递参数的语法,作用是“接收不确定数量的额外参数”,以适配函数可能需要的多种输入场景。必须在所有显式参数后。显示参数匹配完后,剩下的“无参数名”的位置参数,全部归。实际使用时,直接传入值、不指定参数名的参数,会被。剩下的“有参数名”的关键字参数,全部归。形式指定参数名的参数,会被。
2025-10-17 09:49:53
117
原创 FastV: An Image is Worth 1/2 Tokens After Layer 2
如下图所面所示的结果,我们可以看到如果选择在第2层filter out 50%的image tokens,我们就减少了52%的flops,而模型的输出完全一致;如果选择在第5层filter out 75%的image tokens,我们就减少到38%的flops,模型的输出还是一样;如果选择在第2层filter out 75%的image tokens,模型的输出就会受到影响了。如下图所示,我们需要在第K层后添加一个filter层,将不重要的tokens去掉,然后再接着下一层。更详细的数据对比如下表所示。
2025-08-17 10:05:37
363
原创 相对熵与KL散度
熵(Entropy)是一种度量系统不确定性的量,反映了信息的随机性。相对熵(Relative Entropy),也称熵差(Entropy Difference)或KL散度(Kullback-Leibler Divergence),是度量两个概率分布之间差异的量。相对熵的大小即反映了两个分布之间的差异。当相对熵取到最大值时,两个分布完全不同;当相对熵为0时,两个分布完全相同。
2025-07-31 15:10:08
1019
原创 多线程编程
线程在执行过程中与进程还是有区别的。每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。
2025-07-28 11:19:34
359
原创 存算一体简单介绍
传统的计算机架构,数据存储和计算是分开的,数据在存储器和处理器之间频繁的传输导致了延迟。在此背景下,将存储和计算功能融为一体的存算一体芯片应运而生。
2025-06-29 19:24:28
1089
原创 interconnection
ON)ON2)ON2)N2ONlogN)OlogN)ON)ON)ON)OsqrtN))OlogN)ONlogN)OlogN。
2025-01-07 12:58:02
660
原创 Ch1:古今的manipulation与仿真、ROS和Drake介绍
且模拟接触行为的质量和性能也大大提高(这方面的模拟主要是靠复杂的geometry queries和stiff (measure-)微分方程),虽然目前在控制方程的数值求解方面仍有改进空间,但现今的求解器已经足够好用了。各章节按照整个manipulation任务中不同的building blocks组件进行讲述,涵盖计算机视觉、动力学和控制学等的领域知识,本课仅介绍各领域与manipulation最相关的idea。且支持可重复的确定性仿真。会讲相关的机器人硬件、仿真这些硬件的细节,以及几何和动力学基础。
2024-12-09 18:56:27
1221
原创 主存储器组织
2nTATMCTMCTA4M×4211×211×4512×512×8256K×82Mb16×8128812816MB212×212×88×4096327683×64b192b××。
2024-11-11 17:07:59
1316
原创 LangSplat和3D language fields简略介绍
LangSplat相关技术拆分解释:3dgs:伟大无需多言SAM:The Segment Anything Model,是图像分割领域的foundational model,已经用在很多视觉任务上(如图像修复、物体追踪、图像编辑等),以及用在3D领域中,后者相关工作如:Seal:将包含SAM的VFMs用于点云分割SA3D:将SAM泛化到3D物体本篇:使用SAM得到物体掩码以及3个hierarchical semantics,进而训练一个3D language field3D Lang
2024-10-19 05:16:13
1666
原创 计算机体系结构量化研究方法 -- Pipelining: Basic and Intermediate Concepts
那么延迟槽的内容是什么呢?最好是执行一些无论分支成功失败都要执行的指令,最好与分支并不相干。
2024-10-15 08:16:32
930
原创 李飞飞 - World Labs
要超越当今模型的能力,我们需要具备空间智能的AI,它能够在三维空间和时间中对世界进行建模,并对物体、场所和交互进行推理。目的是开发出能够利用图像和其他数据对三维世界做出决策的软件,从而构建所谓的“大型世界模型”:“将AI模型从2D像素的平面提升到完整的3D世界,包括虚拟世界和现实世界,以赋予这些模型如同人类般丰富的空间智能”最终,这项技术将涵盖机器人和制造业等领域。李飞飞曾表示,AI前沿研究涉及一种算法,这种算法可以合理推断出图像和文本在三维环境中的样子,并根据这些预测采取行动,这被称为“空间智能”
2024-10-14 00:25:06
593
原创 flash-attention代码逻辑
本篇写的很乱,主要是自己当时读代码时的一些随手记录,对自己帮助可能更大。如果觉得写得很乱不要喷我,我应该没时间整理成干净的博客了
2024-10-09 19:16:52
1876
1
原创 C++中的模板template
的判断完全在编译时完成,二者会生成两种不同的代码逻辑,减轻了运行时的开销;而普通参数是在运行时传递的,即它们的值只有在程序执行时才会确定。前者可用于生成不同的代码实例,从而提高性能、避免运行时开销。非类型形参与普通函数参数的区别:前者是在编译时确定的,允许将常量值、枚举值、指针等类型作为模板参数传递,并参与模板的实例化和代码生成,从而避免运行时的开销。
2024-10-07 16:36:43
566
原创 FlashAttention原理:从原始Attention到FlashAttention
以前的attention加速方法旨在减少attention的计算和内存需要,如sparse-attention、low-rank approximation等,但由于它们主要关注FLOP reduction,且倾向于忽略内存访问的开销,所以都没有达到wall-clock speedup。FlashAttention比普通attention的HBM(GPU high bandwidth memory)访问量更少,并适用于一系列SRAM大小。
2024-09-26 14:44:52
5153
2
原创 寒武纪MLU硬件--抽象硬件模型介绍
一些基本概念MLU Core:是寒武纪硬件的基本组成单元。每个MLU Core是具备完整计算、IO和控制功能的处理器核心,可独立完成一个计算任务,也可与其他MLU Core协作完成一个计算任务Cluster:每4个MLU Core构成一个Cluster,每个Cluster内还会包含一个额外的Memory Core和一块被Memory Core和4个MLU Core共享的SRAM(Shared RAM,共享存储单元)Memory Core:不能执行向量和张量计算指令,只能用于SRAM和DDR(Dou
2024-07-22 11:39:14
1904
原创 Cambricon BANG C编程入门
Cambricon BANG异构并行编程模型利用CPU和MLU协同计算。CPU作为主机侧的控制设备,用于完成复杂的控制和任务调度;设备侧的MLU则用于大规模并行计算和领域相关的计算任务。使用Cambricon BANG C编写程序时,需要同时编写主机侧和设备侧的代码。
2024-07-21 22:44:46
1222
原创 一些3D数据集的简单介绍
上图是Objaverse和ShapeNet数据集关于车辆、床铺、花瓶和书包这四类的物体模型对比,可见ShapeNet的模型相比起来就非常简单,因为Objaverse的对象来自许多3D内容创建平台,而ShapeNet都来自SketchUp(一个为简单的建筑建模而构建的3D建模平台)。91%的情况下Objaverse训练的模型生成的物体在外观上更具多样化。上图是Objaverse的作者,分别基于Objaverse的Bag分类和ShapeNet的bag分类,训练了一个模型,生成的3D物体效果。
2024-06-23 12:02:08
2597
原创 OpenCL
如上图,the host is going to call the host API to manage devices on the right. Devices are programmed using OpenCL C. Underneath all of these are models. These models are here to guide everything.
2024-05-13 15:20:08
895
原创 make、makefile、cmake、nmake
GCC:即GNU Compiler Collection(GNU编译器套件),可简单认为是编译器。它可以编译很多种编程语言(如C、C++、Objective-C、Fortran、Java等)。当程序只有一个源文件时,直接就可以用gcc命令编译它。但是若程序包含多个源文件,用gcc命令逐个去编译显然很容易混乱且工作量大,所以就出现了下面的make工具make:可以看作一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式,通过调用makefile文件中用户指定的命令来进行编译的链
2024-05-07 11:07:59
560
原创 程序的表示、转换与链接:三、运算电路基础
上面谈到高级语言程序中的各类运算,会被编译器转换为相应的运算指令,程序运行时,CPU执行这些指令,控制操作数在运算电路中被处理。由上可知,计算机中所有运算都是由相应的运算电路完成的,而这些运算电路是由基本的逻辑门电路实现的。如若实现从数据y中提取低位字节,并使高位字节为0的话,可用“&”实现:作“y&0x00FF”。该对什么样的操作数进行运算的呢?本节讲C语言程序中涉及的运算,如算术运算、按位运算、逻辑运算、移位运算等。本节主要介绍高级语言程序中的表达式、运算类指令和运算电路之间的关系。
2024-04-23 16:08:47
771
原创 程序的表示、转换与链接:一、计算机系统概述
语言处理系统提供语言处理程序+语言的运行时系统(运行时系统如库函数,调试、优化等功能)。系统软件又是在指令集体系结构的基础上构建起来的(操作系统最终是由指令实现的,而指令是按照一定规范编写的,这个规范就是指令集体系结构)。而指令集体系结构最终是由计算机硬件实现的,即指令集体系结构是计算机硬件的一种抽象,抽象成软件能够直接使用的一个接口,软件就可通过此接口来使用具体硬件了。冯·诺依曼结构最重要的思想是“存储程序”,即任何要计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。
2024-04-09 18:40:47
707
原创 CMU 10-414/714: Deep Learning Systems --hw4
通过之前作业中完成的所有组件,使用高性能的网络结构来解决一些问题。首先会增加一些新的算子(使用CPU/CUDA后端),然后完成卷积、以及用一个卷积神经网络来在CIFAR-10图像数据集上训练一个分类器。接着需要完成循环神经网络(带LSTM),并在Penn Treebank数据集上完成字符级的预测。
2024-03-21 16:20:44
1471
原创 CMU 10-414/714: Deep Learning Systems --hw3
EwiseSetitem(a, out, shape, strides, offset):这里a是紧凑型矩阵,out是一个非紧凑行矩阵,需要将a的各元素的值赋给out的指定位置上(根据shape、strides、offset确定)。只需要复用上面的代码,将mode改为INDEX_OUT,即调用ScalarSetitem(size, val, out, shape, strides, offset):out是一个非紧凑型子矩阵,根据shape、strides、offset在out的对应位置将值写为val,即
2024-03-19 10:03:44
1188
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅