# Использование MLX в Hugging Face

[MLX](https://github.com/ml-explore/mlx) — это фреймворк для обучения и обслуживания моделей на процессорах Apple silicon, разработанный Apple Machine Learning Research.

В комплекте с ним поставляется множество примеров:

- [Генерация текста с помощью MLX-LM](https://github.com/ml-explore/mlx-lm/tree/main) и [генерация текста с помощью MLX-LM для моделей в формате GGUF](https://github.com/ml-explore/mlx-examples/tree/main/llms/gguf_llm).
- Генерация текста в больших масштабах с помощью [LLaMA](https://github.com/ml-explore/mlx-examples/tree/main/llms/llama).
- Допобучение с [LoRA](https://github.com/ml-explore/mlx-examples/tree/main/lora).
- Генерация изображений с помощью [Stable Diffusion](https://github.com/ml-explore/mlx-examples/tree/main/stable_diffusion).
- Распознавание речи с помощью [OpenAI's Whisper](https://github.com/ml-explore/mlx-examples/tree/main/whisper).

## Исследование MLX на Hub

Модели MLX можно найти, применив фильтр слева на [странице моделей](https://huggingface.co/models?library=mlx&sort=trending). Также существует открытое [сообщество MLX](https://huggingface.co/mlx-community), участники которого конвертируют и публикуют веса в формате MLX.

Благодаря интеграции MLX с Hugging Face Hub вы можете загружать модели MLX всего несколькими строками кода.

## Установка

MLX поставляется как отдельный пакет, а для работы с большими языковыми моделями существует подпакет MLX-LM с интеграцией Hugging Face. Чтобы установить MLX-LM, вы можете использовать следующую однострочную установку через `pip`:

```bash
pip install mlx-lm
```

Подробнее об этом можно узнать [здесь](https://github.com/ml-explore/mlx-lm/tree/main).

Если вы установите `mlx-lm`, установка `mlx` не требуется. Если вы не хотите использовать `mlx-lm`, а только MLX, вы можете установить сам MLX следующим образом.

С помощью `pip`:

```bash
pip install mlx
```

С помощью `conda`:

```bash
conda install -c conda-forge mlx
```

## Использование существующих моделей

MLX-LM содержит полезные утилиты для генерации текста. Следующая строка напрямую скачивает и загружает модель и начинает генерировать текст.

```bash
python -m mlx_lm.generate --model mistralai/Mistral-7B-Instruct-v0.2 --prompt "hello"
```

Полный список параметров генерации можно получить, выполнив

```bash
python -m mlx_lm.generate --help
```

Вы также можете загрузить модель и начать генерацию текста через Python, как показано ниже:

```python
from mlx_lm import load, generate

model, tokenizer = load("mistralai/Mistral-7B-Instruct-v0.2")

response = generate(model, tokenizer, prompt="hello", verbose=True)
```

MLX-LM поддерживает популярные архитектуры LLM, включая LLaMA, Phi-2, Mistral и Qwen. Модели, отличные от поддерживаемых, можно легко скачать следующим образом:

Установка `HF_XET_HIGH_PERFORMANCE=1` повышает пределы параллелизма и размеры буферов для машин с высокой пропускной способностью и как минимум 64 ГБ ОЗУ:

```bash
pip install -U huggingface_hub

export HF_XET_HIGH_PERFORMANCE=1
hf download --local-dir <LOCAL FOLDER PATH> <USER_ID>/<MODEL_NAME>
```

## Конвертация и обмен моделями

Вы можете конвертировать, а при необходимости и квантовать, LLM с Hugging Face Hub следующим образом:

```bash
python -m mlx_lm.convert --hf-path mistralai/Mistral-7B-v0.1 -q 
```

Если вы хотите сразу загрузить модель после конвертации, вы можете сделать это следующим образом.

```bash
python -m mlx_lm.convert \
    --hf-path mistralai/Mistral-7B-v0.1 \
    -q \
    --upload-repo <USER_ID>/<MODEL_NAME>
```

## Дополнительные ресурсы

* [Репозиторий MLX](https://github.com/ml-explore/mlx)
* [Документация MLX](https://ml-explore.github.io/mlx/)
* [MLX-LM](https://github.com/ml-explore/mlx-lm/tree/main)
* [Примеры MLX](https://github.com/ml-explore/mlx-examples/tree/main)
* [Все модели MLX на Hub](https://huggingface.co/models?library=mlx&sort=trending)

