Как оптимизировать модели ИИ

Как оптимизировать модели ИИ

Краткий ответ: Для оптимизации моделей ИИ выберите одно основное ограничение (задержка, стоимость, память, качество, стабильность или пропускная способность), а затем получите надежный базовый уровень, прежде чем что-либо менять. Сначала устраните узкие места в конвейере, затем примените меры с низким риском, такие как смешанная точность и пакетная обработка; если качество сохраняется, переходите к инструментам компилятора/среды выполнения и только потом уменьшайте размер модели с помощью квантования или дистилляции, когда это необходимо.

Основные выводы:

Ограничение : выберите один или два целевых показателя; оптимизация — это процесс компромиссов, а не гарантированная победа.

Измерение : Проанализируйте реальные рабочие нагрузки с помощью p50/p95/p99, пропускной способности, использования ресурсов и пиковых значений памяти.

Конвейер обработки : Исправьте токенизацию, загрузчики данных, предварительную обработку и пакетную обработку, прежде чем вносить изменения в модель.

Обслуживание : Используйте кэширование, целенаправленную пакетную обработку, оптимизацию параллельного выполнения и внимательно следите за задержкой в ​​конце процесса.

Защитные механизмы : После каждого изменения производительности запускайте контрольные подсказки, метрики задач и выборочные проверки.

Инфографика «Как оптимизировать модели ИИ»

🔗 Как эффективно оценивать модели ИИ:
ключевые критерии и шаги для справедливой и достоверной оценки моделей.

🔗 Как измерить производительность ИИ с помощью реальных метрик.
Используйте бенчмарки, показатели задержки, стоимости и качества для сравнения.

🔗 Как тестировать модели ИИ перед внедрением в производство.
Практический рабочий процесс тестирования: разделение данных, стресс-тесты и мониторинг.

🔗 Как использовать ИИ для создания контента.
Превращайте идеи в черновики быстрее с помощью структурированных подсказок и итераций.


1) Что означает «оптимизировать» на практике (потому что каждый использует это слово по-своему) 🧠

Когда говорят «оптимизировать модель ИИ», они, возможно, имеют в виду следующее:

  • Ускорьте процесс (уменьшите задержку).

  • Снизить стоимость (меньшее количество часов работы графического процессора, меньшие затраты на облачные сервисы).

  • Уменьшить его размер (объем памяти, развертывание на периферии).

  • Повысить точность (улучшение качества, уменьшение количества галлюцинаций)

  • Повысить стабильность (уменьшить вариативность, сократить количество сбоев в производстве).

  • Упростите обслуживание (пропускная способность, пакетная обработка, предсказуемая производительность).

Вот немного раздражающая правда: невозможно максимизировать все эти параметры одновременно. Оптимизация похожа на сжатие воздушного шарика — сдвиньте одну сторону, и другая выскочит. Не всегда, но достаточно часто, чтобы планировать компромиссы.

Поэтому, прежде чем что-либо трогать, выберите основное ограничение :

  • Если вы предоставляете пользователям доступ в режиме реального времени, вас волнует задержка p95 ( процентили AWS CloudWatch ) и производительность в хвостовой части распределения ( рекомендации по оптимизации задержки в хвостовой части распределения ) 📉

  • Если вы занимаетесь обучением, вас волнует скорость достижения качественного результата и эффективность использования графического процессора 🔥

  • Если вы развертываете приложение на устройствах, вас волнуют объем оперативной памяти и энергопотребление 🔋


2) Как выглядит хорошая версия оптимизации модели ИИ ✅

Хорошая версия оптимизации — это не просто «применить квантование и надеяться на лучшее». Это система. В лучших системах обычно используются:

  • Базовый показатель, которому можно доверять.
    Если вы не можете воспроизвести текущие результаты, вы не можете знать, что что-то улучшили. Всё просто… но люди его игнорируют. И тогда они начинают скатываться в пропасть.

  • Четко сформулированный целевой показатель
    «Ускорить» — это расплывчатое понятие. А вот «Снизить задержку p95 с 900 мс до 300 мс при том же показателе качества» — это вполне реальная цель.

  • Меры предосторожности для обеспечения качества.
    Каждая победа в производительности чревата скрытым снижением качества. Вам необходимы тесты, оценки или, по крайней мере, набор инструментов для проверки адекватности работы.

  • Осведомленность об аппаратном обеспечении.
    «Быстрая» модель на одном графическом процессоре может работать очень медленно на другом. Центральные процессоры — это особый вид хаоса.

  • Итеративные изменения, а не кардинальная переработка.
    Когда вы меняете сразу пять вещей, и производительность улучшается, вы не понимаете почему. Что… вызывает беспокойство.

Оптимизация должна ощущаться как настройка гитары — небольшие корректировки, внимательное слушание, повторение 🎸. Если же это похоже на жонглирование ножами, значит, что-то не так.


3) Сравнительная таблица: Популярные варианты оптимизации моделей ИИ 📊

Ниже приведена краткая и несколько неаккуратная сравнительная таблица распространенных инструментов/подходов к оптимизации. Нет, она не совсем «справедливая» — реальная жизнь тоже.

Инструмент / Опция Аудитория Цена Почему это работает
PyTorch torch.compile ( документация PyTorch ) Ребята из PyTorch Бесплатно Использование захвата графа и уловок компилятора может сократить накладные расходы… иногда это просто волшебство ✨
Среда выполнения ONNX ( документация по среде выполнения ONNX ) Команды развертывания почти бесплатно Мощная оптимизация вывода, широкая поддержка, подходит для стандартизированного обслуживания
TensorRT ( документация NVIDIA TensorRT ) развертывание NVIDIA Платные бонусы (часто в комплекте) Агрессивное объединение ядер + точная обработка, очень быстро, когда всё работает
DeepSpeed ​​( документация ZeRO ) Тренировочные команды Бесплатно Оптимизация памяти и пропускной способности (ZeRO и т. д.). Ощущение, будто работаешь как реактивный двигатель
FSDP (PyTorch) ( Документация PyTorch по FSDP ) Тренировочные команды Бесплатно Параметры/градиенты шардов делают большие модели менее пугающими
квантование bitsandbytes ( bitsandbytes ) магистры права, экспериментаторы Бесплатно Низкое битовое значение, огромная экономия памяти — качество зависит от обстоятельств, но, в общем, ничего себе 😬
Дистилляция ( Хинтон и др., 2015 ) продуктовые команды «Временные затраты» Модель с меньшим количеством учеников наследует поведение, что обычно обеспечивает наилучшую окупаемость инвестиций в долгосрочной перспективе
Обрезка деревьев деревьев ( руководство по обрезке деревьев в PyTorch ) Исследования + производство Бесплатно Устраняет лишний балласт. Лучше работает в сочетании с переобучением
Flash Attention / объединенные ядра ( статья Flash Attention ) энтузиасты производительности Бесплатно Более быстрое внимание, улучшенная память. Настоящая победа для трансформеров
Сервер вывода Triton ( динамическая пакетная обработка ) Операции/инфраструктура Бесплатно Обслуживание в производственной среде, пакетная обработка, многомодельные конвейеры — создает ощущение корпоративного уровня

Признание в странностях форматирования: слово «Цена» написано неаккуратно, потому что работа с открытым исходным кодом всё ещё может обойтись вам в выходные, потраченные на отладку, а это… цена. 😵💫


4) Начните с измерений: составьте профиль так, как будто вы действительно этого хотите 🔍

Если вы выполните только одно из пунктов этого руководства, сделайте следующее: проводите измерения правильно.

В ходе моих собственных экспериментов самые большие «прорывы в оптимизации» были достигнуты благодаря обнаружению чего-то до смешного простого, например:

  • Загрузка данных приводит к дефициту ресурсов на графическом процессоре

  • узкое место предварительной обработки ЦП

  • крошечные размеры пакетов приводят к накладным расходам при запуске ядра

  • медленная токенизация (токенизаторы могут быть скрытыми злодеями)

  • Фрагментация памяти ( примечания по распределителю памяти PyTorch CUDA )

  • один слой, доминирующий в вычислениях

