Русский
Русский
English
Статистика
Реклама

Обработка данных

Как АНБ и ЦРУ используют дата-центры и облака

23.12.2020 14:04:12 | Автор: admin

Дата-центр АНБ в Юте на картах Google Maps

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

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

Дата-центры




Главный дата-центр АНБ в штате Юта под кодовым названием Bumblehive (Шмель) введён в строй в сентябре 2013 г. Ориентировочная стоимость строительства на площади почти 10 га оценивается в $1,5 млрд.

Объём дискового хранилища Шмеля в 2013 году оценивали в 5 зеттабайт (510). Для сравнения, в 2020 году мировой объём IP-трафика оценивается примерно в 250 эксабайт в месяц (Statista), то есть примерно 3 зеттабайта в год. С подводных межконтинентальных кабелей АНБ уже в 2013 году снимало 2 петабайта в час, а сейчас гораздо больше.

Поэтому АНБ наверняка пришлось сделать апгрейд дисковых накопителей в последние годы, если они по-прежнему хотят сохранять копию всего мирового интернет-трафика.





На схеме показаны:

  • четыре помещения для серверов общей площадью 9290 м;
  • офис для технического и административного персонала;


  • генераторы резервного питания и баки с топливом, которого хватает на трое суток работы дата-центра;


    Запасы воды и топлива
  • резервуары с водой и насосы, пропускная способность 6,4 млн л в сутки;


  • холодильники и теплообменники, через которые проходит вода, всего около 60 тыс. тонн охлаждающего оборудования;
  • электрическая подстанция;
  • отдел охраны, где установлены центр системы видеонаблюдения, система обнаружения проникновения и другие подсистемы общей стоимостью $10 млн.

Площадь всех административных и технических зданий 83 613 м.

Другую техническую информацию по дата-центру Шмель см. здесь.

Место в Юте выбрано не случайно. Оказывается, крупнейшие американские ЦОД располагаются у 41-й параллели северной широты.



По стечению обстоятельств такой маршрут взяли для первой трансконтинентальной железной дороги, строительство которой завершилось в 1869 г. Вдоль неё непрерывная полоса отчуждения шириной 60 м, под которой сейчас оптические каналы связи.

Другие дата-центры АНБ не такие впечатляющие. Есть суперкомпьютер в Форт-Миде, где находится штаб-квартира. Он нужен для оперативной деятельности. Также в строю ЦОД в Сан-Антонио (Техас), криптологические центры в Джорджии стоимостью $286 млн и Сант-Антонио (Техас) стоимостью $300 млн, которые используются для взлома шифров.


Внутри куполов скрыты радиоантенны для прослушки спутниковой связи по программе шпионажа FORNSAT

Из документов Сноудена выяснилось, что у АНБ есть небольшой ЦОД даже в Великобритании. Дата-центр на станции Menwith Hill (Field Station 8613) была секретно построен в период с 2009 по 2012 годы с бюджетом $40 млн.



Menwith Hill Station занимается хранением и анализом трафика, собранного в этой местности, обрабатывая более 300 млн телефонных звонков и электронных сообщений в сутки. Данные нужны в реальном времени для операций по захвату и уничтожению террористов, которые ЦРУ проводит по всему миру.

Но в целом Шмель стал центральным звеном в инфраструктуре АНБ, как показано на диаграмме. Шмель сам по себе стал облаком.



Дата-майнинг


После утечки данных от Сноудена стало понятно, что АНБ занимается массовой слежкой и собирает данные на всех граждан ДО совершения преступлений, а не на конкретных подозреваемых ПОСЛЕ преступления. Видимо, второй подход считают устаревшим и не таким эффективным.





Вот список некоторых целей по сбору данных АНБ. Каждый тип данных нуждается в классификации, индексировании и отдельном анализе:

  • поисковые запросы;

    пример базы данных с поисковыми запросами государственных служащих с указанием места работы и IP-адреса сотрудника:


  • посещённые сайты;
  • полученная и отправленная почта;
  • активность в соцсетях (Facebook, Twitter и др.)
  • активность в блогах: опубликованные и прочитанные посты, оставленные комментарии (патент АНБ на технологию определения темы текста путём анализа существительных);
  • звукозаписи телефонных переговоров с биометрической идентификацией личности по голосу (патент АНБ);
  • видеозвонки через Zoom, Google Meet и др.;
  • ДНК;
  • и многое другое.

Объём растёт в экспоненциальной прогрессии. Например, в последние годы добавились видеозаписи с камер наблюдения.

Раньше людям хватало аудиозвонков и текстовых сообщений. А теперь всё больше трафика генерируют видеозвонки и видеоконференции.

В дата-центре Шмель установлен суперкомпьютер Cray XC30. В каждую стойку Cray XC30 входит до 384 процессоров Intel Xeon E5-2600 либо Intel Xeon E5-2600 V2.


Cray XC30


Распаковка суперкомпьютера Cray XC30 (источник)

Конструктивно стойка содержит три блейд-шасси, по 16 лезвий в каждом. В свою очередь, в каждом блейде четыре двухпроцессорных вычислительных узла.





На узел устанавливается 32-128 ГБ памяти с пропускной способностью до 117 ГБ/с. Для связи между узлами применяется фирменная шина интерконнекта Aries.

Суперкомпьютеры XC30 работают под управлением операционной среды Cray Linux Environment, в состав которой входит SUSE Linux Enterprise Server.

Облачные сервисы


Дата-центр в Юте стал последним крупным проектом по строительству инфраструктуры для американских спецслужб. Как и многие другие заказчики, они посчитали более выгодным арендовать мощности облачных провайдеров, а не заниматься техническим обслуживанием собственных дата-центров.

Сейчас ЦРУ и АНБ постепенно отказываются от собственных ЦОД и переходят в облако, причём частично используют инфраструктуру обычных провайдеров, начиная с AWS.

Агентства вроде ЦРУ и АНБ самые жирные заказчики для облачных провайдеров. Бюджеты не ограничены, объёмы данных колоссальные.

Commercial Cloud Enterprise


В ноябре 2020 года стало известно, что ЦРУ заключило мультиоблачный контракт Commercial Cloud Enterprise (C2E) сразу с пятью облачными провайдерами: Amazon Web Services, Microsoft, Google, Oracle и IBM, в то время как с 2013 года она эксклюзивно пользовалась только AWS по десятилетнему контракту на $600 млн на 2013-2023 годы. Теперь ЦРУ переходит в гибридное облако и будет выбирать наиболее подходящего поставщика облачных услуг для конкретных рабочих нагрузок.

Финансовые условия нового контракта не разглашаются, но документация для тендера от 2019 говорит, что бюджет может составлять десятки миллиардов долларов на следующие пятнадцать лет.

ЦРУ специализируется на деятельности исключительно иностранных организаций и граждан. Другое дело АНБ. Вот уже эта структура осуществляет прослушку электронных коммуникаций и за границей, и внутри страны, охватывая всё местное население. Объёмы данных у них на порядок больше, чем у ЦРУ.

Intelligence Community GovCloud


По примеру других разведывательных агентств, к 2018 году АНБ тоже перенесло бльшую часть своих данных в облако. Но совсем другое облако это Intelligence Community GovCloud, которое работает на инфраструктуре АНБ (on-premise), на стандартном железе, но с использованием множества уникальных наработок АНБ по аппаратной и программной части.

Commercial Cloud Enterprise и Intelligence Community GovCloud от ЦРУ и АНБ в каком-то смысле два конкурента. Каждое из 16-ти агентств, которые входят в Разведывательное сообщество, может выбрать C2E или GovCloud.

Кроме того, есть ещё инфраструктура Джедай (Joint Enterprise Defense Infrastructure, JEDI) Минобороны США, которое заключило эксклюзивный контракт с Azure в октябре 2019 года, но до сих пор правомерность сделки оспаривается в суде компанией Amazon.

С точки зрения логической архитектуры Intelligence Community GovCloud это общий центр, единая среда для удобной работы с множеством разрозненных источников данных. Оно описывается как озеро данных (data lake), которое запрашивает данные из внешних хранилищ АНБ и других ведомств.

Информационный директор АНБ Грег Смитбергер рассказывал, что благодаря GovCloud стало проще применять алгоритмы машинного обучения. Вся информация, поступающие в озеро, помечается тегами с указанием источника и уровня доступа у кого есть право работать с этими данными. Это должно защитить в том числе от таких масштабных утечек, как в случае с Эдвардом Сноуденом. Ведь он работал в консалтинговой компании Booz Allen Hamilton (подрядчик АНБ) и формально не должен был получить доступ к секретным файлам, которые вынес из здания операционного центра АНБ на Гавайях.


Кадр из фильма Сноуден

АНБ сейчас тоже смотрит в сторону гибридного облака на публичной инфраструктуре. О проекте Hybrid Compute Initiative (HCI) рассказал информационный директор Разведывательного сообщества США Джон Шерман на конференции AFCEA NOVA. Он говорит, что это будет своего рода эволюционное развитие GovCloud.

HCI и C2E будут работать параллельно. АНБ допускает, что при наличии специфических задач со всплесками нагрузки они тоже могут воспользоваться услугами црушного проекта. Хотя ведомства конкурируют между собой, но готовы сотрудничать по некоторым взаимовыгодным направлениям.

Гибридная платформа HCI будет работать в дата-центрах сторонних облачных провайдеров, но АНБ считает важным, чтобы географически они размещались как можно ближе к её собственной инфраструктуре для скорости. В некоторых приложениях АНБ сетевая задержка является критичным фактором.



На правах рекламы


Виртуальные серверы с новейшим железом, защитой от DDoS-атак и огромным выбором операционных систем. Максимальная конфигурация 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

Подробнее..

Перевод Как машинное обучение позволило Dropbox экономить ежегодно 1,7 миллиона долларов

29.01.2021 12:17:38 | Автор: admin


Недавно благодаря предсказательной мощи машинного обучения (machine learning, ML) мы обеспечили экономию 1,7 миллионов долларов в год на инфраструктурных тратах, оптимизировав процесс генерации и кэширования превью документов Dropbox. Машинное обучение и раньше применялось в Dropbox для таких хорошо известных функций, как поиск, рекомендации файлов и папок, а также OCR при сканировании документов. Хоть и не все сферы применения ML непосредственно видны пользователю, они всё равно изнутри влияют на развитие бизнеса.

