Пошаговое руководство по курсу
Для кого: инженеры, которым нужны физически-вдохновлённые примитивы — консенсус, маршрутизация, выборка, риск, термодинамика — в виде готовых к вызову оракулов AIMarket. Язык лаб:
COURSE_LANG=en|ru|es|fr|zh· строки UI вi18n/· этот гайд на русском. English · Español · Français · 中文
Сверка с текущей экосистемой
Перед живым вызовом используйте поиск Hub и проверьте идентификатор возможности, источник и заявленную цену. Сохраните точный вход воспроизводимой лабораторной. Разделяйте результат математической проверки алгоритма и подписанную квитанцию, если её выдал живой вызов. Пустой поиск означает, что по этому запросу на момент проверки не нашлось совпадений.
Зачем этот курс
Большинство «AI»-курсов заканчиваются на промптах. Здесь же учат детерминированным, физически-вдохновлённым вычислениям, которые можно проверить, сертифицировать и тарифицировать — примитивам, что лежат под агентом, а не над ним. Каждый модуль оборачивает реальный оракул AIMarket:
- Murmuration — робастный роевой консенсус, устойчивый к выбросам.
- Colony — маршруты TSP с допустимым сертификатом зазора оптимальности.
- Turing — синий шум для равномерных, но нерегулярных множеств точек.
- Ablation — системный риск как каскад в самоорганизованно-критической песочной модели.
- Landauer — термодинамический порог (kT·ln2) энергозатрат необратимых вычислений.
Каждая лаба воспроизводима (фиксированный seed, без LLM по умолчанию) и печатает блок Trace, который можно изучить. К концу вы сможете вызвать любой из пяти оракулов, прочитать вывод и получить сертификат курса.
Содержание
- Выбор трека
- Установка (10 минут)
- M1 — Консенсус Murmuration
- M2 — Сертификат TSP для Colony
- M3 — Синий шум Turing
- M4 — Каскадный риск Ablation
- M5 — Термодинамический аудит Landauer (продвинутый)
- Трейс в каждой лабе
- Упражнения и сертификат
- Мост: от курса к AIMarket
- Чеклист самопроверки
- Типичные проблемы
Выбор трека
| Трек | Модули | Время | NumPy | LLM |
|---|---|---|---|---|
| Базовый | M1 → M2 → M3 → M4 | ~2 ч | Да ([oracles]) |
Нет |
| Продвинутый | Базовый + M5 | +45 мин | Да | Нет |
Все лабы детерминированы — в курсе нет LLM. «Интеллект» — в физике: робастная статистика, комбинаторные границы, критичность, термодинамика. После каждой лабы читайте раздел Трейс — каждый скрипт печатает блок Trace.
Установка (10 минут)
Шаг 1 — Клон и установка
git clone https://github.com/alexar76/aimarket-courses.git
cd aimarket-courses/physics-inspired-computing-course
pip install -e ".[oracles,dev]"
Extra [oracles] тянет NumPy (единственная зависимость времени выполнения); [dev] добавляет pytest. Требуется Python 3.11+.
Внутри монорепозитория aicom? Колёса оракулов можно не ставить — лабы находят
murmuration,colony,turing,ablationиlandauerнапрямую изoracles/oracles/*черезcourselib/oracle_paths.py. Вне монорепозитория именно[oracles]заставляет импорты работать.
Шаг 2 — Тесты
pytest -q
Ожидается: все тесты проходят (паритет i18n по en/ru/es/fr/zh, мосты к оракулам, сертификат, упражнения).
Шаг 3 — Язык интерфейса лаб (опционально)
export COURSE_LANG=ru # или es, по умолчанию en
python labs/lab01_murmuration_consensus.py
COURSE_LANG переключает печатаемые строки каждой лабы (заголовки, концепции, метки) через courselib/i18n.py. Числа, имена оракулов и виды событий трейса не меняются — локализуется только текст. Неизвестные значения откатываются к английскому и не роняют лабу.
Шаг 4 — Google Colab
- Откройте сайт курса → Open in Colab на любой лабе.
- Выполните setup-ячейку (clone +
pip install -e ".[oracles,dev]"). - При необходимости задайте
os.environ["COURSE_LANG"] = "ru"в setup-ячейке. - Запустите ячейку лабы.
M1 — Консенсус Murmuration
Концепция: робастный консенсус DeGroot и агрегация Tukey-biweight по зашумлённым оценкам агентов.
Лаба: labs/lab01_murmuration_consensus.py · Оракул: Murmuration · ~15 мин · трек: базовый
Шаги
- Прочитайте docstring в начале файла лабы (отрасли: роевой интеллект, робастная статистика).
- Запустите:
python labs/lab01_murmuration_consensus.py - Лаба подаёт шесть оценок — пять около
2.0плюс один дикий выброс50.0— и печатаетmedian,trimmed_mean,biweight, сошедшееся значениеconvergedи число итераций DeGroot, а в конце — блокTrace. - Заметьте:
biweight≈ 2.0, хотя обычное среднее было бы ~10 — выброс подавлен, а не усреднён. - Просмотрите
courselib/physics.py::murmuration_aggregateиmurmuration.consensus.aggregate.
Что это доказывает
Один плохой датчик (или вредоносный агент) не сдвигает консенсус. Оценка biweight занижает вес далёких точек, и рой сходится к истине, а не к шуму.
Самопроверка
- [ ] Объясняете, почему
biweight< среднего для этого входа - [ ] Понимаете, зачем лаба детерминирована (без LLM, фиксированные данные)
M2 — Сертификат TSP для Colony
Концепция: маршрут «ближайший сосед» + 2-opt с допустимой границей зазора оптимальности.
Лаба: labs/lab02_colony_tsp.py · Оракул: Colony · ~20 мин · нужен M1
Шаги
- Запустите:
python labs/lab02_colony_tsp.py - Лаба решает маршрут на 6 городов и печатает
tour(порядок обхода),length,lower_bound(доказуемый нижний предел оптимальной длины) иgapв процентах — насколько маршрут может быть хуже оптимума. - Прочитайте блок
Trace— событиеtspлогируетlengthиgap. - Ключевая идея: всегда
length ≥ lower_bound, поэтомуgap— это сертификат. Вы поставляете маршрут вместе с гарантией качества.
Что это доказывает
Чтобы действовать, точный оптимум не нужен — малый gap (скажем, < 5%) часто и есть достаточно хороший ответ с приложенным числом. Так эвристики становятся подотчётными.
Самопроверка
- [ ] По
gapговорите: «этот маршрут не более чем на X% хуже оптимума» - [ ] Понимаете, почему
lengthникогда не нижеlower_bound
M3 — Синий шум Turing
Концепция: выборка по лучшему кандидату (Mitchell) для равномерных, но нерегулярных множеств точек.
Лаба: labs/lab03_turing_bluenoise.py · Оракул: Turing · ~20 мин · нужен M1
Шаги
- Запустите:
python labs/lab03_turing_bluenoise.py - Лаба запрашивает 64 точки (
candidates=12,seed=2026) и печатаетcount,min_distance(минимальный зазор между любыми двумя точками),seedи егоseed_source, а такжеsampleиз 3 координат. - Сравните со случайным равномерным разбросом: синий шум максимизирует минимальное расстояние, поэтому нет ни сгустков, ни пустот.
- Перезапустите с другим
seed(правкой лабы) — раскладка меняется, ноmin_distanceостаётся высоким.
Что это доказывает
Синий шум превосходит наивную случайную выборку для Monte Carlo, дизеринга и процедурного размещения: равномерное покрытие без видимой структуры.
Самопроверка
- [ ] Объясняете, почему цель — высокий
min_distance - [ ] Видите, что
seedделает выборку воспроизводимой
M4 — Каскадный риск Ablation
Концепция: абелева песочная модель самоорганизованной критичности — степенное распределение размеров лавин и хвостовой риск.
Лаба: labs/lab04_ablation_cascade.py · Оракул: Ablation · ~20 мин · нужен M1
Шаги
- Запустите:
python labs/lab04_ablation_cascade.py - Лаба строит небольшой направленный граф подверженности (
demo_exposure_graph()— банки A→D плюс сток), сбрасывает 1200 зёрен и печатаетtau(степенной показатель распределения размеров лавин),max_avalanche(крупнейший наблюдённый каскад),cvar95(95% условный VaR — ожидаемый размер худших 5% каскадов) иtopple_total. - Прочитайте блок
Trace— событиеcascadeлогируетtauиmax_avalanche. - Интуиция: в критической системе малые возмущения иногда запускают общесистемные каскады.
tauиcvar95количественно описывают этот хвост.
Что это доказывает
Среднее поведение скрывает опасность. Тяжёлый хвост (управляемый tau) означает, что редкие, но огромные каскады доминируют в риске — это и есть режим отказа взаимосвязанных финансовых или инфраструктурных сетей.
Самопроверка
- [ ] Объясняете, почему средний размер лавины занижает риск
- [ ] Знаете, что измеряет
cvar95против простого среднего
M5 — Термодинамический аудит Landauer (продвинутый)
Концепция: энергетический порог стирания бита kT·ln2 на DAG операций.
Лаба: labs/lab05_landauer_audit.py · Оракул: Landauer · ~30 мин · трек: продвинутый
Шаги
- Запустите:
python labs/lab05_landauer_audit.py - Лаба проверяет небольшую необратимую схему (
demo_circuit_ops()— два входа, гейт AND, выход) приtemperature_k=300.0и печатаетirreversible_bits(биты, уничтоженные логикой),energy_floor_j(порог Ландауэра в джоулях, kT·ln2 на стёртый бит),efficiencyиcircuit_commitment— хеш, фиксирующий проверяемую схему. - Прочитайте блок
Trace— событиеlandauerлогируетbitsиfloor_j. - Физика: стирание одного бита при температуре T стоит не менее kT·ln2 джоулей. Гейт AND уничтожает информацию (два входа → один выход), поэтому его порог ненулевой.
Что это доказывает
Существует жёсткий, зависящий от температуры нижний предел энергии, которую любое необратимое вычисление обязано рассеять. Аудит превращает этот физический закон в число, привязываемое к схеме, а circuit_commitment делает аудит защищённым от подделки.
Самопроверка
- [ ] Называете порог kT·ln2 и смысл каждого члена
- [ ] Понимаете, почему у гейта AND
irreversible_bits ≥ 1
Трейс в каждой лабе
Концепция: каждая лаба логирует Trace, чтобы её поведение можно было изучить, а не принимать как магию.
Где: во всех пяти лабах · ~5 мин после каждой лабы
Каждый скрипт строит courselib.trace.Trace и вызывает trace.log(kind, **fields). Лаба печатает число записанных events; kind (consensus, tsp, bluenoise, cascade, landauer) указывает, какой физический примитив сработал, а поля фиксируют ключевые числа.
Шаги (после каждой лабы)
- Прокрутите к строке
trace/eventsв конце вывода. - Сопоставьте
kindи поля с только что прочитанным блоком результата. - Воспринимайте трейс как «лог юнит-теста» лабы — в production это становится чеками тарификации и записями аудита.
Самопроверка
- [ ] Сопоставляете каждое событие трейса с напечатанным результатом
- [ ] Видите трейс как мост от вывода лабы к проверяемому чеку
Упражнения и сертификат
После лаб запустите DIY-проверки:
python labs/run_exercises.py
Это прогоняет упражнения всех пяти модулей (m1–m5) и печатает ✓/✗ по каждому. Во время итераций запускайте по одному:
python labs/run_exercises.py --module m4
Каждое упражнение утверждает свойство, которому учит лаба — например, m1 проверяет, что biweight устойчив к выбросу, m2 — что length ≥ lower_bound, m4 — что tau > 0.5.
Когда все пять пройдены, получите сертификат:
python labs/run_exercises.py --certificate "Иван Петров" --lang ru
Создаётся certificate.html (используйте --lang en или --lang es для другой локали). Откройте его в браузере и Print → Save as PDF. ID сертификата — это хеш имени и даты, поэтому он стабилен и проверяем. Флаг --skip-check передавайте, только если нужен HTML без повторного прогона упражнений.
Мост: от курса к AIMarket
Пять оракулов, которые вы вызывали локально, — это те же пакеты, что live-обслуживаются в экосистеме AIMarket. Чтобы перейти от «я запустил лабу» к «я вызвал размещённый оракул»:
| Курс (локальная лаба) | AIMarket (размещённый оракул) |
|---|---|
M1 murmuration_aggregate |
Оракул Murmuration — capability консенсуса |
M2 colony_tsp |
Оракул Colony — маршрутизация + сертификат |
M3 turing_bluenoise |
Оракул Turing — capability выборки |
M4 ablation_cascade |
Оракул Ablation — capability системного риска |
M5 landauer_audit |
Оракул Landauer — термодинамический аудит |
Лаба Trace |
Чек invoke + provenance на хосте |
circuit_commitment (M5) и сертификат gap (M2) — это ровно тот проверяемый вывод, что позволяет покупателю доверять ответу оракула, не пересчитывая его.
Чеклист самопроверки
После базового трека вы должны уметь:
- [ ] Запускать lab01–lab04 локально и в Colab
- [ ] Объяснить робастный консенсус (M1) и почему выброс подавлен
- [ ] Читать сертификат
gapдля TSP (M2) как гарантию качества - [ ] Сказать, почему синий шум (M3) лучше равномерного случайного покрытия
- [ ] Описать, что
tau/cvar95говорят о каскадном риске (M4) - [ ] Прочитать блок
Traceи сопоставить каждое событие с результатом
После продвинутого трека добавьте:
- [ ] Запустить lab05 и сформулировать порог kT·ln2 словами
- [ ] Пройти все пять упражнений и получить сертификат
Типичные проблемы
| Проблема | Решение |
|---|---|
ModuleNotFoundError: courselib |
Запуск из корня репозитория; лабы добавляют родительскую папку в sys.path |
ImportError: Oracle package '…' not installed |
Выполните pip install -e ".[oracles]" или запускайте из монорепозитория aicom, где находится oracles/oracles/* |
ModuleNotFoundError: numpy |
Extra [oracles] ставит NumPy — повторите pip install -e ".[oracles,dev]" |
| Ошибка версии Python | Курсу нужен Python 3.11+ |
| Пустые / английские строки при другом языке | Задайте COURSE_LANG; проверьте ключ в i18n/ru.json / i18n/es.json |
| Падение паритета i18n в pytest | Добавьте недостающий ключ во все три файла i18n/en.json, ru.json, es.json |
| Сертификат не создаётся | Сначала должны пройти упражнения; запустите python labs/run_exercises.py или передайте --skip-check |
| Colab выполняет старый код | Перезапустите setup-ячейку; зафиксируйте ветку main |
Обновление сайта и ноутбуков
После правок лаб или i18n/:
python3 scripts/build_course_assets.py
Гайды в docs/ правятся вручную — сначала EN, затем зеркала RU/ES.