Translating Benchmark as сравнение производительности provides a more accurate and descriptive translation in the context of technology comparisons.

«Перевод термина «Benchmark» как «сравнение производительности» является более точным и описательным в контексте сравнения технологий.»

Первое тестирование новой машинной обучения Apple MLX

Фото Javier Allegue Barros на Unsplash

Если вы пользователь Mac и энтузиаст глубокого обучения, вы, наверное, когда-то хотели, чтобы ваш Mac справлялся с тяжелыми моделями, верно? Что ж, догадайтесь, кто только что выпустил MLX, фреймворк для эффективного запуска моделей машинного обучения на Apple Silicon.

Недавнее введение варианта MPS backend в PyTorch 1.12 уже было смелым шагом, но с объявлением о MLX, кажется Apple хочет сделать значительный прорыв в области открытого глубокого обучения.

В этой статье мы протестируем эти новые подходы, сравнивая их с традиционным CPU backend и двумя CUDA-совместимыми GPU. Таким образом, мы стремимся показать, насколько эти новые, подходящие для Mac, методы можно использовать в 2024 году для экспериментов в области глубокого обучения.

Как исследователь, ориентированный на GNN, я сосредоточусь на тестировании модели Graph Convolutional Network (GCN). Но поскольку эта модель в основном состоит из линейных слоев, наши результаты могут быть полезны даже для тех, кто не специализируется на GNN.

Создание среды

Чтобы создать среду для MLX, мы должны указать, будем ли мы использовать архитектуру i386 или arm. С помощью conda можно сделать следующее:

CONDA_SUBDIR=osx-arm64 conda create -n mlx python=3.10 numpy -c conda-forgeconda activate mlx

Чтобы проверить, использует ли ваша среда arm, вывод следующей команды должен быть arm, а не i386:

python -c "import platform; print(platform.processor())"

Теперь просто установите MLX с помощью pip, и вы готовы начать исследования:

pip install mlx

Реализация GCN

Модель GCN, тип графовой нейронной сети (GNN), работает с матрицей смежности (представляющей структуру графа) и признаками узлов. Она вычисляет эмбеддинги узлов, собирая информацию от соседних узлов. В частности, каждый узел получает среднее значение признаков его соседей. Это усреднение выполняется путем умножения признаков узла на нормализованную матрицу смежности, скорректированную по степени узла. Для обучения этого процесса признаки сначала проецируются в пространство эмбеддинга с помощью линейного слоя.