Что такое превью?


Функция Dropbox Previews позволяет пользователям просматривать файл без скачивания контента. В дополнение к превью-миниатюрам Dropbox имеет интерактивную поверхность Previews с возможностью обмена между пользователями и совместной работы, в том числе использования комментарии и тегирования других пользователей.

Наша внутренняя система надёжной генерации превью файлов под названием Riviera занимается генерацией превью для сотен поддерживаемых типов файлов. Этот процесс реализуется созданием цепочки различных преобразований контента, обеспечивающей генерацию ресурсов превью, соответствующих типу файла. Например, Riviera может растеризировать страницу из многостраничного PDF-документа для демонстрации в веб-поверхности Dropbox превью высокого разрешения. Функция превью всего контента поддерживает такие интерактивные возможности, как комментирование и передача другим пользователям. Крупные графические ресурсы в дальнейшем могут преобразовываться в миниатюры изображений, которые демонстрируются пользователю в различных контекстах, в том числе в результатах поиска или в браузере файлов.

В масштабах Dropbox система Riviera обрабатывает ежедневно десятки петабайтов данных. Для ускорения процесса создания превью определённых классов крупных файлов Riviera заранее генерирует и кэширует ресурсы превью (этот процесс мы называем предварительным прогревом). Учитывая объём поддерживаемых нами файлов, затраты на процессорные мощности и накопители, связанные с прогревом, оказываются довольно значительными.


Превью-миниатюры при просмотре файлов. Превью можно увеличивать и с ними можно взаимодействовать как с заменой файла приложения.

Мы увидели перспективу снижения этих затрат при помощи машинного обучения, поскольку часть этого заранее генерируемого контента пользователи никогда не просматривали. Если мы сможем эффективно предсказывать, будет ли использоваться превью, то сэкономим на вычислениях и хранении файлов, проводя предварительный прогрев только тех файлов, которые точно будут просмотрены. Мы назвали этот проект Cannes (Канны) в честь знаменитого города на Французской Ривьере, где проводятся предварительные показы фильмов со всего мира.

Баланс в машинном обучении


Существует два аспекта, поиск равновесия в которых повлиял на наши принципы оптимизации превью.

Первая задача заключалась в поиске компромисса между затратами и преимуществами экономии на инфраструктуре при помощи ML. Если выполнять предварительный прогрев меньшего количества файлов, то мы сэкономим деньги (а кому это не понравится!), но если отклонить файл ошибочно, то это навредит пользователю. Когда происходит промах кэша, системе Riviera нужно генерировать превью на лету, пока пользователь ждёт отображения результата. Совместно с командой разработчиков Previews мы задали предел снижения удобства для пользователей и использовали этот предел для настройки модели, которая обеспечит приемлемый уровень экономии.

Ещё одним компромиссом был поиск баланса: сложность и производительность модели против интерпретируемости и стоимости введения в эксплуатацию. В целом, в ML существует баланс сложности и интерпретируемости: более сложные модели обычно имеют более точные предсказания, но ценой этого становится снижение интерпретируемости того, почему были сделаны конкретные прогнозы; кроме того, при этом может повыситься сложность ввода в эксплуатацию. В первой версии системы мы решили как можно быстрее создать интерпретируемое ML-решение.

Так как Cannes стало новым ML-приложением, встроенным в существующую систему, выбор в пользу более простой и интерпретируемой модели позволил нам сосредоточиться на реализации работы модели, метрик и отчётности, после чего можно было повышать сложность. Если бы что-то пошло не так или мы обнаружили бы неожиданное поведение в Riviera, то команде ML-разработки было бы проще выполнить отладку и понять, вызваны ли проблемы Cannes, или чем-то ещё. Решение должно быть относительно простым и дешёвым для ввода в эксплуатацию и обслуживания примерно полумиллиарда запросов в день. Уже существующая система просто выполняла предварительный прогрев всех файлов с возможностью превью, поэтому любые усовершенствования привели бы к экономии, и чем скорее, тем лучше!

Cannes v1


Учтя описанные выше компромиссы, мы намеревались создать для Cannes простую, быструю в обучении и понятную людям модель. Модель v1 была классификатором посредством градиентного бустинга, обученным на таких входных данных, как расширение файла, тип аккаунта Dropbox, в котором хранится файл и последние 30 активности в этом аккаунте. В тесте, проведённом вне работающей системы, мы выяснили, что эта модель может предсказывать превью спустя даже 60 дней после предварительного прогрева с точностью >70%. В контрольной системе модель отклоняла примерно 40% запросов предварительного прогрева, а её производительность находилась в пределах интервала защитного механизма, который мы задали в самом начале. Возникало небольшое количество ложно-отрицательных результатов (файлов, которые по нашим прогнозам не должны были просматриваться, однако просматривались в течение последующих 60 дней), из-за которых возникали дополнительные затраты на генерацию ресурсов превью на лету. Мы использовали метрику процент отклонённых минус ложно-отрицательные результаты, получив общую сумму ежегодной экономии в 1,7 миллиона долларов.

Ещё до того, как мы начали исследовать пространство оптимизаций Previews, нам нужно было гарантировать, что потенциальная экономия перевесит стоимость создания решения на основе ML. Нам пришлось выполнить примерную оценку прогнозируемой экономии, которой мы хотели достичь при помощи Cannes. При проектировании и вводе в эксплуатацию ML-систем в крупных распределённых системах нужно смириться с тем, что внесение некоторых изменений в систему постепенно будет влиять на оценки. Из-за того, что первоначальная модель оставалась простой, мы надеялись, что порядок величин влияния на экономию будет стоящим вложенных усилий, даже если со временем придётся вносить незначительные изменения в соседние системы. Анализ обученной модели дал нам более обширное представление о тому, что мы сэкономим в v1, и подтвердил обоснованность вложений в разработку.

Мы провели A/B-тестирование модели на случайной 1-процентной выборке трафика Dropbox при помощи нашей внутренней службы управления доступностью функций Stormcrow. Мы убедились, что точность модели и количество сэкономленных прогревов соответствовали результатами отдельного анализа, и это было просто отлично! Так как Cannes v1 больше не выполняла предварительный прогрев всех возможных файлов, мы ожидали, что частота попаданий в кэш упадёт; во время эксперимента мы наблюдали, что частота попаданий в кэш стала на пару процентных пунктов меньше, чем у контрольной выборки из A/B-теста. Несмотря на это падение, общая задержка отображения превью осталась практически неизменной.

Нас особенно интересовала хвостовая задержка (задержка для запросов выше 90-го перцентиля), потому что промахи кэша, вносившие свой вклад в повышение хвостовой задержки, должны были серьёзнее повлиять на пользователей функции Previews. Нас вдохновило то, что мы не наблюдали ухудшения ни хвостовой задержки превью, ни общей задержки. Тест на работающей системе обеспечил нам уверенность в том, что можно начинать ввод в эксплуатации модели v1 на больший объём трафика Dropbox.

Прогнозирование в реальном времени на больших масштабах


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


Архитектура Cannes

  1. Получаем от пути предварительного прогрева Riviera идентификатор файла. Riviera собирает идентификаторы всех файлов, для которых возможен предварительный прогрев. (Riviera может выполнять превью примерно 98% файлов, хранящихся в Dropbox. Существует небольшое количество файлов, которые относятся к неподдерживаемым типам или не могут создать превью по какой-то другой причине.) Riviera отправляет запрос на прогноз с идентификатором файла и его типом.
  2. Получение сигналов реального времени. Для сбора самых последних сигналов для файла в момент предсказания мы использовали внутренний сервис под названием Suggest Backend. Этот сервис валидирует запрос на предсказание, а затем запрашивает соответствующие сигналы, относящиеся к этому файлу. Сигналы хранятся или в Edgestore (основной системе хранения метаданных Dropbox), или в User Profile Service (массиве данных RocksDB, выполняющем агрегацию сигналов активности Dropbox).
  3. Кодируем сигналы в вектор признаков. Собранные сигналы передаются в Predict Service, кодирующий сырые сигналы в вектор признаков, который содержит всю важную информацию файла, а затем отправляет этот вектор модели для оценки.
  4. Генерируем прогноз. Модель использует вектор признаков для возврата прогнозируемой вероятности того, что превью файла будет использоваться. Это прогноз затем отправляется обратно Riviera, которая прогревает файлы, у которых есть вероятность просмотра превью в течение 60 дней в будущем.
  5. Журналируем информацию о запросе. Suggest Backend журналирует вектор признаков, результаты прогноза и статистику запроса всю критически важную информацию для контроля снижения производительности и проблем с задержками.


Дополнительный фактор

Снижение задержки прогнозирования важно, потому что описанный выше конвейер находится на критичном пути для функции предварительного прогрева Riviera. Например, при использовании системы для работы с 25% трафика мы наблюдали пограничные случаи, опускавшие уровень доступность Suggest Backend ниже наших внутренних SLA. Дальнейшее профилирование показало, что в этих случаях происходил таймаут на этапе 3. Мы усовершенствовали этап кодирования признаков и добавили в путь прогнозирования еще несколько других оптимизаций, снижающих хвостовую задержку для таких пограничных случаев.

Оптимизируем ML


Во время и после процесса ввода в эксплуатацию нашим приоритетом была устойчивость и гарантии того, что система не повлияет негативно на пользователей на поверхности Previews. Критически важными компонентами процесса ввода в эксплуатацию ML являются тщательный мониторинг и многоуровневая система предупреждений.

Метрики Cannes v1

Инфраструктурные метрики: у систем общего пользования есть собственные SLA, касающиеся аптайма и доступности. Для мониторинга и отправки предупреждений в реальном времени мы используем готовые инструменты наподобие Grafana. Есть следующие метрики:

  1. Доступность Suggest Backend и Predict Service
  2. Актуальность данных User Profile Service (или массива данных действий)

