Привет, меня зовут Витя Хаймоненко, я разработчик в команде голосовой активации Алисы. Сегодня я расскажу, как мы прошли путь от инференса на чистом C корутинами до современных движков и квантизованных моделей — и какой инженерный опыт из этого вынесли.
На колонке одновременно крутится несколько нейросетей:
Все они работают в реальном времени и должны укладываться в жёсткие лимиты по latency, CPU и RAM. Докинуть ресурсы на устройство нельзя, поэтому единственный путь — оптимизация инференса.
В 2014 году не было ни готовых инференс-фреймворков, ни повсеместной поддержки C++ на чипах. Мы писали на чистом C, а пайплайн описывали корутинами. Композиция получалась гибкой, но за это мы расплачивались накладными расходами на переключение контекстов и динамическими аллокациями памяти на каждом шаге.
Уже тогда появились оптимизации, которые живут до сих пор. Во-первых, батчинг: вместо обработки одного фрейма звука за раз мы ждём, пока накопится батч из нескольких фреймов, и обрабатываем их разом. Это позволяет эффективно использовать SIMD-инструкции процессора и даёт серьёзный выигрыш по скорости, жертвуя лишь примерно полусотней миллисекунд latency.
Во-вторых, стриминг: мы не пересчитываем целиком всё «окно» заново, а только обновляем его с приходом новых фреймов. Для матричных умножений использовали одну из реализаций BLAS, которая отлично утилизирует кеш процессора.
С появлением нормальной поддержки C++ на чипах мы стали переписывать рантайм. На смену корутинам пришла наша внутренняя библиотека YNMT, изначально сделанная для моделей перевода. Она представляет модель как статический вычислительный граф, из-за чего отпала необходимость в корутинах. А потом, когда YNMT стала уступать по скорости опенсорсному TFLite, мы переехали на него. Он поддерживает встроенные оптимизации под разные архитектуры чипов.
Первый подход был простым и безопасным: мы сжимали веса модели с FP32 до INT8, но перед вычислением разжимали их обратно. Затем научились квантовать и активации. Теперь мы на лету сжимаем вход до INT8, перемножаем матрицы в INT16 и деквантизуем выход. Выигрываем и по памяти, и по скорости за счёт более быстрых целочисленных SIMD-инструкций.
Раньше каждая модель тащила за собой свои буфера и предобработку звука, что вело к дублированию вычислений. Теперь общая часть вынесена в отдельную сущность, и все модели пользуются ею совместно.
Не стоит бояться использовать опенсорс-решения и адаптировать их под своё железо. Мы взяли стандартную реализацию свёртки в TFLite, переработали её под конкретный чип и получили огромный прирост производительности. К тому же у опенсорсных подходов есть неплохой плюс: зачастую они поддерживаются широким сообществом.
Сейчас мы в процессе миграции на TFLite, готовимся использовать встроенную квантизацию вместо ручной и продолжаем пилить кастомные операции. Всё это позволяет делать колонки умнее и при этом сохранять доступность для пользователей.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥4
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1👍1
В карточках рассказываем, кто и на какие темы будет выступать на конференции 5 сентября. А чтобы получить доступ к эфиру, задать вопросы экспертам в прямом эфире и первыми посмотреть запись после события, зарегистрируйтесь на сайте.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤2👍2
Вокруг AI в разработке всё ещё ходит довольно много мифов. Кто-то боится, что нейросети вот-вот заменят программистов, а другие уже представляют, как навайбкодят стартап за пару вечеров. Реальный опыт оказывается куда сложнее.
На связи Паша Сухов, ведущий разработчик в Яндекс Доставке. Сегодня я поделюсь своим опытом: как я пытался использовать кодовых ассистентов, агентов и MCP, что понял в процессе и где AI может помочь вам.
Однажды я писал код для скрипта. Написал шесть строк, добавил в контекст нужные файлы и сказал: «Вынеси параметры, сделай --help, напиши доку». Мои шесть строк превратились в полтораста — с проверкой аргументов, созданием папок, логами каждого шага, справкой, примерами запуска и прочими вещами, которые я терпеть не могу делать сам.
Кроме того, здорово помогало автодополнение: не по принципу «допиши вот эту строчку», а «смотри, вот ещё полфункции». Агент со временем понимает, что и как вы пишете, и начинает предлагать более точные варианты: оптимизирует структуру, проводит рефакторинг, находит и вставляет нужную лямбду.
Стоило мне взяться за что-то объёмное и нестандартное — например, собрать демку с геокартами или написать что-то на игровом движке Bevy, — начинался цирк. Агент путал версии API и после каждой правки бодро уверял, что теперь-то всё точно исправил, хотя на деле ломал ещё сильнее.
Похожая история была и при работе с готовым кодом. Просишь перенести функцию из одного файла в другой — получаешь раздутый код с недописанными кусками. Иногда агент и вовсе попадал в цикл: поочерёдно откатывал и вносил одну и ту же неработающую правку.
Со временем они действительно стали писать код качественнее, особенно на локальных, быстрых и относительно изолированных задачах. Но вместе с тем они стали хитрее прятать баги. Цель моделей — написать не код, который работает, а код, который выглядит правдоподобно.
Но всё же думать «А правильно ли это?» в среднем и продуктивнее, и приятнее, чем бесконечно думать «А как это вообще написать?», чтобы к моменту готового текста на проверку не осталось сил.
По работе мне регулярно приходится копаться в чужих проектах. Я постоянно сталкиваюсь с проблемой: с какого файла вообще начинать читать? Тут и пригождается нейросеть: я даю ей задачу такой, какая она есть. Главное тут — не её результат, а размышления: она найдёт нужную часть системы, я пойму, куда смотреть, и код станет читать проще.
Нейросети не сняли с человека ответственность, не отменили необходимость думать и не научились стабильно писать серьёзные системы без присмотра. Зато они забрали то, что разработчики любят меньше всего: рутину, бойлерплейт, механические правки, поиск по чужому коду, черновую документацию, однотипные задачи и страх чистого листа.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤7👾4🔥2
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥3👾1
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥3👾2
На связи команда генеративных моделей в компьютерном зрении Поисковых сервисов и ИИ. Вместе с коллегами мы делаем мультимодального ассистента «Алиса AI». У модели Alice AI ART, которая отвечает за визуальную генерацию, есть два базовых сценария:
Всё это время эти сценарии жили как два разных стека: свои базовые модели, данные, метрики и своя отдельная боль в разработке и поддержке. Поэтому мы решили объединить их в одну модель, которая одинаково хорошо умеет и в T2I, и в I2I.
Ключевая особенность обучения uni-модели — общий для обеих задач претрейн. T2I- и I2I-данные перемешаны, чтобы визуальный и текстовый прайоры были едиными.
Взяли набор концептов, которые отсутствовали в наших данных для редактирования, но которые ранее собирались для T2I. Затем смешали данные и провели совместное обучение, а после проверили, что станет с I2I.
Результат оказался такой, на какой мы и надеялись: концепты, выученные из T2I, становятся доступны в редактировании по инструкции. Специфические запросы начинают работать без необходимости повторять работу по сбору узких срезов данных.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4🦄3👍1
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2👾1
На конференции deep tech night вас ждут два формата:
• Hard — технические доклады о сложных и масштабных задачах. Формат подойдёт тем, кто хочет вдумчиво разобраться в технической стороне темы.
• Experiment — лайтнинги и интерактивные кейсы об экспериментах с AI-агентами, новых подходах и продуктовых находках. Этот формат для всех, кому интересно пробовать новое и следить за трендами.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍1
Всем привет, это Саша Южаков, СТО Яндекс Погоды. В 2013 году я отправил резюме в Яндекс и переехал в Екатеринбург. В итоге меня взяли фронтендером. Я сделал ровно одну задачу в этой роли, а потом ушёл в инфраструктуру и бэкенд, которыми занимаюсь до сих пор.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥5🐳2