В этом посте я собираюсь показать вам, что вам просто нужно немного знать 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 ТБ с одинарной точностью!
- Импортируйте
numpy
, чтобы создать наши входные данные, и классOPUMap
изlightonml.projections.sklearn
. - Создайте «фиктивные» данные для демонстрационных целей. Вход текущих OPU LightOn должен быть двоичным и uint8.
- Создайте
OPUMap
объект, отвечающий за взаимодействие с аппаратным ускорителем, и выберите выходной размер проекцииn_components
. - Выполните оптическое преобразование, используя метод
opu.transform
. Результатом является массив uint8 с элементами в [0, 255].
Все сводится к отправке и получению numpy.ndarray
s. На самом деле, это работает и с torch.Tensor
s! Подобно запуску вычислений на графическом процессоре без каких-либо сведений о деформациях, дорожках, регистрах и потоках, можно запустить вычисления с помощью 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.
Благодарности
Спасибо Виктуар Луи за просмотр этого сообщения в блоге.