SwiftLM: сервер инференса моделей машинного обучения на Swift

SwiftLM: сервер инференса моделей машинного обучения на Swift

SwiftLM — это сервер для инференса моделей машинного обучения на Swift, оптимизированный для Apple Silicon. Он обеспечивает совместимость с API OpenAI и обеспечивает высокую производительность благодаря отсутствию Python и GIL.

Проект подходит для разработчиков, работающих с ML-моделями, которые хотят избавиться от ресурсов, необходимых для Python и при этом использовать мощь Apple Silicon. Здесь отсутствуют лишние копии памяти, а производительность на уровне "металла" позволяет запускать тяжелые модели, поддерживая потоковую передачу данных с SSD. Запустить сервер можно, скачав предсобранный бинарник с гитхаба или собрав его из исходников, что также поддерживает автоматическую загрузку необходимых моделей.

На данный момент ограничение проекта — это необходимость использования на железе Apple с macOS или iOS. Использование других операционных систем не предусмотрено, и для работы нужны модели, совместимые с MLX.

Проект SwiftLM — это сервер для вывода моделей машинного обучения, написанный на языке Swift. Он обеспечивает совместимость с API OpenAI и обеспечивает высокую производительность, поскольку разработан для работы на Apple Silicon без необходимости использования Python и GIL, что позволяет достичь максимальной скорости обработки.

Установка и запуск

Существует два способа начать работу с проектом: скачать предсобранный бинарный файл или собрать проект из исходников.

Скачивание предсобранного бинарного файла

Для этого нужно перейти на страницу Релизы и скачать архив с последней версией.

Распакуй архив и запусти сервер следующими командами:

tar -xzf SwiftLM--macos-arm64.tar.gz
./SwiftLM --model mlx-community/Qwen2.5-3B-Instruct-4bit --port 5413

Сборка из исходников

Чтобы собрать проект, необходимо выполнить следующие команды:

git clone --recursive https://github.com/SharpAI/SwiftLM
cd SwiftLM
./build.sh

После этого сервер можно запустить так:

./build/release/SwiftLM --model mlx-community/gemma-4-26b-a4b-it-4bit --port 5413

Производительность

SwiftLM показывает отличные результаты на устройствах с памятью 32 ГБ, например на Mac mini M6. Модели Mixture of Experts (MoE) с 4-битными весами показывают высокий уровень производительности: скорость декодирования может достигать 52.2 токенов в секунду. Однако для моделей с большим объемом весов, таких как gemma-4-26b-a4b-it-8bit, использование SSD для потоковой передачи становится критически важным.

Поддерживаемые возможности

  • Работа с LLM (языковыми моделями) и VLM (визуально-языковыми моделями) через OpenAI-совместимый API.
  • Поддержка моделей на базе HuggingFace.
  • Интеграция спецификации TurboQuant для быстрой работы с памятью.
  • Возможность потоковой передачи с SSD для моделей MoE.

Ограничения

Несмотря на высокую производительность, запуск больших моделей MoE на оборудовании с 64 ГБ может быть проблематичным из-за необходимости использования SSD для потоковой передачи весов и перегрузки ввода-вывода, что может выводить GPU из строя. Если ты планируешь использовать MTP (много-токенное предсказание) на больших моделях, будь готов к потенциальным снижениям производительности из-за этих ограничений.

Для некоторых моделей необходимо добавить флаг --stream-experts для улучшения скорости работы, особенно на крупных моделях, использующих распределение экспертов.

Открыть на GitHub: SharpAI/SwiftLM →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте