Изучите оптимизацию инференса настолько быстро и глубоко, насколько это возможно.
В этом материале приподносят на блюдечке подробный журнал работы по оптимизации GEMM в CUDA.:
Читать: athleticcoder21.github.io/inference-book/gemm
В этом материале приподносят на блюдечке подробный журнал работы по оптимизации GEMM в CUDA.:
Начинаем с наивной реализации
Выявляем проблемы производительности и оцениваем их в числах
Разбираем концепцию потокового softmax
Реализуем ядро и оцениваем выигрыш по памяти и числу операций с плавающей точкой
Применяем схему объединённого доступа к памяти
Снова оцениваем прирост по числу операций, обмену данными и памяти
Пишем код на CUDA
Читать: athleticcoder21.github.io/inference-book/gemm
«Mathematical Pathways to Machine Learning» — материалы по математической базе для машинного обучения, включая математический анализ, линейную алгебру и оптимизацию.
Конспекты лекций с вводным разбором математики и основ, необходимых для машинного обучения:
https://zenodo.org/records/21752763
Конспекты лекций с вводным разбором математики и основ, необходимых для машинного обучения:
https://zenodo.org/records/21752763
Если вы только начинаете изучать машинное обучение и хотите глубже разобраться в математике, необходимой для машинного и глубокого обучения, советую попробовать эту платформу. Это что-то вроде LeetCode для машинного обучения.
Это не реклама: я сам ей пользовался и решил поделиться с вами.
https://deep-ml.com
Это не реклама: я сам ей пользовался и решил поделиться с вами.
https://deep-ml.com
NVIDIA присоединяется к тренду отказа от собеседований в стиле LeetCode.
Весь акцент был сделан всего на трёх ключевых концепциях оптимизации:
> Градиентный спуск и глобальные оптимумы
> Полный батч, мини-батч и SGD
> Разрыв обобщения и плоские минимумы
Лучшие команды ищут инженеров с глубоким пониманием фундаментальных концепций.
Весь акцент был сделан всего на трёх ключевых концепциях оптимизации:
> Градиентный спуск и глобальные оптимумы
> Полный батч, мини-батч и SGD
> Разрыв обобщения и плоские минимумы
Лучшие команды ищут инженеров с глубоким пониманием фундаментальных концепций.
Гауссовские процессы — инструмент байесовской непараметрической регрессии и классификации. Вместо того чтобы задавать вектор параметров фиксированной размерности, гауссовский процесс задаёт распределение вероятностей непосредственно над функциями:
f(x) ∼ GP(m(x), k(x,x′)),
где m— функция среднего, а k— ковариационное ядро, описывающее связь между значениями функции в разных точках.
Если наблюдения содержат шум, \(y_i = f(x_i) + \varepsilon_i\), совместное гауссовское распределение позволяет аналитически вычислить апостериорное распределение значений функции в новых точках. Предсказательное распределение имеет вид
f(x*) | X,y,x* ∼ N(μ*, σ*²),
Оно даёт и прогноз, и явную оценку его неопределённости.
Гауссовские процессы применяются в статистическом машинном обучении: для регрессии, пространственной статистики, моделирования временных рядов, байесовской оптимизации, построения суррогатных моделей и оценки неопределённости. Разные ядра задают разные предположения о гладкости, периодичности и сходстве данных. Поэтому выбор ядра — часть построения модели.
Связь гауссовских процессов с гильбертовыми пространствами с воспроизводящим ядром, ядерными методами и байесовским выводом делает их важным мостом между классическим статистическим моделированием и современным машинным обучением.
f(x) ∼ GP(m(x), k(x,x′)),
где m— функция среднего, а k— ковариационное ядро, описывающее связь между значениями функции в разных точках.
Если наблюдения содержат шум, \(y_i = f(x_i) + \varepsilon_i\), совместное гауссовское распределение позволяет аналитически вычислить апостериорное распределение значений функции в новых точках. Предсказательное распределение имеет вид
f(x*) | X,y,x* ∼ N(μ*, σ*²),
Оно даёт и прогноз, и явную оценку его неопределённости.
Гауссовские процессы применяются в статистическом машинном обучении: для регрессии, пространственной статистики, моделирования временных рядов, байесовской оптимизации, построения суррогатных моделей и оценки неопределённости. Разные ядра задают разные предположения о гладкости, периодичности и сходстве данных. Поэтому выбор ядра — часть построения модели.
Связь гауссовских процессов с гильбертовыми пространствами с воспроизводящим ядром, ядерными методами и байесовским выводом делает их важным мостом между классическим статистическим моделированием и современным машинным обучением.
Илья Суцкевер считает, что эти 30 статей покрывают 90% главного в ИИ.
Теперь весь этот список можно не просто читать, а запускать.
Репозиторий собрал реализации всех 30 работ на чистом NumPy.
Внутри:
- RNN
- LSTM
- Transformer
- ResNet
- VAE
- AIXI
Каждая статья превращена в рабочую реализацию с синтетическими данными и без использования фреймворков глубокого обучения.
https://github.com/pageman/sutskever-30-implementations
Теперь весь этот список можно не просто читать, а запускать.
Репозиторий собрал реализации всех 30 работ на чистом NumPy.
Внутри:
- RNN
- LSTM
- Transformer
- ResNet
- VAE
- AIXI
Каждая статья превращена в рабочую реализацию с синтетическими данными и без использования фреймворков глубокого обучения.
https://github.com/pageman/sutskever-30-implementations
Этим летом, Даниэль Лемир, опубликовал структуру данных constmap. Она доступна для Python, C, Rust и Go, причём реализации совместимы между собой.
Если у вас есть большие неизменяемые отображения строк в целые числа, попробуйте её. Такая задача часто встречается в машинном обучении.
В самой простой версии предполагается, что каждый запрашиваемый ключ есть в наборе. Проверяемая версия дополнительно проверяет наличие ключа — с небольшой потерей производительности.
В последних версиях он добавил вариант paired verified: он примерно на 20% быстрее предыдущей проверяемой версии. Также появились варианты get_many для более быстрого поиска сразу нескольких ключей.
В Python constmap занимает гораздо меньше памяти, чем dict, и работает значительно быстрее. Её можно сохранить на диск и передать тем, кто использует Go, Rust, C или C++.
Реализации для других языков приветствуются.
https://github.com/lemire/fastconstmap
https://github.com/lemire/rsconstmap
https://github.com/lemire/constmap
Если у вас есть большие неизменяемые отображения строк в целые числа, попробуйте её. Такая задача часто встречается в машинном обучении.
В самой простой версии предполагается, что каждый запрашиваемый ключ есть в наборе. Проверяемая версия дополнительно проверяет наличие ключа — с небольшой потерей производительности.
В последних версиях он добавил вариант paired verified: он примерно на 20% быстрее предыдущей проверяемой версии. Также появились варианты get_many для более быстрого поиска сразу нескольких ключей.
В Python constmap занимает гораздо меньше памяти, чем dict, и работает значительно быстрее. Её можно сохранить на диск и передать тем, кто использует Go, Rust, C или C++.
Реализации для других языков приветствуются.
https://github.com/lemire/fastconstmap
https://github.com/lemire/rsconstmap
https://github.com/lemire/constmap
GitHub
GitHub - lemire/fastconstmap: Fast, immutable, compact map from strings to 64-bit integers — for Python.
Fast, immutable, compact map from strings to 64-bit integers — for Python. - lemire/fastconstmap
Media is too big
VIEW IN TELEGRAM
Основатель Jev Диогу Алмейда, ранее работавший в OpenAI:
За 36 минут один из создателей ChatGPT и RLHF объясняет, почему RLHF приводит лишь к помощи человеку и что должно измениться, чтобы выйти за эти пределы.
Чат-боты → помощники → агенты для написания кода → JEV.
https://youtu.be/o-y1HJ6buGQ?si=Kb7jeqk1lM-9DRW5
«Агенты для написания кода, такие как Claude Code, — это ещё не автоматизация, а помощь человеку, который остаётся частью процесса.
Сейчас у большинства людей есть ChatGPT и Claude Code. Если задуматься, это безумие.
Мы тратим возможности этой технологии впустую».
За 36 минут один из создателей ChatGPT и RLHF объясняет, почему RLHF приводит лишь к помощи человеку и что должно измениться, чтобы выйти за эти пределы.
Чат-боты → помощники → агенты для написания кода → JEV.
https://youtu.be/o-y1HJ6buGQ?si=Kb7jeqk1lM-9DRW5
Исследователи задаются вопросом, что станет для робототехники её моментом RLHF.
Вместе с Chelsea Finn вышел новый разбор того, чего сегодня не хватает обучению с подкреплением для передовых моделей робототехники, чтобы приблизить их к уровню развития современных LLM.
Главный вопрос — какие методы дообучения, данные и архитектурные решения позволят роботам перейти от узких сценариев к более универсальному поведению.
Авторы обещают отдельно разобрать текущее состояние RL для робототехники и ключевые пробелы, которые пока мешают следующему скачку.
https://pd-perry.github.io/posts/post-training.html
Вместе с Chelsea Finn вышел новый разбор того, чего сегодня не хватает обучению с подкреплением для передовых моделей робототехники, чтобы приблизить их к уровню развития современных LLM.
Главный вопрос — какие методы дообучения, данные и архитектурные решения позволят роботам перейти от узких сценариев к более универсальному поведению.
Авторы обещают отдельно разобрать текущее состояние RL для робототехники и ключевые пробелы, которые пока мешают следующему скачку.
https://pd-perry.github.io/posts/post-training.html
This media is not supported in your browser
VIEW IN TELEGRAM
Ты не ненавидишь математику. Ты просто никогда не видел её такой.
This media is not supported in your browser
VIEW IN TELEGRAM
LLM во время предобучения
Последние несколько месяцев мы экспериментируем с локальным инференсом — в первую очередь для распознавания речи, LLM и синтеза речи, а также множества более мелких компонентов и агентов для сценариев внутри автомобиля.
Выбор архитектуры сильно влияет на задержку всего голосового пайплайна. При этом все компоненты должны работать согласованно, определять приоритет запросов, решать, какой агент должен сработать первым, обеспечивать выразительный синтез речи и, самое главное, сохранять целостность всей системы.
Доступные ресурсы ограничены, в отличие от облачных или даже настольных вычислений. Поэтому проектирование системы и вся системная инженерия, необходимая для объединения этих компонентов, — одна из самых интересных частей моей повседневной работы.
Сейчас мы также экспериментируем с NVIDIA TensorRT Edge-LLM — эталонной средой выполнения для инференса. Подробная документация проекта хорошо показывает, какие аспекты системной архитектуры приходится учитывать.
Вот, например, документация по архитектуре среды выполнения инференса.
https://nvidia.github.io/TensorRT-Edge-LLM/latest/developer_guide/software-design/llm-inference-runtime.html
Выбор архитектуры сильно влияет на задержку всего голосового пайплайна. При этом все компоненты должны работать согласованно, определять приоритет запросов, решать, какой агент должен сработать первым, обеспечивать выразительный синтез речи и, самое главное, сохранять целостность всей системы.
Доступные ресурсы ограничены, в отличие от облачных или даже настольных вычислений. Поэтому проектирование системы и вся системная инженерия, необходимая для объединения этих компонентов, — одна из самых интересных частей моей повседневной работы.
Сейчас мы также экспериментируем с NVIDIA TensorRT Edge-LLM — эталонной средой выполнения для инференса. Подробная документация проекта хорошо показывает, какие аспекты системной архитектуры приходится учитывать.
Вот, например, документация по архитектуре среды выполнения инференса.
https://nvidia.github.io/TensorRT-Edge-LLM/latest/developer_guide/software-design/llm-inference-runtime.html
Anthropic платит до $650 000 в год специалистам, которые действительно глубоко понимают глубокое обучение.
И вот этот курс Нандо де Фрейтаса доступен бесплатно.
Это полноценная техническая база по глубокому обучению, которую он преподавал в Оксфорде до перехода в DeepMind..
https://www.youtube.com/playlist?list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu
И вот этот курс Нандо де Фрейтаса доступен бесплатно.
Это полноценная техническая база по глубокому обучению, которую он преподавал в Оксфорде до перехода в DeepMind..
https://www.youtube.com/playlist?list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu
Можно ли строить модели мира полностью в скрытом пространстве, вообще без предсказания пикселей?
Исследователи представили Contrastive World Models.
Статья: arxiv.org/abs/2609.22175
Работа была написана независимо, между сменой позиций, с минимальными вычислительными ресурсами. Интересным направлением для дальнейших исследований было бы масштабирование CWM на более крупные области.
Исследователи представили Contrastive World Models.
Мы обучаем скрытые состояния так, чтобы максимизировать взаимную информацию с будущими наблюдениями — без декодеров и без восстановления пикселей.
Contrastive World Models дают:
существенно более устойчивые представления;
более эффективное обучение за счёт полного отказа от пиксельного декодера;
универсальный подход с минимальным числом предположений.
В стандартной целевой функции модели мира мы заменяем восстановление пикселей на Deep InfoMax — максимизируем взаимную информацию между скрытым состоянием и локальными признаками будущих наблюдений.
В экспериментах небольшого масштаба CWM показывает результаты на уровне базовых подходов с восстановлением пикселей и предсказанием через momentum в стандартных условиях, а при добавлении отвлекающих факторов или фонов из реального видео существенно превосходит оба подхода.
Статья: arxiv.org/abs/2609.22175
Работа была написана независимо, между сменой позиций, с минимальными вычислительными ресурсами. Интересным направлением для дальнейших исследований было бы масштабирование CWM на более крупные области.
Метрополис — Гастингс (MH) — это алгоритм Монте-Карло по цепям Маркова (MCMC) для генерации выборок из сложного вероятностного распределения, когда напрямую получать из него выборки затруднительно.
Для заданной целевой плотности π(x) алгоритм предлагает новое состояние x′ из распределения предложений q(x′|x) и принимает его с вероятностью
α(x,x′) = min{1, [π(x′)q(x|x′)]/[π(x)q(x′|x)]}.
Если предложенное состояние отклоняется, цепь остаётся в состоянии x. При выполнении подходящих условий полученная цепь Маркова имеет π в качестве стационарного распределения, поэтому средние значения по сгенерированным выборкам позволяют приближённо вычислять математические ожидания относительно целевого распределения.
MH — один из фундаментальных методов статистического машинного обучения, особенно в байесовском выводе. Когда апостериорное распределение p(θ|D) невозможно получить аналитически, MCMC позволяет генерировать приближённые выборки из апостериорного распределения и на их основе оценивать параметры, доверительные интервалы в байесовском смысле и предиктивные распределения.
Метод применяется в байесовской регрессии, иерархических моделях, моделях со скрытыми переменными, графических моделях и при оценке неопределённости.
Алгоритм также иллюстрирует одну из ключевых идей вычислительной статистики: вместо того чтобы напрямую решать задачу интегрирования или оптимизации, можно построить стохастический процесс, долгосрочное поведение которого воспроизводит нужное распределение.
Современные методы, такие как гамильтоновский метод Монте-Карло и метод Монте-Карло Ланжевена, развивают этот же принцип.
Для заданной целевой плотности π(x) алгоритм предлагает новое состояние x′ из распределения предложений q(x′|x) и принимает его с вероятностью
α(x,x′) = min{1, [π(x′)q(x|x′)]/[π(x)q(x′|x)]}.
Если предложенное состояние отклоняется, цепь остаётся в состоянии x. При выполнении подходящих условий полученная цепь Маркова имеет π в качестве стационарного распределения, поэтому средние значения по сгенерированным выборкам позволяют приближённо вычислять математические ожидания относительно целевого распределения.
MH — один из фундаментальных методов статистического машинного обучения, особенно в байесовском выводе. Когда апостериорное распределение p(θ|D) невозможно получить аналитически, MCMC позволяет генерировать приближённые выборки из апостериорного распределения и на их основе оценивать параметры, доверительные интервалы в байесовском смысле и предиктивные распределения.
Метод применяется в байесовской регрессии, иерархических моделях, моделях со скрытыми переменными, графических моделях и при оценке неопределённости.
Алгоритм также иллюстрирует одну из ключевых идей вычислительной статистики: вместо того чтобы напрямую решать задачу интегрирования или оптимизации, можно построить стохастический процесс, долгосрочное поведение которого воспроизводит нужное распределение.
Современные методы, такие как гамильтоновский метод Монте-Карло и метод Монте-Карло Ланжевена, развивают этот же принцип.
«Маленькая книга по основам генеративного ИИ» — интуитивное введение в математику: arxiv.org/pdf/2605.29713
Масштабирование вычислений на этапе инференса, часть 1. Себастьян Рашка.
Начинаем с модифицированной функции генерации текста: масштабирование температурой, top-p-фильтрация и мультиномиальное сэмплирование. Всё это нужно, чтобы получать более разнообразные ответы для self-consistency и best-of-N, повышая точность ответов более чем в 2 раза.
00:00 — Введение и краткое повторение
00:31 — Масштабирование на этапе обучения и инференса
07:52 — Что будем реализовывать
11:47 — Настройка ноутбука и загрузка модели
17:43 — Создание гибкой функции генерации текста
24:40 — Промптинг с цепочкой рассуждений
28:26 — Сэмплирование и разнообразие ответов
33:43 — Логиты следующего токена и жадное декодирование
38:20 — Масштабирование температурой шаг за шагом
42:46 — Softmax и вероятности токенов
47:42 — Мультиномиальное сэмплирование
54:51 — Добавление температурного сэмплирования в генерацию текста
59:31 — Top-p-фильтрация шаг за шагом
1:10:23 — Добавление top-p-фильтрации в генерацию текста
1:13:43 — Сэмплирование и водяные знаки для LLM
1:16:01 — Self-consistency и голосование большинством
1:20:36 — Реализация self-consistency
1:29:02 — Результаты на MATH-500
1:35:01 — Компромисс между точностью и объёмом вычислений
1:36:50 — Следующие шаги и самодоработка
https://www.youtube.com/watch?v=t5y-kS9nNxU
Начинаем с модифицированной функции генерации текста: масштабирование температурой, top-p-фильтрация и мультиномиальное сэмплирование. Всё это нужно, чтобы получать более разнообразные ответы для self-consistency и best-of-N, повышая точность ответов более чем в 2 раза.
00:00 — Введение и краткое повторение
00:31 — Масштабирование на этапе обучения и инференса
07:52 — Что будем реализовывать
11:47 — Настройка ноутбука и загрузка модели
17:43 — Создание гибкой функции генерации текста
24:40 — Промптинг с цепочкой рассуждений
28:26 — Сэмплирование и разнообразие ответов
33:43 — Логиты следующего токена и жадное декодирование
38:20 — Масштабирование температурой шаг за шагом
42:46 — Softmax и вероятности токенов
47:42 — Мультиномиальное сэмплирование
54:51 — Добавление температурного сэмплирования в генерацию текста
59:31 — Top-p-фильтрация шаг за шагом
1:10:23 — Добавление top-p-фильтрации в генерацию текста
1:13:43 — Сэмплирование и водяные знаки для LLM
1:16:01 — Self-consistency и голосование большинством
1:20:36 — Реализация self-consistency
1:29:02 — Результаты на MATH-500
1:35:01 — Компромисс между точностью и объёмом вычислений
1:36:50 — Следующие шаги и самодоработка
https://www.youtube.com/watch?v=t5y-kS9nNxU
YouTube
Build A Reasoning Model From Scratch 4: Inference Scaling 1 (Temperature, Top-p, Self-Consistency)
After motivating the use cases for inference-time scaling, this video first walks through temperature scaling, top-p filtering, and multinomial sampling to generate diverse answers with an LLM. Then, using these techniques, we implement self-consistency to…
Если речь идёт об инференсе, нельзя пропустить отдельную главу на эту тему в книге «How to Scale Your Model».
https://jax-ml.github.io/scaling-book/inference/
https://jax-ml.github.io/scaling-book/inference/
Когда в временном ряду отсутствует 90% данных: восстанавливайте динамику, а не отдельные значения
Большинство методов заполнения пропусков в научных временных рядах предсказывают недостающие значения по корреляциям в наблюдаемых данных.
Авторы исследования предлагают другой подход: сначала восстановить геометрию динамической системы.
С помощью вложения с задержкой по одной переменной, наблюдаемой без пропусков, можно реконструировать аттрактор системы в пространстве состояний. Переменная с пропусками даёт частичную реконструкцию той же динамики. Затем модель изучает отображение между двумя реконструированными многообразиями и с помощью гауссовского процесса восстанавливает недостающие состояния.
Главное здесь в том, что машинному обучению не нужно открывать динамику с нуля. Теория динамических систем даёт априорное знание: разные наблюдения одной системы должны отражать эквивалентную структуру пространства состояний. Гауссовский процесс изучает только отображение между этими представлениями.
Это особенно полезно, когда данных крайне мало. В 120-мерной системе Лоренца одна переменная наблюдается полностью, а у остальных 119 отсутствует 90% значений. При этом средняя корреляция восстановленных сигналов с истинными данными достигает 0,84. Для 120-мерной системы Рёсслера она составляет 0,81.
Подход работает и на реальных данных. При реконструкции 64-канальной ЭЭГ, где один сигнал доступен полностью, а в остальных отсутствует 90% значений, корреляция достигает примерно 0,9.
Для применения ИИ в науке вывод шире: если данные порождены динамической системой, её динамика ограничивает возможные значения в пропусках. Вместо того чтобы просить модель угадывать отдельные точки, можно восстановить скрытую структуру, благодаря которой эти точки возникают.
https://www.nature.com/articles/s41467-026-77922-1
Большинство методов заполнения пропусков в научных временных рядах предсказывают недостающие значения по корреляциям в наблюдаемых данных.
Авторы исследования предлагают другой подход: сначала восстановить геометрию динамической системы.
С помощью вложения с задержкой по одной переменной, наблюдаемой без пропусков, можно реконструировать аттрактор системы в пространстве состояний. Переменная с пропусками даёт частичную реконструкцию той же динамики. Затем модель изучает отображение между двумя реконструированными многообразиями и с помощью гауссовского процесса восстанавливает недостающие состояния.
Главное здесь в том, что машинному обучению не нужно открывать динамику с нуля. Теория динамических систем даёт априорное знание: разные наблюдения одной системы должны отражать эквивалентную структуру пространства состояний. Гауссовский процесс изучает только отображение между этими представлениями.
Это особенно полезно, когда данных крайне мало. В 120-мерной системе Лоренца одна переменная наблюдается полностью, а у остальных 119 отсутствует 90% значений. При этом средняя корреляция восстановленных сигналов с истинными данными достигает 0,84. Для 120-мерной системы Рёсслера она составляет 0,81.
Подход работает и на реальных данных. При реконструкции 64-канальной ЭЭГ, где один сигнал доступен полностью, а в остальных отсутствует 90% значений, корреляция достигает примерно 0,9.
Для применения ИИ в науке вывод шире: если данные порождены динамической системой, её динамика ограничивает возможные значения в пропусках. Вместо того чтобы просить модель угадывать отдельные точки, можно восстановить скрытую структуру, благодаря которой эти точки возникают.
https://www.nature.com/articles/s41467-026-77922-1