Что измерять (минимальный набор)

  • Задержка (p50, p95, p99) ( SRE по процентилям задержки )

  • Пропускная способность (токены/сек, запросы/сек)

  • Использование графического процессора (вычислительные ресурсы + память)

  • Пиковые значения VRAM/RAM

  • Стоимость за 1000 токенов (или за одно действие)

Практический подход к составлению профилей

  • Опишите один интересующий вас сценарий (не шаблонный).

  • Записывайте всё в крошечный «дневник достижений».
    Да, это утомительно… но это убережёт вас от самобичевания в будущем.

(Если вам нужен конкретный инструмент для начала: PyTorch Profiler ( документация torch.profiler ) и Nsight Systems ( NVIDIA Nsight Systems ) — это наиболее распространенные варианты.)


5) Данные + Оптимизация обучения: Тихая сверхсила 📦🚀

Люди зацикливаются на архитектуре модели и забывают о конвейере обработки данных. Между тем, конвейер незаметно потребляет половину ресурсов графического процессора.

Легкие победы, которые проявляются быстро

  • Используйте смешанную точность (FP16/BF16, где это стабильно) ( PyTorch AMP / torch.amp ).
    Обычно это быстрее, часто работает нормально, но следите за особенностями обработки чисел.

  • Накопление градиента при ограниченном размере пакета ( 🤗 Руководство по ускорению )
    Обеспечивает стабильную оптимизацию без чрезмерного расхода памяти.

  • Градиентное сохранение контрольных точек ( torch.utils.checkpoint ) —
    это обмен вычислительных ресурсов на память, что делает возможным создание контекстов большего размера.

  • Эффективная токенизация ( 🤗 Токенизаторы )
    Токенизация может стать узким местом в масштабах бизнеса. Это не гламурно, но это важно.

  • Настройка Dataloader:
    больше рабочих процессов, закрепление памяти, предварительная выборка — незаметно, но эффективно 😴➡️💪 ( Руководство по настройке производительности PyTorch )

Оптимизация параметров

Если вы занимаетесь тонкой настройкой больших моделей, методы PEFT (например, адаптеры в стиле LoRA) могут значительно снизить затраты на обучение, оставаясь при этом удивительно эффективными ( 🤗 Руководство по PEFT от Transformers , статья о LoRA ). Это один из тех моментов, когда задаешься вопросом: «Почему мы не сделали этого раньше?».


6) Оптимизация на архитектурном уровне: подбор оптимального размера модели 🧩

Иногда лучший способ оптимизации — это… перестать использовать модель, которая слишком велика для решения поставленной задачи. Знаю, кощунство 😄.

Примите решение, исходя из нескольких основных моментов:

  • Решите, нужен ли вам полный комплекс услуг общего интеллекта или специалист.

  • Оставляйте окно контекста настолько большим, насколько это необходимо, но не больше.

  • Используйте модель, обученную для решения конкретной задачи (классификационные модели для задач классификации и т. д.).

Практические стратегии оптимизации численности персонала

  • Для большинства запросов
    переключитесь на более компактную магистраль, а затем перенаправляйте «сложные запросы» на более крупную модель.

  • Используйте двухэтапную схему:
    быстрые черновики модели, более тщательная проверка или редактирование более подробной модели.
    Это как писать текст с придирчивым другом — раздражающе, но эффективно.

  • Сократите длину выходных
    данных. Выходные токены стоят денег и времени. Если ваша модель слишком многословна, вы платите за это.

Я видел, как команды значительно сокращали расходы, устанавливая более короткие сроки выполнения задач. Это кажется мелочью. Но это работает.


7) Компилятор + Оптимизация графов: откуда берется скорость 🏎️

Это слой, который "заставляет компьютер выполнять более интеллектуальные задачи".

Распространенные методы:

Проще говоря: ваша модель может быть быстрой с математической точки зрения, но медленной в практическом применении. Компиляторы частично решают эту проблему.

