本文基于阿里推荐 DIN 和 DIEN 代码,梳理了下深度学习一些概念,以及TensorFlow中的相关实现。
写深度学习网络代码,最大的挑战之一,尤其对新手来说,就是把所有的张量维度正确对齐。如果以前就有 TensorSensor 这个工具,相信我的头发一定比现在更浓密茂盛!
请注意,本文编写于 980 天前,最后修改于 980 天前,其中某些信息可能已经过时。
关于数据科学的一切都始于数据,数据以各种形式出现。数字、图像、文本、x射线、声音和视频记录只是数据源的一些例子。无论数据采用何种格式,都需要将其转换为一组待分析的数字。因此,有效地存储和修改数字数组在数据科学中至关重要。
解读: tensorflow中的tile()函数是用来对张量(Tensor)进行扩展的,其特点是对当前张量内的数据进行一定规则的复制。最终的输出张量维度不变。
本文是对 https://arxiv.org/abs/2108.13191 这篇论文进行解读,学习一下如何基于MLIR编译器基础设施生成高效的GPU代码。本文的阅读的先后顺序分别为:
今天是《MySQL核心知识》专栏的第3章,今天跟大家一起聊聊MySQL中的运算符。好了,开始今天的正题。
今天我们来讲讲 Python 里一个不为众人所知的运算符。你可能会觉得疑惑:还有我不知道的运算符?别急着下结论,先往下看看再说。
原文:https://github.com/vahidk/EffectivePyTorch
变量跨run()调用在图中维护状态。通过构造类变量的实例,可以向图中添加一个变量。Variable()构造函数需要变量的初值,它可以是任何类型和形状的张量。初值定义变量的类型和形状。构造完成后,变量的类型和形状是固定的。可以使用指定方法之一更改值。如果稍后要更改变量的形状,必须使用带有validate_shape=False的赋值Op。与任何张量一样,使用Variable()创建的变量可以用作图中其他Ops的输入。此外,张量类的所有重载运算符都被传递到变量上,因此您也可以通过对变量进行算术将节点添加到图中。
本文解析一下mlc-llm(https://github.com/mlc-ai/mlc-llm)对大模型推理的流程以及使用的图优化,算子优化策略。mlc-llm的模型部署流程可以查看官方文档:https://mlc.ai/mlc-llm/docs/ ,也可以参考我前段时间写的这篇MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s) 。
【一】tensorflow安装、常用python镜像源、tensorflow 深度学习强化学习教学
基于成本优化器CBO,常用的优化规则如子查询移除、相关性拆解、笛卡尔积加等值判断转换为内关联,谓词下推等等常用优化规则Rule。如谓词下推优化规则是将判断条件下推到数据源头,来加少中间结果,在成本优化器中,每个RelNode的中间结果大小即RowCount记录数大小决定一个RelNode的成本大小,(RowCount记录数是构成CostModel成本模型元素之一),此文讲述是HiveSort下推到HiveJoin下。也具有减少中间结果,降低一个RelNode关系表达式成本功能。在Hive中Sort操作符就代表在HQL中 SORT BY field LIMIT n 语句写法,上篇文章SortRemoveRule优化规则将由SortJoinReduceRule产生的SortLimit移除,详细可参考上篇文章Hive优化器原理与源码解析系列--优化规则SortRemoveRule(一)。
x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
本章是第八章的续集,涵盖了更多关于 Python 渐进类型系统的内容。主要议题包括:
MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案,实现当前业界最快运行速度。
1 AT&T 与INTEL的汇编语言语法的区别 1.1大小写 1.2操作数赋值方向 1.3前缀 1.4间接寻址语法 1.5后缀 1.6指令
在使用keras中的keras.backend.batch_dot和tf.matmul实现功能其实是一样的智能矩阵乘法,比如A,B,C,D,E,F,G,H,I,J,K,L都是二维矩阵,中间点表示矩阵乘法,AG 表示矩阵A 和G 矩阵乘法(A 的列维度等于G 行维度),WX=Z
今天,我们继续探索JS算法相关的知识点。我们来谈谈关于栈Stack的相关知识点和具体的算法。
TensorFlow 和其他数字计算库(如 numpy)之间最明显的区别在于 TensorFlow 中操作的是符号。这是一个强大的功能,这保证了 TensorFlow 可以做很多其他库(例如 numpy)不能完成的事情(例如自动区分)。这可能也是它更复杂的原因。今天我们来一步步探秘 TensorFlow,并为更有效地使用 TensorFlow 提供了一些指导方针和最佳实践。
注意: (1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。 (2)两个相乘的数必须有相同的数据类型,不然就会报错。
我们在上一节中看到,NumPy 的通用函数如何用于向量化操作,从而消除缓慢的 Python 循环。向量化操作的另一种方法是使用 NumPy 的广播功能。广播只是一组规则,用于在不同大小的数组上应用二元ufunc(例如,加法,减法,乘法等)。
本文介绍了关于神经网络模型压缩、加速和优化的一些研究进展。作者从模型压缩、加速和优化三个方面进行介绍,并分别列举了每项研究中涉及的技术、方法和案例。通过对比分析,指出各种方法的优缺点和适用场景。此外,作者还对未来的研究趋势进行了展望,认为将模型压缩与加速技术结合是未来研究热点。
神经网络中的参数是神经网络实现分类或回归问题中重要的部分。在tensorflow中,变量(tf.Variable)的作用就是保存和更新神经网络中的参数。和其他编程语言类似,tensorflow中的变量也需要指定初始值。因为在神经网络中,给参数赋予随机初始值最为常见,所以一般也使用随机数给tensorflow中的变量初始化。下面一段代码给出了一种在tensorflow中声明一个2*3矩阵变量的方法:
2023年很多mlsys工作都是基于Triton来完成或者提供了Triton实现版本,比如现在令人熟知的FlashAttention,大模型推理框架lightllm,diffusion第三方加速库stable-fast等灯,以及很多mlsys的paper也开始使用Triton来实现比如最近刚报道的这个新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度。当然笔者由于目前由于工作需要也需要用Triton,所以就有了这系列Triton学习笔记。本篇文章开始入门一下OpenAI的Triton,然后首先是从Triton介绍博客看起,然后对triton官方实现的vector_add和fused_softmax还有Matmul教程做一个阅读,也就是 https://triton-lang.org/main/getting-started/tutorials/ 这里的前三节,熟悉一下triton编写cuda kernel的语法。
【GiantPandaCV导语】本文致力于解决ViT在小型数据集上性能不够好的问题,这个问题非常实际,现实情况下如果确实没有大量数据集,同时也没有合适的预训练模型需要从头训练的时候,ViT架构性能是不如CNN架构的。这篇文章实际上并没有引入大量的卷积操作,通过修改patch size,以及使用SeqPool的方法就可以取得不错的成绩。
FlashAttention-2是一种从头编写的算法,可以加快注意力并减少其内存占用,且没有任何近似值。
广播(broadcasting)是通用函数另一个非常有用的功能,它能够操纵不同大小和形状的数组,这就是我们所说的广播。
张量流将稀疏张量表示为三个独立的稠密张量:指标、值和dense_shape。在Python中,为了便于使用,这三个张量被收集到一个SparseTensor类中。如果有单独的指标、值和dense_shape张量,在传递到下面的ops之前,将它们包装在sparse张量对象中。具体来说,稀疏张量稀疏张量(指标、值、dense_shape)由以下分量组成,其中N和ndims分别是稀疏张量中的值和维数:
文:陈之炎 本文约4400字,建议阅读10+分钟本文对BERT模型预训练任务的源代码进行了详细解读,在Eclipse开发环境里,对BERT 源代码的各实现步骤分步解析。 BERT模型架构是一种基于多层双向变换器(Transformers)的编码器架构,在tensor2tensor库框架下发布。由于在实现过程当中采用了Transformers,BERT模型的实现几乎与Transformers一样。 BERT预训练模型没有采用传统的从左到右或从右到左的单向语言模型进行预训练,而是采用从左到右和从右到左的双向语言
卷积在数据分析中无处不在。几十年来,它们已用于信号和图像处理。最近,它们已成为现代神经网络的重要组成部分。
广播(Broadcast)是 numpy 对不同维度(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
在【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一 中提到MLIR是通过Dialect来统一各种不同级别的IR,即负责定义各种Operation(算子)。然后对Dialect和Operation的定义又是通过TabelGen规范构造的,通过TableGen驱动MLIR的Operation定义也被称作ODS( Operation Definition Specification) 。我们目前只是简单认识了Toy Tutorials的Dialect和Operation是如何通过ODS定义的,但对ODS本身的语法以及一些限制都没有太多了解,这就导致在看一些相关工程的Operation定义时时常陷入迷惑,不知道某个字段是什么含义,或者说自定义Op的时候的应当如何声明操作数和Attr(举个例子,要将卷积的groups参数设置为可选的属性,应该怎么做)。
You cannot protect yourself from sadness without protecting yourself from happiness.
当我们在使用深度学习框架(如PyTorch或TensorFlow)时,经常会遇到各种错误信息。其中一个常见的错误是"invalid argument 0: Sizes of tensors must match except in dimension 0"。这个错误表示张量的尺寸不匹配,除了第0维之外。 出现这个错误的原因通常是因为我们在进行张量操作时,尺寸不一致导致的。下面我们将介绍一些解决这个问题的方法。
原文链接:https://tensorflow.google.cn/api_docs/python/tf/Graph?hl=en 一个图包含一组tf.Operation对象,表示计算单位;和tf.T
操作数栈(Operand Stack),也称为数据栈,是计算机体系结构中的一种数据结构,用于存储操作数和中间结果。它是在执行程序时用来存放参与运算的数据的临时存储区域。
显然,tf.multiply()表示点积,因此维度要一样。而tf.matmul()表示普通的矩阵乘法。
此篇文章讲解ProjectSortTransposeRule优化规则,Project投影操作(相当于HSQL中的Select操作)和Sort排序的调换顺序的优化规则。
本章开始了一段旅程,我们将深入研究我们在前几章中使用的模型的内部。我们将涵盖许多我们以前见过的相同内容,但这一次我们将更加密切地关注实现细节,而不那么密切地关注事物为什么是这样的实际问题。
曾几何时php一不小心闯入了我生活,php语法竟然和C语言那么莫名的相似,这是最初php给我的感受,当接触的php时间越来越多的时候,php也没有那般生涩难懂,但是偶尔一些的新的php 设计思想,也会思考许久,不知是从什么时候开始了php另一个世界。我想应该是从那次的类型转换开始的,"1e12"字符串类型在转化为数字类型变量时,不同的php版本下转换结果截然不同,有的就变成了数字1,有的却可以正常的识别为科学计数法10^12,在这个地方就已经悄悄的埋下了一枚种子。
来源丨https://zhuanlan.zhihu.com/p/645376942
Q:如何查看内置函数与方法? A:dir(builtins) 或者 dir(模块),以help查询具体方法的说明
JAVA 的主旨是其著名的 WOTA:“一次编写,随处运行”。为了应用它,Sun Microsystems 创建了 Java 虚拟机,这是对编译后的 Java 代码进行解释的底层操作系统的抽象。JVM是 JRE(Java 运行时环境)的核心组件,它是为运行 Java 代码而创建的,但现在被其他语言(Scala、Groovy、JRuby、Closure ......)使用。
本文作者:腾讯微信支付算法研究员 介绍 工业界通用推荐系统包括两个阶段的流程,匹配(match)和排序(rank)。在匹配的过程中主要是根据用户的一些兴趣点,找到可能感兴趣的潜在商品集。由于整个商品集的海量性,对实时访问的用户去计算他对全部商品的感兴趣程度是不实际的,所以需要预先根据一些兴趣、特征策略等来寻找用户可能感兴趣的潜在商品集,在此基础上,再根据特定的模型算法来进行商品集兴趣分深层排序,效果指标往往通过点击率(Click Trough Rate)、转化率、时长等来量化,所以 rank 阶段的主
DQL(Data Query Language),即数据查询语言,用来查询数据记录。DQL 基本结构由 SELECT FROM、WHERE、JOIN 等子句构成。
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。 1、简单的内嵌汇编 例:
导读:在 NIPS 2017 上,谷歌的 Vaswani 等人提出了 Transformer 模型。它利用自我注意(self-attention)来计算其输入和输出的表示,而不使用序列对齐 RNN。通过这种方式,它减少了将两个任意位置的信号关联到一个常数所需的操作数量,并实现了明显更好的并行化。在本文中,我们将重点讨论 Transformer 模型的主要架构和 Attention 的中心思想。
领取专属 10元无门槛券
手把手带您无忧上云