#00 Квантові обчислення і дизайн протеїнів, D-Wave

Сьогодні закінчується конференція Practical Quantum Computing q2b.qcware.com у м. Санта-Клара. Приємно усвідомлювати, що застосування квантових обчислювальних машин вже дає практичні результати. Ще приємніше знати, що маєш відношення до демо, які там презентувалися.

У прикладі нижче я спробував описати принцип, використаний в дослідженні для демонстраційного «Orquestra quantum-enabled workflow» проекту.

Наукова проблема

Проблема дизайну білків (протеїнів) із заданими властивостями є цікавою як з точки зору біохімії так і з суто фінансових міркувань. Біохіміки зацікавлені в отриманні ланцюжків амінокислот із наперед заданими властивостями. Це може бути наприклад вакцина, або каталізатор для хімічної промисловості. Фінансові кола зацікавлені в зменшенні бюджету таких досліжень і часу виходу на ринок. Наразі час розробки 1 протеїну може сягати 1-2 роки із бюджетом ~$10 000 000.

Основною перепоною є не кількість базових амінокислот, їх лише 20 (за альтернативною класифікацією 26). Всі вони можуть бути синтезовані в лабораторії. Амінокислоти добре вивчені на даний момент і їхні властивості є передбачуваними, https://uk.wikipedia.org/wiki/Амінокислоти. Проблема виникає через наявність «ротамерів» практично в кожної амінокислоти. Ротамер — це варіант амінокислоти із різними кутами повороту її складових частин — гідроксильних груп, кислотних залишків, окремих атомів.

Наприклад з точки зору ланцюжка амінокислот, білок людини «Peroxisome proliferator-activated receptor gamma», 3HON завжди має FASTA послідовність GSHMAEISSDIDQLNPESA... (дані про білок з www.rcsb.org/structure/3HO0), тобто Гліцин-Серин-Гистидин-Метіонін-..., кожна латинська літера в ланцюжку позначає амінокислоту.

Квантові обчислювачі D-Wave

Канадська компанія D-Wave Systems відома тим, що розробляє апаратні засоби для проведення квантових обчислень і програмне SDK для використання на своїх квантових машинах. Залишу обабіч спекуляції і holy war навколо академічності реалізації сплутаних станів в квантових комп’ютерах D-Wave. Зазначу лише, що список їхніх клієнтів включає Google, NASA, Lockheed.

На апаратному рівні квантові обчислення в системах D-Wave реалізовані через низько-температурні (<0.015 К) елементи — «кубіти», з’язані в мережу відповідно до архітектури конкретного пристрою. Обчислення відбуваються за принципом «квантового відпалювання», це схоже до алгоритму імітації відпалу (Simulated Annealing). Алгоритм є адаптацією алгоритму Метрополіс—Гастінгс, методу Монте-Карло для генерування зразкових станів термодинамічної системи, опублікованого у 1953 році. Температура елементів і з’язків встановлюється відповідно до початкових параметрів рівняння енергії системи. І впродовж певного часу відбувається «відпал», нагрівання і охолодження окремих кубітів з метою наближення системи до рівноважного стану. В силу законів фізики система прямує до станів із мінімальною «ground energy» енергією. Для задачі із класу дискретної чи комбінаторної оптимізації, яка виконуєтсья на квантовому комп’ютері, цей стан із мінімальною енергією буде в загальному близьким до оптимуму.

Свої процесори D-Wave Systems називає QPU — Quantum Processing Units. На противагу універсальним комп’ютерам ці системи є вузькопрофільними і ефективні лише в класі задач оптимізації. Це може бути наприклад, проблема пошуку мінімума енергії молекули, проблема Max-Cut, «задача комівояжера», оптимізація портфеля інвестицій dou.ua/forums/topic/34712 .

На сьогоднійшній день найпотужніший QPU від D-Wave містить > 7000 кубітів із > 1 000 000 зв’язків. Квантовий чіп на основі топології Pegasus містить 15 коуплерів Джозефсона на кубіт. Вони працюють на основі тунельного ефекту в надпровідниках при температурі близькій до абсолютного нуля.

Варто зазначити, що в класі задач оптимізації, пошук наближеного глобального оптимуму більш доцільний, ніж пошук точного рішення. У випадку, коли ми працюємо із квантовим оператором енергії системи (Гамільтоніан), поле пошуку рішення є надзвичайно великим і експотенціально зростає із зростанням кількості параметрів. Існує приказка, що «Hilbert space is inda big place» — «Гільбертів простір це велике місце».

