Spaces:
Sleeping
Sleeping
Download patch_view/legacy_patching.py from benhong/blt-patch-view: direct link, hf CLI and curl.
- Browser
- Download file 3.18 kB
-
https://huggingface.co/spaces/benhong/blt-patch-view/resolve/main/patch_view/legacy_patching.py
- Command line
-
hf download hf://spaces/benhong/blt-patch-view/patch_view/legacy_patching.py
-
curl -L -o legacy_patching.py https://huggingface.co/spaces/benhong/blt-patch-view/resolve/main/patch_view/legacy_patching.py
3.18 kB
| """Legacy single-constraint patching helpers kept for backward compatibility.""" | |
| from __future__ import annotations | |
| from typing import List | |
| import numpy as np | |
| def patch_global_threshold(metric: np.ndarray, threshold: float) -> List[List[int]]: | |
| """ | |
| Patch when metric exceeds threshold. | |
| Args: | |
| metric: Entropy or perplexity values | |
| threshold: Threshold value | |
| Returns: | |
| List of patches (each patch is list of token indices) | |
| """ | |
| patches = [] | |
| current_patch = [] | |
| for i, value in enumerate(metric): | |
| current_patch.append(i) | |
| if value > threshold: | |
| patches.append(current_patch) | |
| current_patch = [] | |
| if current_patch: | |
| patches.append(current_patch) | |
| return patches | |
| def patch_additive_monotonic(metric: np.ndarray, threshold: float) -> List[List[int]]: | |
| """Patch when metric increase exceeds threshold.""" | |
| patches = [] | |
| current_patch = [0] | |
| for i in range(1, len(metric)): | |
| delta = metric[i] - metric[i - 1] | |
| if delta > threshold: | |
| patches.append(current_patch) | |
| current_patch = [i] | |
| else: | |
| current_patch.append(i) | |
| if current_patch: | |
| patches.append(current_patch) | |
| return patches | |
| def patch_multiplicative_monotonic(metric: np.ndarray, threshold: float) -> List[List[int]]: | |
| """Patch when metric ratio exceeds threshold.""" | |
| patches = [] | |
| current_patch = [0] | |
| for i in range(1, len(metric)): | |
| if metric[i - 1] > 1e-6: | |
| ratio = metric[i] / metric[i - 1] | |
| else: | |
| ratio = 1.0 | |
| if ratio > threshold: | |
| patches.append(current_patch) | |
| current_patch = [i] | |
| else: | |
| current_patch.append(i) | |
| if current_patch: | |
| patches.append(current_patch) | |
| return patches | |
| def patch_additive_min(metric: np.ndarray, threshold: float) -> List[List[int]]: | |
| """Patch when metric increase from minimum in current patch exceeds threshold.""" | |
| patches = [] | |
| current_patch = [0] | |
| patch_min = metric[0] | |
| for i in range(1, len(metric)): | |
| delta = metric[i] - patch_min | |
| if delta > threshold: | |
| patches.append(current_patch) | |
| current_patch = [i] | |
| patch_min = metric[i] | |
| else: | |
| current_patch.append(i) | |
| patch_min = min(patch_min, metric[i]) | |
| if current_patch: | |
| patches.append(current_patch) | |
| return patches | |
| def patch_multiplicative_min(metric: np.ndarray, threshold: float) -> List[List[int]]: | |
| """Patch when metric ratio to minimum in current patch exceeds threshold.""" | |
| patches = [] | |
| current_patch = [0] | |
| patch_min = metric[0] | |
| for i in range(1, len(metric)): | |
| if patch_min > 1e-6: | |
| ratio = metric[i] / patch_min | |
| else: | |
| ratio = 1.0 | |
| if ratio > threshold: | |
| patches.append(current_patch) | |
| current_patch = [i] | |
| patch_min = metric[i] | |
| else: | |
| current_patch.append(i) | |
| patch_min = min(patch_min, metric[i]) | |
| if current_patch: | |
| patches.append(current_patch) | |
| return patches | |