К содержимому
MoranaLabs.
Research5 мин чтения0 просмотров

Жизнь без CUDA в 2026: переносим инференс LLM и CV на Ascend, MUSA и отечественные NPU  что завелось, а что встало колом 

Серый импорт A100 бьет по бюджету, а экосистема CUDA держит в заложниках. Мы попытались перенести инференс LLM и CV на Huawei Ascend, Moore Threads и отечественные NPU. Разбираем без купюр: что завелось, где падают драйверы, и какова реальная цена ухода от NVIDIA.

0xReality

Стойка с серверами в глухом ангаре на Урале. Три ночи, моргают диоды коммутаторов, а инженеры пытаются понять, почему кластер из восьми узлов внезапно перестал видеть топологию после тихого обновления системных пакетов. Мы сидим на пороховой бочке. Жизнь без CUDA в 2026: переносим инференс LLM и CV на Ascend, MUSA и отечественные NPU — что завелось, а что встало колом. Это не абстрактная страшилка, а будни промышленного ИИ. Серый импорт A100 и H100 с ценником х3 от MSRP — полбеды. Настоящая беда — риск превращения этих карт в тыкву из-за одного отвалившегося драйвера или санкционного отзыва сертификатов. Настоящий vendor lock-in прячется не в кремнии. Он влит в бетон экосистемы CUDA.

Инференс без CUDA на китайских ускорителях: где прячется зависимость

Вы думаете, что ваш стек абстрагирован, потому что вы пишете import torch? Наивность уровня джуна. Загляните под капот любой современной LLM в проде. Там FlashAttention, прибитый гвоздями к PTX-инструкциям. Там кастомные ядра квантования AWQ или GPTQ, написанные на чистом C++ с CUDA API. Там NCCL, который оркестрирует раскидывание весов по картам и без которого ваш tensor parallelism просто умрет от сетевых задержек. Когда мы попытались запустить стандартный пайплайн на первом попавшемся не-NVIDIA железе, фреймворк выплюнул нам триста строк трейсбека, жалуясь на отсутствие простейших атомарных операций. Вы замена NVIDIA для ИИ 2026 года ищете в прайс-листах дистрибьюторов? Ищите ее в исходниках вашего инференс-сервера.

Портирование модели с CUDA: CANN, MUSA, ROCm и суровая реальность

Ascend CANN от Huawei, Moore Threads MUSA, вездесущий AMD ROCm и парочка отечественных NPU — вот наш зоопарк на тестовом стенде. Задача простая до зубовного скрежета: поднять Llama-3 7B для RAG-системы завода и стандартный Yolo-v9 для дефектоскопии на конвейере. На бумаге все выглядит гладко. Huawei Ascend CANN обещает бесшовную интеграцию с PyTorch через torch-npu. Moore Threads клянется, что их MUSA — это почти CUDA, только перекомпилируй. Отечественные вендоры шлют красивые презентации про суверенный ИИ.

Начинаем с Ascend 910B. Ставим CANN. Документация переведена машинным переводом, часть трейсбеков вываливается в иероглифах. Базовая CV-модель компилируется и даже заводится из коробки. Трансформер ломается на первом же слое внимания. Почему? Потому что их реализация NPU-операторов не поддерживает часть функционала FlashAttention, а фоллбэк на наивное внимание сжирает всю HBM-память, вышибая OOM-ошибку. Пришлось переписывать ядра внимания вручную под их матричные блоки.

С Moore Threads MUSA история веселее. MUSA действительно синтаксически пытается мимикрировать под CUDA. Но компилятор падает в сегфолт на сложных графах. Вы пытаетесь собрать кастомный слой нормализации, а компилятор просто молча завершается с кодом 139. Приходится дробить граф на примитивы, теряя всю оптимизацию фьюжн-операторов. AMD ROCm выглядит самым зрелым из аутсайдеров, но он живет своей жизнью. HIP-компилятор переваривает 90% чистого CUDA-кода, но как только дело доходит до RCCL на сложных сетевых топологиях, кластер начинает захлебываться тайм-аутами.

Отечественные NPU? Железо едет. Программный стек отстает. Нет поддержки честного float16, только странные вариации bfloat16 или жесткое INT8-квантование, которое требует переобучения модели с нуля, потому что пост-тренировочное квантование превращает логиты в белый шум. Дыры в операторах зияют на каждом шагу: нет банального GatherND, из-за чего роутинг в MoE-архитектурах реализовать невозможно без костылей, убивающих всю производительность.

