- 博客(252)
- 资源 (2)
- 收藏
- 关注
转载 hive中的lead和lag hive lead over
1.什么时候用开窗函数?开窗函数常结合聚合函数使用,一般来讲聚合后的行数要少于聚合前的行数,但是有时我们既想显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数2.窗口函数的语法:UDAF() over (PARTITION By col1,col2 order by col3 窗口子句(rows between … and …)) AS 列别名注意:PARTITION By后可跟多个字段,order By只跟一个字段。
2024-08-29 15:26:58 180
原创 RetroMAE-文本embedding算法
1)输入文本经掩码操作后由编码器(Encoder)映射为隐空间中的语义向量;而后解码器(Decoder)借助语义向量将另一段独立掩码的输入文本还原为原始的输入文本2)编码器的掩码率为15%-30%;解码器的掩码率为50%-70%3)Encoder是完整的BERT(12层,768隐层维度,CLS代表句子向量)。Decoder只有单层transformer,由于掩码率很高,会使得解码变得具有挑战性,可以迫使(decoder or encoder?
2024-06-03 11:24:22 400
原创 Linux上部署Jupyter notebook
在浏览器输入服务器的IP地址:9999,小编这里是34.81.173.39:9999,访问。
2024-04-24 13:49:13 590 1
翻译 2023:人工智能年
在今年的人工智能进步领域,取得了显着的进展,改进了现有技术,而不是引入类似于 前一年的 ChatGPT 或图像生成器的突破性创新。虽然没有令人惊叹的效果,而且真正的通用人工智能 (AGI) 还很遥远,但今年标志着之前的突破和即将到来的更强大的东西之间的中间阶段。
2024-03-28 13:52:47 56
原创 Attention 伪代码实现(pytorch 版)
Attention的原理已经有很多介绍了,实现的伪代码参照transformer,下面写了最简单的版本。
2024-03-27 21:31:07 428
转载 pytorch加速-SDPA缩放的点乘注意力
大部分情况下,我们不需要关注背后具体所选择的kernel,因为它背后已经做了最优的选择。V100卡属于sm 7.0,不支持Flash attention,但是我们可以看到默认采用的kernel是sdpd_mem_eff,它相比sdpd_math,速度提升非常明显(6ms vs 16ms)。这里我在batch_size=8下,跑出来运行时间大约是16s(A100下是6.6s),而只采用SDPA的版本运行时间约17s(A100下是7.3s),还是有一定的加速效果的(不过V100相比A100还是太弱了)。
2024-03-26 13:00:32 1461
转载 pytorch中的normalize应用
其中,p表示范数(这里是2范数),dim表示计算范数的维度(默认为1),eps是为了防止分母为0;方便记忆,二维矩阵中, dim=1表示在行内进行归一化,dim=0表示在列内进行归一化。这里作用的是维度0;维度0上只有1个通道,因此归一化之后全为1,即。代码中针对维度1进行归一化。维度1有3个通道,具体的计算细节为。在使用过程中,对dim的理解不够到位,来三个代码实验一下。
2023-11-07 10:13:50 330
翻译 梯度检测点和梯度累计
随着模型变得越来越大,GPU 内存不足而获取内存的情况变得越来越普遍。在本文中,我们将讨论一些通过梯度技巧提高训练过程效率并优化使用 GPU 内存的方法。
2023-09-28 15:42:53 574
原创 LLM 位置编码及外推
对原始2048窗口的模型使用FT,发现训练10000步的时候,只有效扩展到了2560的长度,但是使用PI,训练200步的时候就能扩展到我们想要的窗口长度(实验中有抖动,步数多了有效窗口长度反而变短)。RoPE的外推能力有限,理论上,使用2048长度训练的模型,如果输入3000的长度,它就无法使用0位置的信息,但可以使用2900位置的信息,但实际上,如果答案就在2900位置处,也无法得到。扩展后的模型在长文本任务中有较好的性能,困惑度没有上升,在原来长度的任务中困惑度略有下降(实验中下降了2%)。
2023-09-10 00:54:11 1518
转载 相对位置编码和绝对位置编码原理及源码
Bert问世后瞬间引爆了NLP领域,同时也让Transformer火了起来,Transformer中特征提取的方式不是传统的CNN,RNN等,而是用attention的形式,这种模式被用在AI的各个领域中,包括CV和语音等。
2023-09-03 14:52:58 1015
转载 tf.einsum—爱因斯坦求和约定
如果你像我一样,发现记住PyTorch/TensorFlow中那些计算点积、外积、转置、矩阵-向量乘法、矩阵-矩阵乘法的函数名字和签名很费劲,那么einsum记法就是我们的救星。此外,einsum这样的领域特定语言有时可以编译到高性能代码,事实上,PyTorch最近引入的能够自动生成GPU代码并为特定输入尺寸自动调整代码的张量理解(Tensor Comprehensions)就基于类似einsum的领域特定语言。
2023-09-03 13:58:51 122
原创 二叉树中的最大路径和-递归
路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。输入:root = [-10,9,20,null,null,15,7]给你一个二叉树的根节点 root ,返回其 最大路径和。输入:root = [1,2,3]路径和 是路径中各节点值的总和。
2023-08-24 23:40:36 579
原创 排序链表-归并排序
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 *104] 内−105105进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?
2023-08-24 23:37:51 110
转载 LRU 缓存
转:https://leetcode.cn/problems/lru-cache/solutions/259678/lruhuan-cun-ji-zhi-by-leetcode-solution/?请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。
2023-08-24 23:31:43 65
转载 目标和-动态规划
给你一个整数数组 nums 和一个整数 target。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例 1:输入:nums = [1,1,1,1,1], target = 3输出:5解释:一共有 5 种方法让最终目标和为 3。
2023-08-24 23:05:19 92
原创 回文子串-中心拓展
在实现的时候,我们需要处理一个问题,即如何有序地枚举所有可能的回文中心,我们需要考虑回文长度是奇数和回文长度是偶数的两种情况。枚举每一个可能的回文中心,然后用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。的时间检测当前的子串是否是回文,整个算法的时间复杂度是。解释:三个回文子串: “a”, “b”, “c”
2023-08-24 22:35:53 183
原创 路径总和 III-前缀和&dfs
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。
2023-08-24 01:22:29 129
原创 前 K 个高频元素-堆
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:105k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。
2023-08-23 23:44:47 88
转载 零钱兑换-动态规划
思想来自官方解答:https://leetcode.cn/problems/coin-change/solution/322-ling-qian-dui-huan-by-leetcode-solution/转移过来,再算上枚举的这枚硬币数量 1 的贡献,由于要硬币数量最少,所以。为前面能转移过来的状态的最小值加上枚举的硬币数量 1。代表第j 枚硬币的面值,即我们枚举最后一枚硬币的面值。我们可以看到问题的答案是通过子问题的最优解得到的。则,当 i=0 时无法用硬币组成,为 0。之前,我们已经计算出。
2023-08-23 01:19:11 63
原创 最佳买卖股票时机含冷冻期--动态规划
给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
2023-08-23 01:16:57 99
原创 最长递增子序列-动态规划
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。输入:nums = [10,9,2,5,3,7,101,18]你能将算法的时间复杂度降低到 O(n log(n)) 吗?输入:nums = [7,7,7,7,7,7,7]输入:nums = [0,1,0,3,2,3]
2023-08-23 00:24:23 83
原创 寻找重复数-快慢指针
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。示例 1:输入:nums = [1,3,4,2,2]输出:2示例 2:输入:nums = [3,1,3,4,2]输出:3提示:1 <= n <=105。
2023-08-23 00:15:13 123
原创 课程表-广度优先和图
用一个数组记录每门课程的先导课程,总有没有先导课程的课程,先访问这些课程,随后以这些课程为先导课程的课程减去访问过的先导课程,直到无法再访问课程,这时候根据访问过的课程数据是否是课程总数,决定结果。这里用到两个数据结构,edges变量存放以该课程为先导课程的课程,访问先导课程后就知道哪些课程要减去访问过的课程。输入:numCourses = 2, prerequisites = [[1,0],[0,1]]例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1。
2023-08-22 01:13:51 140
转载 单词拆分-动态规划
来自:https://leetcode.cn/problems/word-break/solution/dong-tai-gui-hua-ji-yi-hua-hui-su-zhu-xing-jie-shi/输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]解释: 返回 true 因为 “applepenapple” 可以由 “apple” “pen” “apple” 拼接成。注意,你可以重复使用字典中的单词。
2023-08-22 00:41:50 57
转载 最长连续序列-哈希
但仔细分析这个过程,我们会发现其中执行了很多不必要的枚举,如果已知有一个 x, x+1, x+2⋯,x+y 的连续序列,而我们却重新从 x+1,x+2 或者是 x+y 处开始尝试匹配,那么得到的结果肯定不会优于枚举 x 为起点的答案,因此我们在外层循环的时候碰到这种情况跳过即可。我们考虑枚举数组中的每个数 x,考虑以其为起点,不断尝试匹配 x+1, x+2,⋯ 是否存在,假设最长匹配到了 x+y,那么以 x 为起点的最长连续序列即为 x, x+1, x+2,…时间复杂度:O(n),其中 n 为数组的长度。
2023-08-22 00:17:13 52
原创 验证二叉搜索树
这个问题比较容易想到递归,但是递归过程中需要注意一个问题,不能只检查当前节点跟左右两个子节点的大小关系,因为BST要求当前节点的左子树的节点都要小于当前节点,这种可能出现不符合BST规则的地方主要存在于:遍历左子树的右子树时,需要右子树大于父节点同时小于爷爷节点;递归遍历是深度优先遍历,是自上而下的遍历,遇到不符合的节点会提前返回,而不往下继续遍历。输入:root = [5,1,4,null,null,3,6]解释:根节点的值是 5 ,但是右子节点的值是 4。输入:root = [2,1,3]
2023-08-21 22:21:13 113
原创 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]子数组是数组中的一个连续部分。输入:nums = [1]
2023-08-21 21:33:24 93
原创 组合总和-LeetCode
给你一个无重复元素的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的所有不同组合 ,并以列表形式返回。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。输出: [[2,2,2,2],[2,3,3],[3,5]]输出:[[2,2,3],[7]]
2023-08-21 00:01:01 225
原创 搜索旋转排序数组
nums[n-1], nums[0], nums[1], …例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。代码中的注释是关键,如果nums[mid]不等于target,那么mid两边一定有一边是有序而另一边一定无序,是否有序只要测试nums[left]与nums[mid](nums[mid]与nums[right]也行)就可以知道是否有序,当确定有序的一边后,就可以使用二分查找的条件了。输入:nums = [1], target = 0。
2023-08-20 17:50:23 293 1
原创 三数之和-LeetCode
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]
2023-08-20 15:49:27 237
原创 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”提示:s 仅由数字和英文字母组成最长回文子串有多种解法,这里仅仅介绍动态规划方法,其他方法可以看参考文章。
2023-08-20 15:47:56 78
原创 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
2023-08-20 15:45:27 66
原创 InstructGPT论文解读
上图可以看出InstructGPT(PPO-ptx)及变体(variant trained without pretraining mix)(PPO)显著优于GPT,1.3B的InstructGPT优于175B的GPT,SFT作为RLHF第一阶段的模型效果比GPT好。当然结果是由人来评价的。SFT: 对话数据微调基座语言模型,RM: 评分数据微调RM模型PPO: SFT模型生成答案,RM模型评分,PPO算法对SFT模型强化学习,进一步改进生成效果下图就是3个阶段。
2023-06-23 00:06:32 902
转载 【Conda】python进行离线环境迁移(用于配置相似的两台设备)
由于原本是迁移到服务器上,所以文中的另一台设备都是以“服务器”表示,实际上可以为另一台无法联网的电脑或者其他。将已有环境通过离线的方式移植到另一个(可能离线)的环境中。,其中最后的压缩包部分可以在前面加上路径,以防找不到;1、已经有环境的tar.gz了,以本次使用的环境。7、在新的环境中查看是否已经有之前的包。拷贝下来,准备上传到新的环境中。上传到服务器,知道压缩包的位置。3、在服务器创建一个新的环境。4、获取新创造的环境的路径,8、至此,环境已完成离线迁移。6、解压完成,激活新的环境。
2023-05-16 11:27:59 611 1
原创 深度学习--主动学习
在每轮迭代抽取单个信息量最大的样本加入训练集的情况下,每一轮迭代中模型都被重新训练,以新获得的知识去参与对样本不确定性的评估可以有效地避免数据冗余。由于基于流的算法不能对未标注样例逐一比较,需要对样例的相应评价指标设定阈值,当提交给选择引擎的样例评价指标超过阈值,则进行标注,但这种方法需要针对不同的任务进行调整,所以难以作为一种成熟的方法投入使用。基于流(stream-based)的主动学习中,未标记的样例按先后顺序逐个提交给选择引擎,由选择引擎决定是否标注当前提交的样例,如果不标注,则将其丢弃。
2023-05-16 11:22:52 1570
转载 ChatGPT 背后的外包工人:在美时薪超 15 美元,干的都是苦力活
据报道,上周一,肯尼亚内罗毕有 150 多名在 Facebook、TikTok 和 ChatGPT 从事人工智能工作的工人已成立工会,理由是他们认为工资低,而且工作对精神造成一定程度的伤害。“每隔 30 到 45 分钟,你就会接到一个新任务,要提出新的问题,”库马尔说,开始提示可能很简单,比如“法国的首都是哪里?“这是一个由人工智能创造的新工作岗位,”她补充说。这份工作不会给萨夫勒带来多少名声或财富,但在人工智能领域中,这是一份容易被忽视的重要工作,外包工人的劳动可能会在新技术前沿的魔力面前黯然失色。
2023-05-11 10:05:31 289
转载 focal loss
转:https://zhuanlan.zhihu.com/p/266023273# 背景Focal loss是最初由何恺明提出的,最初用于图像领域解决数据不平衡造成的模型性能问题。本文试图从交叉熵损失函数出发,分析数据不平衡问题,focal loss与交叉熵损失函数的对比,给出focal loss有效性的解释。
2023-04-25 01:46:20 621
原创 pytorch训练预测常用语句
三个函数的作用是先将梯度归零optimizer.zero_grad(),然后反向传播计算得到每个参数的梯度值loss.backward(),最后通过梯度下降执行一步参数更新optimizer.step(),通过梯度下降法来更新参数的值。时,并不是所有的操作都需要进行计算图的生成(计算过程的构建,以便梯度反向传播等操作)。而对于tensor的计算操作,默认是要进行计算图的构建的,使用。是python中上下文管理器,简单理解,当要进行固定的进入,返回操作时,可以将对应需要的操作,放在。
2023-04-23 01:35:47 187
原创 优化函数中的动量
Momentum是为解决SGD中出现的曲折摆动问题,如图所示,“之”字形的上下摆动,降低了损失函数到达最低点的速度。动量法几乎总是比标准的梯度下降法速度更快,算法的主要思想是计算梯度的指数加权平均,然后使用这个梯度来更新权重(上图中,你希望纵轴可以学习慢一点,不希望出现这些震荡,横轴上,你希望加快学习速度)可以理解为,在到达新的一点时,SGD会直接按照该点的负梯度方向去更新,而Momentum会考虑之前的梯度及方向,即动量。当动量momentum越大时,其转换为势能的能量也就越大,越易摆动,难以停下来。
2023-04-23 01:22:25 99
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人