- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 Llama架构及代码详解
Llama的框架图如图:源码中含有大量分布式训练相关的代码,读起来比较晦涩难懂,所以我们对llama自顶向下进行了解析及复现,我们对其划分成四层,分别是顶层、上层、下层、底层,如下:由上图可知,Llama整体是由1个embedding层,n个transformer层,和1个RMSNorm层组成的,所以顶层代码如下:顶层上层我们首先进行RMSNorm的复现然后对Transformer进行复现,在Transformer中,Transformer包括两个RMSNorm层,一个多头attention层,
2024-11-11 18:08:57
956
原创 torch.nn.**和torch.nn.functional.**的区别
torch.nn.**是一个继承了torch.nn.Module的类,使用前必须先构造对象,然后再调用。如果直接使用则会报错。torch.nn.functional.**是一个纯数学函数,可以直接使用。
2024-11-11 17:15:49
516
原创 Llama旋转位置编码代码实现及详解
中介绍了旋转位置编码(RoPE)的特点和优势,这种输入长度动态可变的优势使得在Llama编码时,不需要掩码将多余的嵌入掩住。为了详细了解RoPE是如何实现的,接下来我们使用代码一步一步的来亲自实现RoPE编码!得到了角度theta之后,我们就可以在复平面中对编码进行旋转了,在复平面中根据公式(cos。然后我们对每个token中每个元素对计算要旋转的角度。y) j 可以实现位置的旋转了。
2024-11-10 18:44:25
674
原创 由于防火墙原因,下载Llama模型失败怎么办?
国内由于防火墙下载python包或者大语言模型都比较麻烦,如果只有一个Ghelper(只有浏览器可以翻墙,bash翻不了)有什么可以在不购买vpn的方式下,有一个简单方便的方法将这些资源从外网上下载下来呢?
2024-11-05 20:13:47
477
原创 Pytorch函数中的dim应该如何选择
每次进行相关的运算都要去搜一下这个函数的dim应该是怎么设置,dim=0的时候,是按照哪一维度来操作的,dim=1的时候,又是按照哪一维度来操作的,这就比较繁琐,在此总结一个dim选择的统一方法。Pytorch中存在大量的矩阵操作,都需要指定操作维度才能正确的计算,像矩阵的转置permute,矩阵的归一化Softmax,矩阵按照某一维度进行求平均/求和等。例如:矩阵的softmax操作。例如:矩阵的sum操作。
2024-11-05 17:36:22
349
原创 常见的Pytorch中的激活函数
激活函数有两类,第一类是对单个元素进行操作的,,例如ReLU,LeakyReLU,Tanh,Sigmoid。第二类是对某组元素进行放缩,使该组元素和为1,,例如Softmax。
2024-11-05 17:07:37
210
原创 有技巧的增加训练数据可以提高模型的性能,但是解决不了模型的短路问题!
前面我们发现了图片编码器是影响多模态模型的瓶颈和训练样本不足导致模型不能捕捉到主要特征这两个结论,现在我们探究一下,如何将训练样本进行扩充来能提高模型的性能在训练样本不足导致模型不能捕捉到主要特征文章中,我们已经知道红色框的图片预测成了有线鼠标,而它们的真值是无线鼠标,这些图片是预测错误的,在此我们探究如何通过扩充数据集的方式来提高模型的性能,在此我们挑选 图片7 来进行研究。图片7中存在两个目标,一是手,二是无线鼠标的侧视图。所以在扩充数据集的时候有三种方法:1)在训练集中增加识别种类,引入手这一类别;
2024-11-04 16:46:08
252
原创 llama中旋转位置编码与Transformer和BERT中位置编码的比较
在llama中,为了对任意长度文本进行编码,而不是只能处理限定长度内的文本,在进行位置编码时摈弃了BERT这种训练的方式,而是采用Transformer那种灵活的位置编码形式,并在此基础上进行了优化,使用旋转位置编码RoPE来对词嵌入进行空间上的旋转,如下图。在BERT中,它的位置编码与词嵌入向量一样都是随机生成且可训练的,位置编码向量的大小为[seq_length, dim],其中seq_length是序列长度,dim是向量维度,源码如下。这样在有充足的训练数据下,
2024-10-31 11:42:01
243
原创 大模型llama本地部署安装
(colab为我们免费提供了cuda等gpu环境以及pytorch等python环境)上使用免费的T4GPU进行部署。首先在llama3/llama/model.py 文件中的第33行增加以下代码,否则会报错。最后选择一个权重模型并输入邮件里面的url进行下载。注册成功后,会收到包含下载url链接的邮件。的网站,并注册账号来下载训练好的模型权重。1、从github上下载llama源码。3、下载llama源码所需要的依赖包。然后查看可以下载的权重模型。2、进入源码主文件夹。首先安装相关的依赖包。
2024-10-30 16:32:07
722
原创 LeetCode之二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
2024-10-14 20:02:40
224
1
原创 邹磊教授的Ganswer问答系统架构
邹磊教授的问答系统有两个阶段,第一个阶段是线下准备阶段,第二个是线上查询阶段。1、线下准备阶段构造语义词典供线上查询阶段使用:就是查找知识图谱中某个关系的规则集,不过直接通过dfs查找的规则集可能不会正确的代表这个关系的规则,如:孙子的一个关系集(儿子,儿子)(后代,后代),其中(后代,后代)就不能正确代表他的规则,解决的方法是过滤掉那些在别的关系规则集中也存在的规则。例如:孙子[(儿子,儿子)(后代,后代)],孙女[(儿子,女儿)(后代,后代)]。这两个关系都会过滤掉(后代,后代)这个规则,得到的规
2020-08-14 17:48:16
875
1
原创 docker初体验
docker就是一个可以移动,粘贴复制的linux系统,我们可以在这个系统中做任何配置,现在只是了解了一下docker,并没有应用到项目中去。docker中镜像相当于java中的一个类docker中容器相当于java中的一个实例,是docker运行的基本单元。docker学习连接如下:docker菜鸟教程大佬博客...
2020-08-12 21:59:13
165
原创 python实现word2vec(不使用框架)
参考两篇博客基础知识源码解析import timeimport numpy as npimport mathwordHash = {}wordNum = 0window = 2words = []vecSize = 100u = 0.1t = 500#将单词存入mapdef read_file(): global wordNum,wordHash,words f =open("test.txt",encoding="utf-8") sentences
2020-08-08 20:54:28
265
原创 Pytorch CNN手写数字识别
代码如下import osimport torchimport torch.nn as nnimport torch.nn.functional as Fimport numpy as npimport matplotlib.image as mpimgfrom torch import optim#读入图片def readImg(path): img1 = mpimg.imread(path) return img1#定义CNN网络class Net(nn.Modu
2020-07-17 22:23:30
227
原创 Hadoop,zookeeper,hbase之间的关系
hbase篇Hbase是一个面向列族的存储器,即Hbase在存储的时候将所有的列族成员都一起放在HDFS中存储,存储图片的数据比较大,图片的元数据比较少,所以分成两个列族来储存。上图为Hbase数据模型,键值都是序列化的二进制,并且行根据键的二进制排序。区域是hbase在集群上分布数据的最小单位(区域就是一个表的连续n行)和HDFS类似,Hbase有一个master和n个regionserver,Hbase的master把区域分给regionserver,恢复regionserver的故障,regio
2020-07-17 15:03:38
1098
原创 Hadoop,zookeeper,hbase之间的关系
zookeeper篇zookeeper特性一个客户端做出修改,所有客户端可以立即发现修改内容初识zookeeperzookeeper的一个应用场景:有一组服务器提供某种服务,我们希望客户端都能找到其中一台服务器,然后我们需要维护这组服务器的成员列表,这个列表不能在某个服务器上,来避免单点故障,并且如果某个服务器出现故障,那么就需要从列表中删除改节点。这个场景不是一个被动的分布式结构,它能够在某个外部事件发生主动的修改数据结构,zookeeper提供的就是这种服务。下面介绍它是如何实现这种应用的。z
2020-07-17 10:37:16
1135
原创 hadoop,zookeeper,hbase之间的关系
Hadoop篇hadoop是分布式系统的一个文件系统,主要有3部分分别是hdfs,yarn,mapreducehdfshdfs是hadoop管理储存的实现。hdfs概念数据块:就像单机系统(一台PC)上的数据块一样,提供磁盘读写的最小单位,也就是磁盘读某个数据时会把改块的数据一次性全部读入。不过单机系统上的数据块大小为512字节,hdfs数据块大小为128MB。namenode和datanode:分布式系统储存和单机储存另一个不同就是,读取/写入某个数据时,分布式系统需要确定这个数据放在哪个主机
2020-07-16 16:53:55
1990
原创 Gremlin学习总结
Gremlin机制及语句分类Gremlin单步的输入是一个Traversal类,输出也是一个Traversal类,这样以流式进行传播。相关遍历对象则储存在这个类中,当进行下一个单步之前,大部分情况(例如下面的aggregate单步是一个例外)是只要相关的对象已经得到(没有都得到,因为从内存里面读数据是有时间的,所以采用并行的方式进行遍历),就进行下一个单步。单步有5类,但主要用到的只有4类,分别是map类,filter类,sideEffect类,branch类。map的函数常用的是 value(),用于
2020-06-25 19:35:04
1619
原创 hugeGraph配置文档之zookeeper,hbase,hugeGraph配置
一、zookeeper配置配置链接二、hbase配置配置链接注意配置过程中的JAVA_HOME,HADOOP_HOME是对应的JDK和hadoop目录,hbase只在master结点启动即可。三、hugeGraph配置官方文档注意hugegraph.properties中‘hbase’字母打错进行更改。...
2020-06-17 23:09:33
825
原创 hugeGraph配置文档之hadoop配置
一 JDK1.8下载及配置1 卸载自带版本JDKcentos7自带JDK,但它的JDK是阉割版的,并不能满足后续工作的需要,我们需要先将这些JDK删除,然后下载JDK1.8.查看JDK版本 rpm -qa | grep java若显示下面则需要卸载rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.
2020-06-17 22:58:54
263
原创 hugeGraph配置文档之基础网络配置
虚拟机网络配置静态IP的设置及主机名到IP的映射一、打开虚拟机的设置页面,设置虚拟机桥接模式如图:选择桥接模式(复制物理网络连接可选)二、桥接模式配置VMware虚拟机网络1 查看宿主机网络信息:ipconfig /all2. 配置CentOS7 ,将主机中对应的信息填入下面对应的位置,静态ip,子网掩码, 默认网关, DNSvi /etc/sysconfig/network-scripts/ifcfg-eno33说明: ifcfg-eno33文件每个人可能不同TYPE=Ether
2020-06-17 22:16:00
700
原创 ProjE初步心得
ProjEProjE是KGC中实体嵌入的一种尝试。它和TransE的主要区别如下:1、TransE是直接将训练的实体/关系向量进行相加运算,是在同一个空间里面。而ProjE则是将训练的实体/关系向量先分别投影到新的各自空间,然后进行相加运算在加上一个新的偏移组合向量。即De和Dr都是kk的对角矩阵来保证空间的正定,矩阵左乘可以投影到新空间,此时的e/r都是列向量,bc也是k维列向量,这些参...
2020-02-04 11:35:55
842
原创 ccf_数据中心spfa
ccf数据中心spfa我也是第一次考ccf,之前不会算法,考试的时候看这个题,思路就是求各个点到root的所有路径中最小的权值(每条路径最小的权值为这条路径所有边中的最大边值),这个题是最短路径的一个变形,最为一个小渣渣的我,只会spaf这一个算法,下面就是详细代码#include<iostream>#include<vector>#include<stri...
2019-01-22 10:23:42
540
1
中文文本分词PPT(详细讲解HMM)
2020-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人