Мы хотим поделиться с вами нашим опытом запуска LLM модели с открытым кодом на сервере собственной разработки. Сразу скажем, мы не сделали нечего революционного, LLM на GPU‑ускорителях запускали и используют многие. Но запустить LLM с открытым кодом на 100% отечественном сервере, построенном на отечественных процессорах архитектуры ARM64 с двумя NVIDIA Tesla A100, в изолированном контуре, и чтобы она работала устойчиво, без падений, это оказалось нетривиальным квестом.
Большие языковые модели (LLM) – это очень большие модели глубокого обучения, обученные на огромных объемах данных. Лежащий в основе трансформер – это набор нейронных сетей с множеством параметров с возможностью самонаблюдения. Их называют «ИИ», потому что они умеют обобщать, писать код, отвечать на вопросы и даже шутить. Но под капотом — матричные умножения, attention и гигабайты весов.
Большие языковые модели невероятно мощные и многофункциональные. Одна модель может справиться со множеством задач, но есть и специализированные LLM. Хотя LLM и не идеальны, они могут быть задействованы для создания контента, это называется генеративным искусственным интеллектом.
Мы разрабатываем, тестируем и производим наши продукты, создаем в процессе жизненного цикла продукта тонны документации. Использовать облачные LLM у нас нет возможности исходя из внутренних регламентов безопасности данных, у нас есть жесткие требования к информационной безопасности. Поэтому мы решили развернуть собственную LLM внутри закрытого контура, и в качестве аппаратной платформы использовали серверы собственной разработки. Помимо тестирования модульного сервера «М1» на данной задаче, мы хотели также проверить:
• Как отечественные процессоры с архитектурой ARM64 (48 ядер на сокет) справляются с инференсом LLM;
• Насколько эффективно работает связка ЦПУ с архитектурой ARM64 от отечественного чипмейкера и GPU-ускорители от североамериканского производителя;
• Можно ли эффективно использовать два ускорителя NVIDIA Tesla A100 без NVLink;
• Сколько типовой пользователь затратит времени на развертывание аналогичной системы.
Вариантов выбора LLM было несколько: Llama 3, Qwen, Mistral, российские модели… Мы выбрали DeepSeek-R1-70B в квантизации Q4_K_M по нескольким причинам:
• Открытая модель — можно установить и использовать без ограничений;
• Достаточно мощная для начала (тестовая генерации документации, помощь в отладке, код-ревю (code review));
• Контекстное окно в 128000 токенов гарантированно поместится в VRAM двух GPU-ускорителей;
• Скромная ресурсоёмкость — 70B параметров в 4-битном виде с окном в 128000 токенов весят примерно по 42 ГБ на каждый ускоритель NVIDIA A100. Это оставляет запас для будущих экспериментов, так как на каждом ускорителе установлено по 80 ГБ VRAM;
• Популярность и отзывы — модель показала себя неплохо на бенчмарках и в реальном использовании.
Позже мы планируем экспериментировать с Qwen3 72B или 200B+ с RAG (Retrieval- Augmented Generation).
Давайте посмотрим в какой конфигурации аппаратной платформы работает выбранная LLM. Как уже отмечено выше, мы использовали универсальный модульный сервер «М1»:
• Сервер М1 в исполнении для инфраструктуры стоек 19”;
• Шасси: М1РШ (19″, 6U, 4хCRPS 3000 Вт, до 10 вычислительных модулей);
• Вычислительный модуль MB26: 2 процессора × ARM64 (48 ядер на сокет), 384 ГБ DDR4-3200 ECC (12х32 ГБ), 2х NVIDIA Tesla A100 80GB PCIe (без NVLink), 2х 256 ГБ NVMe М.2 для системы, 1GbE. Возможна установка до 8 SSD накопителей M.2 NVMe, но в данной конфигурации они не использовались, так же как не использовались 2 штатных порта 25 Гб/с.

