Архитектура машин для искусственного интеллекта
Майкл Ф. Диринг
По мере того как программное обеспечение для исследований в области искусственного интеллекта (ИИ) все более усложняется, а приложения результатов этих исследований выходят из лабораторий в практику, все большее значение приобретает вопрос о производительности компьютеров и расходах, связанных с вычислениями.
Вообще говоря, необходимость повышения эффективности вычислений может быть обусловлена двумя различными причинами.
Подчас требуется ускорить процесс вычислений, не считаясь с затратами. Обычно это вызвано необходимостью производить вычисления в реальном времени или обусловлено использованием современных методов работы, которые предъявляют требования, далеко превосходящие возможности существующих систем как по сложности, так и по времени реакции. Другая причина связана с желанием уменьшить удельные затраты на вычисления. Однако за обеими причинами, как правило, скрыты реальные коммерческие соображения.
Возможности для повышения эффективности вычислений в системах ИИ можно изыскать на всех уровнях. Совершенствование системы команд наряду с развитием семантики языков искусственного интеллекта позволяет оптимизировать программы в процессе трансляции. Использование одновременно работающих машин делает возможным параллельное выполнение написанных на Лиспе программ или обработку декларативных конструкций. При этом возникают вопросы использования И-параллелизма, ИЛИ-параллелизма, а также организации параллельного потока.
Заказные СБИС (сверхбольшие интегральные схемы), предназначенные для выполнения операций, которые являются «узким местом» при вычислениях в задачах искусственного интеллекта, включают аппаратные средства реализации унификаторов, ассоциативную память и аппаратные средства координации процессов параллельного поиска. Многие из этих способов повышения эффективности вычислений совершенно независимы и, взятые в совокупности, могут повысить скорость выполнения программ на несколько порядков. Однако дело не всегда обстоит таким образом: некоторые методы оптимизации заставляют компьютер работать последовательным образом, и тогда переход к параллельным операциям теряет смысл.
В настоящей статье, которая представляет собой часть работы по созданию развитой параллельной архитектуры для вычислений в области искусственного интеллекта (см. описание проекта FAIM-1), рассматривается ряд способов повышения производительности компьютера и их возможные взаимосвязи.
Некоторые распространенные заблуждения
Часто высказываются неверные соображения относительно того, что следует делать для повышения эффективности вычислений в системах ИИ. Поскольку программирование задач искусственного интеллекта в основном ведется на Лиспе, некоторые специалисты считают, что главное — это ускорить выполнение программ на Лиспе. Однако при таком подходе остаются без внимания другие легко реализуемые возможности ускорения вычислений.
Другие специалисты по вычислительной технике не видят смысла заниматься чем-либо, кроме фундаментальной проблемы параллельных вычислений. Иначе говоря, они придерживаются мнения, что очень сложная в действительности задача декомпозиции произвольных вычислений из области ИИ — что обеспечивает их эффективное выполнение с помощью тысяч работающих параллельно процессоров—имеет стандартное решение. Однако в большинстве программ—даже в тех, которым присущ значительный параллелизм,—имеются участки, требующие проведения последовательных вычислений.
В частности, во многих программах, использующих параллелизм, приходится накапливать результаты одного этапа параллельных вычислений, анализировать их н лишь затем приступать к следующему этапу. И нередко на выполнение такой последовательной части уходит основное время работы программы. Поэтому нельзя оставлять без внимания вопрос о том, как следует подбирать языки программирования и машины, чтобы максимально ускорить последовательные вычисления. Другими словами, возможна такая ситуация: когда будет создана дорогостоящая машина параллельного действия, в сотни раз превосходящая по быстродействию прежние образцы, некоторые машины последовательного действия (скажем, благодаря использованию нового транслятора или микрокода) «обгонят» ее по скорости. К примеру, написанный в машинном коде унификатор для языка искусственного интеллекта Crislal имеет скорость действия на два порядка выше, нежели написанный на Лиспе унификатор предшествующего языка PEARL.
Способы повышения производительности компьютеров: