Evaluate perplexity over packed rows. Per batch (all rows are the same length, so the stock unpadded forward applies): f32 logits over batch[:, :-1], per-token CE vs batch[:, 1:], every position counted.
Optional
Evaluate perplexity over packed rows. Per batch (all rows are the same length, so the stock unpadded forward applies): f32 logits over batch[:, :-1], per-token CE vs batch[:, 1:], every position counted.