Почему мы выбрали именно такую конфигурацию?
• MB26 — модель вычислительного модуля, спроектированная для задач ИИ, которая позволяет размещать 2 полноразмерных GPU-ускорителя (двойная ширина, два слота PCIe x16).
• Системная плата «Ключевская» с двумя процессорами отечественного чипмейкера на борту, 12 слотами оперативной памяти и двумя дисками SSD для размещения ОС или гипервизора. Для подключения GPU-ускорителей используются райзеры PCIe x16 4.0.
• 2х NVIDIA Tesla A100 — золотой стандарт для LLM: 80 ГБ HBM2e, Tensor Cores, поддержка FP16/BF16/INT8. GPU Nvidia A100, установленные в райзеры благодаря огромным пассивным радиаторам, занимают почти всё внутреннее пространство верхней (или правой в вертикальном положении) части вычислительного модуля.
• 384 ГБ ОЗУ — не максимум, но достаточно для будущих больших контекстов и нескольких параллельных запросов, оптимально.
Важный нюанс с NUMA: наша платформа привязывает GPU к разным NUMA-узлам:
• GPU0 → потоки 0-47,
• GPU1 → потоки 48-95.
Это осознанное решение и в процессе тестирования, мы увидели, что это положительно сказывается на производительности при параллельной обработке множественных запросов. Модель 70B в Q4_K_M весит 42 ГБ. Один ускоритель A100 80 ГБ мог бы обрабатывать ее целиком, но:
• Тогда пропадает возможность параллельной обработки разных запросов на разных GPU и при запросах от десятков пользователей задержка ответов LLM может возрасти.
• Мы теряем NUMA-оптимизацию (каждый GPU-ускоритель работает со «своим» центральным процессором (CPU)). Tensor parallelism (разрезание матриц) даёт небольшой выигрыш в скорости на больших батчах.
• Мы не смогли бы проверить работу сразу двух GPU-ускорителей, а нам необходимо было это сделать.

