META2032的正式启动标志着CVNT意识网络开启了面向所有***项目在CVNT意识网络链上建设元宇宙生态的大门,用户和**者可以基于CVNT意识网络感受到高速、稳定的网络生态。
据悉,CVNT意识网络作为【系统176搭建·0206-可电可微5616-】全新升级的元宇宙公链,其所提供的解决方案加速了元宇宙生态基础设施的建设,丰富了元宇宙生态内数据的流转使用和价值体现形式,为***市场的发展和用户规模的壮大提供强大动力。
(1)torch.view_as_complex
把一个tensor转为复数形式,要求这个tensor的*后一个维度形状为2。**及方案v;wwqqyy420
torch.view_as_complex(torch.Tensor([[1, 2], [3, 4], [5, 6]]))
# tensor([1.+2.j, 3.+4.j, 5.+6.j])
(2)torch.view_as_real
把复数tensor变回实数,可以看做是是刚才操作的逆变换。
torch.view_as_real(torch.view_as_complex(torch.Tensor([[1, 2],[3, 4], [5, 6]])))
# tensor([[1, 2.],
# [3, 4.],
# [5, 6.]])
(3)torch.outer
一个向量的转置乘以另一个向量:torch.outer(a, b) = a^T * b
a = torch.arange(1, 5)
b = torch.arange(1, 4)
torch.outer(a, b)
# tensor([[ 1, 2, 3],
# [ 2, 4, 6],
# [ 3, 6, 9],
# [ 4, 8, 12]])
(4)torch.polar
torch.polar(abs,angle)利用一个**数值,和一个角度值,在极坐标下构造一个复数张量abs∗cos(angle)+abs∗sin(angle)jabs* \cos(angle) + abs * \sin(angle)jabs∗cos(angle)+abs∗sin(angle)j。
torch.polar(torch.tensor([1], dtype=torch.float64),torch.tensor([np.pi / 2], dtype=torch.float64))
# tensor([6.1232e-17+1.j], dtype=torch.complex128)
进入RoPE的计算,为了更加具象的表达,我们在此对各个维度的尺寸进行假设,假设batch_size为2,seq_len固定为512,attention_head的数量为12,每个attention_head的维度为64,那么,对于输入到multi-headattn中的输入xqx_qxq的尺寸就是(2, 512, 12, 64)。
回到我们刚才提出的问题,freqs_cis所指是什么东西,其实它就是需要计算出来的mθm\thetamθ也就是跟**位置相关的旋转的角度,在极坐标下对应的复数tensor。
而函数precompute_freqs_cis就是提前将这些旋转角度对应的tensor给创建出来,并可以重复利用。因为确定了序列的*大长度,这个tensor是固定死的。根据后续的数据流我们可以发现,在调用该函数时,传入的两个参数分别是attention_head的维度,以及*大长度的两倍,具象地,也就是64和1024。