Ядро
Ядро (kernel) в вычислениях на видеокартах — отдельная программа, которую процессор запускает на GPU и которая выполняется параллельно множеством потоков. Работа нейросети обычно разбита на последовательность из многих ядер (умножение матриц, нормализация, функции активации), а между их запусками возникают паузы и обращения к памяти.
проверено по: docs.nvidia.com ↗
См. также
- МегаядроМегаядро (megakernel) — способ запуска модели на видеокарте, при котором весь проход (или его крупная часть) объединяется в одно непрерывно работающее ядро вместо десятков последовательных. Это убирает паузы между запусками ядер и простои GPU, что заметно снижает задержку генерации, но усложняет разработку и отладку кода.
- CUDAПлатформа параллельных вычислений и модель программирования от NVIDIA. С ней разработчики пишут программы для графических процессоров NVIDIA на C, C++ и других языках. На CUDA опирается большая часть софта для машинного обучения, поэтому её часто называют главным конкурентным преимуществом NVIDIA перед другими производителями чипов.
- FlashAttentionАлгоритм и открытая библиотека для быстрого точного вычисления механизма внимания в трансформерах на видеокартах. Вычисления делятся на блоки, поэтому данные реже пересылаются между большой медленной памятью видеокарты и её быстрой встроенной памятью. Это ускоряет обучение и инференс и экономит память, особенно на длинных последовательностях. В отличие от методов приближённого внимания, результат получается точным. Алгоритм создали Три Дао и соавторы; библиотека работает на видеокартах NVIDIA и AMD и развивается отдельными версиями, например FlashAttention-4.
- TileLangОткрытый предметно-ориентированный язык и компилятор с синтаксисом в стиле Python. На нём пишут высокопроизводительные вычислительные ядра для GPU и других ускорителей, например для умножения матриц или FlashAttention. Разработчик описывает поток данных на уровне блоков (тайлов), а распределение работы по потокам, конвейеризацию и другие низкоуровневые оптимизации берёт на себя компилятор на основе TVM. Поэтому, в отличие от программирования на CUDA, вручную писать низкоуровневый код не нужно.
В новостях
NVIDIA позволила связать до восьми ИИ-компьютеров DGX Spark в кластер
Небольшая программа, которая выполняет на графическом процессоре или ускорителе одну операцию, например умножение матриц. От того, как написаны ядра, зависит скорость модели на конкретном железе.
Amazon и Hugging Face упростили запуск моделей на чипах Trainium
Небольшая программа, которая выполняет одну операцию нейросети, например умножение матриц, на конкретном ускорителе. От того, как она написана, во многом зависит скорость модели.