Технология, лежащая в основе продолжающейся революции AI в технике, также подталкивает Nvidia к выходу в новые области — квантовые вычисления, робототехнику и автономные автомобили, говорит архитектор CUDA.
Генеральный директор Nvidia Jensen Huang часто рассказывает историю о том, как в 2016 году лично доставил суперкомпьютер для AI в OpenAI — еще до того, как компания стала тем громким игроком, которым она стала в последние годы.
Ключевым компонентом в этой коробке был набор инструментов Nvidia CUDA toolkit, который помог превратить эксперименты OpenAI в основу для современных приложений AI. Huang считает, что именно эта программная платформа лежит в основе успеха Nvidia в AI и high-performance computing.
Спустя 20 лет CUDA по-прежнему развивается. Сегодня она двигает переосмысление аппаратного обеспечения Nvidia в новых областях — от квантовых вычислений до робототехники, промышленного оборудования и даже автономных транспортных средств.
Если говорить просто, CUDA toolkit включает инструменты программирования, compiler stack и библиотеки и фактически раскрывает вычислительные возможности GPU. Почти два десятилетия архитектор CUDA Stephen Jones наблюдал эволюцию набора инструментов из первых рядов и продолжает работу инженеров, таких как покойный John Nickolls, который продвигал развитие CUDA.
Computerworld недавно поговорил с Jones о CUDA, AI и будущем.

Nvidia
Вот уже 20 лет CUDA. Как это было? «Безумное путешествие. Когда ты создаешь что-то, а люди делают с этим вещи, о которых ты никогда не думал, — в этом и есть настоящая награда инженерии.
«Мы начинали с инструмента, хорошего для parallel programming… а оказалось, что parallel programming нужен всем. Сколько сейчас у ChatGPT пользователей? Примерно треть населения Земли. Я не был одним из основателей CUDA. Я присоединился после CUDA 1.0… Я был в первой дюжине, и это потрясающе.
«А теперь это широко используется по всему миру каждый день в ChatGPT людьми, у которых есть аккаунты и которые с ним взаимодействовали. Лучший инженерный продукт невидим, верно?»
Вы понимали, что AI приближается, еще до того, как появилась соответствующая аппаратная база? И каким было мышление на уровне программирования, чтобы подготовиться к этому? «Поворотным моментом для AI стал AlexNet в 2012 году. Нишевая математическая тема внезапно обогнала людей и стала интересной и мощной.
«К тому моменту у нас в Nvidia уже были люди, работавшие над тем, что впоследствии стало CuDNN, потому что направление выглядело интересным. Этот переломный момент просто переключил передачи и открыл совершенно новую ветку того, что мы могли поддерживать.
Я очень старался в CUDA построить максимально общую базу, потому что я не знаю, что будет дальше. Даже в AI все меняется каждые шесть месяцев. Но AI — это только одна часть. Есть supercomputing, есть робототехника и управление оборудованием.
«Наша большая цель — не создавать узкоспециализированные инструменты [и] убедиться, что то, что мы делаем, можно применять широко. И когда мы видим, что кто-то делает что-то действительно интересное, мы расширяемся в этом направлении.
«Особенно сейчас, на фоне взрывного роста того, что люди делают, — новое всегда уже на подходе».
Как развивалась CUDA? «Мы анонсировали ее в 2006 году; версия 1.0 официально вышла в начале 2007-го. Когда мы только ее создавали, почти ничего не работало. Сложнее всего было понять, что можно сделать, чтобы она хотя бы немного приносила пользу. Нужно получать обратную связь и видеть, как люди пробуют это в процессе разработки.
«В первую неделю в Nvidia мне сказали: „Иди напиши программу на CUDA“. А я спросил: „Как мне ее отлаживать? Где мой printf?“ И мне ответили, что никакого printf нет. Тогда я и написал printf. Самое полезное, что я когда-либо сделал в Nvidia, — это написать printf в первую неделю. Потому что вам нужно отлаживать свой код.
«Самое сложное в моей работе — то, что никто никогда не публикует провалы. Есть все эти статьи: я ускорил код в 100 раз с помощью CUDA, но что было сложным? Когда я вижу полдюжины людей, делающих одно и то же, это означает, что нам чего-то не хватает.
«Так что мы прошли путь от вопроса, как сделать это достаточно функциональным, чтобы оно было полезным для широкого круга задач, к вопросу, в каких направлениях нам начинать расширять платформу? Это был настоящий сдвиг в мышлении, которому помогло экспоненциальное распространение технологии.
«Если мы создаем инструменты так, чтобы людям приходилось писать меньше CUDA, значит, мы преуспели. До GPU можно добраться с меньшими усилиями и меньшим числом строк кода».
Вы сначала разрабатываете CUDA, а потом определяете архитектуру GPU, или между ними есть взаимодействие? «Как один из архитекторов CUDA, буквально половину моей работы занимает взаимодействие с hardware team. Nvidia действительно великолепно делает co-design между hardware и software.
«Когда hardware team говорит: „Вот что мы думаем построить“, мы в CUDA сидим в той же комнате и говорим: „Сделайте эти небольшие изменения, чтобы мы могли отразить это в software“.
«Или мы говорим: нашим пользователям не хватает вот этого… можем ли мы добавить это в hardware, чтобы ускорить работу? Буквально половина моих часов в любую неделю уходит на разговоры с hardware-специалистами и половина — с software-специалистами.
«Создание чипа занимает около четырех лет, и мы участвуем во всех этих четырех годах. Rubin уже где-то рядом за углом, но есть и следующие поколения, у которых даже еще нет названий, и мы уже работаем над ними.
«У нас нет модели „сначала собрать, а потом адаптировать под это software“. Мы действительно создаем все целостно, стараясь думать обо всей системе».
Очевидно, нужно было понимать, что AI скоро придет, чтобы подготовить GPU. И AI — это совсем новый стиль вычислений. Как вы изменили стек CUDA? «Секрет CUDA в том, что это не одна вещь, верно? Это огромный stack из сотен и сотен компонентов…. Можно выбирать, какой именно использовать.
«И это еще и все то, что строят поверх него все остальные. Мы можем поддерживать это, но ничего бы не смогли без всех тех, кто тоже строит на этой базе.
«Меня в AI и HPC fascinates то, что они действительно построены на одной и той же тяжелой вычислительной базе. Это два разных взгляда на одно и то же. Все инструменты, которые мы создавали для supercomputing, применились к миру AI. А уроки из AI теперь возвращаются обратно в supercomputing. Это двусторонний процесс.
«Классические von Neumann computing — это логичные, повторяемые, систематические вычисления, которые существуют уже 50 лет. AI — вероятностный. Он не повторяемый. Он приблизительный.
«Ваш LLM не обязательно выдает одни и те же tokens два или три раза подряд, а вот я совершенно точно хочу, чтобы моя банковская выписка показывала одни и те же цифры.
«Software- и hardware-команды работают очень тесно, поэтому мы видим это заранее. Акцент на matrix workloads в AI упирается в законы физики, Moore’s law и information theory. Это ведет к снижению precision.
«Я бы не сказал, что это было предсказуемо, потому что мы не знали, как будут выглядеть модели, но то, что нужно моделям для работы, определяется законами физики. Во многом мы просто реагируем на ограничения, которые ставит мир, чтобы использовать эту AI-universe, которая только что открылась».
Вы видите, что разрыв между выходом новых возможностей CUDA и их реальным внедрением в компаниях сокращается? «Для любого инженерного инструмента, особенно для такой большой платформы, как CUDA, разные люди осваивают его с разной скоростью. Академические исследователи берут что-то в работу в тот же день, когда мы это выпускаем. Более осторожным крупным компаниям нужно больше времени.
«Но легко представить, что компании с устоявшимся бизнесом и устоявшимися software stack не захотят немедленно внедрять что-то новое. И для них это дороже. Если у вас миллион строк кода, принять новую технологию намного сложнее, чем если у вас 10 000 строк кода.
«Так что для любой функции, которую мы выпускаем, мы видим ранних пользователей, пользователей среднего цикла и поздних пользователей. У нас есть возможность ее развивать. Она не статична, мы определенно реагируем и отвечаем.
«В каком-то смысле время, необходимое крупным игрокам, чтобы принять новые технологии, сокращается. Это часть невероятно быстрого изменения, через которое проходит AI. Мы сами активно используем AI tools внутри компании, и это помогает нам не отставать. Все используют эти инструменты, которые создаются, чтобы делать еще больше инструментов. Способ разработки software в наши дни тоже меняется.
«Это не так, что мы что-то строим и перебрасываем через стену. Мы создаем продукт в ответ на то, что нужно людям, и по мере создания инструментов люди могут делать больше — возникает feedback loop, тот же самый feedback loop, который определял развитие CUDA в ранние годы. Мы видим, как это проявляется в AI, мы видим, как это проявляется в quantum.
«Сегодня люди разрабатывают quantum algorithms на GPU еще до того, как quantum computers готовы, чтобы, когда технология quantum computer догонит, им не пришлось начинать с нуля».
Если учитывать, что вы следите за будущим вычислений для CUDA, что вас вдохновляет больше всего? «Мы говорили о том, как AI открывает двери, которые раньше никогда не открывались. Несколько месяцев назад я был в Stanford и общался с очень талантливыми студентами и аспирантами об их стартап-идеях. Энергия, с которой они говорят о том, что хотят делать, — я вдруг понял, что завидую тому, где они сейчас находятся.
«Я сформировался в 90-х, когда интернет только появлялся. Это было захватывающе, все эти вещи, которые можно было делать с .com. Но это еще больший шаг. У каждого, кто сейчас заканчивает колледж, есть миллион вариантов. Есть множество вещей, которые еще только предстоит исследовать и о которых никто даже не думал.
«То, что они сделают, в свою очередь повлияет на то, что мы будем строить как базовую платформу. Хотелось бы дожить до того, чтобы увидеть все, что они сделают, но они моложе меня.
«Следующие 10 лет будут безумными. Я прошел отличный путь, не поймите меня неправильно, но, черт возьми, я завидую 25-летнему. Возможности безграничны. Хотел бы я снова быть 25-летним».
Материал — перевод статьи с английского.
Оригинал: Nvidia’s Stephen Jones on the toolkit powering GPUs: ‘A wild ride’
