get-started-keras-dbr7ml(Python)

Loading...

Getting started with deep learning in Databricks: an end-to-end example using TensorFlow Keras, Hyperopt, and MLflow

This tutorial uses a small dataset to show how to use TensorFlow Keras, Hyperopt, and MLflow to develop a deep learning model in Databricks.

It includes the following steps:

  • Load and preprocess data
  • Part 1. Create a neural network model with TensorFlow Keras and view training with inline TensorBoard
  • Part 2. Perform automated hyperparameter tuning with Hyperopt and MLflow and use autologging to save results
  • Part 3. Use the best set of hyperparameters to build a final model
  • Part 4. Register the model in MLflow and use the model to make predictions

Requirements

  • Databricks Runtime for Machine Learning.

2024-04-18 21:34:54.101035: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.

Load and preprocess data

This example uses the California Housing dataset from scikit-learn.

Scale features

Feature scaling is important when working with neural networks. This notebook uses the scikit-learn function StandardScaler.

Part 1. Create model and view TensorBoard in notebook

Create the neural network

Compile the model

Create callbacks

Epoch 1/35 1/413 [..............................] - ETA: 5:03 - loss: 4.0107 - mse: 4.0107WARNING:tensorflow:Callback method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0024s vs `on_train_batch_end` time: 0.0026s). Check your callbacks. 402/413 [============================>.] - ETA: 0s - loss: 1.1420 - mse: 1.1420 Epoch 1: val_loss improved from inf to 0.60280, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 5s 11ms/step - loss: 1.1313 - mse: 1.1313 - val_loss: 0.6028 - val_mse: 0.6028 Epoch 2/35 408/413 [============================>.] - ETA: 0s - loss: 0.5039 - mse: 0.5039 Epoch 2: val_loss improved from 0.60280 to 0.46389, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.5018 - mse: 0.5018 - val_loss: 0.4639 - val_mse: 0.4639 Epoch 3/35 395/413 [===========================>..] - ETA: 0s - loss: 0.4187 - mse: 0.4187 Epoch 3: val_loss improved from 0.46389 to 0.41669, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.4249 - mse: 0.4249 - val_loss: 0.4167 - val_mse: 0.4167 Epoch 4/35 412/413 [============================>.] - ETA: 0s - loss: 0.3941 - mse: 0.3941 Epoch 4: val_loss improved from 0.41669 to 0.39997, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3937 - mse: 0.3937 - val_loss: 0.4000 - val_mse: 0.4000 Epoch 5/35 406/413 [============================>.] - ETA: 0s - loss: 0.3791 - mse: 0.3791 Epoch 5: val_loss improved from 0.39997 to 0.39718, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3779 - mse: 0.3779 - val_loss: 0.3972 - val_mse: 0.3972 Epoch 6/35 391/413 [===========================>..] - ETA: 0s - loss: 0.3705 - mse: 0.3705 Epoch 6: val_loss improved from 0.39718 to 0.38935, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3698 - mse: 0.3698 - val_loss: 0.3893 - val_mse: 0.3893 Epoch 7/35 406/413 [============================>.] - ETA: 0s - loss: 0.3647 - mse: 0.3647 Epoch 7: val_loss improved from 0.38935 to 0.37909, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 4s 8ms/step - loss: 0.3639 - mse: 0.3639 - val_loss: 0.3791 - val_mse: 0.3791 Epoch 8/35 404/413 [============================>.] - ETA: 0s - loss: 0.3589 - mse: 0.3589 Epoch 8: val_loss improved from 0.37909 to 0.37491, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3586 - mse: 0.3586 - val_loss: 0.3749 - val_mse: 0.3749 Epoch 9/35 411/413 [============================>.] - ETA: 0s - loss: 0.3530 - mse: 0.3530 Epoch 9: val_loss improved from 0.37491 to 0.36797, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3528 - mse: 0.3528 - val_loss: 0.3680 - val_mse: 0.3680 Epoch 10/35 398/413 [===========================>..] - ETA: 0s - loss: 0.3461 - mse: 0.3461 Epoch 10: val_loss did not improve from 0.36797 413/413 [==============================] - 1s 3ms/step - loss: 0.3476 - mse: 0.3476 - val_loss: 0.3693 - val_mse: 0.3693 Epoch 11/35 401/413 [============================>.] - ETA: 0s - loss: 0.3390 - mse: 0.3390 Epoch 11: val_loss improved from 0.36797 to 0.35243, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3411 - mse: 0.3411 - val_loss: 0.3524 - val_mse: 0.3524 Epoch 12/35 399/413 [===========================>..] - ETA: 0s - loss: 0.3375 - mse: 0.3375 Epoch 12: val_loss did not improve from 0.35243 413/413 [==============================] - 1s 3ms/step - loss: 0.3354 - mse: 0.3354 - val_loss: 0.3527 - val_mse: 0.3527 Epoch 13/35 400/413 [============================>.] - ETA: 0s - loss: 0.3316 - mse: 0.3316 Epoch 13: val_loss improved from 0.35243 to 0.34199, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3308 - mse: 0.3308 - val_loss: 0.3420 - val_mse: 0.3420 Epoch 14/35 406/413 [============================>.] - ETA: 0s - loss: 0.3303 - mse: 0.3303 Epoch 14: val_loss did not improve from 0.34199 413/413 [==============================] - 1s 3ms/step - loss: 0.3299 - mse: 0.3299 - val_loss: 0.3692 - val_mse: 0.3692 Epoch 15/35 388/413 [===========================>..] - ETA: 0s - loss: 0.3281 - mse: 0.3281 Epoch 15: val_loss improved from 0.34199 to 0.33373, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3291 - mse: 0.3291 - val_loss: 0.3337 - val_mse: 0.3337 Epoch 16/35 394/413 [===========================>..] - ETA: 0s - loss: 0.3210 - mse: 0.3210 Epoch 16: val_loss did not improve from 0.33373 413/413 [==============================] - 1s 3ms/step - loss: 0.3241 - mse: 0.3241 - val_loss: 0.3534 - val_mse: 0.3534 Epoch 17/35 393/413 [===========================>..] - ETA: 0s - loss: 0.3190 - mse: 0.3190 Epoch 17: val_loss improved from 0.33373 to 0.33032, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3206 - mse: 0.3206 - val_loss: 0.3303 - val_mse: 0.3303 Epoch 18/35 398/413 [===========================>..] - ETA: 0s - loss: 0.3166 - mse: 0.3166 Epoch 18: val_loss did not improve from 0.33032 413/413 [==============================] - 1s 3ms/step - loss: 0.3159 - mse: 0.3159 - val_loss: 0.3357 - val_mse: 0.3357 Epoch 19/35 400/413 [============================>.] - ETA: 0s - loss: 0.3144 - mse: 0.3144 Epoch 19: val_loss improved from 0.33032 to 0.32576, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3150 - mse: 0.3150 - val_loss: 0.3258 - val_mse: 0.3258 Epoch 20/35 403/413 [============================>.] - ETA: 0s - loss: 0.3136 - mse: 0.3136 Epoch 20: val_loss did not improve from 0.32576 413/413 [==============================] - 1s 3ms/step - loss: 0.3123 - mse: 0.3123 - val_loss: 0.3288 - val_mse: 0.3288 Epoch 21/35 396/413 [===========================>..] - ETA: 0s - loss: 0.3144 - mse: 0.3144 Epoch 21: val_loss improved from 0.32576 to 0.32163, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3131 - mse: 0.3131 - val_loss: 0.3216 - val_mse: 0.3216 Epoch 22/35 391/413 [===========================>..] - ETA: 0s - loss: 0.3111 - mse: 0.3111 Epoch 22: val_loss did not improve from 0.32163 413/413 [==============================] - 1s 3ms/step - loss: 0.3113 - mse: 0.3113 - val_loss: 0.3336 - val_mse: 0.3336 Epoch 23/35 400/413 [============================>.] - ETA: 0s - loss: 0.3097 - mse: 0.3097 Epoch 23: val_loss did not improve from 0.32163 413/413 [==============================] - 1s 3ms/step - loss: 0.3106 - mse: 0.3106 - val_loss: 0.3265 - val_mse: 0.3265 Epoch 24/35 394/413 [===========================>..] - ETA: 0s - loss: 0.3134 - mse: 0.3134 Epoch 24: val_loss did not improve from 0.32163 413/413 [==============================] - 1s 3ms/step - loss: 0.3101 - mse: 0.3101 - val_loss: 0.3277 - val_mse: 0.3277 Epoch 25/35 408/413 [============================>.] - ETA: 0s - loss: 0.3081 - mse: 0.3081 Epoch 25: val_loss improved from 0.32163 to 0.31935, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3074 - mse: 0.3074 - val_loss: 0.3194 - val_mse: 0.3194 Epoch 26/35 389/413 [===========================>..] - ETA: 0s - loss: 0.3026 - mse: 0.3026 Epoch 26: val_loss did not improve from 0.31935 413/413 [==============================] - 1s 3ms/step - loss: 0.3052 - mse: 0.3052 - val_loss: 0.3280 - val_mse: 0.3280 Epoch 27/35 404/413 [============================>.] - ETA: 0s - loss: 0.3048 - mse: 0.3048 Epoch 27: val_loss improved from 0.31935 to 0.31900, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3047 - mse: 0.3047 - val_loss: 0.3190 - val_mse: 0.3190 Epoch 28/35 400/413 [============================>.] - ETA: 0s - loss: 0.3070 - mse: 0.3070 Epoch 28: val_loss did not improve from 0.31900 413/413 [==============================] - 1s 3ms/step - loss: 0.3061 - mse: 0.3061 - val_loss: 0.3288 - val_mse: 0.3288 Epoch 29/35 389/413 [===========================>..] - ETA: 0s - loss: 0.3057 - mse: 0.3057 Epoch 29: val_loss improved from 0.31900 to 0.31752, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 3s 8ms/step - loss: 0.3060 - mse: 0.3060 - val_loss: 0.3175 - val_mse: 0.3175 Epoch 30/35 404/413 [============================>.] - ETA: 0s - loss: 0.3044 - mse: 0.3044 Epoch 30: val_loss did not improve from 0.31752 413/413 [==============================] - 1s 3ms/step - loss: 0.3034 - mse: 0.3034 - val_loss: 0.3254 - val_mse: 0.3254 Epoch 31/35 399/413 [===========================>..] - ETA: 0s - loss: 0.2991 - mse: 0.2991 Epoch 31: val_loss improved from 0.31752 to 0.31632, saving model to /dbfs/<username>/keras_checkpoint_weights.ckpt INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
INFO:tensorflow:Assets written to: /dbfs/<username>/keras_checkpoint_weights.ckpt/assets
413/413 [==============================] - 4s 9ms/step - loss: 0.3008 - mse: 0.3008 - val_loss: 0.3163 - val_mse: 0.3163 Epoch 32/35 403/413 [============================>.] - ETA: 0s - loss: 0.3012 - mse: 0.3012 Epoch 32: val_loss did not improve from 0.31632 413/413 [==============================] - 1s 3ms/step - loss: 0.2992 - mse: 0.2992 - val_loss: 0.3215 - val_mse: 0.3215 Epoch 33/35 413/413 [==============================] - ETA: 0s - loss: 0.2979 - mse: 0.2979 Epoch 33: val_loss did not improve from 0.31632 413/413 [==============================] - 1s 3ms/step - loss: 0.2979 - mse: 0.2979 - val_loss: 0.3259 - val_mse: 0.3259 Epoch 34/35 386/413 [===========================>..] - ETA: 0s - loss: 0.3002 - mse: 0.3002 Epoch 34: val_loss did not improve from 0.31632 413/413 [==============================] - 1s 3ms/step - loss: 0.2981 - mse: 0.2981 - val_loss: 0.3245 - val_mse: 0.3245 Epoch 35/35 389/413 [===========================>..] - ETA: 0s - loss: 0.2952 - mse: 0.2952 Epoch 35: val_loss did not improve from 0.31632 413/413 [==============================] - 1s 3ms/step - loss: 0.2968 - mse: 0.2968 - val_loss: 0.3181 - val_mse: 0.3181 1/1 [==============================] - 0s 88ms/step INFO:tensorflow:Assets written to: /local_disk0/repl_tmp_data/ReplId-3088f-d4006-b00f2-c/tmp210_4kbz/model/data/model/assets
INFO:tensorflow:Assets written to: /local_disk0/repl_tmp_data/ReplId-3088f-d4006-b00f2-c/tmp210_4kbz/model/data/model/assets
Uploading artifacts: 0%| | 0/12 [00:00<?, ?it/s]
Uploading artifacts: 0%| | 0/2 [00:00<?, ?it/s]

