Many prediction tasks evaluate a trained tree ensemble on groups of rows that share feature values: discrete-time survival models expand each patient into
G time steps, click-through-rate models score every item in a search session, and scenario analyses vary a few inputs while holding the rest fixed. Standard inference treats each row independently and ignores this input-side correlation. We present TreeWalker, which instantiates partial evaluation for grouped tree-ensemble inference: constant features are static, varying features dynamic. TreeWalker walks each tree once per group, partitions a row bitmask at varying splits, and skips empty subtrees via an unsplit shortcut. It reads standard LightGBM and XGBoost models; training is unchanged. We prove a structural work decomposition: per-tree work splits into the constant-projected subtree size
∣Tc∣,
G leaf writes, and a predicate-mask provisioning cost
Q. For the trace evaluator, per-row work approaches
(dv+1)/(d+1) as
G→∞, giving asymptotic speedup
1/(1−ρˉG). On Intel, TreeWalker is
∼3× faster than a row-independent traversal at the reference model size (
T=500,
L=8;
G=16 for SUPPORT/FLCHAIN and empirical groups for Expedia) and
7.7--
9.1× faster at
G=128 on the survival datasets; on Arm,
2.5--
2.9× and
5.5--
6.0×. On a scenario-analysis benchmark it is faster in all
16 configurations on both machines. For f64 models, outputs match treelite GTIL up to tree-ordering roundoff; for f32 models, TreeWalker's f64 leaf accumulation is closer than native f32 to an exactly rounded reference on every audited row.