С редкими данными аналитические алгоритмы заканчивают тем, что делали большое дополнение и умножение нолем, который является потраченным впустую вычислением. Программисты обходят это, сочиняя пользовательский код, чтобы избежать нулевых записей, но тот кодекс сложен, и это обычно применяется только к узкому ассортименту проблем.На Конференции Ассоциации вычислительной техники по Системам, Программированию, Языкам и Заявлениям: программное обеспечение для Человечества (ВСПЛЕСК), исследователи из MIT, французской Альтернативной энергии и Комиссии по атомной энергии и Adobe Research недавно представило новую систему, которая автоматически предоставляет кодекс, оптимизированный для редких данных.
Тот кодекс предлагает 100-кратное ускорение по существующим, неоптимизированным пакетам программ. И его работа сопоставима с тем из придирчиво оптимизированного рукой кодекса для определенных операций редких данных, требуя намного меньшего количества работы над частью программиста.Систему называют Тако для компилятора алгебры тензора.
В языке информатики структуру данных как таблица Amazon называют «матрицей», и тензор – просто более многомерный аналог матрицы. Если, что таблица Amazon также нанесла на карту клиентов и продукты против оценок продукции клиентов на территории Amazon и словах, используемых в их отзывах о продукции, результатом будет четырехмерный тензор.«Редкие представления были там больше 60 лет», говорит Сэмен Амарасинг, преподаватель MIT электротехники и информатики (EECS) и ведущего автора на новой бумаге. «Но никто не знал, как произвести кодекс для них автоматически. Люди выяснили несколько очень определенных операций – редкий матричный вектор умножается, редкий матричный вектор умножаются плюс вектор, редкая матричная матрица умножаются, редкая матричная матричная матрица умножаются.
Самый большой вклад, который мы делаем, является способностью произвести кодекс для любого выражения алгебры тензора, когда матрицы редки».Присоединение к Amarasinghe на бумаге является первым автором Фредриком Кджолстэдом, аспирантом MIT в EECS; Стивен Чоу, также аспирант в EECS; Дэвид Лугато французской Альтернативной энергии и Комиссии по атомной энергии; и Шоэйб Камил из Adobe Research.
Таможенные ядраВ последние годы математическая манипуляция тензоров – алгебра тензора – стала крайне важной для не только большой анализ данных, но и машинное обучение, также. И это был главный продукт научного исследования со времени Эйнштейна.
Традиционно, чтобы обращаться с алгеброй тензора, программное обеспечение математики анализировало операции по тензору в их составные части. Так, например, если бы вычисление потребовало, чтобы два тензора были умножены и затем добавлены к одной трети, программное обеспечение управляло бы своим стандартным режимом умножения тензора на первых двух тензорах, сохранило бы результат, и затем управляло бы его стандартным дополнительным режимом тензора.В возрасте больших данных, однако, этот подход слишком отнимающий много времени.
Для эффективной операции на крупных наборах данных Кджолстэд объясняет, каждая последовательность операций по тензору требует своего собственного «ядра» или вычислительного шаблона.«Если Вы делаете это в одном ядре, Вы можете сделать все это сразу, и Вы можете заставить его пойти быстрее, вместо того, чтобы иметь необходимость поместить продукцию в память, и затем читать это въезжает задним ходом так, чтобы Вы могли добавить его к чему-то еще», говорит Кджолстэд. «Вы можете просто сделать это в той же самой петле».Исследователи информатики развивали ядра для некоторых операций по тензору, наиболее распространенных в машинном обучении и аналитике больших данных, таких как перечисленные Amarasinghe.
Но количество возможных ядер бесконечно: ядро для добавления вместе три тензора, например, отличаются от ядра для добавления вместе четыре и ядра для добавления, что три трехмерных тензора отличаются от ядра для добавления трех четырехмерных тензоров.Много операций по тензору включают умножение входа от одного тензора с одним от другого. Если любой вход – ноль, так их продукт, и программы для управления большими, редкими матрицами могут потратить впустую огромное количество времени добавляющие и умножающиеся ноли.
Оптимизированный рукой кодекс для редких тензоров определяет нулевые записи и оптимизировал операции, вовлекающие их – или продвижение отличные от нуля записи в дополнениях или опускающие умножение полностью. Это делает манипуляции тензора намного быстрее, но это требует, чтобы программист сделал намного больше работы.
Кодекс для умножения двух матриц – простой тип тензора, только с двумя размерами, как стол – мог бы, например, проводить 12 линий, если матрица полна (подразумевать, что ни одни из записей не могут быть опущены). Но если матрица редка, та же самая операция может потребовать 100 линий кодекса или больше, чтобы отследить упущения и elisions.Войдите в такоТако добавляет весь этот дополнительный кодекс автоматически.
Программист просто определяет размер тензора, полно ли это или редко, и местоположение файла, из которого это должно импортировать свои ценности. Для любой данной операции на двух тензорах Тако строит иерархическую карту, которая указывает, во-первых, который соединился, записи от обоих тензоров отличные от нуля и, тогда, какие записи от каждого тензора соединены с нолями. Все пары нолей это просто отказывается.
Тако также использует эффективную схему индексации сохранить только ненулевые значения редких тензоров. С нулевыми включенными записями публично выпущенный тензор от Amazon, который наносит на карту числа идентификатора клиента против покупок и описательных терминов, отобранных из обзоров, поднимает 107 эксабайт данных, или примерно 10 раз предполагаемую вместимость всех серверов Google.
Но используя схему сжатия Тако, это поднимает только 13 гигабайтов – достаточно маленький, чтобы соответствовать по смартфону.