Метрики превью: мы выделили ключевые метрики производительности превью,
а именно распределение задержек превью. Мы оставили контрольные 3% для сравнения метрик превью с Cannes и без неё, защищаясь от дрейфа модели или непредусмотренных изменений систем, способных снизить производительность модели. Кроме того, Grafana является популярным решением и для контроля метрик на уровне приложений. Применяются следующие метрики:

  1. Распределение задержек превью (сравнение Cannes и контрольной группы без Cannes); особое внимание уделяется задержкам выше p90
  2. Частота попадания в кэш (сравнение Cannes и контрольной группы без Cannes): общее количество попаданий в кэш/общее количество запросов на превью контента

Метрики производительности модели: у нас есть метрики модели для Cannes v1, которые использует команда ML-разработчиков. Мы создали собственный конвейер для вычисления этих метрик. Нас интересуют следующие метрики:

  1. Матрица неточностей; особое внимание уделяется изменениям в частоте ложно-отрицательных результатов
  2. Площадь под кривой ошибок: одновременно с непосредственным контролем статистики матрицы неточностей вычисляется AUROC с целью сравнения производительности с будущими моделями.

Представленные выше метрики производительности вычисляются ежечасно и сохраняются в Hive. Мы используем Superset для визуализации важных метрик и создания дэшборда изменения производительности Cannes по времени. Предупреждения Superset, создаваемые на основе таблиц метрик, позволяют нам узнать об изменении поведения лежащей в основе системы модели ещё до того, как оно повлияет на пользователей.

Однако самих по себе мониторинга и предупреждений недостаточно для обеспечения здоровья системы; необходимо создание чёткой иерархии владения и процессов передачи на более высокие уровни. Например, мы задокументировали выше по потоку определённые зависимости ML-систем, способные повлиять на результаты модели. Также мы создали перечень задач для дежурных инженеров с подробными пошаговыми инструкциями, позволяющими определить, возникла ли проблема внутри Cannes или в другой части системы, а также путь передачи на более высокие уровни, если причиной являлась модель ML.

Современное состояние и дальнейшие исследования


Cannes теперь используется почти для всего трафика Dropbox. В результате этого мы заменили приблизительно 1,7 миллиона долларов ежегодных затрат на предварительный прогрев 9 тысячами в год на инфраструктуру ML (в основном эти траты вызваны повышением объёма трафика к Suggest Backend и Predict Service).

В следующей версии проекта можно исследовать множество захватывающих областей. Теперь, когда остальная часть системы Cannes выведена в продакшен, мы можем поэкспериментировать с более сложными типами моделей. Также можно разработать более точную функцию затрат для модели на основании более подробных данных об издержках и масштабах использования. Ещё один способ применения Previews, который мы обсуждали использование ML для более подробных предсказательных решений для каждого файла, чем просто прогрев нужен/не нужен. Возможно, нам удастся обнаружить потенциал дальнейшей экономии благодаря более творческому использованию предсказательного прогрева.

Мы надеемся обобщить выводы и инструменты, созданные для Cannes, на другие инфраструктурные проекты Dropbox. Применение машинного обучения в оптимизации инфраструктуры интересная область для вложения сил и средств.



На правах рекламы


Закажите и сразу работайте! Создание VDS любой конфигурации в течение минуты, в том числе серверов для хранения большого объёма данных до 4000 ГБ. Эпичненько :)

Подробнее..

Обогащение данных что это и почему без него никак

15.04.2021 06:04:33 | Автор: admin

Задача обогащения данных напрямую связана с темой их обработки и анализа. Обогащение нужно для того, чтобы конечные потребители данных получали качественную и полную информацию.

Сам термин "обогащение данных" это перевод англоязычного Data enrichment, который проводит аналогию между данными и... ураном. Точно так же, как промышленники насыщают урановую руду, увеличивая долю изотопа 235U, чтобы её можно было использовать (хочется надеяться, в мирных целях), в процессе обогащения данных мы насыщаем их информацией.

Обогащение данных это процесс дополнения сырых данных той информацией, которая в исходном виде в них отсутствует, но необходима для качественного анализа.

Конечными потребителями такой информации чаще всего являются аналитики, но могут быть и нейронные сети, пользователи приложения или предоставляемого API.

Заметим, что обогащение данных термин широкий, и получать данные из внешних источников можно весьма разнообразными способами. Например, представим бизнес-процесс регистрации нового клиента. Если в данных этого клиента отсутствует e-mail, то взаимодействие с внешним источником в этом случае может быть буквально следующим: взяли телефон, позвонили клиенту, узнали его e-mail. Получается, этот процесс может включать в себя такие совершенно не автоматизированные операции, как обычный телефонный разговор со всеми этими эс как доллар, "а" как русская. Это тоже можно считать обогащением данных, но данный пласт проблем в этой статье мы затрагивать не будем. Нас интересуют вполне конкретные случаи, когда данные хранятся в базе данных и именно БД служит внешним источником данных для обогащения.

Источниками сырых исходных данных могут быть:

  • Система кассовых платежей, которая отслеживает транзакции и отправляет в хранилище данных: время, id торговой точки, количество и стоимость купленного товара и т.д.

  • Логистическая система, которая отслеживает движение товара: id транспорта и его водителя, gps-координаты в заданные моменты времени, статус, маршрут и т.д.

  • Телеметрия с датчиков интернета вещей.

  • Система мониторинга инфраструктуры.

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

Таким образом, типовую задачу можно сформулировать следующим образом: на вход поступают данные вида <таймстамп, идентификатор источника, содержимое пакета>, а конечному потребителю требуется соединить (в смысле join) справочную информацию об источнике из хранилища данных с идентификатором источника из сырых данных.

Как обогащаем данные

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

Другой вариант использовать инструменты потоковой обработки данных. В этом случае нужно определиться, где же всё-таки хранить справочную информацию и что будет являться Single Source of Truth (SSOT), или единым источником истины для справочных данных. Если хранить справочные данные в хранилище, то к нему придется каждый раз обращаться, и это может быть накладным, так как к сетевым издержкам добавится ещё и обращение к диску. Вероятно, оптимальнее хранить справочную информацию в оперативной памяти или другом горячем хранилище, например, в Tarantool.

Мы, очевидно, отдаём предпочтению именно последнему варианту, и наша схема приобретает завершенный вид.

Она отличается от первой иллюстрации процесса обогащения данных тем, что появилась конкретика: процесс обогащения происходит на лету с помощью потокового обработчика, справочные данные хранятся в горячем хранилище (оперативной памяти).

Давайте посмотрим, какие плюсы и минусы мы получим, если возьмем за основу данную схему.

Преимущества потокового обогащения данных:

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

  • Схема хорошо масштабируется, если подобрать соответствующие технологии. С правильными инструментами можно масштабироваться под требуемую пропускную способность платформы и под объемы справочной информации.

Недостатки:

  • Источник истины для справочной информации вынесен из надёжного дискового хранилища данных в менее надёжную оперативную память. При сбое это грозит потерей всех несинхронизированных данных.

  • Требуется гораздо больше памяти как оперативной, так и постоянной. В целом, для любой системы аналитики желательно иметь побольше дискового пространства и оперативной памяти, но здесь это становится обязательным условием.

Какие технологии используем

Что касается технологий, то мы выбираем более-менее устоявшиеся на рынке решения с открытым исходным кодом и хорошей документацией, учитывая совместимость.

Выбранный стек технологий:

  • Apache Kafka источник данных и брокер очередей;

  • Apache Spark потоковый обработчик данных;

  • Apache Ignite горячее хранение справочной информации;

  • Greenplum и Apache Hadoop хранилище данных.

В выборе Greenplum мы немного поступились совместимостью. Связать его со Spark не совсем тривиальная задача, для этого не существует стандартного open source коннектора (подробнее рассказывали в этой статье). Поэтому мы разрабатываем такой коннектор сами.

В остальном набор достаточно стандартный. Hadoop держим на всякий случай, например, чтобы использовать тот же Hive поверх HDFS вместо Greenplum.

Каждое из этих решений масштабируемо. Поэтому мы можем построить любую архитектуру, в зависимости от объемов справочной информации и ожидаемой пропускной способности.

Итак, вот окончательные очертания нашей схемы обогащения данных.

Версии, которые используем:

  • Apache Spark 2.4.6.

  • Apache Ignite 2.8.1.

  • Apache Kafka 2.4.1.

  • Greenplum 6.9.0.

  • Apache Hadoop 2.10.1.

Обращаю на это внимание, потому что от версий выбранных компонент зависит совместимость и возможность этих компонент взаимодействовать. Например, если нужно, чтобы Apache Spark писал данные в базу данных Greenplum, это может стать отдельной проблемой, и версии также будут важны. Наш коннектор на текущий момент работает именно со Spark v2, для Spark v3 его нужно отдельно дорабатывать.

Что в результате

Если объединять данные, применяя предложенную схему обогащения, в дальнейшем аналитикам не потребуется каждый раз делать JOIN-запрос, что сэкономит как ценное время людей, так и машинные ресурсы.

Но есть и ограничения, связанные с тем, что source of truth, по сути, находится в оперативной памяти. Поэтому при редактировании справочной информации надо напрямую работать с Ignite через интерфейсы самого Ignite. Кроме этого, нужен аккуратный механизм синхронизации, чтобы кэш Ignite был персистентным. У Ignite есть собственный механизм для записи на диск, но все же Ignite больше ориентирован на работу в ОЗУ, поэтому для резервирования справочной информации в хранилище данных лучше использовать что-нибудь специально для этого предназначенное, например, Airflow.

Полезные ссылки, чтобы понять, как строить взаимодействие между Spark и Ignite и насколько это уже проработанный механизм:

Пользуясь случаем: мы расширяем отдел систем обработки данных. Если вам интересно заниматься с подобного рода задачами, пишите мне в личку, в телеграм @its_ihoziainov или на job@itsumma.ru с пометкой data engineering.

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

Подробнее..

Перевод Секреты производительности Spark, или Почему важна компиляция запросов

24.11.2020 18:14:36 | Автор: admin

Для будущих студентов курсов "Data Engineer" и "Экосистема Hadoop, Spark, Hive" подготовили еще один перевод полезной статьи.


Criteo это компания, работа которой основана на данных. Каждый день через наши системы проходят десятки терабайт новых данных для обучения моделей рекомендаций, обрабатывающих запросы в масштабах всего Интернета. Spark наше основное средство обработки больших данных. Это мощный и гибкий инструмент, однако он отличается довольно высокой сложностью в освоении, а чтобы пользоваться им эффективно, зачастую требуется читать исходный код платформы.

