Об этом проекте
Surogate — это инструментарий под лицензией Apache 2.0, объединяющий обучение и развертывание LLM в одном проекте, с нативными движками на C++/CUDA, предназначенными для GPU NVIDIA. Он ориентирован на Linux x86_64 с Python 3.12 и CUDA 13 (драйвер 580+), и распространяется в виде wheel-пакета, скрипта установки и образа контейнера.
Движок обучения
Сторона обучения охватывает предобучение и полную донастройку, адаптеры LoRA и QLoRA, а также рецепты точности, включая BF16, гибридный FP8 и Blackwell NVFP4. Поддерживается обучение с подкреплением GRPO со средами вознаграждения, обучение предпочтениям DPO и дистилляция знаний из top-K распределений учителя. Многопроцессорное и многоузловое выполнение использует потоковый параллелизм данных, шардирование ZeRO, перекрытие коммуникаций и Ray. Конвейерный параллелизм может транслировать замороженные веса для LoRA через GPU PCIe без NVLink. Обучение MoE включает экспертный параллелизм и балансировку нагрузки. Контроль памяти включает выгрузку на CPU для весов, градиентов, состояния оптимизатора, активаций и квантов, а также пересчет и мозаичное выполнение MLP. Оптимизаторы включают AdamW 8-bit и NorMuon, с логированием Weights & Biases, контрольными точками и возобновлением. Модели определяются через Python DSL с автоматическим дифференцированием на этапе компиляции.
Движок развертывания
Сторона развертывания — это нативный HTTP-сервер на C++/CUDA, предоставляющий совместимые с OpenAI конечные точки Chat Completions, Completions и Responses, а также совместимые с Anthropic Messages. Поддерживаются потоковая передача, отдельный контент рассуждений, контроль мышления и специфичные для моделей парсеры вызовов функций. Возможности параллелизма включают непрерывную пакетную обработку, поэтапную обработку промптов, CUDA-графы, до 128 активных последовательностей на модель, кэширование префиксов и спекулятивное декодирование через MTP или DFlash. Загружаются нативные GGUF (K-quants, Q8_0, legacy и IQ форматы), контрольные точки Hugging Face safetensors и экспорт в BF16/FP8/NVFP4. Кэш KV является эластичным и может использоваться совместно между моделями. Адаптеры LoRA во время выполнения могут загружаться и выбираться для каждого запроса. Несколько именованных моделей могут совместно использовать один GPU с приоритетами и поведением сна/пробуждения. Большие модели могут охватывать несколько GPU или выгружать веса на CPU, с кэшированием экспертов на GPU для семейств MoE. Поддержка зрения и встраиваний включает изображения/видео для поддерживаемых моделей зрения и EmbeddingGemma на GPU или CPU с AVX-512. Операционные функции включают аутентификацию по API-ключам, проверки работоспособности, метрики Prometheus, журналы запросов и статистику кэша.
Покрытие моделей
Примеры обучения охватывают Qwen3 плотные и MoE, Qwen3-VL, Qwen3.5/3.6 плотные и MoE, Llama 3.1/3.2, MiniCPM5, Spark-X2.5, Gemma 4, Nemotron 3/Cascade 2, GPT-OSS, Laguna и LFM2/LFM2.5. Развертывание охватывает Qwen3, Qwen3.5/3.6/3.8, Qwen3.8 Flash-Next, GLM-5.3-Flash, Llama, Gemma 3/4, LFM2/LFM2.5, MiniCPM5, Spark-X2.5 и EmbeddingGemma 300M. В README отмечается, что определения обучения DeepSeek-V4, Flash-Next и GLM-5.3-Flash все еще имеют отложенные компоненты.
Рабочий процесс
Типичный поток: установка, развертывание модели с помощью `surogate serve`, обучение адаптера с YAML-конфигом через `surogate sft`, слияние адаптера с базовой моделью, при необходимости квантование в GGUF, затем развертывание результата. Режим GRPO на одном GPU может совмещать развертывание и обучение с общими весами для поддерживаемых семейств LoRA в BF16.
Примечания по оборудованию
Сборки для обучения нацелены на SM89+ (Ada, Hopper, поддерживаемый Blackwell). FP8 требует SM89+; нативный NVFP4 требует поддерживаемого оборудования Blackwell. Сборки для развертывания по умолчанию нацелены на SM120a (серия RTX 50 и RTX PRO Blackwell), с портом SM89/Ada, который компилируется, но имеет ожидающую проверку во время выполнения. Распределенное обучение использует NCCL; выгрузка на CPU требует достаточного объема системной RAM.
В README представлены таблицы бенчмарков, сравнивающие пропускную способность обучения и развертывания с Unsloth, vLLM и llama.cpp на конкретном оборудовании и рабочих нагрузках; это собственные измерения проекта, и к ним следует относиться соответственно.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.