Cannot use keras models on Mac M1 with BigSur

10,133

Solution 1

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

Solution 2

I've done as follows on macOS 11.4 (Even though the ref says "OS Requirements macOS 12.0+"), python==3.8.2 and worked [ref: https://developer.apple.com/metal/tensorflow-plugin/]:

  1. Create a venv on x86 terminal, i.e. Rosetta Terminal (see: https://dev.to/courier/tips-and-tricks-to-setup-your-apple-m1-for-development-547g) i.e. Environment Setup: x86 : AMD Create venv: python3 -m venv ~/PATH/tensorflow-metal (Substitute PATH with your real PATH) Activate the venv: source ~/PATH/tensorflow-metal/bin/activate Update pip: python -m pip install -U pip

  2. Install any library/package you need. For instance: For instance: pip install matplotlib jupyterlab

  3. Install base tensorflow: python -m pip install tensorflow-macos

  4. Install metal plugin: python -m pip install tensorflow-metal

Good Luck & Cheers!

Share:
10,133
Ankita
Author by

Ankita

Updated on June 13, 2022

Comments

  • Ankita
    Ankita almost 2 years

    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.

  • ti7
    ti7 almost 3 years
    This differs somewhat from the script at github.com/apple/tensorflow_macos/blob/master/scripts/… , which may be more correct !
  • Ankita
    Ankita almost 3 years
    @zabir can you please direct me where to look for the explanation of W, I, F?
  • Ankita
    Ankita almost 3 years
    I am getting errors about following packages not having compatible versions: grpcio, numpy, protobuf, tensorflow-estimator. should I be worried? Should I uninstall the currently installed versions and install exact versions? Although, my ipynb file runs perfectly as of now.
  • Shep Bryan
    Shep Bryan over 2 years
    I ran this and got "ERROR: TensorFlow with ML Compute acceleration is only available on macOS 11.0 and later." but I am using Monterey 12.0.1
  • Irfan Yaqub
    Irfan Yaqub over 2 years
    @ShepBryan I have the same error. have you found the answer?
  • Shep Bryan
    Shep Bryan over 2 years
    @MR.Robot Yes, evidently you cannot use your system python and you are forced to use miniconda. I was trying to avoid that, but in the end I decided to just do the easiest thing. I followed this tutorial and got it to work: youtube.com/watch?v=_CO-ND1FTOU
  • Howard
    Howard over 2 years
    You should use the steps on developer.apple.com/metal/tensorflow-plugin, not on GitHub. Then it is working on macOS 12 Monterey
  • Robert Alexander
    Robert Alexander over 2 years
    Trying all of the above on a Mac M1 with Monterey but nothing works. The apple channel does not have a tensorflow-deps, nor a tensorflow-macos package anymore.
  • solopiu
    solopiu over 2 years
    I use Anaconda and installing it as conda create -n name tensorflow (as this video suggest: youtube.com/watch?v=tGkZ9EARwzk) worked for me. Note that the new environment is with Python 3.7.11 and tf version will be 2.0.0.