744просмотров
28 сентября 2025 г.
📷 ФотоScore: 818
Ещё немного о линейных трансформерах На прошлой неделе участвовал в воркшопе китайских коллег и выступал на тему edge-cloud collaboration. Рассказывал, как мы ускоряли ARMT. Проблема edge-cloud:
Смартфон есть почти у каждого, и их вычислительная мощность растёт. Сервер же один — и дорогой. Часто это приводит к подписке $10+ на любого LLM-ассистента.
Цель — максимально задействовать сам телефон (хотя бы для спекулятивного декодинга), чтобы снизить нагрузку и цену. Преимущества линейных трансформеров (и ARMT):
1. Фиксированный оверхед памяти.
KVCache растёт линейно и уникален для каждого запроса. В линейных трансформерах состояние мало и на фоне общей модели почти не заметно. Особенно важно для edge-устройств с малым объёмом памяти (почти все до 8–16 ГБ), где все приложения конкурируют за ресурсы. 2. Линейная сложность.
Если положить в контекст два документа вместо одного, latency уменьшится в ~2 раза — не в 4, как у классического трансформера. Проще управлять нагрузкой. Для мобильных — экономия батареи, меньше нагрева. 3. Гибкость в выборе базовой модели (только ARMT).
Можно взять любую модель как основу (ARMT работает на сегментной рекуррентности), без необходимости писать и тащить в прод дополнительные CUDA-ядра (тоже было в статье).
Для мобильных — не надо дописывать и оптимизировать библиотеку линейной алгебры. 4. Упрощение балансировки запросов (только ARMT).
Один запрос полностью утилизирует GPU (мы показали в статье), и нам не нужны сложные балансировки — можно вернуть stateless балансировщик. Для мобильных — пользователь делает запрос, и модель может утилизировать ресурсы как телефона, так и сервера “из коробки”. Когда не стоит думать о линейных трансформерах: 1. Контекст < ~32000 токенов.
Ниже этого порога квадратичная сложность обычного трансформера ещё не сильно влияет, и, не хуже линейной. В ARMT текущий порог — около 16–20k токенов. И при ~32к он начинает проявлять свою вычислительную выгоду. 2. Необходимость дообучения (fine-tune).
Внедрение линейного трансформера добавляет стадию дообучения (обучение рекуррентной памяти). Это на порядки дешевле претрейна, но требует ресурсов и сбора данных. Вывод:
Если вы собрались пилить RAG по большим книжкам/картам, или по видео/музыке (там seq_len - это секунды и даже сжатие VAE не то чтобы решает проблему) - подумайте об линейных трасформерах. Ps: преза в комментах @deploy_ml