Практические заметки (или, другими словами, шрамы)

  • Эти оптимизации могут быть чувствительны к изменениям формы модели.

  • Одни модели значительно ускоряются, другие же почти не меняются.

  • Иногда происходит ускорение работы, а иногда появляется непонятная ошибка — словно в дом заселился гремлин 🧌

Тем не менее, когда это срабатывает, это одна из самых чистых побед.


8) Квантование, обрезка, дистилляция: меньше без лишних проблем 🪓📉

Это тот раздел, который нужен людям… потому что он звучит как бесплатное выступление. Так оно и может быть, но относиться к нему нужно как к хирургической операции.

Квантование (веса/активации с более низкой точностью)

  • Отлично подходит для повышения скорости обработки данных и экономии памяти

  • Риск: снижение качества, особенно в нестандартных случаях

  • Рекомендация: проводите оценку на реальном тестовом наборе данных, а не на основе субъективных ощущений

Наиболее распространенные вкусы, о которых вы услышите:

Обрезка (удаление параметров)

  • Удаляет «неважные» веса или структуры ( руководство по обрезке в PyTorch ).

  • Обычно требуется переобучение для восстановления качества

  • Работает лучше, чем кажется… если делать это аккуратно

Дистилляция (ученик учится у преподавателя)

Это мой личный фаворит среди долгосрочных методов. Дистилляция позволяет получить более компактную модель, ведущую себя аналогично, и зачастую она более стабильна, чем экстремальное квантование ( Дистиллировка знаний в нейронной сети ).

Не совсем удачная метафора: дистилляция — это как пропустить сложный суп через фильтр и получить… суп меньшего размера. Суп готовится не так, но вы поняли идею 🍲.


9) Подача и умозаключение: настоящая зона боевых действий 🧯

Можно «оптимизировать» модель и всё равно плохо её использовать. Именно на этапе обслуживания возникают реальные проблемы с задержкой и стоимостью.

Подача, которая имеет значение

  • Пакетная обработка
    повышает пропускную способность. Но при чрезмерном использовании увеличивает задержку. Необходимо найти баланс. ( Динамическая пакетная обработка в Triton )

  • Кэширование.
    Кэширование запросов и повторное использование KV-кэша могут быть очень эффективными в повторяющихся контекстах. ( Объяснение KV-кэша )

  • потоковая передача
    происходит быстрее, даже если общее время примерно одинаковое. Восприятие имеет значение 🙂.

  • Сокращение накладных расходов по каждому токену.
    Некоторые стеки выполняют дополнительную работу на каждый токен. Сократите эти накладные расходы, и вы добьетесь больших успехов.

Обратите внимание на задержку в хвосте распределения

Ваш средний показатель может выглядеть отлично, в то время как ваш показатель p99 окажется катастрофой. К сожалению, пользователи живут в хвосте распределения. ( «Задержка в хвосте распределения» и почему средние значения врут )


10) Оптимизация с учетом аппаратного обеспечения: подгонка модели под устройство 🧰🖥️

Оптимизация без учета аппаратных характеристик — это как настройка гоночного автомобиля без проверки шин. Конечно, это можно сделать, но это немного глупо.

Вопросы, касающиеся графического процессора

  • Чаще всего ограничивающим фактором является пропускная способность памяти, а не вычислительная мощность

  • Большие объемы партий могут помочь, пока не перестанут помогать

  • Оптимизация ядра и механизма внимания имеет огромное значение для трансформеров ( FlashAttention: точное внимание с учетом ввода-вывода ).

Вопросы, касающиеся процессора

  • Многопоточность, векторизация и локальность памяти имеют огромное значение

  • Издержки токенизации могут быть слишком высокими ( 🤗 «Быстрые» токенизаторы )

  • Вам могут потребоваться другие стратегии квантования, чем на графическом процессоре

Вопросы, касающиеся периферийных устройств и мобильных устройств

  • Приоритет номер один — это объем используемой памяти

  • Разница в задержке имеет значение, потому что устройства... капризны

  • Более компактные специализированные модели часто превосходят крупные универсальные модели


