Одна фотография дает возможность заглянуть в мир создателя — его интересы и чувства по поводу предмета или пространства. Но как насчет создателей технологий, которые помогают сделать эти изображения возможными?
Доцент факультета электротехники и компьютерных наук Массачусетского технологического института Джонатан Рэган-Келли — один из таких людей, который разработал все: от инструментов для визуальных эффектов в фильмах до языка программирования Halide, который широко используется в промышленности для редактирования и обработки фотографий. Будучи исследователем в Лаборатории искусственного интеллекта Watson MIT-IBM и Лаборатории компьютерных наук и искусственного интеллекта, Рэган-Келли специализируется на высокопроизводительных предметно-ориентированных языках программирования и машинном обучении, которые позволяют создавать 2D- и 3D-графику, визуальные эффекты и вычислительную фотографию. .
«Самым главным направлением многих наших исследований является разработка новых языков программирования, которые упрощают написание программ, которые действительно эффективно работают на все более сложном оборудовании, которое сегодня находится в вашем компьютере», — говорит Рэган-Келли. «Если мы хотим продолжать увеличивать вычислительную мощность, которую мы можем фактически использовать для реальных приложений — от графики и визуальных вычислений до искусственного интеллекта — нам нужно изменить то, как мы программируем».
Нахождение золотой середины
За последние два десятилетия разработчики микросхем и инженеры-программисты стали свидетелями замедления действия закона Мура и заметного перехода от вычислений общего назначения на центральных процессорах к более разнообразным и специализированным вычислительным и обрабатывающим устройствам, таким как графические процессоры и ускорители. При этом переходе возникает компромисс: возможность несколько медленно запускать код общего назначения на процессорах в пользу более быстрого и эффективного оборудования, которое требует, чтобы код был тщательно адаптирован к нему и сопоставлен с ним с помощью адаптированных программ и компиляторов. Новое оборудование с улучшенным программированием может лучше поддерживать такие приложения, как высокоскоростные интерфейсы сотовой радиосвязи, декодирование сильно сжатого видео для потоковой передачи, а также обработку графики и видео на камерах мобильных телефонов с ограниченным энергопотреблением, и это лишь некоторые из приложений.
«Наша работа в основном направлена на раскрытие возможностей лучшего аппаратного обеспечения, которое мы можем создать, чтобы обеспечить максимально возможную вычислительную производительность и эффективность для такого рода приложений, чего не могут сделать традиционные языки программирования».
Чтобы добиться этого, Рэган-Келли разбивает свою работу на два направления. Во-первых, он жертвует общностью, чтобы уловить структуру конкретных и важных вычислительных задач, и использует это для повышения эффективности вычислений. Это можно увидеть в языке обработки изображений Halide, который он разработал совместно и помог преобразовать индустрию редактирования изображений с помощью таких программ, как Photoshop. Кроме того, поскольку он специально разработан для быстрой обработки плотных регулярных массивов чисел (тензоров), он также хорошо работает для вычислений в нейронных сетях. Второе направление направлено на автоматизацию, в частности на то, как компиляторы сопоставляют программы с оборудованием. В одном из таких проектов лаборатории MIT-IBM Watson AI Lab используется Exo, язык, разработанный группой Рэгана-Келли.
На протяжении многих лет исследователи упорно работали над автоматизацией кодирования с помощью компиляторов, которые могут быть «черным ящиком»; однако по-прежнему существует большая потребность в явном контроле и настройке со стороны инженеров по производительности. Рэган-Келли и его группа разрабатывают методы, охватывающие каждую технику, находя баланс между компромиссами для достижения эффективного и ресурсосберегающего программирования. В основе многих высокопроизводительных программ, таких как движки видеоигр или обработка камер мобильных телефонов, лежат современные системы, которые в основном оптимизируются вручную специалистами-людьми, владеющими низкоуровневыми детальными языками, такими как C, C++ и ассемблер. Здесь инженеры делают конкретный выбор относительно того, как программа будет работать на оборудовании.
Рэган-Келли отмечает, что программисты могут выбрать «очень кропотливый, очень непродуктивный и очень небезопасный низкоуровневый код», который может привести к ошибкам, или «более безопасные, более продуктивные программные интерфейсы более высокого уровня», в которых отсутствует возможность вносите в компилятор тонкую настройку того, как запускается программа, и обычно приводит к снижению производительности. Итак, его команда пытается найти золотую середину. «Мы пытаемся выяснить, как обеспечить контроль над ключевыми проблемами, которые инженеры по производительности человека хотят иметь возможность контролировать», — говорит Рэган-Келли, — «поэтому мы пытаемся создать новый класс языков, который мы называем языки, планируемые пользователем, которые предоставляют более безопасные и высокоуровневые дескрипторы для управления тем, что делает компилятор, или управления оптимизацией программы».
Разблокировка оборудования: высокоуровневые и малообслуживаемые способы
Рэган-Келли и его исследовательская группа решают эту проблему по двум направлениям: применение машинного обучения и современных методов искусственного интеллекта для автоматического создания оптимизированных расписаний и интерфейса к компилятору для достижения более высокой производительности компилятора. Другой использует «экзокомпиляцию», над которой он работает в лаборатории. Он описывает этот метод как способ «вывернуть компилятор наизнанку», используя скелет компилятора с элементами управления для человеческого управления и настройки. Кроме того, его команда может добавить свои собственные планировщики, которые помогут использовать специализированное оборудование, например ускорители машинного обучения от IBM Research. Приложения для этой работы охватывают широкий спектр: компьютерное зрение, распознавание объектов, синтез речи, синтез изображений, распознавание речи, генерация текста (большие языковые модели) и т. д.
Его масштабный проект с лабораторией делает еще один шаг вперед, подходя к работе через призму системы. В работе под руководством его советника и стажера лаборатории Уильяма Брэндона в сотрудничестве с научным сотрудником лаборатории Рамесваром Пандой команда Рагана-Келли переосмысливает модели больших языков (LLM), находя способы немного изменить вычисления и архитектуру программирования модели, чтобы преобразователь Модели на основе ИИ могут более эффективно работать на оборудовании ИИ без ущерба для точности. Их работа, по словам Рэган-Келли, существенно отклоняется от стандартного образа мышления и потенциально может принести большую выгоду за счет сокращения затрат, улучшения возможностей и/или сокращения LLM, чтобы он требовал меньше памяти и работал на меньших компьютерах.
Именно в этом более авангардном мышлении, когда дело касается эффективности вычислений и аппаратного обеспечения, Рэган-Келли преуспевает и видит в нем ценность, особенно в долгосрочной перспективе. «Я думаю, что есть области [of research] к которым необходимо стремиться, но они хорошо известны, очевидны или достаточно общеприняты, поэтому многие люди либо уже занимаются ими, либо будут ими заниматься», — говорит он. «Мы пытаемся найти идеи, которые имеют одновременно большое влияние на практический мир и в то же время являются вещами, которые не обязательно произойдут или, я думаю, недостаточно обслуживаются остальной частью сообщества по сравнению с их потенциалом. »
Примером этого является курс 6.106 (Инженерия производительности программного обеспечения), который он сейчас преподает. Около 15 лет назад произошел переход от одного к нескольким процессорам в устройстве, что привело к тому, что во многих академических программах начали преподавать параллелизм. Но, как объясняет Рэган-Келли, в Массачусетском технологическом институте осознали важность понимания студентами не только параллелизма, но и оптимизации памяти и использования специализированного оборудования для достижения максимально возможной производительности.
«Изменяя способ программирования, мы можем раскрыть вычислительный потенциал новых машин и дать людям возможность продолжать быстро разрабатывать новые приложения и новые идеи, которые смогут использовать все более сложное и сложное оборудование».