With SigOpt installed and your Python environment set up, let's take a look at how to record a SigOpt Run in a Python IDE with the SigOpt CLI.
Instrument the Run
import tensorflow as tfimport sigoptimport osos.environ["SIGOPT_API_TOKEN"]=# SIGOPT_API_TOKENos.environ["SIGOPT_PROJECT"]="run-examples"classKerasNNModel:def__init__(self,hidden_layer_size,activation_fn): model = tf.keras.Sequential( [ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(hidden_layer_size, activation=activation_fn), tf.keras.layers.Dense(10), ] ) self.model = modeldefget_keras_nn_model(self):return self.modeldeftrain_model(self,train_images,train_labels,optimizer_type,metrics_list,num_epochs): self.model.compile( optimizer=optimizer_type, loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=metrics_list, ) self.model.fit(train_images, train_labels, epochs=num_epochs)defevaluate_model(self,test_images,test_labels): metrics_dict = self.model.evaluate(test_images, test_labels, verbose=2, return_dict=True)return metrics_dictdefload_data_train_model(): sigopt.log_dataset(name="mnist") (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()# set model training, architecture parameters and hyperparameters sigopt.params.num_epochs =2 sigopt.params.hidden_layer_size =200 sigopt.params.activation_fn ="relu"# create the model keras_nn_model =KerasNNModel( hidden_layer_size=sigopt.params.hidden_layer_size, activation_fn=sigopt.params.activation_fn ) sigopt.log_model("Keras NN Model with 1 Hidden layer")# train the model keras_nn_model.train_model(train_images, train_labels, "adam", ["accuracy"], sigopt.params.num_epochs) sigopt.log_metadata("sgd optimizer", "adam") metrics_dict = keras_nn_model.evaluate_model(test_images, test_labels)# log performance metrics sigopt.log_metric("accuracy", metrics_dict["accuracy"]) sigopt.log_metric("loss", metrics_dict["loss"])if__name__=="__main__":load_data_train_model()
Run the Code with the SigOpt CLI
$sigoptrunpythonkeras_model.py
Run started, view it on the SigOpt dashboard at https://app.sigopt.com/run/1234
Epoch 1/2
1875/1875 [==============================] - 5s 2ms/step - loss: 2.7513 - accuracy: 0.8826
Epoch 2/2
1875/1875 [==============================] - 4s 2ms/step - loss: 0.3313 - accuracy: 0.9265
313/313 - 0s - loss: 0.2941 - accuracy: 0.9478
Run finished, view it on the SigOpt dashboard at https://app.sigopt.com/run/1234
Orchestrate a Run with the SigOpt CLI
SigOpt Orchestrate allows you to confidently scale your modeling experimentation on either your existing Kubernetes infrastructure or a Kubernetes cluster managed by SigOpt. To set up SigOpt Orchestrate, follow this installation guide. With SigOpt Orchestrate installed, all you have to do is set up yourrun.yml file and execute the following command locally to orchestrate your Run on your Kubernetes cluster:
#run.yml name:My Runrun:python keras_model.pyresources:limits:cpu:2memory:4Gigpus:1image:my-run bab
$sigoptclusterrun--run-filerun.yml
When you execute the above, SigOpt Orchestrate will look into the specified run.yml file. It will allocate 2 CPUs, 4 GiB memory, and 1 GPU of your kubernetes cluster for your Run, and will execute the command provided for run.
Run started, view it on the SigOpt dashboard at https://app.sigopt.com/run/1234
Epoch 1/2
1875/1875 [==============================] - 5s 2ms/step - loss: 2.7513 - accuracy: 0.8826
Epoch 2/2
1875/1875 [==============================] - 4s 2ms/step - loss: 0.3313 - accuracy: 0.9265
313/313 - 0s - loss: 0.2941 - accuracy: 0.9478
Run finished, view it on the SigOpt dashboard at https://app.sigopt.com/run/1234