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 VRAM 很重要——所有參與計算的張量必須駐留在 GPU 記憶體中。當你的 VRAM 用完時,是因為所有張量大小的總和(模型權重 + 激活值 + 梯度 + 最佳化器狀態)超過了容量。梯度檢查點、混合精度和模型分片等技術都是關於管理張量記憶體。