NLP中常见的张量形状:输入token是(batch_size, sequence_length)的整数。嵌入是(batch_size, seq_len, model_dim)的浮点数。注意力权重是(batch_size, num_heads, seq_len, seq_len)。输出logits是(batch_size, seq_len, vocab_size)。理解这些形状能准确告诉你正在发生什么:注意力张量是N×N的,因为每个token关注每一个其他token。
关键的张量操作:matmul(矩阵乘法——神经网络中的核心计算),reshape(在不改变数据的情况下改变维度),transpose(交换维度),concat(沿某维度连接张量),slice(提取子张量),和broadcast(使不同形状的张量兼容以进行逐元素操作)。深度学习实际上就是一系列应用于张量的这些操作。
张量在GPU上计算,因为张量操作是大规模并行的:两个矩阵相乘涉及数百万个独立的乘加运算,可以同时执行。这就是GPU显存重要的原因——计算涉及的所有张量必须驻留在GPU内存中。当你用完显存时,是因为所有张量大小的总和(模型权重 + 激活值 + 梯度 + 优化器状态)超过了容量。梯度检查点、混合精度和模型分片等技术都是关于管理张量内存的。