diff --git a/predtuner/approxes/__init__.py b/predtuner/approxes/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a254d47f70fe89c5643e5985dd52d55f47dfd33
--- /dev/null
+++ b/predtuner/approxes/__init__.py
@@ -0,0 +1 @@
+from .approxes import get_knobs_from_file
diff --git a/predtuner/approxes/approxes.py b/predtuner/approxes/approxes.py
index 217e25ea5b6ccfd9b692292598e517fd7af179d6..6f4c9c361f367e28a1c092e9cd35235021636809 100644
--- a/predtuner/approxes/approxes.py
+++ b/predtuner/approxes/approxes.py
@@ -1,11 +1,14 @@
 """Approximation techniques for torch.nn layers."""
-from typing import Iterable, List, Optional, Type
+from pathlib import Path
+from typing import Dict, Iterable, List, Optional, Set, Type, Union
 
 import torch
 from torch.nn import Conv2d, Linear, Module, Parameter
 
-from ._copy import module_only_deepcopy
 from ..torchapp import TorchApproxKnob
+from ._copy import module_only_deepcopy
+
+PathLike = Union[Path, str]
 
 
 def _interpolate_first_dim(tensor: torch.Tensor, interp_indices: Iterable[int]):
@@ -370,3 +373,42 @@ class FP16Approx(TorchApproxKnob):
 
     def apply(self, module: Module) -> FP16ApproxModule:
         return self.FP16ApproxModule(module)
