3 个不稳定版本

0.2.2 2023 年 2 月 13 日
0.2.1 2023 年 2 月 13 日
0.2.0 2023 年 2 月 13 日
0.1.1 2022 年 11 月 21 日
0.1.0 2022 年 11 月 18 日

1455命令行实用程序

每月 22 次下载

MIT 许可证

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