Две популярные платформы глубокого обучения, TensorFlow и PyTorch, поддерживают графические процессоры NVIDIA для ускорения с помощью инструментария CUDA. Это создает проблему для разработки на Mac с глубоким обучением.
Но больше нет!
Наряду с последним выпуском своих заказных силиконовых чипов на основе архитектуры ARM, Apple анонсировала новую структуру вычислений машинного обучения, которая может использоваться для ускоренного обучения моделей машинного обучения и машинного обучения. использование графических процессоров, имеющихся на компьютерах Apple Mac, без необходимости поддержки CUDA.
Теперь у нас есть оптимизированная для Mac версия Tensorflow 2.4, которую мы можем установить как на старые Mac с процессором Intel, так и на недавно выпущенные MacBook на базе чипа M1.
Были заявления, что , тесты оптимизированной библиотеки TensorFlow на нескольких популярных тестах нейронных сетей показывают «значительно более быстрое» время обучения по сравнению со стандартным кодом, с улучшением до 7 раз для оптимизированной библиотеки на новом оборудовании Apple M1.
Давайте посмотрим, как мы можем установить и протестировать эту новейшую библиотеку Tensorflow на наших компьютерах Mac.
Обратите внимание, что перед началом установки убедитесь, что вы обновились до последней версии macOS 11.0 (Big Sur) и в вашей системе установлен Python 3.8 (доступный из инструментов командной строки Xcode).
Откройте терминал и выполните шаги, как показано ниже.
Шаг 1. Создайте виртуальную среду с Python 3.8
В самом терминале перейдите в каталог, в который вы хотите установить эту среду, и введите следующую команду.
Обратите внимание, что я устанавливаю его в домашний каталог (/ Users / chirag /).
python3 -m venv my_env
Это создаст новую виртуальную среду «my_env» с Python 3.8. Нам нужно будет указать путь к этой среде при установке Tensorflow. на шаге ниже.
Чтобы проверить, установлена ли требуемая версия, то есть Python 3.8, вы можете активировать эту среду, а затем подтвердить, введя следующую команду.
источник my_env / bin / activate
python --version
Шаг 2. Запускаем скрипт установки (взят из репозитория apple / tensorflow_macos)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/apple/tensorflow_macos/master/scripts/download_and_install.sh)"
Во время установки он попросит вас указать путь к существующей среде Python. Укажите путь к среде, которую вы создали на шаге 1.
Для моей системы путь следующий.
/Users/chirag/my_env
Это установит Tensorflow2.4 в нашу систему в виртуальной среде «my_env».
Шаг 3. Активируйте среду.
source my_env/bin/activate
Шаг 4. Убедитесь, что установка TensorFlow прошла успешно.
Войдите в оболочку Python и импортируйте Tensorflow, введя следующую команду.
python3 -c 'import tensorflow as tf; print(tf.__version__)'
Как видите, мы получили результат без ошибок. Это означает, что мы успешно установили оптимизированную версию Tensorflow для MacOS!
Тестирование модели глубокого обучения с помощью этой установки Tensorflow:
Я также покажу вам, как вы можете протестировать и оценить свою производительность на архитектуре модели глубокого обучения CNN. Код взят из обсуждения на https://github.com/apple/tensorflow_macos/issues/25
Убедитесь, что ваша среда все еще активирована. Если нет, введите:
source my_env/bin/activate
Шаг а) Установите tenorflow_datasets модуль с помощью pip
pip install tensorflow_datasets
Шаг б) Создайте новый файл test.py в редакторе кода. Вставьте код, написанный ниже, и сохраните файл.
import tensorflow.compat.v2 as tf import tensorflow_datasets as tfds tf.enable_v2_behavior() from tensorflow.python.framework.ops import disable_eager_execution disable_eager_execution() from tensorflow.python.compiler.mlcompute import mlcompute mlcompute.set_mlc_device(device_name='gpu') (ds_train, ds_test), ds_info = tfds.load( 'mnist', split=['train', 'test'], shuffle_files=True, as_supervised=True, with_info=True, ) def normalize_img(image, label): """Normalizes images: `uint8` -> `float32`.""" return tf.cast(image, tf.float32) / 255., label batch_size = 128 ds_train = ds_train.map( normalize_img, num_parallel_calls=tf.data.experimental.AUTOTUNE) ds_train = ds_train.cache() ds_train = ds_train.shuffle(ds_info.splits['train'].num_examples) ds_train = ds_train.batch(batch_size) ds_train = ds_train.prefetch(tf.data.experimental.AUTOTUNE) ds_test = ds_test.map( normalize_img, num_parallel_calls=tf.data.experimental.AUTOTUNE) ds_test = ds_test.batch(batch_size) ds_test = ds_test.cache() ds_test = ds_test.prefetch(tf.data.experimental.AUTOTUNE) model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(32, kernel_size=(3, 3), activation='relu'), tf.keras.layers.Conv2D(64, kernel_size=(3, 3), activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), # tf.keras.layers.Dropout(0.25), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), # tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile( loss='sparse_categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(0.001), metrics=['accuracy'], ) model.fit( ds_train, epochs=12, validation_data=ds_test, )
Шаг c) Выполните этот скрипт.
python test.py
Это начнет обучение модели CNN на наборе данных MNIST для 12 эпох.
Вы можете изменить batch_size или поиграть с архитектурой модели и сообщить о своих результатах на странице обсуждения.
Вот результаты в моей системе со следующей конфигурацией:
MacBook Air 2020 (чип M1 - 16 ГБ ОЗУ - 8-ядерный ЦП - 7-ядерный графический процессор)
- 23с / эпоха
- 46 мс / шаг
- 97,9% окончательная точность
Использование CPU и GPU было следующим:
Это начало новой эры ML Execution на оборудовании Apple. Будет интересно посмотреть, что ждет машинное обучение на Mac в будущем!
Это все с моей стороны для этого сообщения.
Сообщите мне, понравился ли вам этот пост и есть ли у вас какие-либо вопросы или предложения, в поле для ответа ниже. Спасибо!
Свяжитесь со мной по адресу: https://www.linkedin.com/in/chiragdaryani/