mirror of
https://github.com/p-e-w/heretic.git
synced 2026-09-28 15:01:24 -07:00
Merge branch 'master' into e2e-tests
This commit is contained in:
+24
-4
@@ -5,6 +5,14 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# Ensure standard output/error use UTF-8 instead of system default charmap (e.g. cp1252 on Windows).
|
||||||
|
for stream in (sys.stdout, sys.stderr):
|
||||||
|
if (
|
||||||
|
hasattr(stream, "reconfigure")
|
||||||
|
and (getattr(stream, "encoding", "") or "").lower() != "utf-8"
|
||||||
|
):
|
||||||
|
stream.reconfigure(encoding="utf-8") # type: ignore
|
||||||
|
|
||||||
from .config import Settings
|
from .config import Settings
|
||||||
|
|
||||||
|
|
||||||
@@ -590,10 +598,22 @@ def run():
|
|||||||
# The parameter ranges are based on experiments with various models
|
# The parameter ranges are based on experiments with various models
|
||||||
# and much wider ranges. They are not set in stone and might have to be
|
# and much wider ranges. They are not set in stone and might have to be
|
||||||
# adjusted for future models.
|
# adjusted for future models.
|
||||||
max_weight = trial.suggest_float(
|
#
|
||||||
f"{component}.max_weight",
|
# The MLP gets a negative lower bound that is then clamped to 0, so the
|
||||||
0.8,
|
# optimizer can fully disable its ablation. The clamp puts a positive
|
||||||
1.5,
|
# probability mass on exactly 0 (the continuous sampler would otherwise
|
||||||
|
# reach 0 with probability zero). Ablating the MLP is often unnecessary for
|
||||||
|
# removing refusals and tends to damage model intelligence more than
|
||||||
|
# ablating the attention output, so on many models the optimum is to leave
|
||||||
|
# it (mostly) untouched. See issue #202.
|
||||||
|
max_weight_lower_bound = -0.25 if component == "mlp.down_proj" else 0.8
|
||||||
|
max_weight = max(
|
||||||
|
0.0,
|
||||||
|
trial.suggest_float(
|
||||||
|
f"{component}.max_weight",
|
||||||
|
max_weight_lower_bound,
|
||||||
|
1.5,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
max_weight_position = trial.suggest_float(
|
max_weight_position = trial.suggest_float(
|
||||||
f"{component}.max_weight_position",
|
f"{component}.max_weight_position",
|
||||||
|
|||||||
@@ -499,6 +499,12 @@ class Model:
|
|||||||
params.min_weight - params.max_weight
|
params.min_weight - params.max_weight
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# A weight of 0 disables this component's ablation. reset_model() has
|
||||||
|
# already left the adapter at identity, so abort before the otherwise
|
||||||
|
# wasteful decomposition (which would also be operating on a zero matrix).
|
||||||
|
if weight == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
if refusal_direction is None:
|
if refusal_direction is None:
|
||||||
# The index must be shifted by 1 because the first element
|
# The index must be shifted by 1 because the first element
|
||||||
# of refusal_directions is the direction for the embeddings.
|
# of refusal_directions is the direction for the embeddings.
|
||||||
|
|||||||
Reference in New Issue
Block a user