Use parameters

Note

This tutorial is a part of our Valohai 101 (Python) series.

Defining Valohai parameters will allow you to easily rerun your executions and experiment with a different set of parameters.

A short recap on parameters

  • A Valohai parameter can be a type of a string, int, float or a flag (=bool).

  • The parameter values you define in your code are default values. These can be changed when creating an execution from the UI, command-line or API.

  • Parameters get passed to each Valohai execution as command-line arguments (e.g. train.py --epoch=5)

Update train.py to parameterize epoch.

  • Create a dictionary to store your parameters, and their default values

  • Pass the dictionary to valohai.prepare

  • Read the parameter value during an execution with valohai.parameters('myparam').value

 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
import tensorflow as tf
import numpy
import valohai

my_parameters = {
    'epoch': 5
}

valohai.prepare(step="train-model", image='tensorflow/tensorflow:2.4.1', default_parameters=my_parameters)

mnist = tf.keras.datasets.mnist

mnist_file_path = 'mnist.npz'

with numpy.load(mnist_file_path, allow_pickle=True) as f:
    x_train, y_train = f['x_train'], f['y_train']
    x_test, y_test = f['x_test'], f['y_test']

x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])

predictions = model(x_train[:1]).numpy()
predictions

tf.nn.softmax(predictions).numpy()

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss_fn(y_train[:1], predictions).numpy()

model.compile(optimizer='adam',
            loss=loss_fn,
            metrics=['accuracy'])

model.fit(x_train, y_train, epochs=valohai.parameters('epoch').value)

save_path = valohai.outputs().path('model.h5')
model.save(save_path)

Run in Valohai

Update your valohai.yaml - Config File with vh yaml step. This will generate a parameters section in your step.

Finally run a new Valohai execution.

vh yaml step train.py
vh exec run train-model --adhoc

Rerun an execution with different parameter values

  • Open your project on app.valohai.com

  • Open the latest execution

  • Click Copy

  • Scroll down to the Parameters section

  • Change the value of epoch

  • Click Create execution

Tip

You can also run a new execution with different parameter values from the command line:

vh exec run train-model --adhoc --epoch=10

See also

🐞 Give feedback about this page