Про CUDA, часть 2.
Предыдущие примеры объединяет одно — их всё ещё можно довольно неплохо ускорить с помощью numpy/pytorch.
Но есть и другие примеры. У нас есть код вычисления нормалей, реализованный на pytorch. По всем операциям всё сделано максимально эффективно, в питоновском коде улучшать нечего. Вычисление нормалей съедает десятки процентов от времени всего пайплайна, т.к. он не очень тяжеловесный. Решение? Написать эту часть пайплайна на CUDA, в одном ядре. Результат? 6x ускорение от исходной pytorch версии. Которая тоже написана на CUDA.
Вам нужно сделать что-то сложное, но что можно нормально векторизировать? CUDA. Надо ускорить механизм attention? Используйте flash attention, он написан на CUDA. А если ещё не изобрели? Напишите свой. Нужна хитрая но быстрая аугментация? Написать на CUDA.
Конечно, нужно всегда соотносить прилагаемые усилия и получаемую выгоду. Но в эпоху датацентров с миллионами GPU, хорошие CUDA разработчики будут очень востребованы. А если у вас на текущем месте есть медленный кусок кода, который точно можно сделать параллельным — почему бы не попробовать здесь и сейчас?
Тимофей Науменко