Быстрая обработка больших данных имеет критическое значение для нашего бизнеса:

  • мы часто обновляем наши модели, повышая их производительность для наших клиентов;

  • мы быстро выводим новые продукты на базе машинного обучения на рынок за счет того, что можем быстро выполнять итерации;

  • от скорости обработки данных зависят затраты на инфраструктуру.

В этой статье я расскажу о написании эффективного кода Spark и на примерах продемонстрирую распространенные подводные камни. Я покажу, что в большинстве случаев Spark SQL (Datasets) следует отдавать предпочтение перед Spark Core API (RDD), и если сделать правильный выбор, можно повысить производительность обработки больших данных в 210 раз, а это очень значимо.

Конфигурация для экспериментов

Spark 2.4.6, Macbook Pro 2017 с процессором Intel Core i7 с частотой 3,5ГГц

Измерения всегда производятся на разогретой виртуальной Java-машине (выполняется 100 прогонов кода, и берется среднее значение за последние 90 прогонов). Приведенный в этой статье код написан на Scala, но ее выводы должны быть справедливыми и для Python.

Заблуждения, связанные с обработкой больших данных

Существует распространенное мнение, что в процессах обработки больших данных есть два основных узких места, влияющих на производительность:

  • перетасовка данных, поскольку для ее выполнения требуется отправлять данные по сети;

  • дисковый ввод-вывод, поскольку доступ к данным на диске всегда намного медленнее, чем доступ к данным в ОЗУ.

Эти представления имеют под собой исторические основания в 2006 году, когда впервые появилась библиотека Hadoop, обычные жесткие диски были медленными и ненадежными, а основной платформой для обработки больших данных была MapReduce. Именно медленная работа жестких дисков и подстегнула разработку таких средств обработки в памяти, как Spark. С того времени характеристики аппаратного обеспечения значительно улучшились.

В 2015 году висследовании Кей Остерхаут (Kay Ousterhout) и др. были проанализированы узкие места в заданиях Spark, и в результате выяснилось, что скорость их выполнения в большей степени определяется операциями, загружающими ЦП, а не вводом-выводом и передачей данных по сети. В частности, авторами этой научной работы был выполнен широкий спектр запросов к трем тестовым наборам данных, включаяTPC-DS, и было определено, что:

  • если бы пропускная способность сети была безграничной, время выполнения заданий можно было бы сократить на 2% (медианное значение);

  • если бы пропускная способность дискового ввода-вывода была безграничной, время выполнения стандартного аналитического процесса можно было бы сократить на 19% (медианное значение).

Весьма неожиданный результат! Получается, что дисковый ввод-вывод оказывает намного большее влияние на производительность, чем передача данных по сети. Этому есть несколько причин:

  • Spark использует дисковый ввод-вывод не только при считывании входного набора данных и записи результата, но и в ходе выполнения заданий для кэширования и переноса на диск данных, которые не умещаются в ОЗУ.

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

Интересно, что специалисты Databricks примерно в 2016 году пришли к таким же заключениям, что заставило их переориентировать вектор развития Spark на оптимизацию использования процессора. Результатом стало внедрение поддержки SQL, а также API DataFrames и позднее Datasets.

Насколько быстро работает Spark?

Давайте рассмотрим простую задачу посчитаем наивным методом четные числа от 0 до 10. Для выполнения такого задания Spark, в принципе, не требуется, поэтому для начала напишем простую программу на Scala:

var res: Long = 0Lvar i: Long  = 0Lwhile (i < 1000L * 1000 * 1000) {  if (i % 2 == 0) res += 1  i += 1L}

Листинг1. Наивный подсчет

А теперь давайте также вычислим этот же результат с помощью Spark RDD и Spark Datasets. Чтобы эксперимент был честным, я запускаю Spark в локальном[1] режиме:

val res = spark.sparkContext  .range(0L, 1000L * 1000 * 1000)  .filter(_ % 2 == 0)  .count()

Листинг2. Подсчет с помощью RDD

val res = spark.range(1000L * 1000 * 1000)  .filter(col("id") % 2 === 0)  .select(count(col("id")))  .first().getAs[Long](0)

Листинг3. Подсчет с помощью Datasets

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

Парадокс Datasets

Парадокс: API-интерфейс Datasets построен на основе RDD, однако работает намного быстрее, почти так же быстро, как код, написанный вручную для конкретной задачи. Как такое вообще возможно? Дело в новой модели выполнения.

Прошлое модель Volcano

Код, написанный с использованием RDD, выполняется с помощью модели выполнения Volcano. На практике это означает, что каждый RDD следует стандартному интерфейсу:

  • знает свой родительский RDD;

  • предоставляет посредством методаcomputeдоступ к итератору Iterator[T], который перебирает элементы данного RDD (он является private и должен использоваться только разработчиками Spark).

abstract class RDD[T: ClassTag]def compute(): Iterator[T]

Листинг4. RDD.scala

С учетом этих свойств упрощенная версия реализации функции подсчета для RDD, которая игнорирует разбиение, выглядит вот так:

def pseudo_rdd_count(rdd: RDD[T]): Long = {  val iter = rdd.compute  var result = 0  while (iter.hasNext) result += 1  result}

Листинг5. Псевдокод для действия подсчета на основе RDD

Почему этот код работает значительно медленнее, чем написанный вручную код, который приведен в листинге 1? Есть несколько причин:

  • Вызовы итераторов виртуальной функцией: вызовы Iterator.next() несут дополнительную нагрузку по сравнению с функциями, не являющимися виртуальными, которые могут выполняться компилятором илиJIT как встроенные (inline).

  • Отсутствие оптимизации на уровне ЦП: виртуальная Java-машина и JIT не могут оптимизировать байт-код, образуемый листингом 5, так же хорошо, как байт-код, получаемый при использовании листинга 1. В частности, написанный вручную код позволяет виртуальной Java-машине и JIT хранить промежуточные результаты вычислений в регистре ЦП, а не помещать их в основную память.

Настоящее формирование кода всего этапа

Код, написанный с помощью Spark SQL, выполняется не так, как код, написанный с использованием RDD. Когда запускается действие, Spark генерирует код, который сворачивает несколько трансформаций данных в одну функцию. Этот процесс называется формированием кода всего этапа (Whole-Stage Code Generation). Spark пытается воспроизвести процесс написания специального кода для конкретной задачи, в котором не используются вызовы виртуальных функций. Такой код может выполняться JVM/JIT более эффективно. На самом деле Spark генерирует довольно много кода, см., например, код Spark для листинга 3.

Технически Spark только формирует высокоуровневый код, а генерация байт-кода выполняется компилятором Janino. Именно это и делает Spark SQL настолько быстрым по сравнению с RDD.

Эффективное использование Spark

Сегодня в Spark есть 3 API-интерфейса Scala/Java: RDD, Datasets и DataFrames (который теперь объединен с Datasets). RDD все еще широко применяется в Spark в частности, из-за того, что этот API используется большинством созданных ранее заданий, и перспектива продолжать в том же духе весьма заманчива. Однако, как показывают тесты, переход на API-интерфейс Datasets может дать громадный прирост производительности за счет оптимизированного использования ЦП.

Неправильный подход классический способ

Самая распространенная проблема, с которой я сталкивался при использовании Spark SQL, это явное переключение на API RDD. Причина состоит в том, что программисту зачастую проще сформулировать вычисление в терминах объектов Java, чем с помощью ограниченного языка Spark SQL:

val res = spark.range(1000L * 1000 * 1000)    .rdd    .filter(_ %2 == 0)    .count()

Листинг6. Переключение с Dataset на RDD

Этот код выполняется в течение 43 секунд вместо исходных 2,1 секунды, при этом делая абсолютно то же самое. Явное переключение на RDD останавливает формирование кода всего этапа и запускает преобразование элементов наборов данных из примитивных типов в объекты Java, что оказывается очень затратным. Если мы сравним схемы этапов выполнения кода из листингов 3 и 6 (см. ниже), то увидим, что во втором случае появляется дополнительный этап.

Рисунок 1. Визуальные представления этапов для листинга 3 (схема a) и листинга 6 (схема b)Рисунок 1. Визуальные представления этапов для листинга 3 (схема a) и листинга 6 (схема b)

Неправильный подход изысканный способ

Производительность Spark SQL является на удивление хрупкой. Это незначительное изменение приводит к увеличению времени выполнения запроса в три раза (до 6 секунд):

val res = spark  .range(1000L * 1000 * 1000)  .filter(x => x % 2 == 0) // note that the condition changed  .select(count(col("id")))   .first()  .getAs[Long](0)

Листинг7. Замена выражения Spark SQL функцией Scala

Spark не способен генерировать эффективный код для условия в фильтре. Условие является анонимной функцией Scala, а не выражением Spark SQL, и Spark выполнит десериализацию каждой записи из оптимизированного внутреннего представления, чтобы вызвать эту функцию. Причем вот что примечательно это изменение никак не сказывается на визуальном представлении этапов (рис. 1a), поэтому его невозможно обнаружить, анализируя направленный ациклический граф (DAG) задания в пользовательском интерфейсе Spark.

Высокая производительность Spark SQL обеспечивается за счет ограничения круга доступных операций чем-то все равно приходится жертвовать! Чтобы получить максимальную производительность, нужно использовать преобразования, которые работают со столбцами: используйтеfilter(condition: Column)вместоfilter(T => Boolean) иselect()вместоmap(). При этом Spark не придется перестраивать объект, представленный одной строкой набора данных (Dataset). И, разумеется, избегайте переключения на RDD.

Заключение и итоговые замечания

Приведенные в этой статье простые примеры демонстрируют, что большая часть времени выполнения заданий обработки больших данных не тратится на полезную работу. Хорошим решением этой проблемы является компиляция запросов, которая возможна с использованием Spark SQL и обеспечивает более эффективное использование современного аппаратного обеспечения. Последние исследования свидетельствуют, что использование эффективных запросов для стандартных процессов обработки больших данных важнее, чем оптимизация использования сети и дискового ввода-вывода.

Правильное применение компиляции запросов может сократить время обработки в 210 раз, а это означает ускорение экспериментов, снижение затрат на инфраструктуру и громадное удовольствие от элегантного выполнения своей работы!

