-
Устанавливаем homebrew https://brew.sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
Ставим xcode. Заходим в магазин проложений apple - ищем по ключевому слову и устанавливаем
-
Ставим cmake через brew
brew install cmake
-
Ставим miniconda для управления пакетами и версиями python
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
-
Даем установку конде принимать пакеты, поставленные pip-ом принимать, как родные - установленные кондой. Это нужно для того, чтобы конда не переустанавливала пакеты, которые были установлены с pip-ом. Дело в том, что для некоторых пакетов конда ставит их не оптимизированными для маковского проца. Например, numpy поставленный через конду будет в 4 раза медленнее на некоторых задачах.
conda config --set pip_interop_enabled true
-
Ставим numpy через pip
pip install --no-binary :all: --no-use-pep517 numpy
Если эта команда не проходит, то тогда простоpip install numpy
-
Проверяем работы на тестовом скрипте:
import time
import numpy as np
np.random.seed(42)
a = np.random.uniform(size=(300, 300))
runtimes = 10
timecosts = []
for _ in range(runtimes):
s_time = time.time()
for i in range(100):
a += 1
np.linalg.svd(a)
timecosts.append(time.time() - s_time)
print(f'{timecosts[-1]:.5f}s')
print(f'mean of {runtimes} runs: {np.mean(timecosts):.5f}s')
запускаем через python <имя скрипта>, должно получиться не более 3 секунд на итерацию. Для сравнения - на интеле отрабатывает за 1 секунду, но это супер-оптимизированная библиотечка от интел для вычислений. Не очень актуально уже, но источник для всего этого - https://gist.github.com/MarkDana/a9481b8134cf38a556cf23e1e815dafb https://developer.apple.com/forums/thread/695963
-
Справка по работе с мини-кондой - точно пригодится: https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf
-
Очень удобно работать с sshfs для монтирования локально данных по ssh - для этого надо поставить 2 пакета по ссылке из статьи ниже. https://www.petergirnus.com/blog/how-to-use-sshfs-on-macos
Далее надо погасить мак и долго держать кнопку питания, чтобы войти в меню загрузки.
В меню выбрать через утилиты настройки безопасности и разрешить запуск приложений/расширений от сторонних разработчиков.
После этого станет возможным работы с macFUSE.
Монтировать диски можно вот такой командой:
sshfs username@remote:<удаленный путь> <локальный путь - куда монтировать> -o volname=VOLUME_NAME
- Устанавливаем jax, flax для ускоренной работы с многомерными массивами https://developer.apple.com/metal/jax/
python -m pip install numpy wheel ml-dtypes==0.2.0
# obtain JAX source code
git clone https://github.com/google/jax.git --branch jaxlib-v0.4.10 --single-branch
cd jax
# build jaxlib from source, with capability to load plugin
python build/build.py --bazel_options=--@xla//xla/python:enable_tpu=true
# install jaxlib
python -m pip install dist/*.whl
# install jax
python -m pip install jax
python -m pip install jax-metal==0.0.3
https://huggingface.co/docs/transformers/installation
pip install torch sentencepiece \
accelerate \
bitsandbytes \
transformers==4.30 \
git+https://github.com/huggingface/peft.git
git+https://github.com/huggingface/transformers.git@15641892985b1d77acc74c9065c332cd7c3f7d7f \
TRANSFORMERS_CACHE - где хранить кеш для моделей трансформеров HF_DATASETS_OFFLINE=1 - прямой выбор данных из кеша, без попытки скачать TRANSFORMERS_OFFLINE=1
pip install auto-gptq \
git+https://github.com/huggingface/optimum.git
https://automationpanda.com/2017/09/07/copying-file-paths-from-finder-in-macos/