Closed peterhchen closed 1 year ago
Hi @peterhchen,
Thank you for notifying us and providing your application files to exemplify. It is unfortunate to hear that HyperMapper did not perform as well. We are always looking at ways to improve HyperMapper's performance and new techniques to incorporate, so we will indeed improve it's performance. One such area where we are investigating is performance for applications with many (i.e. more than 15) input parameters such as this. So we expect to improve the performance for this type of problem in the future.
That said, I noticed that in your application you have 20 categorical parameters which all seem to include all integers in [0, 63] and your black-box function computes a distance between the value of the input parameters and the values
array. In this scenario where you have integer parameters and a distance-based metric, using a numeric parameter type should work much better. I.e. defining your parameters as integer
with "values": [0, 63]
would probably yield a considerable boost in performance. I strongly suggest doing that if you want to achieve better results from HyperMapper for this application. This should also make HyperMapper run a bit faster as it allows HM to use some better optimization techniques internally.
In this final note, we are also looking into optimizations in HyperMapper, so that it runs faster for applications with fast black-box functions. So that it does not take that long to run.
Best, Artur Souza
Below is the python file hm_placer.py and placer_scenario.json fior benche mark Hypermmaper and OpenTuner. OpenTuner converge very fast. Hypermapper takes 7+ days to run and cannot get the answer. Please improve the hypermapper performance.
""" File Name: hm_placer.py Description: Usage:
import os import sys
import warnings
from collections import OrderedDict
ensure backward compatibility
from hypermapper import optimizer # noqa MIN_NUM = sys.float_info.max HM_CNT = 0
def compute_function(x_in): """ Description: Input: 20 features and randomly selected vector values from 64 feature vectors. Values: 20 target values. Calculate the penalty based on the input. :param x_in: dictionary containing the input points. :return: the value of the objective function. """ global MIN_NUM global HM_CNT penalty = 0
Drive all parameters to their 10th value in the categorical space
def main(): """ Description:
optimizer.optimize(parameters_file, branin4_function)
optimizer.optimize(parameters_file, compute_function) print("End of test.")
if name == "main": main()
{ "application_name": "Scenaiofile for rs_5000_ro_5000", "optimization_objectives": ["distance"], "log_file": "hm_placer_min.log", "output_data_file": "hm_placer_min.csv", "design_of_experiment": { "doe_type": "random sampling", "number_of_samples": 5000 }, "optimization_iterations": 5000, "input_parameters" : { "0": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "1": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "2": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "3": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "4": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "5": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "6": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "7": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "8": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "9": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "10": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "11": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "12": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "13": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "14": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "15": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "16": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "17": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "18": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] }, "19": { "parameter_type": "categorical", "values": ["0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" , "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" , "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" , "34", "35", "36", "37", "38", "39", "40", "41", "42", "43" , "44", "45", "46", "47", "48", "49", "50", "51", "52", "53" , "54", "55", "56", "57", "58", "59", "60", "61", "62", "63"] } } }