Search code examples
pythontensorflowkerastf.kerasapple-m1

Cannot use keras models on Mac M1 with BigSur


I am trying to use Sequential model from keras of tensorflow. When I am executing following statement:

model.fit(x_train, y_train, epochs=20, verbose=True, validation_data=(x_dev, y_dev), batch_size=10)

I am getting following errors:

I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:116] None of the MLIR optimization passes are enabled (registered 2)

W tensorflow/core/platform/profile_utils/cpu_utils.cc:126] Failed to get CPU frequency: 0 Hz

F tensorflow/core/grappler/costs/op_level_cost_estimator.cc:710] Check failed: 0 < gflops (0 vs. 0)type: "CPU"

I am not able to understand how to fix it. Can anyone please help me.

From this issue on github, I understood that device.frequency() returned 0 probably because NominalCPUFrequency() returned 1. However, this information seems too abstract for me and I cannot understand.


Solution

  • First two ones are nothing to worry about.

    The third one is a problem. You have installed an improper version of TensorFlow. Use one that supports the Mac M1 chip.

    Run the following bash script to download and install TensorFlow.

    #!/bin/bash
    
    set -e
    
    VERSION=0.1alpha3
    INSTALLER_PACKAGE=tensorflow_macos-$VERSION.tar.gz
    INSTALLER_PATH=https://github.com/apple/tensorflow_macos/releases/download/v$VERSION/$INSTALLER_PACKAGE
    INSTALLER_SCRIPT=install_venv.sh
    
    echo
    
    # Check to make sure we're good to go.
    if [[ $(uname) != Darwin ]] || [[ $(sw_vers -productName) != macOS ]] || [[ $(sw_vers -productVersion) != "11."* ]] ; then 
      echo "ERROR: TensorFlow with ML Compute acceleration is only available on macOS 11.0 and later." 
      exit 1
    fi
    
    # This 
    echo "Installation script for pre-release tensorflow_macos $VERSION.  Please visit https://github.com/apple/tensorflow_macos "
    echo "for instructions and license information."   
    echo
    echo "This script will download tensorflow_macos $VERSION and needed binary dependencies, then install them into a new "
    echo "or existing Python 3.8 virtual environment."
    
    # Make sure the user knows what's going on.  
    read -p 'Continue [y/N]? '    
    
    if [[ ! $REPLY =~ ^[Yy]$ ]]
    then
    exit 1
    fi
    echo
    
    echo "Downloading installer."
    tmp_dir=$(mktemp -d)
    
    pushd $tmp_dir
    
    curl -LO $INSTALLER_PATH 
    
    echo "Extracting installer."
    tar xf $INSTALLER_PACKAGE
    
    cd tensorflow_macos 
    
    function graceful_error () { 
      echo 
      echo "Error running installation script with default options.  Please fix the above errors and proceed by running "
      echo 
      echo "  $PWD/$INSTALLER_SCRIPT --prompt"
      echo 
      echo
      exit 1
    }
    
    bash ./$INSTALLER_SCRIPT --prompt || graceful_error 
    
    popd
    rm -rf $tmp_dir
    
    

    ref: https://github.com/apple/tensorflow_macos