D-Wave Leap: 1 хвилина це багато

D-Wave Leap це онлайн середовище (Quantum Application Environment) для роботи із квантовими алгоритмами, cloud.dwavesys.com/leap. Реєстрація є відкритою і з безкоштовним аккаунтом користувач отримує 1 хвилину часу QPU, квантового процесора. Насправді для навчання і програм «Hello Quantum World» цього часу більше ніж достатньо. Можна безкоштовно отримати додатковий час, надіславши інформацію про свій Open Source проект.

IDE Leap об’єднує редактор коду, консоль і відладчик. Проект можна створити з нуля, або працювати із GitHub репозиторієм. Якщо репозиторій не ваш, він буде автоматично склонований. Наприклад, наступне посилання відкриє IDE із проектом квантового судоку: ide.dwavesys.io/...​com/dwave-examples/sudoku

Для нас більш цікаве використання D-Wave через API. Доступ до програмного інтерфейсу QPU здійснюється через токен, «API Token».

Представлення проблеми

Для запуску задачі на апаратній частині D-Wave Systems її спочатку потрібно представити у вигляді Ising Model (модель Ізінга) або QUBO (Quadratic unconstrained binary optimization). Модель задачі у цій формі може бути виражена через клас Binary Quadratic Model (BQM), який є частиною D-Wave SDK.

Наприклад є зарача розрахувати комбінацію амінокислот, яка буде валідною з біологічної точки зору і утворить стабільни білок із заданими властивостями. Ця наукова проблема називається дизайном згортання протеїна і є важливою з точки зору практичного застосування. У просторі можливих рішень людство наразі дослідило <1% валідних комбінацій амінокислот. Зазвичай із застосуванням сучасних лабораторій і обладнання дизайн одного протеїна займає ~1-2 роки із бюджетом $10-20M.

Приклад представлення проблеми дизайну протеїна у вигляді BQM:


import numpy as np
import dimod
from hybrid.reference.kerberos import KerberosSampler
from dwave.system import LeapHybridSampler
from dwave.system import DWaveSampler
energy_matrix = np.array(
    [[-100.0, 50000, 50000, -1121.0, 1122.0, 1123.0, -1124.0, 1131.0, 1132.0, -1133.0],    [0, 200.0, 50000, 1221.0, 1222.0, 1223.0, 1224.0, 1231.0, 1232.0, -1233.0],    [0, 0, -300.0, -1321.0, 1322.0, -1323.0, 1324.0, 1331.0, 1332.0, 1333.0],    [0, 0, 0, 400.0, 50000, 50000, 50000, -2131.0, 2132.0, -2133.0],
    [0, 0, 0, 0, -500.0, 50000, 50000, 2231.0, -2232.0, 2233.0],
    [0, 0, 0, 0, 0, 600.0, 50000, -2331.0, 2332.0, -2333.0],
    [0, 0, 0, 0, 0, 0, -700.0, 2431.0, -2432.0, 2433.0],
    [0, 0, 0, 0, 0, 0, 0, 800.0, 50000, 50000 ],
    [0, 0, 0, 0, 0, 0, 0, 0, -900.0, 50000 ],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 10.0 ]]
)
variables = [
    (0, 0), (0, 1), (0, 2),
    (1, 0), (1, 1), (1, 2), (1, 3),
    (2, 0), (2, 1), (2, 2)
]
bqm = dimod.BinaryQuadraticModel.from_numpy_matrix(energy_matrix, variables)

Трикутна матриця містить енергії взаємодії ротамерів амінокислот одна з одною, і власні енергії ротамерів (головна діагональ). Енергії для реальних задач біохімії отримують використовуючи пакети на кшталт Rosetta.

У наведеному прикладі білок має ланцюжок з 3 амінокислот, і для кожної з них маємо наступні конфігурації ротамерів:

  1. 3 ротамери — для амінокислоти № 1
  2. 4 ротамери — для амінокислоти № 2
  3. 3 ротамери — для амінокислоти № 3

Якщо дивитися на матрицю, то перші 3 клонки відносяться до амінокислоти № 1, наступні 4 колонки — до амінокислоти № 2 і т.д. Аналогічно справедливо і для стовпців.

Для запуску моделі потрібно вибрати оптимізатор і викликати метод «sample()». У прикладі нижче наведено використання декількох доступних класів оптимізаторів, «семплерів»:

solution = KerberosSampler().sample(bqm, max_iter=10, convergence=3)   
print("[KERBEROS] Energy:", solution.first.energy)
print("[KERBEROS] Solution:", solution.first)
hybrid = LeapHybridSampler().sample(bqm)
print("[HYBRID] Energy:", hybrid.first.energy)
print("[HYBRID] Solution:", hybrid.first)
dwave = DWaveSampler().sample(bqm)
print("[DWAVE] Energy:", dwave.first.energy)
print("[DWAVE] Solution:", dwave.first)

D-Wave надає докладну документацію по SDK, доступну за посиланням: docs.ocean.dwavesys.com/...​e/reference/samplers.html

Семплер приймає задачу у форматі двійкової квадратичної моделі (BQM) або дискретної квадратичної моделі (DQM) і повертає результат пошуку із поля можливих рішень. Оптимізатор зазвичай намагається знайти мінімальні значення, але також може робити вибірку з розподілу, визначеного науковою проблемою.

На десерт

Наведена в прикладі наукова задача дизайну протеїну є лише однією із корисних застосувань квантових комп’ютерів. Ряд компаній, не лише D-Wave, а й IBM, Intel, Google, Samsung, Microsoft, Quantum Circuits, Rigetti Quantum Computing, NIST, Imec, Rikken Research працюють в цій галузі як постачальники апаратного забезпечення. Для виконання задач можна скористатися SDK від постачальника, веб-середовищем або системою управління апаратно-програмним стеком.

Репозиторій із кодом прикладу: github.com/vsergeyev/simanneal

Для запуску проекту у IDE: ide.dwavesys.io/...​b.com/vsergeyev/simanneal

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Могу порекомендовать «Разработка с использованием квантовых компьютеров.», Силва В. Это 2020, очень доступно, взял в подарок как-то, прочитал, подарил, попросил вот недавно на пару дней — опять перечитываю. Там в сносках хорошие референсы (правда 99% на английские материалы).

Алексей Китаев — можно почитать, послушать или посмотреть. Еще есть книга «Классические и квантовые вычисления.», 1999. Не могу дать отзыв, еще не читал.

Из легкого чтива — Ричард Фейнман, «КЭД — странная теория света и вещества.», 1988. Есть перевод лекций Фейнмана на YouTube, весело и с массой шуток. Хорошо заходит после работы.
Очень позитивная книга «Вы, конечно, шутите, мистер Фейнман!», рекомендую в бумажном варианте.

Китаев и в самом деле очень хорош! Он вместе с Шенем написали хорошее вступление как в классические вычисления, так и в квантовые. Правда, тут, к сожалению, есть 2 момента:

(а) книга все же 1999-го года, а потому в некоторых местах она немного устарела. Из того что я помню, так это утверждение, что мы не знаем, является ли простой задачей определение числа на простоту (да, является, но это было обнаружено в ранних 2000-х). Также они гадали, есть ли задачи, в которых случайность дает вычислительную мощность. Да, такие задачи есть. Особенно в интерактивных доказательствах. Вот этот момент меня очень удивил, ведь это доказательство существовало уже то ли в конце 80-х, то ли в первой половине 90-х. Существуют ли такие задачи в неинтерактивных режимах — вот тут да, вопрос еще дискуссионный.

(б) книга хотя и дает хорошее вступление, она рассчитана на людей, которые владеют некоторым уровнем теоретических вычислительных наук. Поэтому человеку со стороны, скорее всего, будет очень тяжело через нее пробираться.

Дурне питання: нащо для демок використовувати квантовий комп’ютер, якщо можна тупо підняти емулятор?

А що до протеїнів — то результат можу передбачити заздалегідь: буде як із аналоговими даними та цифровими. Аналогові мають безкінечно велику точність, що обмежена лише ймовірностями похибки. А цифрові — дозволяють ціною аналогової надлишковості створити захист від впливу ентропії, і через це виявилися більш цінними для зберігання та обробки інформації. І хоча для передачі використовується аналогове середовище, на кожному проміжковому етапі дані намагаються якщо не оцифрувати, то хоча б очистити від помилок, які не перевищують граничні.

Так і з квантовими обчисленнями: можна довго і муторно бодатися над стабільними протеїнами, але з′явиться поряд молекула, що може утворити дисульфідний місточок — і скажи «пока-пока» вашим бюджетам.

Який шлях оптиміазації: шукати вже існуючі процеси дешевого перетворення протеїнів, і лише ними обмежити пошук. Самі протеїни при цьому можуть бути не дуже стабільними, важливо лише щоб був інструмент їхньої генерації. Це еволюційний шлях. Так, на ньому можна прогавити революцію. Але зі значно більшою ймовірністю, аніж на гамільтоніанах, отримати щось, що дасть грошеняток. І звісно ж це запатентувати. Наприклад, відшукати засіб зберегти оболонку дріжжів від спирту, який вони виробляють. Це дозволить готувати паливо напряму з рослинної сировини, без енергоємних та екологічно шкідливих процесів. І це не про протеїни, але про стероїди. Які значно дрібніші. І їх легше створити, бо є механізми.

Питання хороше. Відповідь не менш дурна: демка проводилася для людей з бізнесу. Ніщо так не радує око як картинка на моніторі і графік прибутків оптимізації направлений уверх.

Якщо цікаво, ось хороші приклади практичних застосувань в статті від Гарвард Бізнес Ревью: hbr.org/...​ting-for-business-leaders (стаття на ДОУ про оптимізацію портфеля інвестицій dou.ua/forums/topic/34712 має стосунок до розділу із фінансовою групою BBVA у статті Гарвард Бізнес Ревью)

Відповідь не менш дурна: демка проводилася для людей з бізнесу.

Лекция для колхозников. Лектор:
— Товарищи колхозники. Перед вами череп Александра Македонского,
где ему 7 лет. А вот этот череп, где ему 25 лет. И, наконец,
череп умершего Александра Македонского. Вопросы есть?
Есть:
— Скажите, пожалуйста, как может быть у одного человека три черепа?
— А вы, простите, кто? — спрашивает лектор.
— Дачник.
— Вот и идите на хер. Лекция для колхозников.

К сожалению, использовать QUBO для моделирования третичной структуры белка — это как-то уж очень по-наивному. Главное замечание тут — что такое энергия взаимодействия ротамеров? Почему она константная?

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

К сожалению, эта модель не имеет никакого практического интереса. Да и с теоретической точки зрения как-то выглядит все по-наивному, как я уже написал.

Спасибо за комментарий.

Пример очень упрощен, если интересна тема связанная с D-Wave и моделированием белков — мы брали исходной точкой протокол `quantum_annealing` из пакета Rosetta и использовали InteractionGraphSummaryMetric для построения матриц тестовых энергий — www.rosettacommons.org/...​ractionGraphSummaryMetric

Функция расчета — REF2015, foldit.fandom.com/wiki/REF2015, используется не только в Rosetta, а также в игре Foldit. Можно поиграть и заодно помочь комьюнити с решением глобальных проблем человечества или поиском вакцины от Covid19.

Так вот, REF2015 принимает во внимание ряд описанных вами энергий и взаимодействий атомов и молекул. На сайте Стэнфорда есть детальная спецификация: daslab.stanford.edu/...​_pdf/2017_Alford_JCTC.pdf

Мотивация к написанию примера: перевести немного материала, связанного с моей текущей работой и квантовыми машинами, на Украинский язык.

То скільки часу (та оперативи?) пішло на пошук мінімуму енергії на квантовому комп’ютері, і скільки — на звичайному?

Привіт, по часу — пів року, команда із 5 чоловік.

По ресурсам — класичні обчислення: K8s кластер на AWS, 24 m5.4xlarge / 64; квантові обчислення — D-Wave Advantage, 5000 кубітів. Але тут є нюанс — підготовка графу з енергіями і попередня обробка + перетворення в матричну форму і розрахунок Гамільтоніана, — це робиться на класичному залізі.

По бенчмаркам: SA, QMC алгоритми на класичному залізі програють BQM+D-Wave solver ~100 000 000 разів. Ми ще робили бенчмарк із генетичними алгоритмами і QIO на Azure Quantum. Цікавий конкурс проводили Fujitsu — Quantum Computing Challenge, однак ми на нього не встигли. Вони декларують 1 мільйон емульованих кубітів, організованих у матрицю. Це дуже зручно для задач комбінаторної оптимізації, можна відобразити матрицю (лінійна алгебра) 1:1 у кубіти.

Підписатись на коментарі