From 49e813f83bfbde80849d532be9e5b1d4e65e2c13 Mon Sep 17 00:00:00 2001 From: Django-Jiang <43953876+Django-Jiang@users.noreply.github.com> Date: Fri, 6 Mar 2026 22:38:41 -0800 Subject: [PATCH] [fix] Fix numerical accuracy issue in dynamic sampling filter Use float64 instead of float32 and compare std against 1e-6 epsilon instead of exact 0.0 to avoid false negatives from floating-point precision errors. Made-with: Cursor --- slime/rollout/filter_hub/dynamic_sampling_filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slime/rollout/filter_hub/dynamic_sampling_filters.py b/slime/rollout/filter_hub/dynamic_sampling_filters.py index dc17422d68..9c579d0fda 100644 --- a/slime/rollout/filter_hub/dynamic_sampling_filters.py +++ b/slime/rollout/filter_hub/dynamic_sampling_filters.py @@ -8,7 +8,7 @@ def check_reward_nonzero_std(args, samples: list[Sample], **kwargs): rewards = [sample.get_reward_value(args) for sample in samples] - keep = torch.tensor(rewards, dtype=torch.float).std() > 0.0 + keep = torch.tensor(rewards, dtype=torch.float64).std() > 1e-6 return DynamicFilterOutput( keep=keep, reason=None if keep else f"zero_std_{round(rewards[0], 1)}",