11) Ограничительные меры качества: Не «оптимизируйте» себя до состояния жука 🧪

Каждая победа в скорости должна сопровождаться проверкой качества. В противном случае вы будете праздновать, выпускать продукт, а потом получите сообщение типа: «Почему ассистент вдруг заговорил как пират?» 🏴☠️

Прагматичные ограничительные меры:

  • «Золотые подсказки» (фиксированный набор подсказок, которые вы всегда проверяете)

  • Показатели задачи (точность, F1, BLEU, любые подходящие)

  • Проверка человеком (да, это правда)

  • Пороговые значения регрессии («допустимое снижение не более чем на X%)»

Также отслеживайте режимы отказов:

  • отклонение форматирования

  • изменения в поведении при отказе

  • частота галлюцинаций

  • инфляция длины ответа

Оптимизация может неожиданным образом изменить поведение. Странным. Раздражающим. Но, как показывает практика, предсказуемым.


12) Контрольный список: Как оптимизировать модели ИИ шаг за шагом ✅🤖

Если вам нужна четкая последовательность действий по оптимизации моделей ИИ , вот рабочий процесс, который обычно помогает людям сохранить рассудок:

  1. Определите критерии успеха.
    Выберите 1-2 основных показателя (задержка, стоимость, пропускная способность, качество).

  2. Проведите базовое
    профилирование реальных рабочих нагрузок, запишите значения p50/p95, объем памяти и затраты. ( Профилировщик PyTorch )

  3. Устранение узких мест в конвейере обработки
    загрузка данных, токенизация, предварительная обработка, пакетная обработка.

  4. Применение методов повышения эффективности вычислений с низким уровнем риска:
    смешанная точность, оптимизация ядра, улучшенная пакетная обработка.

  5. Попробуйте оптимизации компилятора/среды выполнения:
    захват графов, среды выполнения вывода, слияние операторов. ( Учебное пособие по torch.compile , документация по среде выполнения ONNX )

  6. Снизьте стоимость модели.
    Тщательно проведите количественный анализ, по возможности упростите модель, при необходимости сократите ее.

  7. Настройка обслуживания:
    кэширование, параллелизм, нагрузочное тестирование, исправление задержек в конце запроса.

  8. Проверьте качество.
    Проведите регрессионные тесты и сравните результаты.

  9. Повторяйте
    небольшие изменения, четкие пометки, повторяйте. Неброский — эффективный подход.

Да, это по-прежнему «Как оптимизировать модели ИИ», хотя по ощущениям это больше похоже на «Как перестать наступать на грабли». Суть та же.


13) Распространенные ошибки (чтобы вы их не повторяли, как все остальные) 🙃

  • Оптимизация до проведения измерений —
    это пустая трата времени. А потом вы будете уверенно оптимизировать не то, что нужно…

  • Погоня за одним единственным эталоном.
    Эталоны обманывают, умалчивая правду. Ваша рабочая нагрузка — это и есть истина.

  • Игнорирование проблем с памятью.
    Проблемы с памятью приводят к замедлению работы, сбоям и нестабильности. ( Понимание использования памяти CUDA в PyTorch )

  • Слишком раннее квантование.
    Квантование с низким битовым номером может быть потрясающим, но начните с более безопасных шагов.

  • Нет плана отката.
    Если нет возможности быстро откатить изменения, каждое развертывание становится стрессовым. Стресс порождает ошибки.


Заключительные слова: Человеческий подход к оптимизации 😌⚡

Оптимизация моделей ИИ — это не просто один шаг. Это многоступенчатый процесс: измерение, настройка конвейера, использование компиляторов и сред выполнения, настройка развертывания, а затем уменьшение размера модели с помощью квантования или дистилляции, если это необходимо. Делайте это шаг за шагом, соблюдайте стандарты качества и не доверяйте показателю «кажется, что стало быстрее» (ваши ощущения прекрасны, но они не являются профилировщиком).

