Перейти к содержанию
Публикация AiManual

MLX Fine-Tuning UI: когда командная строка надоела, а нейросеть нужно настроить на Mac

Полный гайд по open-source UI для тонкой настройки LLM на Apple Silicon. Загружаем модели, настраиваем LoRA, запускаем обучение без терминала.

Коротко

Что будет в материале

  1. 01

    Терминал убивает креатив. Особенно когда хочется просто дообучить нейросеть

  2. 02

    Что умеет этот UI? Список возможностей, который заставит забыть про терминал

  3. 03

    Установка: три команды вместо двадцати

  4. 04

    Интерфейс: где что нажимать и почему некоторые слайдеры опасны

Терминал убивает креатив. Особенно когда хочется просто дообучить нейросеть

Знакомо? Открываешь гайд по fine-tuning, а там сплошные флаги, аргументы командной строки и скрипты на Python. Хочется просто взять Mistral 7B, добавить свои данные и получить модель, которая пишет как ты. Но вместо этого — танцы с бубном вокруг терминала.

Пока все страдают с CLI, на GitHub тихо появился проект mlx-fine-tuning-ui. Это Streamlit-интерфейс для тонкой настройки LLM на Apple Silicon. Никаких команд. Только слайдеры, кнопки и визуализация прогресса.

Проект работает поверх MLX — фреймворка от Apple для машинного обучения на их чипах. Если вы уже пробовали Unsloth-MLX, то поймете разницу: здесь все в браузере.

Что умеет этот UI? Список возможностей, который заставит забыть про терминал

  • Загрузка моделей прямо из HuggingFace — вводишь название, система сама скачивает
  • Визуальный выбор параметров LoRA — ранг, альфа, dropout сдвигаешь слайдерами
  • Подготовка датасетов в формате JSONL — загружаешь файл или создаешь из текста
  • Реальный мониторинг обучения — графики loss прямо во время процесса
  • Экспорт в HuggingFace одним кликом — готовую модель сразу в облако
  • Интеграция с OpenRouter — если захочется протестировать модель онлайн
💡
LoRA (Low-Rank Adaptation) — метод дообучения больших моделей без изменения всех весов. Вместо этого добавляются небольшие адаптивные слои. На Mac это особенно важно: полное fine-tuning 7B модели съест всю память.

Установка: три команды вместо двадцати

В теории все просто. Клонируешь репозиторий, ставишь зависимости, запускаешь Streamlit. На практике — проверь, что у тебя уже есть Python 3.9+ и pip.

1Клонируем и заходим в директорию

Открываешь терминал (да, один раз придется). Клонируешь репозиторий и переходишь в папку проекта.

2Ставим зависимости

Создаешь виртуальное окружение — это не обязательно, но спасает от конфликтов версий. Потом pip install -r requirements.txt. Главное — дождись, пока установится MLX.

3Запускаем интерфейс

Streamlit run app.py. Откроется браузер с интерфейсом. Все. Терминал можно закрывать.

Если вылетает ошибка с Metal — проверь, что у тебя macOS 13.0+ и чип Apple Silicon. На Intel Mac это не заработает. Для старых систем посмотри статью про проблемы с Metal API.

Интерфейс: где что нажимать и почему некоторые слайдеры опасны

Открываешь localhost:8501. Видишь четыре вкладки: Model, Dataset, Training, Inference.

ВкладкаЧто делатьОпасные моменты
ModelВводишь "mistralai/Mistral-7B-Instruct-v0.2". Ждешь загрузки.Большие модели (13B+) могут не влезть в память. Начинай с 7B.
DatasetЗагружаешь JSONL или создаешь из текста.Формат должен быть строгим. Одна ошибка — и обучение сломается.
TrainingНастраиваешь LoRA, batch size, learning rate.Слишком большой learning rate — модель забывает, что умела.
InferenceТестируешь результат, загружаешь в HuggingFace.Публичные модели видны всем. Проверь, что не загружаешь конфиденциальное.

Самый интересный слайдер — LoRA rank. Это размер адаптивных матриц. Чем больше — тем точнее настройка, но и тем больше памяти нужно. Для начала поставь 8. Если модель плохо обучается — увеличивай до 16. Больше 32 на Mac уже рискованно.

Реальный кейс: учим Mistral писать как техподдержка

