匿名作者
超参优化算法(HPO)在几个问题上的对比。
超参数优化算法如下:
所有算法都在 NNI 本机环境下运行。
环境:
OS: Linux Ubuntu 16.04 LTS
CPU: Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz 2600 MHz
Memory: 112 GB
NNI Version: v0.7
NNI Mode(local|pai|remote): local
Python version: 3.6
Is conda or virtualenv used?: Conda
is running in docker?: no
超参搜索上的非凸问题 AutoGBDT 示例。
{
"num_leaves": {
"_type": "choice",
"_value": [10, 12, 14, 16, 18, 20, 22, 24, 28, 32, 48, 64, 96, 128]
},
"learning_rate": {
"_type": "choice",
"_value": [0.00001, 0.0001, 0.001, 0.01, 0.05, 0.1, 0.2, 0.5]
},
"max_depth": {
"_type": "choice",
"_value": [-1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, 32, 48, 64, 96, 128]
},
"feature_fraction": {
"_type": "choice",
"_value": [0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2]
},
"bagging_fraction": {
"_type": "choice",
"_value": [0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2]
},
"bagging_freq": {
"_type": "choice",
"_value": [1, 2, 4, 8, 10, 12, 14, 16]
}
}
总搜索空间为 1, 204, 224 次,将最大 Trial 次数设置为 1000。 时间限制为 48 小时。
算法 | 最好的损失值 | 最好的 5 次损失的平均值 | 最好的 10 次损失的平均值 |
---|---|---|---|
Random Search | 0.418854 | 0.420352 | 0.421553 |
Random Search | 0.417364 | 0.420024 | 0.420997 |
Random Search | 0.417861 | 0.419744 | 0.420642 |
Grid Search | 0.498166 | 0.498166 | 0.498166 |
Evolution | 0.409887 | 0.409887 | 0.409887 |
Evolution | 0.413620 | 0.413875 | 0.414067 |
Evolution | 0.409887 | 0.409887 | 0.409887 |
Anneal | 0.414877 | 0.417289 | 0.418281 |
Anneal | 0.409887 | 0.409887 | 0.410118 |
Anneal | 0.413683 | 0.416949 | 0.417537 |
Metis | 0.416273 | 0.420411 | 0.422380 |
Metis | 0.420262 | 0.423175 | 0.424816 |
Metis | 0.421027 | 0.424172 | 0.425714 |
TPE | 0.414478 | 0.414478 | 0.414478 |
TPE | 0.415077 | 0.417986 | 0.418797 |
TPE | 0.415077 | 0.417009 | 0.418053 |
SMAC | 0.408386 | 0.408386 | 0.408386 |
SMAC | 0.414012 | 0.414012 | 0.414012 |
SMAC | 0.408386 | 0.408386 | 0.408386 |
BOHB | 0.410464 | 0.415319 | 0.417755 |
BOHB | 0.418995 | 0.420268 | 0.422604 |
BOHB | 0.415149 | 0.418072 | 0.418932 |
HyperBand | 0.414065 | 0.415222 | 0.417628 |
HyperBand | 0.416807 | 0.417549 | 0.418828 |
HyperBand | 0.415550 | 0.415977 | 0.417186 |
GP | 0.414353 | 0.418563 | 0.420263 |
GP | 0.414395 | 0.418006 | 0.420431 |
GP | 0.412943 | 0.416566 | 0.418443 |
此例中,所有算法都使用了默认参数。 Metis 算法因为其高斯计算过程的复杂度为 O(n^3) 而运行非常慢,因此仅执行了 300 次 Trial。
DB_Bench 是用来做 RocksDB 性能基准测试的工具。 有多个参数需要调优。
DB_Bench
的性能与计算机配置和安装方法有关。 在 DB_Bench
Linux 系统上运行,并将 Rock 作为共享库安装。
RocksDB: version 6.1
CPU: 6 * Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz
CPUCache: 35840 KB
Keys: 16 bytes each
Values: 100 bytes each (50 bytes after compression)
Entries: 1000000
延迟 :每个 IO 请求都需要一些时间才能完成,这称为平均延迟。 有几个因素会影响此时间,包括网络连接质量和硬盘IO性能。
IOPS: 每秒的 IO 操作数量,这意味着可以在一秒钟内完成的 读取或写入操作次数。
IO 大小: 每个 IO 请求的大小。 根据操作系统和需要磁盘访问的应用程序、服务,它将同时发出读取或写入一定数量数据的请求。
吞吐量(以 MB/s 为单位)= 平均 IO 大小 x IOPS
IOPS 与在线处理能力有关,我们在实验中使用 IOPS 作为指标。
{
"max_background_compactions": {
"_type": "quniform",
"_value": [1, 256, 1]
},
"block_size": {
"_type": "quniform",
"_value": [1, 500000, 1]
},
"write_buffer_size": {
"_type": "quniform",
"_value": [1, 130000000, 1]
},
"max_write_buffer_number": {
"_type": "quniform",
"_value": [1, 128, 1]
},
"min_write_buffer_number_to_merge": {
"_type": "quniform",
"_value": [1, 32, 1]
},
"level0_file_num_compaction_trigger": {
"_type": "quniform",
"_value": [1, 256, 1]
},
"level0_slowdown_writes_trigger": {
"_type": "quniform",
"_value": [1, 1024, 1]
},
"level0_stop_writes_trigger": {
"_type": "quniform",
"_value": [1, 1024, 1]
},
"cache_size": {
"_type": "quniform",
"_value": [1, 30000000, 1]
},
"compaction_readahead_size": {
"_type": "quniform",
"_value": [1, 30000000, 1]
},
"new_table_reader_for_compaction_inputs": {
"_type": "randint",
"_value": [1]
}
}
搜索空间非常大(约10 的 40 次方),将最大 Trial 次数设置为 100 以限制资源。
模型 | 最高 IOPS(重复 1 次) | 最高 IOPS(重复 2 次) | 最高 IOPS(重复 3 次) |
---|---|---|---|
Random | 449901 | 427620 | 477174 |
Anneal | 461896 | 467150 | 437528 |
Evolution | 436755 | 389956 | 389790 |
TPE | 378346 | 482316 | 468989 |
SMAC | 491067 | 490472 | 491136 |
Metis | 444920 | 457060 | 454438 |
图:
模型 | 最高 IOPS(重复 1 次) | 最高 IOPS(重复 2 次) | 最高 IOPS(重复 3 次) |
---|---|---|---|
Random | 2276157 | 2285301 | 2275142 |
Anneal | 2286330 | 2282229 | 2284012 |
Evolution | 2286524 | 2283673 | 2283558 |
TPE | 2287366 | 2282865 | 2281891 |
SMAC | 2270874 | 2284904 | 2282266 |
Metis | 2287696 | 2283496 | 2277701 |
图: