Как установить TensorFlow на Macbook M1
Подскажите, пожалуйста, как правильно установить TensorFlow 2 на Macbook M1. По официальной иснтрукции https://www.tensorflow.org/install/pip?hl=ru#macos проверяю версии:
Python 3.9.10
pip 22.0.4 from /Users/vlad/miniforge3/lib/python3.9/site-packages/pip (python 3.9)
Далее по инструкции предлагают установить виртуальную среду по документации https://developer.apple.com/metal/tensorflow-plugin/:
Устанавливаю виртуальную среду:
python3 -m venv ~/tensorflow-metal
source ~/tensorflow-metal/bin/activate
python -m pip install -U pip
Далее, ставлю Conda:
chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate
conda install -c apple tensorflow-deps
Далее:
conda install -c apple tensorflow-deps==2.6.0
python -m pip install tensorflow-macos
На этом шаге вроде бы все устанавливается, но есть ошибки:
error: pkg-config probably not installed: FileNotFoundError(2, 'No such file or directory')
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for h5py
Failed to build h5py
ERROR: Could not build wheels for h5py, which is required to install pyproject.toml-based projects
Далее, ставлю:
python -m pip install tensorflow-metal - здесь без ошибок
В конце предлагают запустить проверку, делаю:
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
и получаю:
raceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'tensorflow'
На этом все... не понимаю как правильно нужно устанавливать, в теме нейронных сетей и я полный 0, пока что.
Попробовал просто pip install tensorflow:
pip install tensorflow
Requirement already satisfied: tensorflow in ./miniforge3/lib/python3.9/site-packages (0.12.0)
Requirement already satisfied: protobuf==3.1.0 in ./miniforge3/lib/python3.9/site-packages (from tensorflow) (3.1.0)
Requirement already satisfied: wheel>=0.26 in ./miniforge3/lib/python3.9/site-packages (from tensorflow) (0.35.1)
Requirement already satisfied: numpy>=1.11.0 in ./miniforge3/lib/python3.9/site-packages (from tensorflow) (1.19.5)
Requirement already satisfied: six>=1.10.0 in ./miniforge3/lib/python3.9/site-packages (from tensorflow) (1.15.0)
Requirement already satisfied: setuptools in ./miniforge3/lib/python3.9/site-packages (from protobuf==3.1.0->tensorflow) (60.10.0)
Теперь при проверке python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
`Traceback (most recent call last):
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
_pywrap_tensorflow = swig_import_helper()
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
File "/Users/vlad/miniforge3/lib/python3.9/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/Users/vlad/miniforge3/lib/python3.9/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: dlopen(/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/_pywrap_tensorflow.so, 0x000A): tried: '/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/_pywrap_tensorflow.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/_pywrap_tensorflow.so' (no such file), '/usr/lib/_pywrap_tensorflow.so' (no such file)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/__init__.py", line 60, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
_pywrap_tensorflow = swig_import_helper()
File "/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
File "/Users/vlad/miniforge3/lib/python3.9/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/Users/vlad/miniforge3/lib/python3.9/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: dlopen(/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/_pywrap_tensorflow.so, 0x000A): tried: '/Users/vlad/miniforge3/lib/python3.9/site-packages/tensorflow/python/_pywrap_tensorflow.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/_pywrap_tensorflow.so' (no such file), '/usr/lib/_pywrap_tensorflow.so' (no such file)
Error importing tensorflow. Unless you are using bazel,
you should not try to import tensorflow from its source directory;
please exit the tensorflow source tree, and relaunch your python interpreter
from there.`
На данном этапе при проверке имею вот такое:
% python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Metal device set to: Apple M1 Pro
systemMemory: 16.00 GB
maxCacheSize: 5.33 GB
2022-04-01 14:12:34.600366: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
2022-04-01 14:12:34.600494: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
tf.Tensor(981.7157, shape=(), dtype=float32)
Но при запуске в Jupiter notebook модуль по прежнему не найден, подскажите что я делаю не так?
ModuleNotFoundError: No module named 'tensorflow'