Если вам нужен краткий вывод:

  • Сначала сделайте замеры 🔍

  • Далее оптимизируем конвейер 🧵

  • Затем оптимизируйте модель 🧠

  • Затем оптимизируйте подачу 🏗️

  • Всегда проводите проверки качества ✅

И если это поможет, напомните себе: цель — не «идеальная модель». Цель — модель, которая будет достаточно быстрой, доступной и надежной, чтобы вы могли спокойно спать по ночам… почти каждую ночь 😴.

Часто задаваемые вопросы

Что означает оптимизация модели ИИ на практике?

«Оптимизация» обычно означает улучшение одного из основных параметров: задержки, стоимости, объема используемой памяти, точности, стабильности или пропускной способности. Сложность заключается в компромиссах — улучшение одного параметра может негативно сказаться на другом. Практический подход заключается в выборе четкой цели (например, задержки p95 или времени до получения качества) и оптимизации в направлении ее достижения. Без цели легко «улучшить» и все равно проиграть.

Как оптимизировать модели ИИ, не снижая при этом их качество

Рассматривайте каждое изменение скорости или стоимости как потенциальную скрытую регрессию. Используйте такие механизмы контроля, как «золотые подсказки», метрики задач и быстрые выборочные проверки человеком. Установите четкий порог допустимого отклонения качества и сравнивайте результаты параллельно. Это предотвратит превращение фразы «это стало быстрее» в «почему это вдруг стало странным в процессе производства?» после выпуска продукта.

Что нужно измерить перед началом оптимизации?

Начните с процентилей задержки (p50, p95, p99), пропускной способности (токены/сек или запросы/сек), использования графического процессора и пиковых значений видеопамяти/оперативной памяти. Отслеживайте стоимость на один вывод или на 1000 токенов, если стоимость является ограничением. Проанализируйте реальный сценарий, который вы используете, а не тестовую задачу. Ведение небольшого «журнала производительности» поможет вам избежать догадок и повторения ошибок.

Быстрые и низкорисковые улучшения результатов тренировок

Смешанная точность (FP16/BF16) часто является самым быстрым первым шагом, но следует учитывать особенности численных параметров. Если размер пакета ограничен, накопление градиентов может стабилизировать оптимизацию без чрезмерного расхода памяти. Контрольные точки градиента обменивают дополнительные вычислительные ресурсы на меньший объем памяти, что позволяет использовать контексты большего размера. Не следует игнорировать токенизацию и настройку загрузчика данных — они могут незаметно истощать ресурсы графического процессора.

Когда следует использовать torch.compile, ONNX Runtime или TensorRT?

Эти инструменты направлены на снижение операционных затрат: захват графа, слияние ядер и оптимизация графа во время выполнения. Они могут обеспечить существенное ускорение вывода, но результаты зависят от формы модели и оборудования. Некоторые настройки работают как по волшебству, другие — практически без изменений. Ожидайте чувствительности к изменениям формы и периодических «глючных» ошибок — измерьте результаты до и после внедрения на вашей реальной рабочей нагрузке.

Стоит ли использовать квантование и как избежать чрезмерных затрат?

Квантование может значительно сократить объем памяти и ускорить вывод, особенно с INT8, но качество может ухудшиться в крайних случаях. Варианты с меньшим количеством битов (например, INT4/k-бит) обеспечивают большую экономию, но сопряжены с большим риском. Самый безопасный подход — это оценка на реальном тестовом наборе и сравнение результатов, а не полагаться на интуицию. Начните с более безопасных шагов, а затем переходите к более низкой точности только при необходимости.

Разница между обрезкой и дистилляцией при уменьшении размера модели

Обрезка параметров удаляет «мертвый балласт» и часто требует переобучения для восстановления качества, особенно при агрессивном подходе. Дистилляция обучает меньшую модель-ученика, чтобы она имитировала поведение большей модели-учителя, и может обеспечить более высокую долгосрочную окупаемость инвестиций, чем экстремальная квантизация. Если вам нужна меньшая модель, которая ведет себя аналогично и остается стабильной, дистилляция часто является более чистым путем.