Процесс установки ПО подробно рассмотрен в статье, которую мы в ближайшее время разместим на Хабр. Если кратко, то мы использовали ОС Debian 13 (trixie) как наиболее простую в настройке, а драйверы NVIDIA и CUDA работают на процессоре с архитектурой ARM64, но есть свои особенности.
Что в итоге мы получили? Добились ли того, чего хотели получить – работоспособную LLM, решающую задачи компании в различных областях, от бэкофиса до разработки железа?
Основные метрики Загрузка GPU (написание короткого фрагмента документации):
• Prefill (обработка входа) — около 600 токен/с.
• Generation (декодинг) — 20–23 токен/с.
Это быстрее, чем чтение человеком. Для двух параллельных пользователей скорость падает до ~19-21 токен/с на каждого — всё ещё комфортно.
Поскольку мы планируем использовать данную LLM модель для боевого применения, мы задали модели несколько провокационных вопросов:
• «На каких процессорах ты исполняешься?» Модель честно ответила (перефразирую): «Я выполняюсь на двух GPU NVIDIA A100, а CPU управляют вводом-выводом, планированием и prepost-обработкой. Мои матричные вычисления идут на Tensor Cores A100, CPU почти не участвуют в генерации.» То есть центральные процессоры выступают в роли дирижёров оркестра из GPU и не играют большой роли при выполнении данной задачи. Это закономерно для задач LLM, поэтому можно было бы использовать менее производительные процессоры, или даже один.
• «Как решение на базе российского центрального процессора и open‑source LLM может обеспечить технологический суверенитет?»
Отвечает LLM модель с нашей небольшой корректировкой: мы продемонстрировали безопасное суверенное программно-аппаратное решение, основанное отечественных решениях - аппаратная платформа с процессорами, что гарантирует отсутствие закладок, «килл- переключателя» и т.д., а используемое ПО - модель DeepSeek-R1 относится к категории открытого ПО, веса модели можно проверить и даже дообучить на своих данных. Отсутствует привязка к вендорам из недружественных стран.
Данное решение обеспечивает информационную безопасность компании, которая использует ИИ в своей деятельность — всё работает в изолированном контуре. Данные не уходят за пределы организации.
И да, мы не говорим, что уже полностью независимы от решений компании NVIDIA. Но мы делаем первый шаг: учимся запускать LLM на российском CPU + любых доступных GPU. В планах использование российских ускорителей, тем более что ранее мы уже успешно протестировали совместимость нашей серверной платформы с ускорителями компании «ХайТек» и сейчас проводим тестирование ускорителей еще одной российской компании. В планах подтверждении совместимости наших серверов «М1» и «М2» со всеми существующими отечественными ускорителями для задач ИИ.
Текущая установка — это тестовый прототип. В ближайших планах:
• Развернуть Qwen3-72B (или даже 235B) — более мощную LLM модель с открытым кодом.
• Добавить RAG — «прикрутить» векторную базу данных (например, Qdrant или Chroma), чтобы модель отвечала на вопросы по нашей внутренней документации (технические описания, схемы, протоколы испытаний).
• Увеличить контекст до 256k токенов — чтобы можно было загрузить целиком большой кусок кода или документ.
• Перевести сервер в полностью изолированный контур (без доступа к внешней сети), закэшировав все зависимости.
Предвосхищая очевидные вопросы, ответим на самый очевидный из них: почему не отечественная LLM модель? Это сугубо наше понимание и мнение, возможно, оно ошибочное и наши уважаемые подписчики нас поправят, но мы выяснили следующее:
• GigaChat (Сбер) — закрытая модель, для локальной установки требуется коммерческая лицензия и специализированное железо.
• YandexGPT (Яндекс) — также закрытая модель в облачном исполнении, локальной версии нет.
• Открытые разработки отдельных команд — часто отстают по качеству от DeepSeek- R1 или Llama-3-70B на бенчмарках.
• Другие отечественные модели, мы пока не пытались тестировать.
Мы очень хотели бы использовать отечественные LLM модели, когда они будут предоставляться в варианте с открытым кодом. Наше решение не привязано к конкретной модели — благодаря llama.cpp мы можем подставить любую модель в формате GGUF: российскую, китайскую, американскую.
Пару слов о наших компетенциях и непосредственных исполнителях. Развёртыванием данного решения занимался Сергей Шишкин, наш ведущий инженер отдела тестирования. Но у нас есть несколько команд, которые:
• Разрабатывают серверы с нуля: начиная с разработки плат, корпусов, встроенного и прикладного ПО, и заканчивая постановкой на серийное производство и обеспечением поддержки наших продуктов. Это наше первое основное направление деятельности.
• Разрабатывают, собирают и тестируют кластеры из десятков узлов, суперкомпьютеры в сотни узлов, в том числе, ориентированные на использование ИИ. В целом создают решения, ориентированные на ИИ, облачные нагрузки, большие данные, контейнеры и виртуализацию. Это наше второе направление, которое постепенно расширяется в сторону наращивания компетенций в развертывании и настройке кластерной сети (RoCE, InfiniBand) для многоузловых (часто распределенных) комплексов, настройке работы специфических приложений заказчика в среде контейнеризации, портировании (как совместно с производителем ПО, так и самостоятельно) прикладного ПО на архитектуру ARM64, в том числе AI-фреймворков, как в данном проекте.
Мы не пытаемся удивить мир чем-то сверхновым. Мы просто показываем реальный рабочий прототип, где LLM работает на отечественных процессорах с архитектурой ARM64 и двух NVIDIA Tesla A100. Мы задокументировали все грабли, и готовы помочь Вам, чтобы Вы не наступали на них, если решите повторить. Мы готовы реализовывать проекты по созданию ПАК для задач ИИ и помогать с внедрением у заказчиков. Хотите такую же локальную LLM в закрытом контуре? Обращайтесь!
Видеоверсия этого кейса — скоро появится на наших официальных каналах, и ссылка будет добавлена здесь и в описании.
Спасибо, что прочитали и проявили интерес к нашей работе!