Две популярные платформы глубокого обучения, 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/

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel