配置实验
项目描述
用于配置和探索comb机器学习实验参数的最小包。
comb是一个小而简单的库。comb能
- 快速干净地定义网格搜索和随机搜索,并处理参数依赖关系
- 向现有项目添加配置选项。现有的模块和包可以变成一个注册表,使 python 类可以通过字符串名称访问和搜索。
对于更复杂的工作流程,像hydra这样的配置包更适合。
安装
comb-py从pypi安装:
$ pip install comb-py
并通过导入
import comb
comb除了 python 标准库之外,没有任何依赖项。它适用于python>=3.7.
定义实验 ( comb.sweep)
在你的项目中,直接在python中创建sweeps ─ 在下创建如下文件sweep/my_first_experiment.py
from comb import sweep
from comb.types import zipped, grid
@sweep.register("example-sweep")
class MyExperiment(sweep.Sweep):
@property
def script(self):
return "my/exp.py"
def get_random_args(self):
return dict(
# define a method to sample arguments from
foo = np.random.choice([42, 73])
)
def get_fixed_args(self):
return dict(
# zip N dependen arguments together
bar = zipped("hello", "check out"),
baz = zipped("world", "comb"),
# define a search grid (1x2 combinations)
# over two parameters
blubb = grid("star"),
blubb2 = grid("wars", "treck"),
)
并使用生成作业列表
$ python -m comb example-sweep
exp.py --bar hello --baz world --blubb star --blubb2 wars --foo 73
exp.py --bar hello --baz world --blubb star --blubb2 treck --foo 73
exp.py --bar check out --baz comb --blubb star --blubb2 wars --foo 73
exp.py --bar check out --baz comb --blubb star --blubb2 treck --foo 73
参数化实验 ( comb.registry)
comb使在您的实验中通过名称参考设计选择变得非常容易。假设您想在机器学习实验中添加一些数据集和损失函数。
通过简单的调用将您的 python 模块包或包转换为注册表comb.registry.add_helper_functions:
# datasets.py
from comb import registry
registry.add_helper_functions(__name__)
@register("mnist")
class MNIST(): pass
@register("svhn")
class SVHN(): pass
# loss_functions.py
from comb import registry
registry.add_helper_functions(__name__)
@register("mse")
class MeanSquaredError(): pass
@register("infonce")
class InfoNCE(): pass
之后,您可以轻松列出并实例化您的函数:
>>> import datasets
>>> datasets.get_options("*")
mnist svhn
>>> datasets.init("mnist")
MNIST()
安排实验
comb并不试图提供实际启动这些实验的方法——有很多工具更适合于此。仅举几条建议,以下工作流程是可能的:
使用 GNU 并行
通过GNU 并行调度最多 2 个连续作业(可以通过 eg 获得类似的结果xargs):
$ python -m comb bash-example || exit 1 | parallel --jobs 2 'echo Scheduling job {#}; eval {}'
使用 SLURM
通过 slurm 调度作业数组:
mkdir -p submitted
python -m comb bash-example > jobs.lst
num_jobs=$(wc -l jobs.lst)
jobid=$(sbatch -a 1-${num_jobs} --wrap 'job=$(sed -n ${SLURM_ARRAY_TASK_ID}p jobs.lst); srun ${job}')
mv jobs.lst submitted/{jobid}.lst
执照
comb是根据 MIT 许可证发布的。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
comb-py-0.0.1a0.tar.gz
(12.2 kB
查看哈希)
内置分布
comb_py-0.0.1a0-py3-none-any.whl
(12.1 kB
查看哈希)