Download tests/test_distillation_models.py from RL-MIND/Harness-Continual-Learning: direct link, hf CLI and curl.
- Browser
- Download file 3.19 kB
-
https://huggingface.co/RL-MIND/Harness-Continual-Learning/resolve/main/tests/test_distillation_models.py
- Command line
-
hf download hf://RL-MIND/Harness-Continual-Learning/tests/test_distillation_models.py
-
curl -L -o test_distillation_models.py https://huggingface.co/RL-MIND/Harness-Continual-Learning/resolve/main/tests/test_distillation_models.py
3.19 kB
| from __future__ import annotations | |
| import tempfile | |
| import unittest | |
| from pathlib import Path | |
| from hcl.evaluator import EvaluationRecorder | |
| from hcl.memory import MemoryConfig | |
| from hcl.optimizer import Optimizer | |
| from hcl.pipeline import HCLPipeline | |
| class _Model: | |
| def generate(self, prompt: str, *, state: dict[str, object]) -> str: | |
| del prompt, state | |
| return "{}" | |
| class DistillationModelRoutingTest(unittest.TestCase): | |
| def _pipeline( | |
| self, | |
| directory: str, | |
| *, | |
| model: _Model, | |
| judge_model: _Model | None = None, | |
| selection_model: _Model | None = None, | |
| memory_model: _Model | None = None, | |
| judge_memory: bool = False, | |
| ) -> HCLPipeline: | |
| return HCLPipeline( | |
| model, | |
| judge_model=judge_model, | |
| selection_model=selection_model, | |
| memory_model=memory_model, | |
| judge_memory=judge_memory, | |
| evaluation_recorder=EvaluationRecorder(Path(directory) / "evaluator"), | |
| optimizer=Optimizer(record_dir=Path(directory) / "optimizer", candidate_count=0), | |
| memory_config=MemoryConfig(enabled=False, record_dir=Path(directory) / "memory"), | |
| ) | |
| def test_judge_defaults_to_main_model(self) -> None: | |
| with tempfile.TemporaryDirectory() as directory: | |
| model = _Model() | |
| pipeline = self._pipeline(directory, model=model) | |
| self.assertIs(pipeline.judge_model, model) | |
| self.assertIs(pipeline.selection_model, model) | |
| self.assertIs(pipeline.memory_model, model) | |
| self.assertIs(pipeline.memory.model, model) | |
| def test_partial_distillation_keeps_memory_on_main_model(self) -> None: | |
| with tempfile.TemporaryDirectory() as directory: | |
| model = _Model() | |
| judge = _Model() | |
| pipeline = self._pipeline(directory, model=model, judge_model=judge) | |
| self.assertIs(pipeline.judge_model, judge) | |
| self.assertIs(pipeline.memory.model, model) | |
| def test_full_distillation_routes_memory_to_judge(self) -> None: | |
| with tempfile.TemporaryDirectory() as directory: | |
| model = _Model() | |
| judge = _Model() | |
| pipeline = self._pipeline( | |
| directory, | |
| model=model, | |
| judge_model=judge, | |
| judge_memory=True, | |
| ) | |
| self.assertIs(pipeline.judge_model, judge) | |
| self.assertIs(pipeline.memory.model, judge) | |
| def test_online_teacher_routes_selection_and_memory_but_not_final_or_optimizer(self) -> None: | |
| with tempfile.TemporaryDirectory() as directory: | |
| model = _Model() | |
| teacher = _Model() | |
| pipeline = self._pipeline( | |
| directory, | |
| model=model, | |
| selection_model=teacher, | |
| memory_model=teacher, | |
| ) | |
| self.assertIs(pipeline.model, model) | |
| self.assertIs(pipeline.judge_model, model) | |
| self.assertIs(pipeline.selection_model, teacher) | |
| self.assertIs(pipeline.memory_model, teacher) | |
| self.assertIs(pipeline.memory.model, teacher) | |
| if __name__ == "__main__": | |
| unittest.main() | |