Образцы кода из этой статьи можно найти здесь. С помощью этого репозитория можно анализировать производительность разных запросов Spark.

Использованные материалы

  1. Ousterhout, Kay, et al. Making sense of performance in data analytics frameworks (Анализ производительности платформ анализа данных).12-й симпозиум {USENIX} по проектированию и реализации сетевых систем ({NSDI} 15). 2015.

  2. http://www.tpc.org/tpcds/

  3. https://databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html

4.https://janino-compiler.github.io/janino/

5.http://people.csail.mit.edu/matei/papers/2015/sigmodsparksql.pdf

6.https://databricks.com/blog/2016/05/23/apache-spark-as-a-compiler-joining-a-billion-rows-per-second-on-a-laptop.html


Узнать подробнее о курсах "Data Engineer" и "Экосистема Hadoop, Spark, Hive".

Подробнее..

Студенты, лабы и gnuplot обработка данных

14.03.2021 18:20:23 | Автор: admin

Я преподаю курс экспериментальной оптики в одном из российских университетов. Складывается ощущение, что развитие вычислительной техники и программного обеспечения не оказывает влияния на ожидаемый прогресс в удобстве проведения измерений и качестве представления результатов лабораторных работ. Думаю, причина состоит в том, что офисные приложения для работы с электронными таблицами воспринимаются студентами как единственный подходящий инструмент для решения подобных задач. Чтобы развеять это сверхпопулярное заблуждение, я на простом примере расскажу об использовании пакета gnuplot.


Установка gnuplot

Gnuplot высокоуровневый язык команд и сценариев, предназначенный для построения графиков математических функций и работы с данными, активно развивающийся с 1986 года. Исходный код gnuplot защищён авторским правом, но распространяется как свободное программное обеспечение и способен работать на Linux, OS/2, MS Windows, OSX, VMS и многих других платформах. Для установки gnuplot на компьютер с MS Windows наиболее удачным решением будет обратиться к официальному сайту gnuplot.info, перейти по ссылке Download и загрузить актуальную версию с ресурса sourceforge.net. Размер скачиваемого файла около 30 Мб, после установки пакет занимает примерно 100 Мб дискового пространства.

Установщик задаст несколько простых вопросов о конфигурации (на английском языке), одно из окошек будет называться Select Additional Tasks, в нем я рекомендую выбрать тип терминала wxt, а также поставить галочку в последнем пункте Add application directory to your PATH environment variable. После установки в меню запуска программ появятся два новых пункта, кажется они называются gnuplot и gnuplot console version. Если выбрать второй вариант, появится черное окно с командной строкой, как показано на рисунке:

Если ввести командуpwd, вы увидите директорию, в которой запускается gnuplot. Команда
plot sin(x)откроет графический терминал wxt и нарисует в нем график функции \sin(x) .

Если запускать просто gnuplot (не консоль), окно для ввода команд будет белое с черным текстом, при этом в нем будет отображатся верхнее меню с многочисленными командами. В gnuplot есть команда help для быстрого получения справки по любой из команд. Для облегчения работы с gnuplot пользователям MS Windows настоятельно рекомендую обзавестись нормальным текстовым редактором (я не очень в курсе текущей ситуации с Notepad).

Эксперимент

В качестве примера для настоящей заметки выберем простой опыт, относящийся к теме поляризация света. Пусть у нас есть направленный источник линейно-поляризованного света, луч от которого проходит через линейный поляризатор и попадает на фотодетектор.

Измеряем напряжение на фотодетекторе, которое пропорционально мощности прошедшего через поляризатор излучения. Поляризатор представляет из себя тонкую пластинку, плоскость которой перпендикулярна лучу света. Поляризатор установлен в оправу, позволяющую вращать его вокруг направления луча, изменяя угол между плоскостью поляризации света и оптической осью поляризатора. Угол поворота оси поляризатора считывается со шкалы на оправе.

Теоретическая зависимость измеряемого напряжения U от угла поворота поляризатора \theta описывается законом Малюса:

U(\theta) = U_0\cos^2(\theta-\theta_0),

где U_0 максимальное значение напряжения, \theta_0 угол межу плоскостью поляризации света и оптической осью поляризатора.

Моделирование

Применим gnuplot для моделирования возможных результатов эксперимента, в котором измеряется зависимость U от угла поворота \theta . Стоит отметить, что в реальных экспериментах моделирование изучаемого явления широко используется для создания и тестирования средств анализа результатов измерений. Отличие наблюдаемых величин от модельных данных заставляет исследователей проверять и совершенствовать модель, добавляя в нее уже известные науке эффекты. Ситуация, в которой результаты эксперимента невозможно описать известными явлениями называется открытием. Итак, создадим текстовый файл model.gpl со сценарием из gnuplot-команд и комментариев к ним:

reset # сбрасываем все ранее определенные переменные среды gnuplotset angles degrees    # используем градусы как единицу измерения угловset xrange [0:350]    # диапазон изменения угла поворота поляризатораset samples 36        # число точек для вычисления значений функцииset format x "%5.1f"  # формат вывода значения угла  set format y "%5.3f"  # формат вывода величины напряжения# Применим преобразование Бокса-Мюллера для моделирования 'ошибки' # измерения угла, которая описывается нормальным распределением # с нулевым средним и дисперсией D. Воспользуемся имеющимся в# gnuplot генератором псевдо-случайных чисел, функцией rand(x):err(D) = D * cos(360*rand(0))*sqrt(-2*log(rand(0))) # Создадим функцию для описания закон Малюса:U(x) = Uo * cos(x + err(D) - To)**2 + B Uo = 0.65  # параметр UoTo = 71.   # параметр oB  = 0.02  # напряжение на фотодетекторе при выключенном источнике света D  = 1.0   # ошибка считывания значения угла со шкалы на оправеset table "exp.dat" # имя текстового файла для вывода результатов plot U(x)           # записываем результаты в файлunset table         # закрываем файл

В окне gnuplot набираем командуload 'model.gpl'.Подразумевается, что созданный нами файл находится в рабочей директории, в противном случае директорию можно сменить, введя команду cd 'your_path'. В результате выполнения скрипта мы получим текстовый файл cрезультатами моделированияexp.dat, который выглядит примерно так:

# Curve 0 of 1, 36 points# Curve title: "U(x)"# x y type  0.0 0.089  i 10.0 0.176  i 20.0 0.283  i 30.0 0.395  i 40.0 0.505  i 50.0 0.595  i 60.0 0.643  i ...

Анализ данных

Начнем обработку данных с построения графика результатов моделирования (или измерений). Также используем метод наименьших квадратов для сравнения полученных результатов с теорией. Редуцированное значение взвешенного параметра хи-квадрат определяется так:

\chi_{\nu}^2 = \frac{\chi^2}{\nu} = \frac{1}{\nu}\sum_i \frac{(Y_i - f(X_i))^2}{\sigma_i^2}.
  • \nu называется числом степеней свободы алгоритма поиска минимального значения \chi^2 и определяется как число измерений (точек на графике) минус количество свободных параметров функции f(x) ,

  • X_i точки на оси x, в которых проведены измерения,

  • Y_i результат измерения в точке X_i ,

  • f(X_i) значение теоретической функции в точке X_i ,

  • \sigma_i среднеквадратическое отклонение измеренного значения величины Y_i от ее среднего значения \langle Y_i \rangle .

В gnuplot отношение \chi^2/\nu из последней формулы обозначается как WSSR / NDF, что является аббревиатурой от фраз Weighted Sum of Squared Residuals и Number of Degrees of Freedom.

Рассматриваемый здесь пример лабораторной работы является частным случаем обширного класса задач, в которых есть набор данных измерений/моделирования и теоретическая функция, которая должна описывать изучаемое явление. Для проверки соответствия между теорией и экспериментом мы будем варьировать свободные параметры функции так, чтобы минимизировать величину \chi^2 . Для этого в gnuplot есть команда fit, изпользующая алгоритм Левенберга Марквардта. На русский язык фраза fit function to data переводится как подогнать функцию к данным.

Создадим текстовый файлlook.gpl со сценарием для gnuplot.

resetset angles degreesf(x) = Uo * cos(x-To)**2 + B            # определение теоретической функцииUo  = 0.6                               # параметр UoTo = 10                                 # параметр ToB  = 0.05                               # параметр Bset fit nolog         # отмена опции записи логов процесса подгонки в файл# Запускаем алгоритм поиска минимума хи-квадрат, используя 1 колонку файла# "exp.dat" в качестве X[i], а вторую - в качестве Y[i]. При поиске минимума# алгоритм варьирует значения свободных параметров Uo, B, Tofit f(x) "exp.dat" using 1:2  via Uo, To, B# Среднее квадратичное отклонение эксперимента и теории в милливольтахL = sprintf("Закон Малюса: {/Symbol s} = %.2f [мВ]", 1000*FIT_STDFIT) # Найденное значение угла поворота оси и оценка его точностиT = sprintf("Поворот оси поляроида {/Symbol q_0} = %.2f  %.2f", To, To_err)set title T # Название для получившегося графикаset grid    # Указание рисовать сетку на графикеset key box width -14 # прямоугольник для отображения подписей к графикамset xlabel 'угол поворота поляризатора {/Symbol q} [  ]'set ylabel 'напряжение на фотоприёмнике U [ В ]'set yrange [0:0.8] # диапазон графика по вертикальной осиset terminal png size 800, 600 # выбираем тип терминала - png файлset out 'look.png' # имя файла для записи графика# Рисуем функцию и точки из файла:plot f(x) with line title L ls 3 lw 2, \"exp.dat" u 1:2 title 'эксперимент' with points ls 7 ps 1.5 set out # закрываем файл

Символ \ используется в сценариях для переноса длинных строк и должень быть последним символом в своей строке. В окне gnuplot вводим команду load 'look.gpl', в результате выполнения которой у нас появится файл look.png с построенными графиками данных и теоретической функции:

Итак, мы видим, что на глазок данные хорошо совпадают с теорией. Нам даже удалось правильно измерить угол \theta_0 с точностью 0.2 градуса. Однако, мы имеем среднеквадратическое отклонение теории от моделирования \sigma \simeq 9 милливольт. Что бы это могло означать?

Если посмотреть на использование команды fit (строка 11 в файле look.gpl), можно заметить, что мы не передаём процедуре подгонки никаких данных об ошибках измерений, т. е. алгоритм ничего не знает о величинах\sigma_i из последней формулы. Что же он (алгоритм) делает в таком случае? А вот что: все \sigma_i считаются равными безразмерной единице и мы получаем невзвешенное значение редуцированного параметра хи-квадрат, квадратный корень из которого является размерной величиной, описывающей среднеквадратическое отклонение функции от экспериментальных точек те самые 8.88 милливольт, приведенные на графике.

Если в процессе измерений текущее наблюдаемое значение напряжения в каждой точке ведет себя достаточно стабильно, можно предположить, что отличие теории и эксперимента может быть связано с неточностью отсчета угла по шкале оправы с вращающимся поляризатором. Чтобы преобразовать ошибки отсчета угла в эквивалентные ошибки измерения напряжения, продифференцируем функцию U(\theta) и назовем получившуюся функцию V(\theta) :

V(\theta) \equiv \frac{\partial U(\theta)}{\partial \theta} = U_0 \sin(2(\theta_0-\theta)) .

В нашем моделировании (см. файлmodel.gplв начале этого текста) мы учли погрешность измерения угла, добавив его к закону Малюса как случайную величину с нормальным распределением и среднеквадратическим разбросом в 1 градус. Чтобы учесть погрешности измерений, создадим усовершенствованный скрипт для обработки данных. Заодно, нарисуем графики в полярных координатах (удобных для визуализации поляризационных явлений), а также сохраним картинку в формате pdf.

resetset angles degreesf(x) = Uo * cos(x-To)**2 + B      # определение теоретической функцииv(x) = Uo * sin(2*(To-x))*pi/180  # производная f(x)Uo  = 0.6                         # параметр UoTo = 10                           # параметр ToB  = 0.05                         # параметр BdT = 1.0                          # ошибка измерения углаset fit nolog#  Запускаем алгоритм поиска минимума (не-взвешенный хи-квадрат)fit f(x) "exp.dat" using 1:2             via Uo, To, B#  Запускаем алгоритм поиска минимума (взвешенный хи-квадрат)fit f(x) "exp.dat" using 1:2:(dT*v($1)) via Uo, To, BL = sprintf("Теория: {/Symbol c^2}/NDF = %.1f/%2d\n \Вероятность: %.2f \%", FIT_WSSR, FIT_NDF, 100*FIT_P) T = sprintf("Поворот оси поляроида {/Symbol q_0} = %.2f  %.2f", To, To_err)set title T # Название для получившегося графикаset key box left opaque  width -12 spacing 2unset border # не рисовать рамкуunset xtics  # не показывать ось xunset ytics  # не показывать ось yset polar    # рисуем графики в полярных координатахset grid polar linetype 2 lc rgb 'black' lw 0.25 dashtype 2set rtics 0.1 format '%.1f'unset raxisUmax = 0.76  # максимальное значение напряженияset rrange [0:Umax]set rlabel 'U_{ФД} [В]'set trange[0:360]set for [i=0:330:30] label at first Umax*cos(i), \first Rmax*sin(i) center sprintf('%d', i)set terminal pdf background rgb '0xFFFFF0' size 5, 5 # тип терминала - pdf файлset out 'closelook.pdf' # имя файла для записи графикаplot f(t) with line title L ls 3 lw 2, \"exp.dat" u 1:2:(dT*v($1)) title 'эксперимент' with err ls 7 ps 0.5 set out # закрываем файл

Следующее изображение - скриншот получившегося файла closelook.pdf.

В результате применения алгоритма подгонки мы получили редуцированное значение взвешенного параметра хи-квадрат \chi^2/\text{NDF}=33.9/33 . Используя распределение хи-квадрат с соответствующим числом степеней свободы мы получаем значение вероятности (p-value) получения наблюдаемого результата в предположении, что исходная теоретическая гипотеза верна. В нашем случае эта вероятность довольно высока - 42%.

Заключение

Изучение пакета gnuplot, как и многих других инструментов, целесообразно начинать на примере решения какой-нибудь простой задачи. Существование готовых сценариев позволяет в дальнейшем легко адаптировать и видоизменять их под свои нужды. Открытость и мультиплатформенность программы и языка сценариев обеспечивает легкий обмен знаниями, данными, навыками и результатами работы.

Подробнее..

Как мы контролируем качество моделей для детектирования объектов на изображениях

08.07.2020 18:05:40 | Автор: admin
image

Добрый день. Нас зовут Татьяна Воронова и Эльвира Дяминова, мы занимаемся анализом данных в компании Center 2M. В частности, мы обучаем нейросетевые модели для детектирования объектов на изображениях: людей, спецтехники, животных.

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

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

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

Вот как выглядел наш план. Все пункты, кроме работ разметчика, осуществляются в автоматическом режиме:

  1. Раз в месяц выбираются автоматически все изображения с камер за последнюю неделю.
  2. Названия изображений добавляются на общую xls-страницу в sharepoint, а также заносятся статусы файлов-изображений по умолчанию: Не просмотрено.
  3. С помощью последнего (работающего в текущий момент) варианта модели генерируется разметка изображений в папку также добавляются xml-файлы с разметкой (координаты найденных голов), а на страницу автоматически заносится общее количество найденных моделью объектов это число понадобится в дальнейшем для отслеживания качества модели.
  4. Разметчики раз в месяц просматривают размеченные файлы в статусе Не просмотрено. Правят разметку и заносят количество исправлений в xls-страницу (отдельно количество удаленных меток, отдельно количество добавленных). Статусы просмотренных разметчиком файлов меняются на Просмотрено. Таким образом, мы понимаем, как деградировало качество нашей модели.

    Кроме того, мы уясняем характер ошибки: размечается ли в основном лишнее (сумки, стулья) или, наоборот, не находим часть людей (например, из-за медицинских масок). График изменяющихся метрик качества модели выводится в виде панели-отчета.
  5. Раз в месяц по xls-файлу смотрится количество файлов в статусе Просмотрено и количество изменений > 0. Если количество выше порогового значения, запускается переобучение модели на расширенном множестве (с добавлением поправленной разметки). Если ранее файл входил в обучающий датасет, старая разметка по файлу меняется на новую. У файлов, взятых в обучение, статус меняется на Взято в обучение. Статус нужно менять, иначе одни и те же файлы будут повторно попадать в дообучение. Дообучение производится начиная с чекпоинта, оставшегося при предыдущем обучении. В дальнейшем мы планируем вводить дообучение не только по расписанию, но и превышению порога количества изменений, которые пришлось сделать в разметке.
  6. Если количество файлов в статусе Просмотрено равно 0, необходимо оповещение разметчик по какой-то причине не проверяет разметку.
  7. Если, несмотря на дообучение модели, точность продолжает падать, а метрики спускаются ниже порогового значения, необходимо оповещение. Это знак, что нужно детально разбираться в проблеме с привлечением аналитиков.

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

Например, на изображении ниже одно из отделений (в зимний день), кадры которого не были представлены в обучающем датасете:

image

Если посчитать метрики для этого кадра (TP = 25, FN = 3, FP = 0), то получится, что полнота (recall) 89%, точность (precision) 100%, а гармоническое среднее между точностью и полнотой около 94,2% (о метриках чуть ниже). Достаточно неплохой результат для нового помещения.

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

image

Леди вблизи:

image

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

Recall полнота показывает, какую долю объектов, реально относящихся к положительному классу, мы предсказали верно.

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

Когда заказчику была необходима одна цифра, комбинация точности и полноты, мы предоставляли гармоническое среднее, или F-меру. Подробнее про метрики.

После одного цикла мы получили следующие результаты:

image

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

После первого цикла полнота стала 96,7%. Если сравнивать с первой статьей, то там полнота достигала 90%. Такие изменения связаны с тем, что сейчас количество людей в отделениях снизилось, они стали намного меньше перекрывать друг друга (закончились объемные пуховики), да и разнообразие головных уборов поубавилось.

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

image

Сейчас дела обстоят таким образом.

image

Подводя итоги, назовем плюсы автоматизации:

  1. Частичная автоматизация процесса разметки.
  2. Своевременное реагирование на новые ситуации (поголовное ношение медицинских масок).
  3. Быстрое реагирование на неправильные ответы модели (сумка стала детектироваться как голова и тому подобные случаи).
  4. Мониторинг точности модели на постоянной основе. При изменении метрик в худшую сторону подключается аналитик.
  5. Минимизация трудозатрат аналитика при дообучении модели. Наши аналитики занимаются разными проектами с полным вовлечением, поэтому хотелось бы как можно реже отрывать их от основного проекта для сбора данных и дообучения по другому проекту.

Минусом является человеческий фактор со стороны разметчика он может недостаточно ответственно отнестись к разметке, поэтому необходима разметка с перекрытием или использование golden setов заданий с заранее известным ответом, служащих только для контроля качества разметки. Во многих более сложных задачах аналитик должен лично проверять разметку в таких задачах автоматический режим не подойдет.

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

Авторы статьи: Татьяна Воронова (tvoronova), Эльвира Дяминова(elviraa)
Подробнее..

Беспилотные автомобили новая нефть, искусственный интеллект и 5G

14.04.2021 16:05:26 | Автор: admin

Вряд ли стоит лишний раз напоминать, что появление беспилотных автомобилей неразрывно связано с прогрессом в сфере искусственного интеллекта. Но для автономного вождения необходим не только ИИ. Беспилотный автомобиль получает данные с различных сенсоров: камеры, сонар, радар, лидар, GPS, что позволяет вести машину в любом окружении. Конечно, информацию с датчиков необходимо своевременно обрабатывать, и объемы здесь весьма немаленькие.

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

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

Беспилотный автомобиль: базовые требования

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

Конечно, большинство автомобилей на дорогах не оснащены системами автономного вождения. У некоторых есть базовые системы помощи водителю, например, контроль устойчивости. Другие предлагают многоуровневые системы, справляющиеся с более сложными задачами. Здесь можно отметить удержание полосы движения вместе с круиз-контролем, что весьма полезно при движении по магистралям. Беспилотные автомобили, которые начинают появляться на дорогах, берут на себя все функции вождения и безопасности при некоторых условиях (например, в пробках), но водитель должен быть готов взять управление на себя. На улицах пока еще нет полностью беспилотных автомобилей, где водитель отсутствует. Но когда они появятся, компьютеру достаточно будет сообщить место назначения и предпочтения по навигации.