Как снизить затраты на обработку данных и задержку за счет улучшения обслуживания

На этапе обслуживания оптимизация становится ощутимой: пакетная обработка повышает пропускную способность, но при чрезмерном использовании может ухудшить задержку, поэтому настраивайте её тщательно. Кэширование (кэширование подсказок и повторное использование кэша ключ-значение) может быть очень ресурсоёмким при повторных контекстах. Потоковая передача данных улучшает воспринимаемую скорость, даже если общее время примерно одинаково. Также обратите внимание на накладные расходы на обработку каждого токена в вашем стеке — небольшая работа на токен быстро накапливается.

Почему задержка в хвосте распределения так важна при оптимизации моделей ИИ

Средние значения могут выглядеть отлично, в то время как p99 — это катастрофа, и пользователи, как правило, работают в хвосте распределения. Задержка в хвосте часто возникает из-за дрожания: фрагментации памяти, скачков нагрузки на ЦП при предварительной обработке, замедления токенизации или плохого поведения пакетной обработки. Именно поэтому в руководстве особое внимание уделяется процентилям и реальным рабочим нагрузкам. Если вы оптимизируете только p50, вы все равно можете получить продукт, который «случайно будет работать медленно»

Ссылки

  1. Amazon Web Services (AWS)процентили AWS CloudWatch (определения статистических данных)docs.aws.amazon.com

  2. GoogleМасштабирование хвостовой части диаграммы (лучшие практики снижения задержки в хвостовой части диаграммы)sre.google

  3. Google - Цели уровня обслуживания (книга по SRE) - процентили задержки - sre.google

  4. PyTorch - torch.compile - docs.pytorch.org

  5. PyTorch - FullyShardedDataParallel (FSDP) - docs.pytorch.org

  6. PyTorchпрофилировщик PyTorchdocs.pytorch.org

  7. PyTorchСемантика CUDA: управление памятью (примечания по распределителю памяти CUDA)docs.pytorch.org

  8. PyTorchавтоматическое вычисление смешанной точности (torch.amp / AMP)docs.pytorch.org

  9. PyTorch - torch.utils.checkpoint - docs.pytorch.org

  10. PyTorchРуководство по оптимизации производительностиdocs.pytorch.org

  11. PyTorch - Руководство по обрезке деревьев ошибок - docs.pytorch.org

  12. PyTorchПонимание использования памяти CUDA в PyTorchdocs.pytorch.org

  13. PyTorch - руководство/обзор по torch.compile - docs.pytorch.org

  14. Среда выполнения ONNXДокументация по среде выполнения ONNXonnxruntime.ai

  15. Документация NVIDIA по - docs.nvidia.com

  16. NVIDIA - Квантованные типы TensorRT - docs.nvidia.com

  17. NVIDIA - Nsight Systems - developer.nvidia.com

  18. NVIDIA - Triton Inference Server - динамическая пакетная обработка - docs.nvidia.com

  19. DeepSpeed ​​- ZeRO Stage 3 - deepspeed.readthedocs.io

  20. bitsandbytes (bitsandbytes-foundation) - bitsandbytes - github.com

  21. Hugging Face - Accelerate: Руководство по градиентному накоплению - huggingface.co

  22. Hugging Face - Документация по токенизаторам - huggingface.co

  23. Hugging Face - Transformers: PEFT guide - huggingface.co

  24. Hugging Face - Transformers: KV cache explanation - huggingface.co

  25. Hugging Face - Transformers: «Быстрые» токенизаторы (классы токенизаторов) - huggingface.co

  26. arXiv - Извлечение знаний из нейронной сети (Хинтон и др., 2015) - arxiv.org

  27. arXiv - LoRA: Низкоранговая адаптация больших языковых моделей - arxiv.org

  28. arXiv - FlashAttention: Быстрое и эффективное с точки зрения памяти точное внимание с учетом ввода-вывода - arxiv.org

Найдите новейшие разработки в области ИИ в официальном магазине ИИ-помощников

О нас

Вернуться в блог