Введение в анализ когнитивной сложности
В этом руководстве мы создадим комплексный рабочий процесс анализа когнитивной сложности с использованием complexipy. Мы начнём с измерения сложности непосредственно из необработанных строк кода, затем масштабируем тот же анализ на отдельные файлы и весь каталог проекта.
Установка необходимых библиотек
«`
!pip -q install complexipy pandas matplotlib
«`
«`
import os
import json
import textwrap
import subprocess
from pathlib import Path
import pandas as pd
import matplotlib.pyplot as plt
from complexipy import codecomplexity, filecomplexity
«`
Анализ сложности кода
«`
snippet = «»»
def score_orders(orders):
total = 0
for o in orders:
if o.get(«valid»):
if o.get(«priority»):
if o.get(«amount», 0) > 100:
total += 3
else:
total += 2
else:
if o.get(«amount», 0) > 100:
total += 2
else:
total += 1
else:
total -= 1
return total
«»»
res = code_complexity(snippet)
print(«=== Code string complexity ===»)
print(«Overall complexity:», res.complexity)
print(«Functions:»)
for f in res.functions:
print(f» — {f.name}: {f.complexity} (lines {f.linestart}-{f.lineend})»)
«`
Создание проекта
«`
root = Path(«toy_project»)
src = root / «src»
tests = root / «tests»
src.mkdir(parents=True, exist_ok=True)
tests.mkdir(parents=True, exist_ok=True)
(src / «init.py»).write_text(«»)
(tests / «init.py»).write_text(«»)
(src / «simple.py»).write_text(textwrap.dedent(«»»
def add(a, b):
return a + b
def safe_div(a, b):
if b == 0:
return None
return a / b
«»»).strip() + «\n»)
«`
Визуализация распределения сложности
«`
if «complexity» in fn_df.columns:
fndf[«complexity»] = pd.tonumeric(fn_df[«complexity»], errors=»coerce»)
plt.figure()
fn_df[«complexity»].dropna().plot(kind=»hist», bins=20)
plt.title(«Cognitive Complexity Distribution (functions)»)
plt.xlabel(«complexity»)
plt.ylabel(«count»)
plt.show()
«`
Waymo представляет модель Waymo World
Waymo представляет модель Waymo World — передовую генеративную модель, которая управляет симуляцией вождения следующего поколения. Система построена на основе Genie 3, общей модели мира Google DeepMind, и адаптирует её для создания фотореалистичных, управляемых многосенсорных сцен вождения в масштабе.
Waymo уже сообщает о почти 200 миллионах полностью автономных миль на дорогах общего пользования. За кулисами драйвер обучается и оценивается на миллиардах дополнительных миль в виртуальных мирах. Модель Waymo World теперь является основным механизмом генерации этих миров с явной целью выявления редких, критически важных для безопасности «длиннохвостых» событий, которые почти невозможно увидеть достаточно часто в реальности.
От Genie 3 к модели мира для вождения
Genie 3 — это модель мира общего назначения, которая превращает текстовые подсказки в интерактивные среды, которыми можно управлять в режиме реального времени со скоростью примерно 24 кадра в секунду, обычно с разрешением 720p. Она изучает динамику сцен непосредственно из больших видеокорпусов и поддерживает плавное управление с помощью пользовательских вводов.
Waymo использует Genie 3 в качестве основы и дополнительно обучает её для работы в сфере вождения. Модель Waymo World сохраняет способность Genie 3 генерировать согласованные трёхмерные миры, но согласовывает выходные данные с набором датчиков Waymo и эксплуатационными ограничениями.
Появляющиеся мультимодальные знания о мире
Большинство симуляторов автономных транспортных средств обучаются только на данных дорожных парковках. Это ограничивает их погодными условиями, инфраструктурой и моделями трафика, с которыми фактически столкнулась автопарковка. Waymo вместо этого использует предварительное обучение Genie 3 на чрезвычайно большом и разнообразном наборе видео, чтобы импортировать обширные «знания о мире» в симулятор.
Waymo затем применяет специализированное пост-обучение для переноса этих знаний из 2D-видео в 3D-выходы лидара, адаптированные к его оборудованию. Камеры обеспечивают богатое появление и освещение. Лидар вносит точную геометрию и глубину. Модель Waymo World совместно генерирует эти модальности, поэтому в смоделированной сцене присутствуют как RGB-потоки, так и реалистичные 4D-облака точек.
Три оси управляемости
Ключевой целью проектирования является надёжная управляемость симуляции. Модель Waymo World предоставляет три основных механизма управления: управление действиями вождения, управление компоновкой сцены и языковое управление.
Управление действиями вождения: симулятор реагирует на определённые входные сигналы вождения, позволяя проводить «что, если» контрфактических утверждений поверх записанных журналов. Разработчики могут задать вопрос, мог ли водитель Waymo вести себя более уверенно вместо того, чтобы уступить дорогу в прошлой сцене, а затем смоделировать это альтернативное поведение.
Управление компоновкой сцены: модель может быть настроена на изменённую геометрию дороги, состояния дорожных сигналов и других участников дорожного движения. Waymo может вставлять или перемещать транспортные средства и пешеходов или применять мутации к дорожным схемам для синтеза целевых сценариев взаимодействия.
Языковое управление: естественные языковые подсказки действуют как гибкий, высокоуровневый интерфейс для редактирования времени суток, погоды или даже для генерации полностью синтетических сцен.
Этот троичный контроль близок к структурированному API: числовые управляющие воздействия, структурные правки и семантические текстовые подсказки управляют одной и той же базовой моделью мира.
Превращение обычных видео в мультимодальные симуляции
Модель Waymo World может преобразовывать обычные мобильные записи или записи с видеорегистратора в мультимодальные симуляции, которые показывают, как водитель Waymo воспринял бы ту же сцену.
Waymo демонстрирует примеры из живописных поездок по Норвегии, национальному парку Арчес и Долине Смерти. Учитывая только видео, модель реконструирует симуляцию с согласованными изображениями с камеры и выходом лидара. Это создаёт сценарии с высоким уровнем реализма и достоверности, поскольку сгенерированный мир привязан к фактическим кадрам, при этом всё ещё контролируется с помощью вышеупомянутых трёх механизмов.
Масштабируемый вывод и длинные ролики
Маневры на длинных горизонтах, такие как прохождение узкой полосы с встречным движением или навигация по густонаселённым районам, требуют множества шагов симуляции. Наивные генеративные модели страдают от дрейфа качества и высоких вычислительных затрат при длительных выводах.
Команда Waymo сообщает об эффективном варианте модели мира Waymo World, который поддерживает длинные последовательности со значительным сокращением вычислений при сохранении реализма. Они показывают 4-кратное воспроизведение расширенных сцен, таких как навигация по автостраде вокруг стоящего в полосе препятствия, оживлённое вождение по району, подъём по крутым улицам вокруг мотоциклистов и выполнение разворота на внедорожнике.
Для обучения и регрессионного тестирования это сокращает бюджет аппаратных средств на сценарий и делает большие тестовые наборы более управляемыми.
Ключевые выводы
- Модель мира на основе Genie 3: модель мира Waymo адаптирует модель Google DeepMind Genie 3 в модель вождения, которая генерирует фотореалистичные, интерактивные, мультисенсорные трёхмерные среды для симуляции вождения.
- Мультисенсорные, 4D-выходы, согласованные с драйвером Waymo: симулятор совместно создаёт временно согласованные изображения с камеры и облака точек лидара, согласованные с реальной стопкой датчиков Waymo, чтобы системы автономного управления могли потреблять симуляцию, как реальные журналы.
- Появляющееся освещение редких и «длиннохвостых» сценариев: используя крупномасштабное предварительное обучение на видео, модель может синтезировать редкие условия и объекты, такие как снег на необычных дорогах, наводнения, пожары и животные, такие как слоны или львы, которых автопарк никогда напрямую не наблюдал.
- Трёхкоординатная управляемость для целенаправленного стресс-тестирования: управление действиями вождения, управление компоновкой сцены и языковое управление позволяют разработчикам проводить контрфактические утверждения, редактировать дорожную геометрию и участников дорожного движения, а также мутировать время суток или погоду с помощью текстовых подсказок в одной и той же генеративной среде.
- Эффективная симуляция на длинных горизонтах и видеозакреплённая симуляция: оптимизированный вариант поддерживает длинные последовательности при сокращении вычислительных затрат, а система также может преобразовывать обычные видеозаписи с видеорегистратора или мобильные видео в управляемые мультимодальные симуляции, расширяя пул реалистичных сценариев.
1. Какие инструменты и библиотеки используются для анализа когнитивной сложности в проектах на Python?
В статье упоминается использование библиотеки `complexipy` для анализа когнитивной сложности кода на Python. Также используются `pandas` для обработки данных и `matplotlib` для визуализации.
2. Какие шаги включает в себя комплексный рабочий процесс анализа когнитивной сложности с использованием `complexipy`?
Процесс начинается с измерения сложности непосредственно из необработанных строк кода, затем масштабируется на отдельные файлы и весь каталог проекта. В статье приводится пример анализа сложности кода с использованием `code_complexity` из `complexipy`.
3. Какие механизмы управления предоставляет модель Waymo World для симуляции вождения?
Модель Waymo World предоставляет три основных механизма управления: управление действиями вождения, управление компоновкой сцены и языковое управление. Управление действиями вождения позволяет проводить «что, если» контрфактических утверждений поверх записанных журналов. Управление компоновкой сцены позволяет настраивать модель на изменённую геометрию дороги, состояния дорожных сигналов и других участников дорожного движения. Языковое управление позволяет использовать естественные языковые подсказки как гибкий, высокоуровневый интерфейс для редактирования времени суток, погоды или даже для генерации полностью синтетических сцен.
4. Какие преимущества предоставляет модель Waymo World для обучения и регрессионного тестирования систем автономного управления?
Модель Waymo World позволяет создавать фотореалистичные, управляемые многосенсорные сцены вождения в масштабе. Это позволяет разработчикам проводить стресс-тестирование систем автономного управления в различных сценариях, включая редкие и «длиннохвостые» события. Кроме того, модель поддерживает длинные последовательности при сокращении вычислительных затрат, что делает её эффективной для обучения и регрессионного тестирования.
5. Какие ключевые выводы можно сделать из статьи о модели Waymo World?
Ключевые выводы включают:
* Модель мира Waymo адаптирует модель Google DeepMind Genie 3 в модель вождения, которая генерирует фотореалистичные, интерактивные, мультисенсорные трёхмерные среды для симуляции вождения.
* Симулятор совместно создаёт временно согласованные изображения с камеры и облака точек лидара, согласованные с реальной стопкой датчиков Waymo.
* Используя крупномасштабное предварительное обучение на видео, модель может синтезировать редкие условия и объекты.
* Управление действиями вождения, управление компоновкой сцены и языковое управление позволяют разработчикам проводить контрфактические утверждения, редактировать дорожную геометрию и участников дорожного движения, а также мутировать время суток или погоду с помощью текстовых подсказок в одной и той же генеративной среде.
* Оптимизированный вариант модели поддерживает длинные последовательности при сокращении вычислительных затрат, а система также может преобразовывать обычные видеозаписи с видеорегистратора или мобильные видео в управляемые мультимодальные симуляции.