Чистый резонанс

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

И вот смотрите, как я раскатала свои губенки и какую ошибку мне вывалила моя программа:

numpy._core._exceptions._ArrayMemoryError: Unable to allocate 4.00 TiB for an array with shape (524288, 524288)

Мне потребовалось ни много ни мало, а 4 Терабайта физической оперативной памяти, ха-ха! Мой бедный комп просто улетел в стратосферу от такого флекса. Это я копаю свою программу по адаптации квантового алгоритма Шора для эллиптических кривых (ECDLP).

Как говорил Леонардо да Винчи — произведение искусства можно совершенствовать бесконечно. Я на 100% разделяю такую точку зрения и взялась за программу с целью сделать её полностью универсальной. Я уже показывала вам её — но то была модель, хоть и добротная, но эллиптическая кривая там была жестко вшита («захардкорена», как говорят у нас в тусовке), и единственным масштабированием было выбрать разрядность и начальную точку, от которой получим координаты открытого ключа по значению закрытого, и всё. Скукота для нубов.

Вот во время этой работы мне и понадобился такой зверский объем памяти для хранения глобальной матрицы состояний сетки кубитов. Мой комп сказал: «У меня лапки, я такое не вывезу», и у меня такой памяти явно нет (да и мало у какого дата-центра найдется под одну локальную задачу!). Поэтому пришлось срочно заняться жесткой оптимизацией памяти. Это был реальный босс-файт, в котором я перепробовала три метода:

   1. Монструозная полная матрица (Тот самый краш). Сначала я пошла в лоб и попыталась честно построить огромную унитарную матрицу переходов для 19 кубитов. Размерчик вышел 524288 ; 524288 комплексных чисел complex128. Математика просто взорвалась геометрической прогрессией, потребовав те самые 4 ТБ ОЗУ, и вывалила мне ArrayMemoryError. RIP.

   2. Низкоуровневая мутация вектора (_act_on_). Я подумала: «Окей, мы умные, мы обойдем выделение памяти». Я убрала гигантскую матрицу и попыталась переписать состояние напрямую через тензорные оси вектора в Cirq. Памяти уходило всего 8 мегабайт, но тут подставил сам фреймворк: современные версии Cirq блокируют сырой target_tensor внутри симулятора. Код выдал AttributeError и отказался работать из-за конфликта API.

   3. Каскадная архитектура контролируемых гейтов (Победный финал!). На этом методе я и остановилась, потому что он полностью повторяет логику реального квантового железа! Вместо одного мега-оракула я разбила вычисление на цепочку маленьких контролируемых гейтов ControlledGroupShiftGate. Каждый кубит-скаляр по очереди управляет добавлением точки на кривой. Локальные матрицы стали крошечными — всего 64 ; 64, память упала до нуля, а скорость стала космической!

Зато теперь — зацените уровень! — я реализовала полную масштабируемость. Можно задавать абсолютно произвольную кривую, хоть реальный промышленный стандарт Биткоина secp256k1 (правда, чтобы сэмулировать её честно на 256 бит, нам всё равно понадобится реальный квантовый проц, но код к этому готов!). Можно крутить любые разрядности, любые координаты начальной точки G и открытого ключа Q, по которому магия квантовой интерференции чисто и без читов найдет закрытый ключ d.

И вишенка на торте: код написан настолько канонично, что, изменив всего одну строчку (переключив симулятор на аппаратный провайдер), эту программу можно в этот же миг отправить на исполнение на реальный квантовый компьютер Google Sycamore или новейший Willow! Физические кубиты в криостате будут танцевать строго по моим гейтам.

В общем, весь этот квест, формулы и разбор того, как мои квантовые пики 24 и 17 схлопнулись в правильный ответ, я описала в своем профиле на Гитхабе. Прямой ссылки давать не буду, правила кибергигиены все дела, но вы легко можете найти меня по моему олдскульному хэндлу: ST3PH-X (через дефис, ага, нижнее подчеркивание Гитхаб не пропустил, но так даже винтажнее!). Залетайте, там можно запустить мою квантовую станцию прямо в облаке в один клик!


Стефания
https://stephaniia-bubnova.web.app/


Рецензии

С 3 по 5 июля состоится Литературный фестиваль в Этномире. В программе – семинары известных поэтов и писателей, поэтический конкурс, посвященный Году единства народов России, книжная выставкая-ярмарка. Приглашаем принять участие →