В этом посте я собираюсь показать вам, что вам просто нужно немного знать Numpy, чтобы использовать LightOn OPU. Я представлю LightOnML, среду Python для выполнения быстрых крупномасштабных случайных проекций со светом. К концу вы будете обладать знаниями, необходимыми для того, чтобы сразу же воспользоваться преимуществами LightOn OPU, когда вы получите доступ к LightOn Cloud.

Несколько лет назад я подумал, что вам нужно быть каким-то волшебником для выполнения вычислений на видеокартах (GPU). Это было до того, как я открыл для себя Theano (RIP 😢), TensorFlow, Torch (RIP 😢) и PyTorch, и быстро понял, что использование графических процессоров может быть простым.

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

Без лишних слов, позвольте мне показать вам, как это работает 👇

Код на рисунке 1 показывает суть LightOnML. Что там творится? Мы выполнили y = | Rx | ², где x - матрица 3.000 × 1.000.000, а R - комплексная гауссова матрица размером 1.000.000 × 1.000.000. Матрица R будет иметь размер около 8 ТБ с одинарной точностью!

  1. Импортируйте numpy, чтобы создать наши входные данные, и класс OPUMap из lightonml.projections.sklearn.
  2. Создайте «фиктивные» данные для демонстрационных целей. Вход текущих OPU LightOn должен быть двоичным и uint8.
  3. Создайте OPUMap объект, отвечающий за взаимодействие с аппаратным ускорителем, и выберите выходной размер проекции n_components.
  4. Выполните оптическое преобразование, используя метод opu.transform. Результатом является массив uint8 с элементами в [0, 255].

Все сводится к отправке и получению numpy.ndarrays. На самом деле, это работает и с torch.Tensors! Подобно запуску вычислений на графическом процессоре без каких-либо сведений о деформациях, дорожках, регистрах и потоках, можно запустить вычисления с помощью LightOn OPU, не имеющего представления о уравнениях Максвелла.

Отлично! Но что это за двоичный вход? Действительно, входные данные для OPU должны быть двоичными, мы предоставляем некоторые фиксированные и адаптирующиеся к данным кодеры в lightonml.encoding.base и lightonml.encoding.models. В качестве альтернативы вы можете разработать свою собственную схему кодирования.

Некоторые другие приятные особенности библиотеки:

  • Обертку OPUMap scikit-learn можно поместить в Pipeline, и она будет отлично работать с инструментами перекрестной проверки.
  • Низкоуровневый код выполняет автоматическую оптимизацию выходного отношения сигнал / шум.
  • Можно вводить битовые данные.

В библиотеке есть и другие интересные самородки, но мы же не хотим отнимать у вас все самое интересное, не так ли?

Вы пробудили ваше любопытство и хотите узнать больше о функциях LightOnML? Просмотрите документацию библиотеки.

Хотите узнать о реальных приложениях этой библиотеки и исследовательской работе LightOn? Проверьте наши сообщения в блоге об обучении с подкреплением, трансферном обучении, кривой двойного спуска и многом другом ... и связанных с ними lightonai репозиториях GitHub.

Хотите использовать эту библиотеку самостоятельно? Зарегистрируйтесь в LightOn Cloud или подайте заявку в LightOn Cloud for Research Program.

О нас

LightOn - компания, занимающаяся аппаратным обеспечением, которая разрабатывает новые оптические процессоры, которые значительно ускоряют вычисления с помощью машинного обучения. Процессоры LightOn открывают новые горизонты в областях вычислений и инженерии, которые сталкиваются с вычислительными ограничениями. Заинтересованы в ускорении вычислений? Попробуйте наше решение на LightOn Cloud! 🌈

Подпишитесь на нас в Twitter на @LightOnIO, подпишитесь на нашу рассылку новостей и / или зарегистрируйтесь в нашей серии семинаров. Мы ведем прямые трансляции, поэтому вы можете присоединиться к нам откуда угодно. 🌍

Автор

Якопо Поли, ведущий инженер по машинному обучению в LightOn AI Research.

Благодарности

Спасибо Виктуар Луи за просмотр этого сообщения в блоге.