Система Taco: для более быстрого анализа больших данных

 Система для выполнения «тензорной алгебры» предлагает 100-кратное ускорение по сравнению с предыдущими пакетами программного обеспечения. 

 Мы живем в эпоху больших данных, но большая часть этих данных «разрежена». Представьте себе, например, массивную таблицу, которая отображает всех клиентов Amazon против всех своих продуктов, причем «1» для каждого продукта является данным клиентом купил и «0» в обратном случае. Таблица будет в основном с нулями. 

 При разреженных данных аналитические алгоритмы в конечном итоге делают много сложения и умножения на ноль, что является расходованием вычислений. Программисты обойдут это, написав собственный код, чтобы избежать нулевых записей, но этот код является сложным и обычно относится только к узкому кругу проблем. 

 На конференции Ассоциации вычислительных машин по системам, программированию, языкам и приложениям: программное обеспечение для человечества (SPLASH), исследователи из Массачусетского технологического института, Французской комиссии по альтернативной энергии и атомной энергии и Adobe Research недавно представили новую систему, которая автоматически создает код, оптимизированный для данных.

  Этот код предлагает 100-кратное ускорение по сравнению с существующими, не оптимизированными пакетами программного обеспечения. И его производительность сопоставима с характеристикой тщательно обработанного вручную кода для конкретных операций с разреженными данными, в то же время требуя гораздо меньше работы со стороны программиста. 

 Система называется Taco для компилятора тензорной алгебры. В языке компьютерных наук структура данных, такая как таблица Amazon, называется «матрицей», а тензор является просто более крупным аналогом матрицы. Если эта таблица Amazon также отображает клиентов и продукты в отношении рейтингов продуктов клиентов на сайте Amazon и слов, используемых в обзорах продуктов, результатом будет четырехмерный тензор. 

 В последние годы математическая манипуляция тензорной алгеброй стала решающей не только для анализа больших данных, но и для машинного обучения. И это было основным научным исследованием со времен Эйнштейна.

  Традиционно для обработки тензорной алгебры математическое программное обеспечение разлагало тензорные операции на их составляющие части. Так, например, если для вычисления потребовалось умножить два тензора и затем добавить к третьему, программное обеспечение выполнило бы стандартную процедуру умножения тензора на первых двух тензорах, сохранит результат и затем выполнит стандартную процедуру добавления тензора. 

 Однако в эпоху больших данных этот подход слишком трудоемкий. Для эффективной работы с массивными наборами данных Kjolstad объясняет, что для каждой последовательности тензорных операций требуется собственное «ядро» или вычислительный шаблон. 

 «Если вы сделаете это в одном ядре, вы можете сделать все сразу, и вы можете ускорить его, вместо того, чтобы помещать вывод в память, а затем читать его обратно, чтобы вы могли добавить его к чему-то другому, - говорит Кьелстад. «Вы можете просто сделать это в том же цикле». 

 Ученые-информатики разработали ядра для некоторых из тензорных операций, наиболее часто встречающихся в машинных процессах и аналитиках больших данных, таких как те, которые перечислены Amarasinghe. Но число возможных ядер бесконечно: ядро ​​для объединения трех тензоров, например, отличается от ядра для объединения четырех, а ядро ​​для добавления трех трехмерных тензоров отличается от ядра для добавления трех четырехмерных тензоров.

  Многие тензорные операции включают в себя умножение записи из одного тензора на один из другого. Если любая запись равна нулю, то и их продукт, а программы для манипулирования большими разреженными матрицами могут тратить огромное количество времени на добавление и умножение нулей. 

 Код для умножения двух матриц - простой тип тензора с двумя измерениями, как и таблица, может, например, принимать 12 строк, если матрица заполнена (это означает, что ни одна из записей не может быть опущена). Но если матрица разрежена, то одна и та же операция может потребовать 100 строк кода или больше, чтобы отслеживать пропуски и ошибки. 

 Taco автоматически добавляет весь этот дополнительный код. Программист просто задает размер тензора, полный или разреженный, и расположение файла, из которого он должен импортировать свои значения. Для любой заданной операции на двух тензорах Taco строит иерархическую карту, которая указывает, во-первых, что парные записи из обоих тензоров отличны от нуля, а затем, какие записи от каждого тензора сопряжены с нулями. Все пары нулей просто отбрасываются. 

 Taco также использует эффективную схему индексирования для хранения только ненулевых значений разреженных тензоров. С включенными нулевыми записями публично выпущенный тензор от Amazon, который сопоставляет идентификационные номера клиентов с покупками и описательные термины, взятые из обзоров, занимает до 107 экзабайт данных или примерно в 10 раз превышает предполагаемую емкость хранилища всех серверов Google. Но с использованием схемы сжатия Taco он занимает всего 13 гигабайт - достаточно маленький объем, чтобы поместиться на смартфон. 

технологиинаука
25%
7
29
0.561 GOLOS
0
В избранное
kristina
Придет время и я сниму розовые очки, а пока.....
29
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (1)
Сортировать по:
Сначала старые