Start TensorBoard

TensorBoard continues to run until you detach the notebook from the cluster.
To clear the TensorBoard between runs, use this command: dbutils.fs.rm(experiment_log_dir.replace("/dbfs",""), recurse=True)

Tensorboard may not be displayed in the notebook cell output when 'Third-party iFraming prevention' is disabled. You can still use Tensorboard by clicking the link below to open Tensorboard in a new tab. To enable Tensorboard in notebook cell output, please ask your workspace admin to enable 'Third-party iFraming prevention'.
Launching TensorBoard...

Evaluate model on test dataset

    129/129 [==============================] - 0s 1ms/step - loss: 0.3014 - mse: 0.3014
    [0.3013561964035034, 0.3013561964035034]

    Part 2. Hyperparameter tuning with Hyperopt and MLflow

    Hyperopt is a Python library for hyperparameter tuning. Databricks Runtime for Machine Learning includes an optimized and enhanced version of Hyperopt, including automated MLflow tracking. For more information about using Hyperopt, see the Hyperopt documentation.

    Create neural network model using variables for number of nodes in hidden layers

    Create Hyperopt objective function

    Define Hyperopt search space

    Create the SparkTrials object

    The SparkTrials object tells fmin() to distribute the tuning job across a Spark cluster. When you create the SparkTrials object, you can use the parallelism argument to set the maximum number of trials to evaluate concurently. The default setting is the number of Spark executors available.

    A higher number lets you scale-out testing of more hyperparameter settings. Because Hyperopt proposes new trials based on past results, there is a trade-off between parallelism and adaptivity. For a fixed max_evals, greater parallelism speeds up calculations, but lower parallelism may lead to better results since each iteration has access to more past results.

    WARNING:hyperopt-spark:Because the requested parallelism was None or a non-positive value, parallelism will be set to (8), which is Spark's default parallelism (8), or 1, whichever is greater. We recommend setting parallelism explicitly to a positive value because the total of Spark task slots is subject to cluster sizing.

    Perform hyperparameter tuning

    Put the fmin() call inside an MLflow run to save results to MLflow. MLflow tracks the parameters and performance metrics of each run.

    After running the following cell, you can view the results in MLflow. Click Experiment at the upper right to display the Experiment Runs sidebar. Click the icon at the far right next to Experiment Runs to display the MLflow Runs Table.

    For more information about using MLflow to analyze runs, see (AWS|Azure|GCP).

    INFO:hyperopt-spark:Hyperopt with SparkTrials will automatically track trials in MLflow. To view the MLflow experiment associated with the notebook, click the 'Runs' icon in the notebook context bar on the upper right. There, you can view all runs. INFO:hyperopt-spark:To view logs from trials, please check the Spark executor logs. To view executor logs, expand 'Spark Jobs' above until you see the (i) icon next to the stage from the trial job. Click it and find the list of tasks. Click the 'stderr' link for a task to view trial logs.
    100%|██████████| 30/30 [03:13<00:00, 6.47s/trial, best loss: 0.2896008789539337]
    INFO:hyperopt-spark:Total Trials: 30: 30 succeeded, 0 failed, 0 cancelled.

    Part 3. Use the best set of hyperparameters to build a final model

    {'dense_l1': 25.0, 'dense_l2': 23.0, 'learning_rate': 0.011351497550708039, 'optimizer': 'Adam'}

    When autolog() is active, MLflow does not automatically end a run. You must end the run that was started in Cmd 30 before starting and autologging a new run.

      Epoch 1/35 1/516 [..............................] - ETA: 5:42 - loss: 4.6747 - mse: 4.6747WARNING:tensorflow:Callback method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0012s vs `on_train_batch_end` time: 0.0019s). Check your callbacks.
      WARNING:tensorflow:Callback method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0012s vs `on_train_batch_end` time: 0.0019s). Check your callbacks.
      516/516 [==============================] - 2s 2ms/step - loss: 0.6631 - mse: 0.6631 Epoch 2/35 516/516 [==============================] - 1s 2ms/step - loss: 0.3947 - mse: 0.3947 Epoch 3/35 516/516 [==============================] - 1s 2ms/step - loss: 0.3652 - mse: 0.3652 Epoch 4/35 516/516 [==============================] - 1s 2ms/step - loss: 0.3490 - mse: 0.3490 Epoch 5/35 516/516 [==============================] - 1s 2ms/step - loss: 0.3438 - mse: 0.3438 Epoch 6/35 516/516 [==============================] - 1s 2ms/step - loss: 0.3218 - mse: 0.3218 Epoch 7/35 516/516 [==============================] - 1s 2ms/step - loss: 0.3415 - mse: 0.3415 Epoch 8/35 362/516 [====================>.........] - ETA: 0s - loss: 0.3143 - mse: 0.316 *** WARNING: max output size exceeded, skipping output. *** 516/516 [==============================] - 1s 2ms/step - loss: 0.2788 - mse: 0.2788 Epoch 29/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2826 - mse: 0.2826 Epoch 30/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2785 - mse: 0.2785 Epoch 31/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2809 - mse: 0.2809 Epoch 32/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2888 - mse: 0.2888 Epoch 33/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2749 - mse: 0.2749 Epoch 34/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2783 - mse: 0.2783 Epoch 35/35 516/516 [==============================] - 1s 2ms/step - loss: 0.2821 - mse: 0.2821 1/1 [==============================] - 0s 56ms/step INFO:tensorflow:Assets written to: /local_disk0/repl_tmp_data/ReplId-3088f-d4006-b00f2-c/tmpqbcfgll5/model/data/model/assets
      INFO:tensorflow:Assets written to: /local_disk0/repl_tmp_data/ReplId-3088f-d4006-b00f2-c/tmpqbcfgll5/model/data/model/assets
      Uploading artifacts: 0%| | 0/12 [00:00<?, ?it/s]
      2024/04/18 21:41:06 INFO mlflow.store.artifact.cloud_artifact_repo: The progress bar can be disabled by setting the environment variable MLFLOW_ENABLE_ARTIFACTS_PROGRESS_BAR to false
      Uploading artifacts: 0%| | 0/1 [00:00<?, ?it/s]
      129/129 [==============================] - 0s 1ms/step - loss: 0.2791 - mse: 0.2791 129/129 [==============================] - 0s 1ms/step

      Part 4. Register the model in MLflow and use the model to make predictions

      To learn more about the Model Registry, see (AWS|Azure|GCP).

      Successfully registered model 'cal_housing_keras'. 2024/04/18 21:41:10 INFO mlflow.store.model_registry.abstract_store: Waiting up to 300 seconds for model version to finish creation. Model name: cal_housing_keras, version 1 Created version '1' of model 'cal_housing_keras'.

      Load the model for inference and make predictions

      Downloading artifacts: 0%| | 0/12 [00:00<?, ?it/s]
      2024/04/18 21:41:23 INFO mlflow.store.artifact.artifact_repo: The progress bar can be disabled by setting the environment variable MLFLOW_ENABLE_ARTIFACTS_PROGRESS_BAR to false
      129/129 [==============================] - 0s 1ms/step
      array([[0.6047815], [3.2157354], [2.4929218], ..., [1.1273922], [1.4164997], [3.8568711]], dtype=float32)

      Clean up

      Detach this notebook from the cluster to stop TensorBoard.