Исследователи из MIT разработали библиотеку для C++, которая автоматически генерирует код, оптимизированный для выполнения операций над разреженными тензорами произвольного ранга. При вычислениях с матрицами время выполнения этого кода было сопоставимо с оптимизированными вручную программами, а для тензоров более высокого ранга она работала намного быстрее (почти в сто раз). Статья опубликована в Proceedings of the ACM on Programming Languages, посмотреть на работу программы онлайн можно на посвященном ей сайте.
При работе с данными их часто удобно представлять в виде матриц или тензоров. С помощью подобной матрицы можно описать связи между страничками в Facebook или сопоставить покупателей и их отзывы к товарам на Amazon. При этом большая часть информации, записанной таким образом, может оказаться «бесполезной». Например, тензор отзывов покупателей на Amazon содержит примерно 1019 компонент, однако отличны от нуля только 109 из них. Такие тензоры называются разреженными.
Вычисления с разреженными тензорами можно значительно ускорить, если учесть тот факт, что при умножении любого числа на ноль всегда получается ноль. Кроме того, хранить результаты промежуточных вычислений неэффективно при больших объемах данных, в связи с чем нужно провести некоторую дополнительную оптимизацию. Например, вычисление выражения Σi,j AijkBij + Ck должно выполняться за один шаг, а не разбиваться на отдельные операции умножения и сложения. Обычно такая оптимизация выполняется вручную, и для каждого типа операций разрабатывается собственный шаблон (так называемое ядро, kernel).
В этой статье ученые предлагают новый инструмент оптимизации произвольных выражений с тензорами, генерирующий программный код автоматически на основе анализа структуры данных. Пользователю нужно указать только формат хранения данных и последовательность операций, которую надо оптимизировать. Чтобы продемонстрировать их подход, ученые разработали библиотеку C++, которую они назвали taco (Tensor Algebra COmpiler, Компилятор Тензорной Алгебры).
Для этого ученые разработали удобный формат хранения данных, основанный на представлении тензора в виде дерева, у которого число уровней равно рангу тензора (если не считать корень дерева за отдельный уровень). Затем они определили, как операции над тензорами (умножение и сложение) реализуются в виде операций над такими деревьями. Так, умножение двух тензоров выполняется с помощью графов, указывающих направления обхода деревьев, а суммирование реализуется слиянием двух деревьев. Наконец, ученые описали рекурсивный алгоритм, который использует эти идеи для генерации шаблонов кода.
Затем исследователи сравнили работу разработанной ими библиотеки с существующими программами. Оказалось, что с вычислениями над разреженными матрицами она справляется так же хорошо, как и все оптимизированные вручную алгоритмы, а в некоторых случаях время вычислений с помощью taco оказывалось даже меньше. При работе же с тензорами более высокого ранга taco превосходил существующие аналоги во много раз. Например, тензоры третьего ранга, сформированные на основе анализа постов в локальной сети Facebook Нового Орлеана, новый алгоритм перемножал в 114 раз быстрее, чем MATLAB Tensor Toolbox.
Ранее мы писали о том, как исследователи из MIT разработали программу, которая автоматически ищет и исправляет ошибки в исходном коде других программ. А ученые из Кембриджа научили искусственный интеллект воровать код и собирать из него собственные проекты.
Дмитрий Трунин
Она обучалась на библейских текстах
Компания Meta* выпустила языковую модель, которая понимает устную речь. Она распознает более 4000 языков и может разговаривать на 1107 из них. Meta считает, что модель поможет сохранить языковое разнообразие в мире. Статья опубликована на сайте компании, код модели доступен на гитхабе. Обычно модели распознавания речи обучаются на больших объемах данных: им требуются тысячи часов аудиозаписей. При этом каждой записи должен соответствовать текст, чтобы модель научилась сопоставлять звучащую и письменную речь. Такие большие датасеты можно собрать только для популярных языков, на которых говорит много людей. Всего в мире существует около 7000 языков, но современные системы распознавания речи поддерживают не более 200 из них. Команда инженеров из компании Meta под руководством Майкла Аули (Michael Auli) обучила большую модель для распознавания речи Massively Multilingual Speech (MMS), которая может общаться на 1107 языках и распознавать 4017. Нейросеть обучалась на религиозных записях. Исследователи собрали два датасета: один с аудиозаписями и соответствующими текстами и второй только с аудиозаписями. Первый датасет состоит из 55 тысяч аудиозаписей, на которых люди зачитывают вслух тексты из Нового Завета. Всего в Новом Завете 27 книг и 260 глав. Данные собирали из трех источников: Faith Comes By Hearing, GoTo.Bible и YouVersion. Во второй датасет попали 7,7 тысяч часов аудиозаписей с сайта Global Recordings Network: это религиозные песни, записи отрывков из Библии и других религиозных текстов. Для обучения использовали нейросеть архитектуры wav2vec 2.0. Сначала ее предобучили, чтобы она могла превращать аудиозаписи в векторные представления. Дело в том, что нейросети работают не с сырыми записями, а с векторами — наборами чисел. Поэтому нужен механизм для превращения аудиозаписей в вектора из чисел, причем похожие аудиозаписи должны быть представлены геометрически близкими векторами. Для получения векторных представлений можно использовать любые аудиозаписи, главное чтобы их было много. Поэтому ученые объединили второй религиозный датасет с другими большими аудиодатасетами, в том числе Multilingual Librispech, CommonVoice, VoxLingua-107, BABEL и VoxPopuli. Всего в выборку попала 491 тысяча часов аудиозаписей без текстов. После предобучения получилась готовая модель MMS. Затем авторы натренировали MMS превращать речь в текст, дообучив ее на первом религиозном датасете с аудиозаписями и текстами. В разных частях света распространены разные типы языков, поэтому авторы определили точность модели для языков с разных континентов. Она научилась распознавать речь на 1107 языках со средней точностью по континенту 97 процентов. Авторы также проверили качество распознавания речи на нерелигиозных аудиозаписях. MMS сравнили с лучшими моделями для распознавания речи Whisper от OpenAI и USM от Google на датасете FLEURS. MMS ошибалась в два раза меньше, чем Whisper и на 6 процентов меньше, чем USM. В задаче определения языка MMS оценивали на датасетах FLEURS, VoxLingua-107, BABEL и VoxPopuli, в которые входит до 107 языков. К предобученной модели приделали простой линейный слой-классификатор, который натренировали определять язык на аудиозаписи. Модель показала такое же качество, как и конкурентные модели. При увеличении числа распознаваемых языков до 4000 с помощью дообучения на религиозных датасетах, качество модели падает совсем немного, с 94 до 93 и с 84 до 80 процентов на разных датасетах. Также авторы оценили, насколько хорошо MMS генерирует речь на 1107 языках, которые она умеет превращать в текст. Для этого модель обучили на архитектуре VITS — на момент создания MMS эта нейросеть показывала лучшие результаты по генерации звучащей речи на трех языках: английском, португальском и французском. Авторы масштабировали ее до 1107 языков, но в отличие от других задач, обучали нейросеть для каждого языка по отдельности. Качество модели оценили на языках по континентам. Средняя точность генерации речи по континенту составила 98 процентов. Лучше всего модель говорит на европейских и южноамериканских языках, хуже всего — на африканских. Наконец, ученые проверили, не повлиял ли характер религиозных датасетов на качество модели. Для этого нейросеть обучили отдельно на религиозных текстах и на повседневной речи из датасета FLEURS. Затем каждая модель должна была преобразовать звучащую повседневную речь из датасета FLEURS в текст. Хотя в обучающей выборке MMS было много религиозных терминов, в текстах она использовала их ненамного (менее чем на процент) чаще, чем модель, обучения на нерелигиозном датасете. На графике показана частота религиозных терминов в обучающей выборке и при превращении речи в текст. Разница между двумя моделями почти не заметна, хотя и немного отличается для некоторых языков. Качество модели оценивали в трех экспериментах, но задач по пониманию и генерации звучащей речи существует гораздо больше. В работе не указано, насколько хорошо большая мультиязычная модель проявила бы себя в более сложных задачах, таких как перевод, определение темы высказывания или поиск ключевых слов. Хотя MMS работает с большим числом языков, чем конкурентные модели, она пока не понимает все 7000 языков мира. Ученые планируют добавить в модель более редкие языки с малым количеством носителей. Они считают, что это может помочь спасти исчезающие языки от вымирания. Кроме того, в данных недостаточно представлены диалекты разных языков. В даркнете тоже говорят на своем языке, вернее на сленге. Обычные языковые модели плохо его понимают. Южнокорейские ученые обучили нейросеть DarkBERT читать тексты из даркнета и выполнять по ним задачи, связанные с кибербезопасностью. *Деятельность компании Meta запрещена в России.