+
+
+default_name_to_class = {
+    k.__name__: k
+    for k in [FP16Approx, PromiseSim, PerforateConv2dStride, Conv2dSampling]
+}
+default_knob_file = Path(__file__).parent / "default_approx_params.json"
+
+
+def get_knobs_from_file(
+    filepath: PathLike = default_knob_file,
+    extra_name_to_class: Dict[str, Type[TorchApproxKnob]] = None,
+) -> Set[TorchApproxKnob]:
+    import json
+
+    extra_name_to_class = extra_name_to_class or {}
+    default_names = set(list(default_name_to_class))
+    extra_names = set(list(extra_name_to_class))
+    if default_names.intersection(extra_names):
+        raise ValueError(
+            f"Provided extra class names clash with default class names; \n"
+            f"Default: {default_names}\n"
+            f"Extra: {extra_names}"
+        )
+    name_to_class = {**default_name_to_class, **extra_name_to_class}
+    filepath = Path(filepath)
+    with filepath.open() as f:
+        knobs_json = json.load(f)
+    ret = set()
+    for knob_dict in knobs_json:
+        if not isinstance(knob_dict, dict):
+            raise ValueError(f"JSON file for knob initialization contains non-dict")
+        # 'class' is not a valid argument name in Python, so we can use this key.
+        class_name = knob_dict.pop("class")
+        if class_name not in name_to_class:
+            raise KeyError(f"{class_name} not found among knob class names")
+        class_ty = name_to_class[class_name]
+        ret.add(class_ty(**knob_dict))
+    return ret
diff --git a/predtuner/approxes/default_approx_params.json b/predtuner/approxes/default_approx_params.json
new file mode 100644
index 0000000000000000000000000000000000000000..5cb5fb53c972746e45f262c44e2a9d21f7b1fa7f
--- /dev/null
+++ b/predtuner/approxes/default_approx_params.json
@@ -0,0 +1,472 @@
+[{
+    "class": "FP16Approx",
+    "name": "12",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": false,
+    "stride": 2,
+    "offset": 0,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "121",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": false,
+    "stride": 2,
+    "offset": 1,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "122",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": true,
+    "stride": 2,
+    "offset": 0,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "123",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": true,
+    "stride": 2,
+    "offset": 1,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "124",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": false,
+    "stride": 3,
+    "offset": 0,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "125",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": false,
+    "stride": 3,
+    "offset": 1,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "126",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": false,
+    "stride": 3,
+    "offset": 2,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "127",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": true,
+    "stride": 3,
+    "offset": 0,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "128",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": true,
+    "stride": 3,
+    "offset": 1,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "129",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": true,
+    "stride": 3,
+    "offset": 2,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "130",
+    "exp_speedup": 1.5
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 0,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "131",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 1,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "132",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 2,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "133",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 3,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "134",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 0,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "135",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 1,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "136",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 2,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "137",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 3,
+    "use_fp16": false,
+    "class": "PerforateConv2dStride",
+    "name": "138",
+    "exp_speedup": 1.33
+}, {
+    "direction_is_row": false,
+    "stride": 2,
+    "offset": 0,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "151",
+    "exp_speedup": 3.0
+}, {
+    "direction_is_row": false,
+    "stride": 2,
+    "offset": 1,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "152",
+    "exp_speedup": 3.0
+}, {
+    "direction_is_row": true,
+    "stride": 2,
+    "offset": 0,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "153",
+    "exp_speedup": 3.0
+}, {
+    "direction_is_row": true,
+    "stride": 2,
+    "offset": 1,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "154",
+    "exp_speedup": 3.0
+}, {
+    "direction_is_row": false,
+    "stride": 3,
+    "offset": 0,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "155",
+    "exp_speedup": 2.25
+}, {
+    "direction_is_row": false,
+    "stride": 3,
+    "offset": 1,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "156",
+    "exp_speedup": 2.25
+}, {
+    "direction_is_row": false,
+    "stride": 3,
+    "offset": 2,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "157",
+    "exp_speedup": 2.25
+}, {
+    "direction_is_row": true,
+    "stride": 3,
+    "offset": 0,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "158",
+    "exp_speedup": 2.25
+}, {
+    "direction_is_row": true,
+    "stride": 3,
+    "offset": 1,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "159",
+    "exp_speedup": 2.25
+}, {
+    "direction_is_row": true,
+    "stride": 3,
+    "offset": 2,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "160",
+    "exp_speedup": 2.25
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 0,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "161",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 1,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "162",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 2,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "163",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": false,
+    "stride": 4,
+    "offset": 3,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "164",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 0,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "165",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 1,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "166",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 2,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "167",
+    "exp_speedup": 2.0
+}, {
+    "direction_is_row": true,
+    "stride": 4,
+    "offset": 3,
+    "use_fp16": true,
+    "class": "PerforateConv2dStride",
+    "name": "168",
+    "exp_speedup": 2.0
+}, {
+    "skip_every": 2,
+    "skip_offset": 0,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "231",
+    "exp_speedup": 2.0
+}, {
+    "skip_every": 2,
+    "skip_offset": 1,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "232",
+    "exp_speedup": 2.0
+}, {
+    "skip_every": 3,
+    "skip_offset": 0,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "233",
+    "exp_speedup": 1.5
+}, {
+    "skip_every": 3,
+    "skip_offset": 1,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "234",
+    "exp_speedup": 1.5
+}, {
+    "skip_every": 3,
+    "skip_offset": 2,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "235",
+    "exp_speedup": 1.5
+}, {
+    "skip_every": 4,
+    "skip_offset": 0,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "236",
+    "exp_speedup": 1.33
+}, {
+    "skip_every": 4,
+    "skip_offset": 1,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "237",
+    "exp_speedup": 1.33
+}, {
+    "skip_every": 4,
+    "skip_offset": 2,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "238",
+    "exp_speedup": 1.33
+}, {
+    "skip_every": 4,
+    "skip_offset": 3,
+    "interp_rate": 1.0,
+    "use_fp16": false,
+    "class": "Conv2dSampling",
+    "name": "239",
+    "exp_speedup": 1.33
+}, {
+    "skip_every": 2,
+    "skip_offset": 0,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "261",
+    "exp_speedup": 3.0
+}, {
+    "skip_every": 2,
+    "skip_offset": 1,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "262",
+    "exp_speedup": 3.0
+}, {
+    "skip_every": 3,
+    "skip_offset": 0,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "263",
+    "exp_speedup": 2.25
+}, {
+    "skip_every": 3,
+    "skip_offset": 1,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "264",
+    "exp_speedup": 2.25
+}, {
+    "skip_every": 3,
+    "skip_offset": 2,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "265",
+    "exp_speedup": 2.25
+}, {
+    "skip_every": 4,
+    "skip_offset": 0,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "266",
+    "exp_speedup": 2.0
+}, {
+    "skip_every": 4,
+    "skip_offset": 1,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "267",
+    "exp_speedup": 2.0
+}, {
+    "skip_every": 4,
+    "skip_offset": 2,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "268",
+    "exp_speedup": 2.0
+}, {
+    "skip_every": 4,
+    "skip_offset": 3,
+    "interp_rate": 1.0,
+    "use_fp16": true,
+    "class": "Conv2dSampling",
+    "name": "269",
+    "exp_speedup": 2.0
+}, {
+    "noise_level": 1,
+    "class": "PromiseSim",
+    "name": "1",
+    "exp_speedup": 12.0
+}, {
+    "noise_level": 2,
+    "class": "PromiseSim",
+    "name": "2",
+    "exp_speedup": 10.0
+}, {
+    "noise_level": 3,
+    "class": "PromiseSim",
+    "name": "3",
+    "exp_speedup": 9.0
+}, {
+    "noise_level": 4,
+    "class": "PromiseSim",
+    "name": "4",
+    "exp_speedup": 8.0
+}, {
+    "noise_level": 5,
+    "class": "PromiseSim",
+    "name": "5",
+    "exp_speedup": 6.0
+}, {
+    "noise_level": 6,
+    "class": "PromiseSim",
+    "name": "6",
+    "exp_speedup": 5.0
+}, {
+    "noise_level": 7,
+    "class": "PromiseSim",
+    "name": "7",
+    "exp_speedup": 4.0
+}]
\ No newline at end of file