import torch
import torch_npu # Huawei Ascend NPU bindings
from custom_kernels import musa_attention # Moore Threads fallback

def get_compute_device_and_attention(model_config):
    if hasattr(torch, 'npu') and torch.npu.is_available():
        torch.npu.set_device("npu:0")
        # CANN не тянет честный FlashAttention v2 без патчей ядра
        return "npu:0", npu_fused_attention
    elif hasattr(torch.backends, 'musa') and torch.backends.musa.is_built():
        # Компилятор MUSA падает на сложных графах, берем кастом
        return "musa:0", musa_attention
    else:
        # Если повезло и санкции еще не дошли
        return "cuda:0", torch.nn.functional.scaled_dot_product_attention

Мы потратили три месяца инженерного времени уровня сеньоров, чтобы просто заставить LLM 7B выплевывать токены с приемлемой скоростью. Это цена вашей независимости. Вы экономите два миллиона рублей на закупке железа, но сжигаете десять миллионов на зарплатах R&D-команды, которая пишет патчи к закрытым китайским компиляторам.

Замеры под нагрузкой: p99 латентность и цена миграции

Мы прогнали голову в голову три конфигурации на инференсе 7B модели с контекстом 4K. Забудьте про метрики в среднем. Под высокой нагрузкой решает только p99-латентность и стабильность драйвера.

Ускоритель / СтекТокены/сек (Throughput)p99 Latency (мс)Стабильность под нагрузкой (48ч)
NVIDIA A100 (CUDA)85120Монолит
Huawei Ascend 910B (CANN)78450Падение демона NPU через 24ч
Moore Threads S4000 (MUSA)22 (упор в VRAM)890Фрагментация KV-кэша

NVIDIA A100 дает предсказуемые показатели. Драйвер стоит как скала. Huawei Ascend выдал отличный результат для кремния, но p99 скачет из-за периодических пауз в планировщике потоков CANN. Через сутки непрерывной генерации демон мониторинга NPU тихо умирает, утягивая за собой подсистему выделения памяти. Moore Threads на CV-задачах держится достойно, но попытка запустить LLM уперлась в жесткие ограничения VRAM и отсутствие эффективного пейджинга: KV-кэш фрагментирует память за двадцать минут, после чего throughput падает втрое.

Матрица решений на 2026 год выглядит цинично. Если у вас классический Computer Vision без экзотических слоев — переезд на не-NVIDIA железо оправдан и окупается за год. Если вы гоняете тяжелые LLM с высоким concurrency — альтернативные стеки все еще требуют наличия команды компиляторщиков в штате. TCO миграции состоит не из цены железа, а из человеко-месяцев инженеров, вылавливающих баги в проприетарных драйверах.

В MoranaLabs мы решаем этот риск радикально: начинаем аудит CUDA-зависимостей до закупки новых серверов. Мы пишем изолированные адаптеры под каждый тензорный оператор и прогоняем пилотный инференс на целевом железе. Если целевая архитектура не тянет fused-ядра, мы перестраиваем граф вычислений, а не ждем чуда от китайских вендоров. Vendor lock-in снимается не покупкой другой видеокарты, а архитектурой платформы, готовой к суровой реальности сырого софта.

  • #CUDA
  • #Huawei Ascend
  • #Moore Threads
  • #Импортозамещение
  • #Инференс LLM
ПоделитьсяTelegramX
рассылка

Новые статьи — на почту

Лонгриды про ML в проде, edge и компьютерное зрение — сразу после выхода.

Канал в Telegram: morana.log

Без спама. Нажимая «Подписаться», соглашаетесь с обработкой персональных данных

бесплатный pdf-гайд

Edge AI или облако: когда тащить нейросеть на железо

Признаки, фреймворк выбора и прикидка экономии — короткий PDF-гайд на почту.

PDF · 5 страниц · без спама. Нажимая «Получить», соглашаетесь с обработкой персональных данных

Читать дальше
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA по запросу

Сюда напишем — это быстрее всего

Или сразу написать в Telegram

Без спама и звонков-роботов. Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и обработкой персональных данных.