3 个不稳定版本
0.2.2 | 2023 年 2 月 13 日 |
---|---|
0.2.1 |
|
0.2.0 |
|
0.1.1 | 2022 年 11 月 21 日 |
0.1.0 | 2022 年 11 月 18 日 |
1455 在 命令行实用程序 中
每月 22 次下载
260KB
7.5K SLoC
cambrian
实用全局黑盒优化器
-
寒武纪是一个全局黑盒优化工具。其优化算法属于 自适应遗传算法 类别。用户文档可以在 此处 找到。
-
以 开箱即用的命令行应用程序 的形式提供。除了目标函数的定义之外,无需任何配置。
-
目标函数的实现由用户以独立程序的形式提供,该程序读取和写入 JSON。因此,使用 与编程语言无关。
-
用户以 YAML 文件的形式提供参数空间。该格式 高度表达性:它可以表示从简单的实值向量到具有可调整部分的 分层数据结构 的参数空间。
-
支持并行性。
-
目前仅支持 Linux 操作系统。
示例用例
-
优化深度神经网络的拓扑和其他高级参数。这包括优化不同数量和类型的层,每个层都有其特定的子参数。
-
优化数据处理应用程序的运行时性能。这可能包括优化块大小、线程数量等参数,以及传递给编译器或虚拟机的标志。
用于说明的简单示例
注意:本例中使用的目标函数运行时间很短,只有两个维度,且解析解是已知的。它仅适用于说明目的。
假设我们想优化二维函数 f(x, y) = x² + y²。我们必须提供一个 YAML 格式的规范文件和一个实现该函数的命令行程序。为了说明目的,让我们假设我们不知道真实的解,但我们知道 y 不会大于 1.5。我们决定我们的初始猜测是 x = y = 1.0。这是我们的规范文件(让我们称它为 spec.yaml
)的外观
x:
type: real
init: 1.0
scale: 0.1
y:
type: real
init: 1.0
scale: 0.1
max: 1.5
scale
表示变化量级的顺序。它可以被认为是当值被修改时结果的标准差类似的东西。它仅仅是向变异逻辑提供的一个提示,可以由用户直观地提供。
我们的目标函数程序可以用任何编程语言编写。这里我们选择Python。Cambrian将作为子进程调用程序,并传递以下参数
- 以JSON形式提供的参数
- 一个唯一的数字,可能被用作随机生成器的初始化种子
如果我们把脚本命名为 obj_func.py
,那么Cambrian将使用以下命令启动它
python obj_func.py '{"x":1.0,"y":1.0}' 1234
它期望程序以以下格式打印一行到标准输出
{"objFuncVal": 2.0}
脚本 obj_func.py
本身可能看起来像这样(在这种情况下忽略种子)
import sys
import json
data = json.loads(sys.argv[1])
x = data['x']
y = data['y']
result = {
"objFuncVal": x * x + y * y
}
print(json.dumps(result))
最后,这是在终端中使用Cambrian的用法示例,包括输出
$ cambrian -s spec.yaml python obj_func.py -t 1e-3
{"x":0.0002100776985471467,"y":-0.00013167246263939315}
这里,-t
选项是当达到目标函数值1e-3时立即终止的指令。有几种不同的终止标准可供选择(更多详细信息请参阅命令行用法),始终可以通过按Ctrl-C(或发送SIGINT)手动终止,这将指示Cambrian优雅地终止并返回迄今为止看到的最优个体。
安装
安装Cambrian有三种方法
- 从源码构建
- 从crates.io安装
- 从GitHub下载
从源码构建或从crates.io安装需要已安装Cargo(Rust的包管理器和构建系统)。有关安装Cargo本身的说明,请参阅Cargo安装
从源码构建
从GitHub克隆存储库,然后使用以下命令顺序构建和安装
git clone [email protected]:ssgier/cambrian.git
cd cambrian
cargo build --release
cargo install --path .
运行这些命令后,Cambrian应已安装到 ~/.cargo/bin
。如有必要,请将目录添加到PATH变量中。
从crates.io安装
cargo install cambrian
从GitHub下载
转到发布并下载最新存档(cambrian-v0.2.2-x86_64-unknown-linux-musl.tar.gz)。解压它
tar xvzf cambrian-v0.2.2-x86_64-unknown-linux-musl.tar.gz
这将提取一个包含Cambrian可执行文件目录的目录。将可执行文件放置在所选目录中,并可选择将其目录添加到PATH环境变量中。
文档
请参阅cambrian wiki以获取深入教程。要了解可用的数据类型概述,请参阅规范和值。
依赖关系
~17–30MB
~463K SLoC