KVCache(this.nHeads, this.headDim) : kHeads = List.generate(nHeads, (_) => Tensor2D.zeros(0, headDim)), vHeads = List.generate(nHeads, (_) => Tensor2D.zeros(0, headDim));