Система глобального позиционирования (GPS) позволяет автомобилю узнать, где он находится. Сегодня приемники GPS встроены во многие SoC, благодаря вычислительным ядрам они обеспечивают быстрый и точный поиск положения автомобиля. Для вычислений используются данные, как минимум, четырех спутников. Некоторые чипы GPS, такие как Linx Technologies F4 Series GPS Receiver Module, могут одновременно принимать сигналы до 48 спутников. Данные о перемещении автомобиля передаются на периферийные серверы, где они используются для дальнейшего анализа.

Беспилотный автомобиль в любой момент времени должен знать свое точное местоположение, а также оценивать ситуацию вокруг. Несколько камер обеспечивают обзор окружения на все 360 градусов. Каждая камера дает двумерные кадры, то есть массив пикселей, где к каждому пикселю привязана информация цвета и яркости. И здесь как раз стоит упомянуть весьма интересные инновации.

MIT ShadowCam способна заглянуть за угол

Развитие технологий искусственного интеллекта и глубокого обучения, позволяет выполнить исчерпывающий анализ изображений, в том числе отслеживать объекты по информации нескольких камер и анализировать положение пешеходов и велосипедистов. Исследователи MIT анонсировали систему ShadowCam, которая использует технологии компьютерного видения: анализируются малейшие изменения яркости, позволяющие определить тени на поверхности земли, едва различимые человеческому глазу. Технология позволяет беспилотным автомобилям буквально заглянуть за угол, определяя приближающиеся объекты, которые потенциально могут вызывать столкновение.

Загрязнение камер, слабое освещение и плохая видимость снижают качество данных с камер, здесь на помощь приходит лидар (LIDAR, Light Detection and Ranging), собирающий информацию о ближайшем окружении автомобиля. Лидар применяет лазерные импульсы для измерения расстояний до объектов, в итоге создается трехмерная карта, позволяющая анализировать окружение автомобиля. Все эти вычисления должны выполняться бортовым компьютером, чтобы мгновенно принимать необходимые решения. Для захвата и хранения данных трехмерной карты объектов и потоков с нескольких камер требуется достаточная емкость на периферии.

Проблема объема данных

Даже обычные автомобили, с водителем за рулем, генерируют все больше данных. Новые модели оснащаются бортовым компьютером с 25-50 вычислительными ядрами, обеспечивающими круиз-контроль, устранение слепого пятна, предупреждение о наезде на препятствие и автоматическое торможение. Узлы автомобиля обмениваются данными между собой через внутреннюю сеть.

В своей речи бывший CEO Intel Брайан Кржанич назвал данные новой нефтью. Он упомянул, что типичный беспилотный автомобиль может генерировать в день около 4 Тбайт данных. Но прогноз уже превышен роботакси AutoX, которые генерируют 1 Тбайт в час. О них мы расскажем чуть ниже.

Эвангелос Симудис, управляющий директор венчурного инвестиционного фонда Synapse Partners, упомянул при обсуждении будущих беспилотных автомобилей, что объемы данных просто гигантские. И они представляют одно из препятствий, мешающих массовому распространению автономного вождения.

Задержки смерти подобны

К сожалению, все данные беспилотного автомобиля не получится обработать в облаке или периферийных дата-центрах. Все это вносит слишком большую задержку. Даже 100-мс задержка, которая меньше, чем моргнуть не успеешь, может провести грань между жизнью или смертью пассажира или пешехода. Автомобиль должен реагировать на возникающие обстоятельства как можно быстрее.

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

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

Взаимодействие друг с другом и с периферийной инфраструктурой

GPS и системы компьютерного видения обеспечивают беспилотные автомобили информацией о локации и ближайшем окружении. Но при повышении дальности просчитываемого окружения один автомобиль может собрать лишь ограниченное количество информации, поэтому необходим обмен данными. В результате каждый автомобиль сможет лучше проанализировать условия вождения, опираясь на более обширный массив данных, собранный парком беспилотных автомобилей. Системы коммуникации Vehicle-to-vehicle (V2V) опираются на mesh-сети, создаваемые автомобилями в одной географической области. V2V используются для обмена информацией и подачи сигналов другим автомобилям, например, предупреждения об опасной дистанции.

Сети V2V можно расширить для обмена информацией с инфраструктурой дорожного движения, например, светофорами. Здесь уже уместно говорить о коммуникации V2I (vehicle-to-infrastructure). Стандарты V2I продолжают развиваться. В США Федеральная дорожная администрация (FHWA) выпустила руководство по V2I, которое должно помочь внедрению технологии. Как сказал администратор FHWA Григорий Надю, преимущества V2I простираются намного дальше безопасности: Кроме улучшения безопасности, технология автомобиль-инфраструктура дает преимущества по мобильности и взаимодействию с окружением.

Водители, которые ездят одним и тем же маршрутом каждый день, запоминают все ямки на дороге. Беспилотные автомобили тоже постоянно учатся на своем опыте. Как указывает Data Center Knowledge, в будущем беспилотные автомобили будут сгружать имеющуюся полезную информацию в периферийные дата-центры, например, интегрированные в станции зарядки.Станции зарядки будут опираться на алгоритмы искусственного интеллекта, которые помогут анализировать полученные от автомобиля данные и предложат возможные решения. Через облако эти данные будут переданы и другим беспилотным автомобилям в общей сети.

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

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

Виртуальные пешеходы и симуляция облегчают задачу

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

В материале Reuters указано, что Volvo - один из многих производителей, тестирующий автономное вождение с помощью манекенов и других искусственно созданных объектов, симулирующих условия городской среды без каких-либо рисков. Производители грузовиков, такие как Scania, экспериментируют с тягачами на закрытых полигонах.

Автономное вождение все чаще переносится в виртуальный мир, как упоминается в MIT Technology Review. В одной симуляции Waymo, например, участвуют 25 тысяч автомобилей, которые в общей сложности проезжают больше 16 млн. километров в день. Подобный массовый сценарий слишком опасен, чтобы переносить его в современный мир.

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

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

Для передачи данных на сравнительно большие расстояния уже требуются современные технологии сотовой связи, а именно 5G, которые способны обеспечить пропускную способность до 300 Мбит/с с задержками 1 мс. Huawei ранее как раз анонсировала компоненты 5G, ориентированные на беспилотные автомобили. Настало время поговорить о 5G.

5G как ключ к успеху беспилотных автомобилей

Наш беспилотный автомобиль может получать информацию о пешеходах и велосипедистах не только опираясь на свои сенсоры, но и благодаря обмену данными с другими машинами, светофорами и прочими объектами городской инфраструктуры. Звучит нереально, но именно такую демонстрацию могли увидеть посетители муниципалитета Оспиталет (провинция Барселона) в рамках проекта автомобиля, подключенного по 5G.

Автомобили Ateca и Arona, изготовленные Seat, использовали сеть оператора Telefonica 5G и технологию Ficosa C-V2X (Cellular Vehicle-to-Everything) для обмена информацией с другими машинами, велосипедистами и даже светофорами. Последние оснащены тепловизорами, которые определяют пешеходов, приближающихся к переходу, в результате на приборной панели автомобиля появляется соответствующее предупреждение. Велосипедисты, подключенные к сети, информируют о своем местоположении, что предотвращает опасные ситуации. В случае плохой видимости у припаркованных автомобилей автоматически включится аварийка, они будут оповещать все приближающиеся автомобили о своем положении.

Как ускорить внедрение автономного вождения?

Беспилотные автомобили, тестируемые на улицах Оспиталета, это интересно, но чтобы автономное вождение стало реальностью, требуется намного больше. Здесь как нельзя кстати подходят возможности новых мобильных сетей 5G, а именно огромные скорости, очень низкие задержки и способность поддерживать большое число подключений одновременно.

Мультигигабитные скорости 5G, распределенные периферийные сети и сервисы с низкими задержками позволят автономному вождению стать реальностью в ближайшие годы, сказал Крис Пенроуз, президент подразделения IoT в AT&T. 5G даст необходимые возможности по распределению обрабатываемых данных, чтобы соответствовать и превышать потребности беспилотных автомобилей.

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

Интеграция 5G идет полным ходом

Неудивительно, что крупные производители автомобилей, такие как Audi, BMW, Daimler, Ford, Hyundai и Toyota, интегрируют технологии 5G в свои продукты.

Возьмем для примера Ford. Компания к 2022 году планирует оснащать все выпускаемые в США автомобили технологией связи CV2X на основе 5G. Миллиарды долларов уже потрачены сотовыми операторами на создание сетей 5G, поэтому нам кажется, что настал подходящий момент, чтобы наши транспортные средства получили ряд умений, которые будут полезны в повседневной эксплуатации, сказал Дон Батлер, исполнительный директор Ford Connected Vehicle Platform and Product.

Компания Daimler, производитель люкс-авто Mercedes-Benz, вместе с крупнейшим своим акционером Zhejiang Geely Holding Group планирует собирать полностью электрические автомобили Smart компактного класса в Китае на экспорт. Они тоже будут оснащаться поддержкой 5G. Первые автомобили планируется выпустить в 2022 году. А Hyundai Mobis, производитель запчастей в составе Hyundai Motor Group, объявил о партнерстве с телекоммуникационной компанией KT по совместной разработке технологий подключенных к 5G автомобилей.

Телекоммуникационные компании не стоят в стороне. Audi является одним из основателей ассоциации 5G Automotive Association (5GAA), созданной для взаимодействия представителей телекоммуникационной индустрии и автопроизводителей. Audi планирует выпустить подключенные к 5G автомобили в ближайшем будущем, чему способствует сотрудничество с такими телекоммуникационными компаниями, как Huawei, которая ранее объявила о том, что стала первым производителем компонентов 5G для беспилотных автомобилей. Huawei надеется на большие продажи фирменного модуля 5G.

