TL;DR: Путь от размышлений о телепортации под впечатлением от рассказа Стивена Кинга до создания Python-библиотеки для управления сканирующим туннельным микроскопом. В комплекте: 41 тест, полноценный симулятор вместо оборудования за полмиллиона долларов и замена громоздкого LabVIEW на изящный asyncio. Выполните
pip install amrl-transport— и обучайте RL-агентов манипуляциям с атомами прямо на домашнем ПК.
Истоки идеи
У Стивена Кинга есть захватывающий рассказ «Долгий Джонт» (The Jaunt), где технология телепортации основана на мгновенной дезинтеграции объекта в начальной точке и его последующей сборке в пункте назначения.
Переслушивая это произведение в озвучке Влада Коппа («Модель для сборки»), я задался вопросом: насколько современная наука близка к подобным концепциям? Речь не о перемещении человека, а о базовой возможности разобрать структуру на атомы и воссоздать её заново.
Выяснилось, что мы подошли к этому вплотную, однако программный инструментарий исследователей безнадежно застрял в технологическом стеке тридцатилетней давности.
Атомная инженерия с помощью СТМ
Еще в 1989 году инженеры IBM продемонстрировали мощь сканирующего туннельного микроскопа (СТМ), выложив логотип компании из отдельных атомов ксенона. За прошедшие 36 лет технология значительно эволюционировала. Современный СТМ позволяет:
-
Визуализировать поверхность с атомарной точностью;
-
Осуществлять латеральное манипулирование (перемещение атомов вдоль поверхности);
-
Реализовывать вертикальное манипулирование (удаление и установку атомов);
-
Инициировать химические реакции на острие иглы (tip-induced chemistry).
Весь процесс происходит поатомно, с использованием зонда толщиной в один атом. Основной камень преткновения — катастрофически низкая скорость. Перемещение одного элемента занимает около 10 секунд. Создание наноструктуры из сотни атомов превращается в многочасовую рутину для ученого. О масштабировании до уровня «Джонта» при таком подходе не может быть и речи.
RL-агенты: ИИ в роли нано-манипулятора
В период с 2018 по 2020 годы две независимые исследовательские группы доказали, что нейросети способны автоматизировать этот процесс:
DeepSPM (Университет Монаша, 2020) — агент на базе глубокого обучения, который берет на себя управление СТМ: сканирование, анализ поверхности и очистку зонда. Результаты опубликованы в Nature Communications.
SINGROUP (Университет Аалто, 2019-2025) — использование алгоритма Soft Actor-Critic (SAC) для обучения агента точному позиционированию атомов в заданных координатах непосредственно на реальном оборудовании.
Идея перспективная, но реализация столкнулась с инфраструктурным барьером.
Проблема: зоопарк закрытого ПО и фрагментация
DeepSPM опирается на LabVIEW-сервер, взаимодействующий с контроллером Createc через COM-интерфейс. Это привязывает исследователей к Windows и требует ежегодных лицензионных отчислений в размере около $3500.
Команда SINGROUP разработала RealExpEnv — надстройку над тем же интерфейсом Createc, что опять же ограничивает выбор оборудования конкретным брендом и ОС.
Если ваша лаборатория использует контроллер Nanonis, вам придется переписывать архитектуру с нуля. Отсутствие симуляторов делает разработку невозможной без доступа к реальному прибору, а параллельный запуск экспериментов на нескольких установках превращается в логистический кошмар.
Эта ситуация напомнила мне повседневные задачи в бэкенд-разработке, где вместо физических параметров мы оперируем бизнес-логикой, но сталкиваемся с тем же отсутствием абстракций.
Представленное решение: amrl-transport
Проект amrl-transport объединяет три ключевых компонента:
1. STMTransport — универсальная абстракция
Интерфейс, включающий 12 базовых методов. Все параметры приведены к стандартным физическим величинам: нанометрам, милливольтам и пикоамперам.
from amrl_transport.transport.protocol import STMTransport
class STMTransport(ABC):
def connect(self) -> None: ...
def scan_image(self, size_nm, offset_nm, pixel, bias_mv) -> ScanResult: ...
def lateral_manipulation(self, x_start_nm, y_start_nm,
x_end_nm, y_end_nm, ...) -> ManipResult: ...
def tip_shape(self, x_nm, y_nm, ...) -> bool: ...
# ... и другие методы реализации
Благодаря этому RL-агенту становится неважно, управляет он реальным Createc, Nanonis или виртуальной средой.
2. Физический симулятор
Полноценный бэкенд, имитирующий работу микроскопа:
-
Генерация поверхностей с «атомами» на основе распределения Гаусса — визуально неотличимо от реальных снимков, включая настраиваемый уровень шума;
-
Моделирование латеральных манипуляций с учетом пороговых значений тока;
-
Эмуляция износа и восстановления геометрии острия зонда (tip shaping).
from amrl_transport.transport import SimulatorTransport
import numpy as np
with SimulatorTransport(seed=42) as stm:
img = stm.scan_image(
size_nm=5.0,
offset_nm=np.array([0.0, 0.0]),
pixel=128,
bias_mv=100,
)
# img.img_forward возвращает привычный numpy array 128x128
Теперь обучать модели можно на обычном ноутбуке без вакуумных камер и криогенных установок.
3. DeepSPM-сервер: прощай, LabVIEW
Наиболее значимая часть работы. Я провел реверс-инжиниринг протокола DeepSPM и реализовал полноценную замену LabVIEW-серверу на базе Python asyncio.
Протокол обмена данными включает 6 основных команд:
|
Команда |
Сигнатура |
Назначение |
|---|---|---|
|
|
|
Сканирование заданного участка |
|
|
|
Модификация зонда |
|
|
|
Процедура очистки иглы |
|
|
|
Чтение параметров системы |
|
|
|
Автоматический подвод зонда |
|
|
|
Смещение рабочей области |
Вместо проприетарного софта теперь можно использовать кроссплатформенное решение с открытым исходным кодом.
# Запуск сервера на Python
python -m amrl_transport.deepspm --transport simulator
# Код DeepSPM работает с ним прозрачно через localhost:5556
4. Распределенная очередь задач
Интеграция с RabbitMQ и Redis позволяет эффективно масштабировать работу лаборатории. Можно отправить задачу на сборку сложной наноструктуры, и свободный воркер (микроскоп) возьмет её в работу.
# Запуск воркера для конкретной установки
python -m amrl_transport.cli worker --transport simulator --worker-id sim-01
# Постановка задачи на манипуляцию
python -m amrl_transport.cli submit --atoms '[[0,0],[1,0],[0.5,0.866]]'
TransportEnv: бесшовная интеграция
Для сообщества SINGROUP я подготовил TransportEnv — среду, полностью совместимую с Gym API, которая служит прямой заменой RealExpEnv:
from amrl_transport.transport import SimulatorTransport
from amrl_transport.integration import TransportEnv
stm = SimulatorTransport(seed=42)
stm.connect()
env = TransportEnv(
transport=stm,
step_nm=0.2,
goal_nm=2.0,
# ... параметры среды
)
# Стандартный цикл обучения RL-агента
state, info = env.reset()
next_state, reward, done, info = env.step(action)
Это открывает путь к концепции Sim-to-Real: обучаем модель на быстром симуляторе и переносим её на реальное оборудование, просто сменив транспортный слой.
Гарантия качества и архитектура
Проект покрыт 41 тестом, которые проверяют всё: от контрактов ABC и физики симулятора до бинарных протоколов и асинхронного сервера. Для запуска тестов не требуется никакого физического оборудования.
$ pytest tests/ -v
...
41 passed in 2.34s
Архитектура построена на принципах модульности, разделяя транспортный уровень, сетевые протоколы, систему очередей и интеграционные слои для RL-фреймворков.
Дальнейшие шаги
Как разработчик бэкенда, я подхожу к этой области с позиции инфраструктурного инженера. Моя цель — предоставить ученым качественные инструменты:
-
Коллаборация с DeepSPM: планирую предложить авторам из Университета Монаша переход на Python-сервер для устранения зависимости от LabVIEW.
-
Сотрудничество с SINGROUP: интеграция уровня абстракции транспорта в их актуальные разработки.
-
Развитие экосистемы: надеюсь, что специалисты, работающие с Nanonis или другими контроллерами, воспользуются библиотекой для создания собственных адаптеров.
Если этот инструмент поможет хотя бы одной лаборатории ускорить исследования в области нанотехнологий, я буду считать задачу выполненной.
Установка и ресурсы
pip install amrl-transport
-
Исходный код: github.com/formeo/amrl-transport
-
Репозиторий DeepSPM: github.com/abred/DeepSPM
-
Проект SINGROUP AMRL: github.com/SINGROUP/Atom_manipulation_with_RL
В рамках цикла audiotools.dev мы продолжаем исследовать сложные инженерные задачи. Иногда полезно переключиться с обработки звука на управление материей на уровне атомов.