Допустим, у тебя есть 100 примеров переписки с клиентами. Хочешь, чтобы модель отвечала в том же стиле.

  1. Собираешь все ответы в текстовый файл. Каждый диалог — новая строка.
  2. В Dataset загружаешь файл. Система конвертирует в JSONL автоматически.
  3. Выбираешь Mistral 7B в Model. Ждешь, пока скачается (это 14 ГБ, приготовься).
  4. В Training выставляешь: rank=8, alpha=16, dropout=0.1, batch size=2.
  5. Нажимаешь Start Training. Смотришь, как падает loss. Пьёшь кофе.
  6. Через 2-3 часа (зависит от данных) тестируешь в Inference.

Если модель начинает отвечать "Здравствуйте, обращайтесь!" вместо креативных решений — уменьши learning rate. Если вообще молчит — проверь датасет.

💡
Loss должен стабильно снижаться. Если он скачет или растет — останови обучение, поменяй параметры. Типичная ошибка: слишком большой learning rate. Начинай с 2e-4, а не с 1e-3.

Альтернативы: когда UI не нужен, а терминал — друг

Этот инструмент не единственный способ fine-tuning на Mac. Вот что еще есть:

  • Прямая работа с MLX — если хочешь полный контроль. Пишешь скрипты, настраиваешь каждый параметр. Но это для тех, кто готов разбираться.
  • Unsloth-MLX — оптимизированная библиотека. Быстрее, но сложнее. Подходит для продакшена.
  • LM Studio — только инференс, но есть продвинутые функции для работы с моделями. Fine-tuning пока в планах.
  • Ollama — проще для запуска, но своего fine-tuning нет. Только готовые модели.

Главное преимущество mlx-fine-tuning-ui — он решает одну задачу и делает это хорошо. Не перегружен функциями. Не пытается быть всем для всех.

Кому подойдет этот инструмент? Три типа пользователей

Не всем нужен визуальный интерфейс. Вот кто выиграет от его использования:

  1. Исследователи-визуалы — тем, кто хочет видеть графики обучения в реальном времени, а не логи в терминале.
  2. Преподаватели и студенты — когда нужно быстро показать, как работает fine-tuning, без объяснения команд.
  3. Разработчики прототипов — если нужно проверить гипотезу на своих данных, а не разбираться с кодом.

Если ты уже делаешь fine-tuning через скрипты и у тебя есть свой пайплайн — этот UI покажется игрушечным. Но если только начинаешь или хочешь сэкономить время — он идеален.

Не используй этот инструмент для продакшена. Это прототипирование. Когда найдешь работающие параметры — переноси обучение в скрипты. Или используй Unsloth для оптимизации.

Ограничения: что не умеет этот UI и когда он подведет

Идеальных инструментов не бывает. Вот с чем придется смириться:

  • Только LoRA. Полный fine-tuning не поддерживается — памяти Mac не хватит.
  • Только текстовые модели. Мультимодальные вроде VL-JEPA не заведутся.
  • Нет продвинутой настройки оптимизаторов. Только базовые параметры.
  • Streamlit иногда тормозит на больших датасетах. Это не native-приложение.

Самое обидное — нельзя параллельно обучать несколько моделей. Один запуск — одна модель. Хочешь сравнить разные параметры — запускай по очереди.

Что дальше? Экспортируем модель и используем где угодно

Обучение закончилось. Loss стабилизировался. Что делать с моделью?

Вариант первый — загрузить в HuggingFace Hub. Вкладка Inference, кнопка Upload to HuggingFace. Нужен токен (создаёшь на сайте). Модель появится в твоём профиле. Можно использовать через API или скачать.

Вариант второй — экспортировать веса LoRA и использовать отдельно. Они занимают мало места (десятки мегабайт вместо гигабайтов). Применяешь к базовой модели когда нужно.

Вариант третий — интегрировать в своё приложение. Если пишешь на Swift — посмотри Swift Transformers. Если веб — можно через MLC.

Самый простой способ — загрузить в OpenRouter. Там модель будет доступна как API. Платишь только за запросы. Подходит для тестирования с реальными пользователями.

Главное — не оставляй модель просто на диске. Fine-tuning ради процесса бессмысленен. Либо используй сам, либо поделись с сообществом.

Следующий шаг — попробовать на реальных данных. Возьми свои заметки, диалоги из чата, статьи. Посмотри, сможет ли модель заговорить твоим голосом. Если получится — ты только что создал свою первую кастомную LLM. Без единой команды в терминале.