进行参数调查的工具箱
paramsurve的Python项目详细描述
准调查
paramsurvey是一组用于创建和执行参数调查的工具。在
paramsurvey有一个可插拔的并行后端。目前支持的后端
是python的多处理模块和计算集群软件ray
。计划了一个mpi
后端。在
示例
import time
import paramsurvey
def sleep_worker(pset, system_kwargs, user_kwargs):
time.sleep(pset['duration'])
return {'slept': pset['duration']}
paramsurvey.init(backend='multiprocessing') # or 'ray', if you installed it
psets = [{'duration': 0.3}] * 5
results = paramsurvey.map(sleep_worker, psets, verbose=2)
for r in results.itertuples():
print(r.duration, r.slept)
for r in results.iterdicts():
print(r['duration'], r['slept'])
除了一些调试输出外,还打印5个sleep\u worker调用的结果。在
下面是几个例子:
- The above example, with a few notes
- An example of a multi-stage computation,连续运行多个
map()
函数 - An example of greedy optimization,从每个
map()
结果中选择最佳方案
这些示例与软件包一起安装,因此您可以这样运行它们:
^{pr2}$哲学
参数调查从初始化软件开始, 指定后端('multiprocessing'或'ray')。在
用户提供一个worker函数,它接受参数的dict (pset)并返回结果的dict。在
用户还提供了一个参数集(psets)列表,也许
使用helper函数paramsurvey.params.product()
构造。在
调用pararamsurvey.map()
为执行一次辅助函数
每个pset。它返回一个MapResults
对象,包含结果,
性能统计信息,以及有关任何故障的信息。在
您可以多次调用paramsurvey.map()
。在
init()和map()的关键字参数
paramsurvey
代码有一组关键字参数(和相应的环境
变量)以帮助调试和测试。它们是:
backend="multiprocessing"
——使用哪个后端,当前是“多处理”(默认)还是“ray”verbose=1
——打印有关计算进度的信息:- 0=不打印
- 1=每隔30秒打印一次(默认)
- 2=每秒打印一些内容
- 3=为每个操作打印内容
vstats=1
——控制性能统计系统的详细程度,其值类似于verbose
limit=0
——将实际计算的pset数限制为这个数字(0表示“全部”)ncores=-1
——限制使用的核心数,在本例中,比可用的核数少1个(仅限多处理)max_tasks_per_child=3
——子级在重新启动之前将执行的任务数。有助于限制内存泄漏。默认值:无限
每一个都有相应的环境变量,
e、 g.PARAMSURVEY_BACKEND
,PARAMSURVEY_VERBOSE
。如果环境
变量,它重写源代码中设置的值。如果
kwarg是为map()
调用设置的,该值覆盖任何值
为init()
调用指定。在
例如,如果您希望通过运行一个小的 它的子集在一个节点上,环境变量允许您 这不需要编辑源代码:
$ PARAMSURVEY_BACKEND=multiprocessing PARAMSURVEY_VERBOSE=3 PARAMSURVEY_LIMIT=10 ./myprogram.py
对于回顾性调试,也就是说,你的运行崩溃了,你很伤心
你在崩溃后指定的详细程度比你想要的要低,
paramsurvey
在当前目录中为
每次运行,命名为.paramusurvey-DATE-TIME.log
。在
后端特定参数
init()
和map()
都使用为后端命名的特定于后端的关键字参数,并且
被其他后端忽略。例如,要传递仅由ray
后端使用的参数
paramsurvey.map(..., ray={'num_gpus': 1})
MapResults对象
MapResults对象有几个属性:
results
是一个Pandas数据帧,包含pset的值和worker函数返回的键。如果你喜欢和字典打交道 并且不担心内存使用,results.to_dict
返回字典列表。在failed
是失败的psets字典的列表,如果在worker函数中引发了异常,则加上一个额外的''u exception'键。在progress
是一个MapProgress对象,其属性包含pset执行的详细信息:total、active、finished、failures、exceptions。在stats
是一个包含性能统计信息的PerfStats对象。在
辅助功能限制
worker函数在不同的地址空间中运行,也可能在不同的服务器上运行。 它不应该访问任何全局变量。在
对于难以解释的Python原因,请在前面定义worker函数
正在调用paramsurvey.init()
。工作函数不应嵌套
在另一个函数中。在Windows上,主程序文件应该有
一个^{
安装
$ pip install paramsurvey
$ pip install paramsurvey[ray]
- 项目
标签: