Мыслящие машины Дженсена Хуанга: История Nvidia и мировой ИИ-революции - Стивен Витт
На микросхемах, созданных Прабху, должны были работать несколько уровней программного обеспечения. Первым слоем был машинный код, превращающий сложные математические формулы в простую арифметику. Над этим в основном работал Йен Бак. Это был «подвал» вычислений, работа на базовом уровне кода, где команды передавались непосредственно устройству. Многие программисты считали эту работу утомительной и скучной, но Бак обожал ее – впоследствии он получил ряд патентов на методы программирования на уровне ассемблера. «Это то место, где резина встречается с дорогой», – говорит он.
Бак нанял команду специалистов по вычислениям, многие из которых окончили Московский государственный университет. «Куча Петров и Борисов», – шутил он. Вместе с русскими специалистами он трансформировал любимые учеными сложные математические структуры – дифференциальные уравнения, многомерные матрицы и т. п. – в простейшие уравнения, использующие только сложение, вычитание, умножение и деление. Параллельное выполнение этих базовых операций на множестве наборов данных требовало исключительной способности чипа к комплексным операциям. «Люди привыкли мыслить линейно, – поясняет Бак. – Вы можете объяснить человеку, как попасть в Starbucks, описывая путь шаг за шагом, но вряд ли вы будете объяснять, как добраться до любого Starbucks из любого места. Мыслить параллельно мы просто не привыкли».
Над первым слоем находился компилятор, который переводил языки программирования, например C++ и Python, в машинный код. Бас Аартс, голландский разработчик и автор первого компилятора CUDA, был предан своему делу не меньше Бака. Он неделями существовал в мире собственных идей, забывая о друзьях, личной жизни и хобби и пытаясь представить, как компьютер воспринимает информацию. «Некоторые люди считают меня ограниченным, – говорит он, – но все это так красиво! И так сложно! Так что для меня это вызов, а без вызова мне скучно».
Бизнес-стратегия для CUDA была рассчитана на долгосрочную перспективу. Хуанг убеждал Николлса приманивать потребителей из среды ученых и ни за что их не отпускать. Прирост производительности от CUDA обещал быть настолько впечатляющим, что пользователи сами должны были создавать новые академические дисциплины, использующие эту платформу. «У них должно отпасть желание перейти на что-то другое, – говорит Аартс. – Это как привязка к поставщику».
Так Nvidia создала то, что разработчики программного обеспечения окрестили «комплекс CUDA». В нижнем «этаже» располагались электрические схемы, над ними – машинный код для управления электронами, еще выше – компилятор, который преобразовывал машинный язык в человеческий, и на самом верху – программный интерфейс, доступный пользователю.
CUDA была представлена широкой публике в конце 2006 года. Программный пакет предоставлялся бесплатно, но работал только на оборудовании Nvidia. За 2007 год его скачали всего 13 000 раз. Меньше сотой процента из сотен миллионов владельцев GeForce решились сделать суперкомпьютер на базе своей игровой платы. Скептически настроенные инвесторы задавались вопросом, нужна ли кому-то вообще эта технология. «Уолл-стрит не просто не увидела ценности в CUDA; она считала, что платформа способна принести только убытки», – говорит сотрудник компании, хорошо знакомый с ситуацией.
Для многих программистов CUDA оказалась слишком сложной. Чтобы использовать всю мощность графического процессора, требовалось разбить большие задачи на сотни маленьких подзадач, называемых потоками. Затем эти потоки нужно было очень аккуратно направлять в ядра CUDA. Это был весьма непростой процесс со множеством скрытых ловушек. Разработчикам приходилось управлять одновременно несколькими банками данных, избегая путаницы, а также учитывать рассогласование во времени, которое могло привести к ошибкам. Обучение принципам параллельных вычислений оказалось сложным и требовало глубоких знаний в области информатики. Ученые из других сфер, таких как физика или медицина, обычно не обладали навыками программирования, необходимыми для работы с CUDA.
Стремясь повторить успех использования шейдеров, Кирк решил продвигать технологию с помощью учебника. Вместе со специалистом по информатике Вэнь Мэй Ху он написал книгу «Программирование массивов параллельных процессоров». Во введении авторы отметили, что архитектура компьютеров не менялась с тех пор, как в 1945 году венгерский гений Джон фон Нейман сформулировал ее основные принципы. «Пользователи компьютеров привыкли к тому, что программы работают быстрее с каждым новым поколением микропроцессоров, – писали они, – но сегодня оснований для подобных ожиданий уже нет». Лишь немногие преподаватели включили это пособие в свои курсы. Подвергать сомнению авторитет фон Неймана в кибернетике было равнозначно богохульству в религии.
На промышленном рынке Nvidia стремилась привлечь самых разных клиентов – от биржевых трейдеров до нефтегазовых компаний и молекулярных биологов. В какой-то момент компания даже заключила соглашение с General Mills о создании симуляции термической обработки замороженной пиццы Totino's. Однако большинство подобных сделок заглохло в течение полугода; для приготовления пиццы такие вычислительные мощности были не нужны.
Высокие расходы на научно-исследовательские и опытно-конструкторские работы в рамках проекта CUDA легли большим финансовым бременем на Nvidia, но дело было не только в прямых затратах. В компании начались внутренние разногласия: Николлсу приходилось с боем выбивать ресурсы для своего проекта. «Гораздо проще было объяснить разработчикам, зачем нужно улучшать производительность в играх, чем в задачах вроде умножения матриц или быстрых преобразований Фурье», – вспоминает Кун. Тем временем кодовая база усложнялась: программный пакет GeForce вскоре перешагнул отметку 100 миллионов строк, превзойдя по сложности некоторые версии Windows.
Вероятно, хуже всего было то, что CUDA отвлекала внимание Хуанга от ключевых клиентов. Первые слухи о производственных проблемах в Nvidia появились в конце 2006 года: геймеры жаловались, что графические процессоры в ноутбуках выходили из строя после нескольких недель использования. К тому времени, как в компании признали наличие проблемы, на игровых форумах уже распространилась конспирологическая теория о том, что Nvidia неправильно распаяла чипы на платах. Так начался «Бампгейт»[14]: геймеры уходили к конкурентам, и акции Nvidia вновь рухнули, во второй раз за шесть лет потеряв почти 90% своей стоимости. Члены совета директоров, изучавшие график изменения цены акций на терминале Bloomberg, сравнивали его с ЭКГ при сердечном приступе.
Сторонники Radeon не преминули воспользоваться ситуацией, обвиняя Хуанга в утаивании информации. «Мы давно говорили, что Nvidia идет ко дну», – прокомментировал один из них. В начале 2009 года Dell отказалась от услуг Nvidia в качестве поставщика видеочипов для игровых ноутбуков. «Мы долго ждали, когда же ничем не обоснованная глупость Nvidia обернется потерями, – язвительно отмечал один из обозревателей. – Теперь, по крайней мере в Dell, все точно знают,


