# Is there a way to run the same hyperparameter configuration multiple times?

**URL:** <https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412>\
**Category:** Ray Tune\
**Created:** [March 26, 2021, 9:13pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412 "2021-03-26T21:13:32Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [March 26, 2021, 9:13pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/1 "2021-03-26T21:13:32Z")

</div>

I’m doing a simple hyperparameter random search where I want to try, say, 5 random hyperparameter configurations and run 5 trials for each configuration. Is there a way to do that easily?

---

<div class="post-metadata">

**Author:** ![rliaw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/rliaw/32/24_2.png) [@rliaw](https://discuss.ray.io/u/rliaw)\
**Post date:** [March 26, 2021, 9:35pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/2 "2021-03-26T21:35:35Z")

</div>

try:

```auto
config = {"repeat": tune.grid_search(list(range(10))}

```

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [March 26, 2021, 10:23pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/3 "2021-03-26T22:23:15Z")

</div>

Is “repeat” a special key or something?

---

<div class="post-metadata">

**Author:** ![rliaw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/rliaw/32/24_2.png) [@rliaw](https://discuss.ray.io/u/rliaw)\
**Post date:** [March 26, 2021, 11:24pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/4 "2021-03-26T23:24:56Z")

</div>

Nope, its just a random variable. Sorry about that!

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [March 26, 2021, 11:48pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/5 "2021-03-26T23:48:11Z")

</div>

Ah, I see. Setting it to grid search would cause the other settings to stay the same for each setting of the dummy variable. Gotcha

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [March 27, 2021, 8:56pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/6 "2021-03-27T20:56:32Z")

</div>

This doesn’t appear to be working, it just multiplies the number of total trials by “repeat”.

---

<div class="post-metadata">

**Author:** ![rliaw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/rliaw/32/24_2.png) [@rliaw](https://discuss.ray.io/u/rliaw)\
**Post date:** [March 29, 2021, 1:00am UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/7 "2021-03-29T01:00:49Z")

</div>

Hmmm, weird – it should multiply it but also have the same trials run. What about trying using a `Repeater`?

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [March 29, 2021, 1:24am UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/8 "2021-03-29T01:24:48Z")

</div>

Yeah a Repeater seems to be what I’m looking for. Minor gripe, I wish it defaulted to random search if no Searcher is specified. BasicVariantGenerator doesn’t subclass Searcher so I cant easily use it with random search.

---

<div class="post-metadata">

**Author:** ![rliaw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/rliaw/32/24_2.png) [@rliaw](https://discuss.ray.io/u/rliaw)\
**Post date:** [March 29, 2021, 1:45am UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/9 "2021-03-29T01:45:36Z")

</div>

OK that’s a good point. It’s odd that the random search / tune.grid\_search doesn’t work for you though. If you have a chance, could you let me know what is output instead?

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [March 29, 2021, 4:51am UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/10 "2021-03-29T04:51:20Z")

</div>

The problem is this line in the constructor, since it doesn’t have a `mode` or `metric` attribute:

```auto
super(Repeater, self). __init__ (
            metric=self.searcher.metric, mode=self.searcher.mode)

```

I made this simple random searcher to get around it:

```auto
class RandomSearcher(Searcher):
    def __init__ (self, space: Dict[str, Domain], metric: Optional[str] = None, mode: Optional[str] = None):
        super(). __init__ (metric, mode)
        self._space = space

    def on_trial_complete(self, trial_id: str, result: Optional[Dict] = None, error: bool = False):
        pass

    def suggest(self, trial_id: str) -> Optional[Dict]:
        setting = {}
        for k, v in self._space.items():
            setting[k] = v.sample()
        return setting

    def save(self, checkpoint_path: str):
        pass

    def restore(self, checkpoint_path: str):
        pass

    def get_state(self) -> Dict:
        return {}

    def set_state(self, state: Dict):
        pass

```

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [April 2, 2021, 7:39pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/11 "2021-04-02T19:39:39Z")

</div>

Have you had a chance to look at this?

---

<div class="post-metadata">

**Author:** ![rliaw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/rliaw/32/24_2.png) [@rliaw](https://discuss.ray.io/u/rliaw)\
**Post date:** [April 5, 2021, 10:27pm UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/12 "2021-04-05T22:27:35Z")

</div>

No, I haven’t. Alternatively, you could also use `BasicVariantGenerator(points_to_evaluate=...` to manually inject the variables that you want to use.

---

<div class="post-metadata">

**Author:** ![import-antigravity](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/import-antigravity/32/562_2.png) [@import-antigravity](https://discuss.ray.io/u/import-antigravity)\
**Post date:** [April 9, 2021, 3:49am UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/13 "2021-04-09T03:49:08Z")

</div>

The `RandomSearcher` class I made seems to be working just fine for me. I just wanted to ping you again because I didn’t know if you wanted me to submit an issue/feature request

---

<div class="post-metadata">

**Author:** ![rliaw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/rliaw/32/24_2.png) [@rliaw](https://discuss.ray.io/u/rliaw)\
**Post date:** [April 9, 2021, 4:12am UTC](https://discuss.ray.io/t/is-there-a-way-to-run-the-same-hyperparameter-configuration-multiple-times/1412/14 "2021-04-09T04:12:19Z")

</div>

OK got it! Thanks. I already created this issue here: [[tune] Support resolving grid search variables before random samples · Issue #15126 · ray-project/ray · GitHub](https://github.com/ray-project/ray/issues/15126)