Но это еще не все. Несколько телекоммуникационных компаний создали бутафорские города для тестов беспилотных автомобилей. Samsung, например, совместно с Korea Transportation Safety Authority строит K-city В Корее с декорациями для проверки беспилотных автомобилей и подключения 5G в условиях, близких к реальным дорогам, перекресткам и туннелям.

Необходима инфраструктура 5G

Все эксперименты с подключенными к 5G беспилотными автомобилями зайдут в тупик, если не будет создана инфраструктура 5G. Каждый день беспилотный автомобиль может генерировать от 5 до 20 Тбайт данных, поэтому для их передачи должна быть готова мобильная сеть.

Большая часть данных, генерируемых многочисленными сенсорами автомобиля, должна обрабатываться непосредственно бортовым компьютером и расположенными рядом дата-центрами, что вписывается в концепцию периферийных вычислений. Данные поступают не только от автомобилей, но также от других источников, таких как светофоры. В конечном итоге совокупность технологий позволяет беспилотным автомобилям определять объекты вокруг и вовремя реагировать на меняющуюся обстановку.

Ценность собираемых данных

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

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

Как считает Брукс Райнвотер, директор Center for City Solutions в National League of Cities, данные, генерируемые беспилотными автомобилями, предоставят городу более скрупулезный обзор всего, от износа инфраструктуры до подобной информации о дорожном движении и самых нагруженных участках.

Как обрабатывать данные на периферии в тысячи экзабайт?

Для развития полностью автономного вождения необходимо решить проблему обработки и хранения огромных массивов данных. Каждый день беспилотный автомобиль может генерировать от 5 до 20 Тбайт данных. Всего один автомобиль! Только в США сегодня насчитывается больше 270 млн. автомобилей, что в будущем может привести к гипотетическому объему 5.449.600.000 Тбайт (или 5.449 экзабайт) и это только в один день и только в США! Для хранения таких данных необходима высокопроизводительная, гибкая, защищенная и надежная периферийная инфраструктура. Затем возникает проблема эффективной обработки данных, что тоже весьма непросто.

Чтобы бортовой компьютер мог принимать решения в реальном времени, ему требуется самая свежая информация по окружающей обстановке. Старые данные, такие как информация о расположении автомобиля и скорости час назад, обычно уже не нужны. Однако эти данные полезны для дальнейшего улучшения алгоритмов автономного вождения. Разработчики систем на основе искусственного интеллекта должны получать большие массивы данных, чтобы тренировать сети глубокого обучения: определять объекты и их движение по камерам, информации лидара, оптимально сочетать информацию об окружении и инфраструктуре, чтобы принимать решения. Специалистам по безопасности дорожного движения очень важны данные, собранные автомобилями непосредственно до аварий или опасных ситуаций на дороге, например. Здесь вновь встает вопрос обработки данных на периферии, который остается очень важным звеном для совершенствования автономного вождения.

По мере того, как данные собираются беспилотными автомобилями и передаются от них на периферийные дата-центры, после чего мигрируют в облачные хранилища, все более актуальным становится вопрос использования оптимизированной и многоуровневой архитектуры хранения данных. Только она позволит максимально эффективно использовать огромные объемы данных. Свежие данные должны сразу же анализироваться для улучшения моделей машинного обучения, здесь требуется высокая пропускная способность и низкие задержки, для этой цели лучше всего подходят SSD и высокоемкие накопители HAMR с поддержкой технологий нескольких приводов головок.

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

Данные все чаще будут обрабатываться и анализироваться на периферии, что знаменует наступление эпохи IT 4.0, в которой меняется подход к использованию данных. Периферийные вычисления позволят обрабатывать данные рядом с местом их сбора, а не в облачном сервере, что позволит анализировать их намного быстрее, немедленно реагируя на изменения ситуации. Терабайты данных, обрабатывающиеся каждый день, скоростная сеть обмена информацией между автомобилями и периферийными дата-центрами помогут сделать автономное вождение более безопасным и надежным.

Seagate объединяет усилия с AutoX

Наконец, позвольте рассказать об одном практическом примере из сферы беспилотных автомобилей. Seagate решила объединить усилия с компанией AutoX, занимающейся системами автономного вождения. Цель заключается в создании частного облака для быстрой обработки больших объемов данных, генерируемых во время тестирования беспилотных автомобилей.

Как мы уже неоднократно отмечали, беспилотные автомобили создают значительные объемы данных, получаемых со своих сенсоров. Seagate предоставила AutoX полное решение по созданию частного облака на основе систем Seagate Exos E 5U84. В результате повысилась скорость и эффективность обработки данных.

В июле 2020 года AutoX получила разрешение от калифорнийского Департамента транспортных средств, позволившее начать тесты беспилотных автомобилей на обычных дорогах в выделенном районе Сан-Хосе (Калифорния, США). Кроме того, компания управляет парком роботакси в Шэньчжэне и Шанхае. В апреле 2020 компания открыла операционный центр роботакси в Шанхае площадью 7400 м, ставший самым большим хабом беспилотных автомобилей в Азии.

Петабайты в день: данные новая нефть

Для беспилотных автомобилей данные имеют такое же значение, как бензин с электричеством, не зря их называют новой нефтью. Каждое роботакси генерирует порядка 1 Тбайт данных в час, что даже превышает прогнозы аналитиков. Сто роботакси AutoX дают уже петабайты данных ежедневно. И все эти данные следует анализировать и обрабатывать при получении как можно быстрее.

Передача и хранение всех данных в публичных облаках приводит к задержкам, что замедляет обработку и анализ данных, увеличивает расходы. Как можно видеть в отчете Seagate Rethink Data, компании все чаще решают хранить данные в частных облаках.

Для обработки огромных объемов информации AutoX требуется надежная архитектура данных, сказал доктор Джан Вей Пан, вице-президент подразделения Technology and Partnerships в AutoX. Мы должны учитывать не только такие факторы, как цену, производительность и емкость, но и обрабатывать и хранить ценные данные с максимальной скоростью.

Периферийное частное облако: быстрая обработка, низкая стоимость владения

Чтобы удовлетворить потребности AutoX по хранению и обработке данных, Seagate разработала и построила периферийное частное облако, успешно вписавшееся в инфраструктуру хранения данных AutoX; многие задачи, которые ранее выполнялись в окружении публичного облака, теперь перешли на периферию. Данные с испытаний и тестов, например, теперь можно быстро загрузить в периферийное частное облако, которое отличное справляется с обработкой частых запросов к крупным массивам информации.

Решение Seagate соответствует потребностям AutoX по быстрой обработке данных и вместе с тем уменьшает совокупную стоимость владения (TCO). Но данные, которые обрабатываются на периферии, рано или поздно мигрируют в публичное облако для архивации и резервирования.

Для построения дата-центра с частным облаком Seagate использовала решение на основе Exos E 5U84, серверов и распределенной системы хранения данных Ceph. Seagate Exos E 5U84 может хранить до 1,1 петабайт данных, при этом обеспечиваются мощные возможности интеграции, повышающие эффективность использования частного облака. Благодаря высокой плотности хранения данных и производительности, система позволяет уменьшить совокупную стоимость владения. Масштабируемая архитектура обеспечивает рост вместе с бизнесом до 336 накопителей. Что поможет AutoX справиться с растущими объемами собираемых данных в будущем. Причем данное решение можно быстро реплицировать, что соответствует планам AutoX по расширению парков роботакси в Шанхае, Шэньчжэне, Ухани и многих других городах.

AutoX - отличный пример лидера индустрии IT 4.0, который вдохновил нас поставить более мощные системы хранения данных, способные быстрее справиться с анализом информации и выдачей вариантов действий, что позволяет как можно быстрее принимать решения и выходить из критических ситуаций, сказала Санди Сан, вице-президент Seagate и старший менеджер по Китаю. Мы рады партнерству с AutoX, поскольку компания продолжает внедрять инновации, будущее беспилотных автомобилей становится все ближе к реальности.

Renovo и Seagate объявили о сотрудничестве

Второй практический пример касается начала сотрудничества Renovo и Seagate по эффективной обработке огромных массивов данных, которые генерируют беспилотные автомобили. Компания Renovo уже давно занимается разработкой масштабируемой платформы автономного вождения. Будучи лидером в своей сфере, она выбрала в партнеры компанию Seagate, специалиста систем хранения данных.

Быстрая идентификация ценных данных и передача их в руки тех, кому они необходимы, является серьезной проблемой, стоящей перед индустрией беспилотных автомобилей, сказал Кен Клэффи, вице-президент Seagate, старший управляющий направления решений корпоративного класса для хранения данных. Компетенция Renovo в автомобильной сфере и системах обработки данных обеспечивает уникальную конвергенцию, позволяющую приблизиться к решению данной проблемы для флотов беспилотных автомобилей.

Как мы отмечали выше, беспилотные автомобили генерируют очень большие объемы данных, которые не получится перекачивать в реальном времени в облако. Поэтому ключ кроется в обработке данных бортовым компьютером, что вписывается в концепцию периферийных вычислений.

Renovo уже давно разрабатывает платформу Aware, сотрудничество позволит Renovo использовать системы хранения данных Seagate во всех сферах, касающихся автономного вождения.

Seagate предлагает широкий набор решений для хранения данных, генерируемых беспилотными автомобилями, сказал Крис Хейзер, главный исполнительный директор Renovo. Мы рады работать с лидером индустрии Seagate, чтобы интегрировать лучшие технологии хранения данных в критические важные сферы автономного возждения.

Платформа Renovo используется во многих беспилотных автомобилях, в том числе Voyage.auto. Seagate присоединилась к экосистеме Renovo вместе с растущим числом других технологических партнеров, в том числе Samsung, Verizon, HERE, Velodyne LiDAR, Parsons, INRIX, Argus Cyber Security, Seoul Robotics, Affectiva, Phantom Auto, Metamoto, Understand.ai, NIRA Dynamics, Bestmile и т.д. Посмотрим, какие плоды принесет сотрудничество двух лидеров в будущем.

Заключение

Мы надеемся, что наша статья пролила свет на то, насколько важными являются данные в сфере автономного вождения. Когда мы дождемся массового распространения беспилотных автомобилей, они продолжат собирать ценные массивы данных, которые будут обрабатываться не только бортовым компьютером, но и периферийными серверами и облаком. И к этому времени инфраструктура обработки данных должна быть полностью готова.

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

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru