OVHcloud Web Statistics: новый интерфейс статистики для вашего веб-сайта, размещенного в OVHcloud

Если вы когда-либо управляли или редактировали веб-сайт, у вас наверняка будет опыт отслеживания просмотров страниц и статистики посещений.

Если это так, то эта статья для вас! Будьте готовы вступить в 2020 год с совершенно новым интерфейсом!



Немного истории

На рынке есть несколько решений, которые помогут вам анализировать посещения вашего веб-сайта.

Существуют два метода, которые помогут вам собрать эту информацию:

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

В 2004 году, чтобы обеспечить безопасность ваших данных, мы решили использовать локальное решение под названием Urchin… но пришло время меняться!

Почему?

  • Urchin был куплен Google, и программное обеспечение больше не выпускается. Таким образом, с 2012 года он не развивался.
  • Urchin основан на Flash Player. Поддержка Flash Player прекращена, и в 2020 году он будет остановлен компанией Adobe. Поддержки для него больше не будет.
  • Это не лучший опыт.
  • Urchin не позволяет пользователям визуализировать статистику субдоменов. (пример: app.mydomain.com)



Как мы предоставляем статистику вашего сайта?

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

Что это за потребности:

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

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

Итак, мы решили разработать альтернативное решение и предложили его по умолчанию для всех: OVHcloud Web Statistics (или OWStats).

Так что нового?

Новый пользовательский интерфейс для быстрой визуализации наиболее актуальной статистики



Вы можете найти несколько разделов:



  • Панель управления : сводка действий в вашем домене с помощью панели управления. 
  • Браузеры : дополнительная техническая информация о различных браузерах и платформах, используемых для посещения вашего домена.
  • Геолокация : какая страна / регион посещает ваш домен (данные анонимны, поэтому это только общий обзор).
  • Запросы : Обзор самых просматриваемых страниц
  • Роботы : Анализ ботов, посещающих ваш домен
  • Статус : эволюция кода статуса и страницы с ошибками, которые следует изучить.

Было бы проще, если бы мы показали несколько картинок, не так ли?

Ну конечно бы! Здесь у вас есть:

Панель управления:



Страница геолокации:



И страницы статуса:



Некоторые цифры

Благодаря этому новому инструменту мы можем вычислять вашу статистику до 8 раз быстрее.
Мы также вычисляем 2,5 ТБ логов в день!

Хотите больше информации?

Этот пост является предварительным просмотром нашей входящей службы веб-статистики OVH. Мы вернемся к вам с дополнительными сообщениями о технических деталях по мере приближения даты выпуска!

Надежная цифровая экосистема. Он сейчас здесь! И мы вместе!

Драматический масштаб кризиса COVID-19, без сомнения, кардинально изменит наше видение мира. Неотложность ситуации радикально изменила наше социальное поведение и методы работы. Возникли региональные и международные проблемы.

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



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

День за днем ​​мы обнаруживаем, что эта ускоренная цифровая трансформация имеет множество преимуществ, но также сопряжена с проблемами и даже рисками.

Защищая нашу свободу выбора

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

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

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

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

Инициативы для надежной европейской цифровой экосистемы

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

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

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

Уже существуют различные инициативы; Я приведу три примера из тех, которые продвигают цифровой суверенитет:

  • По всей Европе существует облачный проект Gaia-X — совместная инициатива государственных органов Германии и Франции, поддерживаемая их соответствующими экосистемами. Цель этого облачного проекта — определить оси влияния надежного европейского облака. Эта европейская экосистема, объединяющая интеграторов, производителей, игроков в телекоммуникационном секторе и организации, существует и объединена сильным набором ценностей.
  • Во Франции существует Стратегический комитет промышленности, известный как Comité Stratégique de Filière (CSF). Он был инициирован Министерством финансов и промышленности, и такие игроки, как Atos, Oodrive, Outscale, OVHcloud, Scaleway и многие другие, подтвердили свою приверженность разработке надежных решений. Игроки интеграции, такие как CapGemini, GFI, Sopra и Thales, также много работали, чтобы предложить альтернативные, надежные суверенные решения.
  • Что же касается владельцев бизнеса, то мы можем оценить успех призыва к действию от 9 апреля для улучшения цифрового суверенитета в Европе и во всем мире в будущем * (по инициативе Рафаэля Ришара (Неодиа), Паскаля Гаята (Лес Cas d'OR du Digital, Les Pionniers du Digital), Матье Хуг (Тилкаль) и Ален Гарнье (Jamespot)). Он был подписан более чем 100 владельцами бизнеса (включая меня и Октава от имени OVHcloud) и доказывает, насколько важно осознавать эти темы и насколько коллективное участие является ключевым элементом совместных действий.

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

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

Чтобы нести ответственность, мы должны действовать.

Обязательство OVHcloud инвестировать и укреплять доверие в будущее

Инвестиции в нашу надежную инфраструктуру: мы инвестируем в нашу собственную сеть из 30 центров обработки данных и в нашу собственную телекоммуникационную сеть с транзитом более 20 ТБ. Мы также инвестируем в два надежных центра обработки данных, расположенных во Франции, которые предназначены для европейских игроков с наиболее важными данными — наших государственных услуг, больниц и передовых отраслей. Наши центры обработки данных имеют самые высокие сертификаты с точки зрения безопасности (HDS, SecNumCloud в процессе, ISO / IEC 27001, 27017 и 27018, PCI DSS и т. Д.).

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

Инвестиции в энергоэффективную модель: более 15 лет OVHcloud разрабатывает технологии водяного охлаждения для своих серверов, значительно сокращая затраты на строительство и эксплуатацию, а также резко ограничивая потребление энергии.

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

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

Open Trusted Cloud — каталог проверенных решений

Мы призываем издателей программного обеспечения и SaaS сотрудничать с нами и помочь с появлением новой инициативы: Open Trusted Cloud.



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

OVHcloud гарантирует размещенные решения:

  • Выбор места для хранения и обработки данных, обеспечивающий соблюдение местного европейского законодательства.
  • Соблюдение европейского «кодекса поведения» CISPE по защите данных 1 .
  • Соблюдение «Кодекса поведения» по обратимости данных при содействии Европейской комиссии (SWIPO IaaS 2 )
  • При необходимости, соответствие требованиям для хостинга медицинских данных (сертификация HDS) и хостинга финансовых данных (соответствие SOC / ACPR / EBA и сертификация PCI-DSS) во Франции и в некоторых европейских странах.
  • И в некоторых случаях, если на решения ссылаются правильные организации, C2-хостинг для государственных услуг во Франции.

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

Присоединяйтесь к нашей инициативе Open Trusted Cloud, и вместе мы докажем, что будущее может быть согласовано с нашими ценностями!

Как развертывать готовые к облаку образы на голых серверах

Прямо сейчас OVHcloud участвует как в Cloud (на основе OpenStack), так и в BareMetal. Вот почему мы стараемся придерживаться того же подхода при развертывании операционных систем. В этой статье мы объясним, как это сделать, на примере недавно доступного дистрибутива: RedHat © Entreprise Linux.



Что такое облачный образ?

Для тех, кто не знает, готовые к облаку образы — это предустановленный дистрибутив, который поставляется в формате одного файла (RAW, QCOW2, OVF,…) и может быть загружен гипервизором, чтобы система была готова в секунд, без необходимости терпеть весь процесс установки.
Поскольку у вас может быть много разных виртуальных машин на основе этих образов, это своего рода ситуация, подходящая для всех, что делает их довольно интересными для работы.
Вы можете спросить: «Как я могу настроить такие параметры, как имя хоста, сеть, ключ ssh, на этом сервере перед загрузкой?» Здесь на помощь приходят метаданные cloud-init и instance .

Что такое метаданные cloud-init и instance ?

Cloud-init  — это решение, разработанное Canonical как «отраслевой стандартный метод множественного распространения для межплатформенной инициализации экземпляра облака» , и, насколько мы его использовали, оно работает довольно хорошо.
Cloud-init  — это служба, которая запускается при первой загрузке для изменения размера ваших разделов, настройки имени хоста, сети, передачи и выполнения сценариев, сообщения другим службам о том, что он активен, и других возможностей.
Вся эта информация хранится в метаданных экземпляра, которые могут иметь разные формы. В основном, возможно, в виде метаданных , предоставляемых облаком , в форме коллекции файлов JSON. Ниже приведен пример файла meta_data.json .

{
«ключи»: [
{
«данные»: «ssh-rsa AAAAB3NzaC1yc2AACABQCnZ0Ma2nE99GXH == jcollin@ovhcloud.com»,
«тип»: «ssh»,
«имя»: «ключ1»
}
],
«public_keys»: {
«key1»: «ssh-rsa AAAAB3NzaC1yc2AACABQCnZ0Ma2nE99GXH == jcollin@ovhcloud.com»
},
«uuid»: «12345678-1234-1234-1234-abcdefghijkl»,
«availability_zone»: «nova»,
«hostname»: «myhostname»,
«устройства»: [],
«launch_index»: 0,
«project_id»: «abcdefgh-4321-4321-1234-lkjihgfedcba»,
«name»: «myhostname»
}

Как это работает на BareMetal?

Он почти такой же, как и в облаке, только требует дополнительной работы. Работая с OpenStack, мы хотим применить облачный процесс к голым серверам. Он во многом вдохновлен Ironic, модулем OpenStack Baremetal.

Изображение

В этом примере мы будем использовать случай с недавно доступным RedHat © Entreprise Linux, и, поскольку мы можем предоставить два способа разместить его на вашем сервере, процесс примерно такой же.



Мы используем официальный готовый к облаку образ RHEL, предоставленный RedHat ©, используем его в нашей собственной фабрике шаблонов, созданной с помощью Packer и OVHcloud Public Cloud, для загрузки и предварительной установки пакетов, которые будут использоваться позже в процессе установки, например mdadm, lvm2 и другие.

Затем образ помещается в нашу зеркальную инфраструктуру, которая передаст этот образ службе, которая выполнит установку.

Процесс

Чтобы установить такой образ на ваш сервер без операционной системы , мы загружаем его в образе восстановления и выполняем с ним множество операций, таких как:

  1. протирание дисков
  2. настройка разделов и RAID (если есть)
  3. создание раздела config-drive (об этом поговорим позже)
  4. монтирование всех установочных разделов во временную папку
  5. rsyncing изображения во временной папке
  6. сделать его загрузочным (позже в этой части)
  • если у дистрибутива должна быть лицензия, требуется один дополнительный шаг, например:
  1. регистрация в RedHat © Subscription Manager '
  2. перезагрузка
  3. жду телефон

config-drive

Это источник метаданных нашего экземпляра на голых серверах. Он содержит все необходимые файлы для cloud_init, чтобы установить и настроить систему при первой загрузке.
Это небольшой (1 МБ) раздел с файловой системой ISO-9660 (да, это означает, что он доступен только для чтения), который будет обнаружен облачной службой инициализации вместо стандартных meta_data .

Делаем образ загрузочным

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

  • создание 
    /etc/fstab
  • конфигурация grub с некоторыми конкретными предустановками
  • установка инструментов типа lvm2 , mdadm
  • создание 
    /boot/initramfs
    с дополнительными драйверами
  • установка grub
  • синхронизация 
    /boot/efi
    раздела

Все это гарантирует, что ваш сервер сможет корректно загрузиться.

домашний телефон

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

Это простой скрипт, который выполнит HTTP POST для самодельной службы. Это позволяет нам узнать, что сервер наконец загружен, и что сразу после первых шагов cloud-init исходный будет ждать окончания процесса и делать вызов только тогда, когда вы можете войти на свой сервер.

Что делает все это сложным?

Что ж, это хороший вопрос! Мы стараемся сделать этот процесс как можно проще, и это сложная задача, потому что все дистрибутивы разные, даже один и тот же дистрибутив в другой версии может отличаться.
Например, мы предоставляем 4 вида RedHat © Entreprise Linux.



Настройка для RHEL 7 немного отличается от настройки для RHEL 8, но у вас есть те же сценарии, которые нужно применить (или не применять), когда дело доходит до лицензирования. Поскольку у нас нет возможности лицензировать RHEL, стандартным методом покупки лицензии у OVH является способ BYOL, который означает: « Принесите свою собственную лицензию» .

RedHat © это сложно?

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

Перед тем как быть в состоянии продать RedHat © Entreprise Linux на Baremetal, мы должны были удостоверить каждый наш аромат с аппаратными тестами, такие как сети, вычислительные, доступ к дискам, память, виртуализации возможностей, и многой другим. Процесс долгий, но вы должны знать, что делаете, еще лучше, потому что даже если каждый дистрибутив отличается, каждый сервер тоже.

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


Будущее

Как я уже говорил вам, этот процесс довольно близок к OpenStack Ironic, и, если это может быть будущее с точки зрения предоставления Baremetal как услуги, может потребоваться небольшая работа над вашим облачным образом.
И если вы готовы к этой задаче, возможно, создайте свой собственный образ, чтобы установить его на свои новые серверы, с помощью функции « Принесите свое собственное изображение», которая сейчас находится в разработке!

OVHcloud теперь доступен на платформе Cloud 66

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



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



Что предлагает Cloud 66?



Cloud 66 предоставляет решения, которые позволяют разработчикам создавать, развертывать, запускать и управлять приложениями в любом облаке полностью автоматизированным и оптимизированным образом . Использование этих решений похоже на наличие собственной команды DevOps, которая следит за тем, чтобы серверы работали для приложений в производственной среде. Разработчики могут просто сосредоточиться на написании кода, и им не нужно беспокоиться об инфраструктуре. Cloud 66 интегрировал OVHcloud в качестве одного из поставщиков облачной инфраструктуры, где можно развертывать и запускать приложения.

Почему это должно меня беспокоить?

Поскольку одна из амбиций Cloud 66 заключается в создании простой инфраструктуры, которая увеличивает ценность стартапов во всем мире, это было очевидное совпадение с партнером Cloud 66 с OVHcloud.

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

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

Он работает с вашими Ruby, Node или контейнерными приложениями

Давайте посмотрим на практические элементы — это помогает продемонстрировать, насколько просто развертывать приложения с Cloud 66.

Во-первых, убедитесь, что у вас есть следующее: 

  • Аккаунт Cloud 66
  • Git Repo, содержащий код вашего приложения
  • Аккаунт в OVHcloud



Допустим, вы разработчик приложения Ruby. После выбора того, что вы хотите развернуть собственное приложение, вам будет предложено выбрать фреймворк. Из-за его интуитивно понятного пользовательского интерфейса вы, вероятно, выберете «Развернуть Rails & Rack Frameworks».

Предоставьте информацию о своем приложении

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

Доступ к вашему репозиторию Git

Cloud 66 поддерживает как общедоступные, так и частные репозитории Git. Если вы используете частный репозиторий Git, вам необходимо добавить и утвердить открытый SSH-ключ Cloud 66 у своего провайдера Git:



Определение вашего приложения

Наконец, вас попросят ввести URL-адрес репозитория Git, ветку для развертывания, имя вашего приложения и среду для развертывания.



Настройка вашего приложения

По завершении анализа вы увидите желтое информационное окно, которое можно использовать для проверки правильности анализа.



Разверните свое приложение в OVHcloud

Чтобы использовать OVHcloud в качестве целевой среды для развертывания, просто выберите OVHcloud в раскрывающемся меню при выборе облачного провайдера.

Вам необходимо выбрать регион API (доступны США, ЕС и CA). Обратите внимание, что это не регион для развертывания, это ваш объект выставления счета. Например, если вы зарегистрировали учетную запись OVHcloud во Франции: выберите OVHcloud EU.

Введите идентификатор проекта OVH и создайте имя для своей цели развертывания.

Наконец, вы можете решить, как вы хотите настроить свой интерфейсный (веб-сайт) серверы и серверы баз данных. Их можно использовать совместно или развернуть на отдельных серверах.

Как только это будет сделано, просто нажмите « Развернуть приложение», ваше приложение будет развернуто в экземплярах Public Cloud, а ваши ресурсы будут динамически выделены Cloud 66: готово!



Кто такое Cloud 66?

Штаб-квартиры Cloud 66 находятся в Сан-Франциско и Лондоне, их миссия — повысить продуктивность разработчиков. Созданный в 2012 году, он обслуживает более 1000+ компаний в 120 странах. Компания развертывает приложения 2 миллиона раз в день для тысяч разработчиков по всему миру.

Что дальше?

Вы можете прямо сейчас начать создание учетной записи Cloud 66. Чтобы отпраздновать наше партнерство с Cloud 66, когда вы настраиваете учетную запись Cloud 66, просто используйте код: Hello-OVHcloud, и вы получите бесплатные кредиты в размере 66 долларов для использования в Cloud 66.

Мы планируем провести веб-семинар 30 июня для более глубокого знакомства с продуктами Cloud 66, чтобы вы могли увидеть и узнать, насколько просто развернуть свое приложение с Cloud 66 в OVHcloud. Будьте на связи!

Механизм интерпретации: инструмент с открытым исходным кодом для интерпретации ваших моделей в ML Serving

Контекст

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



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

Чтобы преодолеть эту проблему, мы вместе с Университетом Лилля и Центрального Лилля инициировали проект, заключающийся в разработке современных методов интерпретируемости, не зависящих от моделей.



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

В механизме интерпретируемости мы начали сосредотачиваться на локальном методе PDP, который эффективен в вычислительном отношении и прост для понимания.

Механизм интерпретации

Использовать механизм интерпретируемости довольно просто. Чтобы установить инструмент, вы можете ввести его pip install interpretability-engine, а затем использовать его через интерфейс командной строки.

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

interpretability-engine --token XXX --deployment-url https://localhost:8080 --samples-path my_dataset.csv --features 0 1 2 --method 'pdp'


Примечание: 0 1 2 — это указатели характеристик

Вы также можете получить образцы, хранящиеся в хранилище объектов, с помощью swift, см .: interpretability-engine --help.

Пример в наборе данных iris

Теперь давайте попробуем конкретный пример на наборе данных радужной оболочки глаза. Мы обучили модель с помощью scikit, экспортируем ее в формат ONNX и развертываем на ML Serving, см. Документацию.

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

Примеры выглядят так (формат csv):

4.7,3.2,1.3,.2
4.6,3.1,1.5,.2
5,3.6,1.4,.2
5.4,3.9,1.7,.4
...


Примечания :

  • Каждая строка — это экземпляр, а каждый столбец — это функция.
  • Первый столбец соответствует 
    sepal.length
    , второй - 
    sepal.width
    , третий - 
    petal.length
    и последний - 
    petal.width
    .
  • Порядок функции должен соответствовать порядку функции в экспортированном формате, см. Ограничения, подробно описанные ниже.

Затем запускаем следующую команду:

interpretability-engine --token xxx --deployment-url https://xxxx.c1.gra.serving.ai.ovh.net/iris/ --samples-path iris.csv --features 0 1 2 3 --feature-names "sepal.length" "sepal.width" "petal.length" "petal.width" --label-names "setosa" "vergicolor" "virginica"


И получаем следующий рисунок:



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

Примечание: если вы хотите сохранить результат, используйте опцию--output-file you-result-filename.pdf

Ограничения и будущая работа

Interpretability Engine — это первый шаг к объяснению модели, но текущая реализация включает ограничения.

Среди них — отсутствие методов. На данный момент доступен только один глобальный метод (PDP). Мы планируем добавить дополнительные методы, более эффективные с точки зрения вычислений, такие как ALE. Мы также планируем добавить локальные методы с целью объяснения одного прогноза. Самый эффективный с точки зрения вычислений — LIME. Другие методы, такие как [Anchors] () или [SHAP] (), звучат многообещающе, но пока остаются дорогими.

Другое ограничение связано с именами функций, которые зависят от того, как вы экспортировали свою модель. Модель, обученная в scikit и экспортированная в формат ONNX, будет иметь только один вход с формой, соответствующей количеству функций. Следовательно, функции не имеют имен и основаны на их индексах. Чтобы решить эту проблему, мы позволяем пользователю сопоставлять указатель функций с именами с помощью этой опции --feature-names. Таким образом, когда объяснение экспортируется, его легче читать. Аналогичная проблема существует с этикетками, в этом случае вы можете использовать эту опцию --label-names.

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

На данный момент экспортированные результаты доступны для чтения, когда есть некоторые функции, но остается вопрос, как представить сотни функций с помощью методов PDP?

Открытый источник

Открытый исходный код является частью культуры OVHCloud, поэтому мы сделали инструмент доступным на Github. Если у вас есть какие-либо мысли по поводу улучшений, не стесняйтесь сообщить нам об этом через PR.

Ссылки

Распределенное обучение в контексте глубокого обучения



Ранее в блоге OVHcloud…

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



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



Поэтому я решил написать статью о том, как работают графические процессоры:



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



Как обсуждалось ранее, обучение нейронных сетей зависит от:

  • Входные данные
  • Архитектура нейронной сети, состоящая из «слоев»
  • Вес
  • Скорость обучения (шаг, используемый для настройки весов нейронной сети)

Зачем нам нужно распределенное обучение

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

Обучение такой библиотеки может занять несколько дней или даже недель из-за размера данных и / или размера сети.

Можно рассмотреть несколько подходов к распределенному обучению.

Различные подходы к распределенному обучению

Когда дело доходит до глубокого обучения, существует две основные категории распределенного обучения, и обе они основаны на парадигме «разделяй и властвуй».

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

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

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

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

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

3 шпаргалки для лучшего понимания распределенного глубокого обучения

В этой шпаргалке предположим, что вы используете докер с прикрепленным томом.









Теперь вам нужно выбрать стратегию распределенного обучения (с умом).

Дополнительная литература

Хотя мы многое рассмотрели в этом сообщении в блоге, мы почти не рассмотрели все аспекты распределенного обучения Deep Learning, включая предыдущую работу, историю и связанную с ней математику.
Я настоятельно рекомендую вам прочитать замечательную статью « Параллельное и распределенное глубокое обучение » Вишаха Хегде и Шимы Усмани (обе из Стэнфордского университета).
А также статью « Демистификация параллельного и распределенного глубокого обучения: углубленный анализ параллелизма», написанную Талом Бен-Нун и Торстеном Хефлером ETH Zurich, Switzerland. Я предлагаю вам начать с перехода к разделу 6.3 .

BigBlueButton

Во время кризиса Covid-19 OVHcloud старался поддерживать тесный контакт со школами и университетами и продолжать их поддерживать. Мы всегда делимся своими идеями и возможностями со студентами на ярмарках вакансий, карьерных встречах, демонстрациях технологий и практических семинарах.

В рамках этой инициативы OVHcloud предлагает школам и университетам ваучеры, которые дают студентам возможность учиться на практике. Эти ваучеры позволяют учителям создавать экземпляры Public Cloud и изучать новое программное обеспечение для виртуализации. Ваучеры также используются для заказа выделенных серверов с целью поддержки решений электронного обучения, таких как BigBlueButton. Университет ISEN Ouest занимается этим с начала кризиса Covid-19.



Коротко о BigBlueButton

BigBlueButton (BBB) ​​- это система веб-конференций, предназначенная для электронного обучения. BBB — это проект с открытым исходным кодом, начатый в 2007 году в рамках GNU LGPL. Он предоставляет широкий спектр функций видеоконференций (аудио, видео, совместное использование экрана, белая доска, запись сеанса и т. Д.) С простым и интуитивно понятным пользовательским интерфейсом. Для электронного обучения BBB расширяет свои функциональные возможности и совместимость с различными системами управления обучением (LMS); такие как Moodle, Canvas, Jenzabar, Sakai или Schoology.



BBB @ ISEN

16 марта — го, Франция вошла в строгую изоляцию, и все школы и учебные центры были закрыты. На следующий день ISEN Ouest решила, что им необходимо эффективное решение для электронного обучения своих студентов, поэтому установила BigBlueButton на выделенных серверах, размещенных в OVHcloud.

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

Чтобы ответить на этот вызов, ISEN Ouest разработал архитектуру следующим образом:

  • Один выделенный сервер Rise-1 на передней панели, настроенный как масштабируемый балансировщик нагрузки Scalelite , подключенный к среде ISEN Ouest Moodle .
  • Два выделенных сервера Infra-1 с 64 ГБ ОЗУ и гарантированной пропускной способностью 2 Гбит / с для видеоконференций BBB, а также для размещения виртуальных классов и встреч. Один сервер расположен в одном из наших центров обработки данных в Страсбурге, а другой — в Рубе — это распределяет нагрузку и обеспечивает непрерывность обслуживания в случае сбоя. 

Наконец, архитектура была построена ISEN в соответствии с архитектурой, предложенной Scalelite.



Чтобы участвовать в уроках, студенты подключаются к цифровой рабочей области, предоставляемой ISEN, и присоединяются к предварительно настроенному классу в Moodle. Они автоматически идентифицируются и добавляются в «список учащихся». Учителя берут на себя роль модераторов в классе и могут управлять своим классом со всей необходимой им автономией.

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

Ежедневно платформа принимает около 600 студентов и преподавателей, которые разделены между 20-40 виртуальными классами. Балансировщик нагрузки поглощает пики соединения между двумя серверами BBB и сглаживает нагрузку, которая может превышать 1 Гбит / с.

BBB @ OVHcloud

Мы используем BigBlueButton в OVHcloud, первыми пользователями стали сотрудники нашего Учебного центра. Действительно, что касается школ, предприятия должны продолжать обучать своих сотрудников во время блокировки.

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

Благодаря некоторым обсуждениям с Эммануэлем, главой ISEN Nantes и бывшим менеджером учебного центра в OVHcloud, мы открыли для себя BBB и захотели попробовать.

Наш первый тест был проведен на одном выделенном сервере Infra-1:

  • Процессор: Intel Xeon-E 2274G — 4 c / 8 t — 4 ГГц / 4,9 ГГц 
  • Оперативная память: 32 ГБ
  • Накопитель: 2 × 960 Go SSD, NVMe Soft RAID 
  • Публичная сеть: 1 Гбит / с 
  • Частная сеть: 2 Гбит / с 

После этого первоначального эксперимента и благодаря упрощенным сценариям установки BBB мы установили его на инстанс публичного облака C2-60 (16 ядер; 60 Go RAM; 400 Go SSD; гарантированная пропускная способность 1 Гбит в общедоступной сети и до 4 Гбит / с. в частной сети). Это повысило устойчивость и упростило обслуживание.

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

  • Нет необходимости устанавливать программное обеспечение локально (через веб-браузер).
  • Идеальное качество звука и видео без задержки, 
  • Очень просто и удобно.
  • Доступны различные интерактивные режимы: доска, управление группами, совместное использование слайд-шоу и т. Д.
  • Легкая интеграция с Moodle. 



BBB @ #Open_Solidarity

Благодаря Worteks BigBlueButton стал одним из бесплатных инструментов, предлагаемых во время кризиса COVID19. Это возможно благодаря нашей инициативе #OpenSolidarity.

Так что, если вы учитель или инструктор, ищущий решение для электронного обучения, простое в использовании, с большим количеством функций и надежным дизайном, обратите внимание на экземпляры BBB от W'Sweet.

Что означает обучение нейронных сетей?

В предыдущем сообщении блога мы обсудили общие концепции глубокого обучения. В этом сообщении блога мы углубимся в основные концепции обучения (глубокой) нейронной сети.



Откуда взялось «Neural»?

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

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

С другой стороны, искусственные нейронные сети построены по принципу биомимикрии. Внешние стимулы (данные), мощность сигнала которых регулируется весами нейронов (помните синапс ?), Циркулируют в нейрон (место, где будет выполняться математический расчет) через дендриты. Результат расчета, называемый выходом, является затем повторно передается (через аксон) нескольким другим нейронам, затем объединяются последующие слои и так далее.

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



Рецепт искусственной нейронной сети

Для создания хорошей искусственной нейронной сети (ИНС) вам понадобятся следующие ингредиенты.

Ингредиенты:

Искусственные нейроны (узел обработки), состоящие из:
  • (много) входных нейронов, соединений (дендритов)
  • вычисления блок (ядро) состоит из:
    • линейная функция (ах + Ь)
    • функция активации (эквивалентно синапс )
  • выход (аксон)

Подготовка к получению ИНС для обучения классификации изображений:

  1. Определитесь с количеством классов вывода (имеется в виду количество классов изображений — например, два для кошки против собаки)
  2. Нарисуйте столько вычислительных единиц, сколько выходных классов (поздравляю, что вы только что создали выходной слой ИНС)
  3. Добавьте столько скрытых слоев, сколько необходимо в рамках определенной архитектуры (например, vgg16 или любой другой популярной архитектуры ). Совет. Скрытые слои  — это просто набор соседних вычислительных единиц , они не связаны друг с другом.
  4. Сложите эти скрытые слои на выходной слой с помощью нейронных соединений.
  5. Важно понимать, что входной уровень  — это, по сути, уровень приема данных.
  6. Добавьте уровень ввода, который адаптирован для приема ваших данных (или вы адаптируете формат данных к заранее определенной архитектуре)
  7. Соберите множество искусственных нейронов таким образом, чтобы выход (аксон) нейрона на данном слое был (одним) входом другого нейрона на последующем слое . Как следствие, входной слой связан со скрытыми слоями, которые затем связаны с выходным слоем (как показано на рисунке ниже) с помощью нейронных соединений (также показанных на рисунке ниже).
  8. Приятного аппетита



Что означает обучение искусственной нейронной сети?

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

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

Параллельно теории управления и глубокому обучению

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

Общие понятия теории управления

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



Теория управления применительно к радиатору

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

Теория управления применительно к обучению нейронной сети

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

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


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


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

Параллельно между системой управления электротехникой и процессом обучения нейронной сети

Одна вещь, которую следует учитывать: проблема долины

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

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

Как и в теории управления, система управления может столкнуться с несколькими проблемами, если она неправильно спроектирована:

  • Если шаг коррекции (скорость обучения) слишком мал, это приведет к очень медленной сходимости (то есть потребуется очень много времени, чтобы разогреть вашу комнату до 20 ° C…).
  • Слишком низкая скорость обучения также может привести к тому, что вы застрянете в локальных минимумах
  • Если шаг коррекции (скорость обучения) слишком высок, это приведет к тому, что система никогда не сойдется (биение вокруг куста) или хуже (то есть радиатор будет колебаться между слишком горячим или слишком холодным)
  • Система могла войти в резонансное состояние ( дивергенцию ).



В конце концов, для обучения искусственной нейронной сети (ИНС) требуется всего несколько шагов:

  1. Сначала для ИНС потребуется инициализация случайного веса.
  2. Разделить набор данных на партии (размер партии)
  3. Отправляйте партии 1 на 1 в GPU
  4. Рассчитайте прямой проход (каким будет результат с текущими весами)
  5. Сравните рассчитанный выход с ожидаемым выходом (убытком)
  6. Отрегулируйте веса (используя приращение или уменьшение скорости обучения ) в соответствии с обратным проходом (обратное распространение градиента) .
  7. Вернуться на квадрат 2

Дальнейшего уведомления

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

Путешествие в чудесную страну машинного обучения, или «Меня ограбили?» (Часть 1)

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



Но как именно я пришел к этой предполагаемой «подходящей цене»? Ну, я видел много объявлений о большом количестве квартир. Я обнаружил, что некоторые объекты недвижимости были желательными и, следовательно, востребованными (с балконом, хорошим видом, безопасным районом и т. квартира.
Другими словами, я узнал из опыта , и это знание позволило мне построить ментальную модель , сколько квартира должна стоить в зависимости от его характеристик.



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

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

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

Что вам нужно, чтобы построить модель с помощью машинного обучения?



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

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

Программного обеспечения
Здесь все становится немного сложнее. Если бы я был одаренным специалистом по данным, я мог бы просто положиться на среду, такую ​​как TensorFlow, PyTorch или ScikitLearn, чтобы загрузить свои данные и выяснить, какой алгоритм лучше всего подходит для обучения модели. Отсюда я мог определить оптимальные параметры обучения и затем тренировать их. К сожалению, я не одаренный аналитик данных. Но, к моему несчастью, мне все же повезло: есть инструменты, обычно сгруппированные под названием «AI Studios», которые разработаны именно для этой цели, но не требуют никаких навыков. В этом примере мы будем использовать Dataiku, одну из самых известных и эффективных AI Studios:

Инфраструктура
Очевидно, что программное обеспечение должно работать на компьютере. Я мог бы попробовать установить Dataiku на свой компьютер, но, поскольку мы находимся в блоге OVHCloud, кажется целесообразным развернуть его в облаке! Как оказалось, вы можете легко развернуть виртуальную машину с предварительно установленным Dataiku в нашем публичном облаке (вы также можете сделать это в публичном облаке некоторых наших конкурентов) с бесплатной лицензией сообщества. С помощью инструмента Dataiku я смогу загрузить набор данных, обучить модель и развернуть ее. Легко, правда?

Работа с вашим набором данных
После того, как вы установили свою виртуальную машину, Dataiku автоматически запускает веб-сервер, доступный через порт 11000. Чтобы получить к нему доступ, просто зайдите в свой браузер и введите. http://<your-VM-IP-address>:11000.После этого появится экран приветствия, предлагающий вам зарегистрироваться для получения бесплатной лицензии сообщества. Как только все это будет сделано, создайте свой первый проект и следуйте инструкциям по импорту вашего первого набора данных (вам просто нужно перетащить несколько файлов) и сохранить его.



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

А теперь перейдем к делу и обучим модель. Для этого перейдите к действию «Лаборатория» и выберите «Быстрая модель», затем «Прогнозирование» с «valeur_fonciere» в качестве целевой переменной (поскольку мы пытаемся предсказать цену).

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



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

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

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

Как только этот новый набор данных будет построен, просто загрузите его, как в первый раз, и вернитесь в представление потока. Там должен появиться ваш новый набор данных. Щелкните модель справа от потока, а затем действие «Оценка». Выберите образец набора данных, используйте параметры по умолчанию и запустите задание. Теперь у вас должен появиться новый набор данных в вашем потоке. Если вы изучите этот набор данных, вы увидите, что в конце есть новый столбец, содержащий прогнозы!



В моем случае для моей квартиры за 100 евро прогнозируемая цена составляет 105 евро. Это может означать две вещи:

  • Модель, которую мы обучили, довольно хороша, а недвижимость была хорошей сделкой!

Или…

  • Модель сделала удачную догадку.

Давайте попробуем другие транзакции, которые произошли на той же улице и в том же году. Что ж, на этот раз результат не впечатляет: очевидно, каждая квартира, купленная на моей улице в 2018 году, стоит ровно 105 евро, независимо от их размера и характеристик. Если бы я знал это, я бы, наверное, купил квартиру побольше! Казалось бы, наша модель не так умна, как мы изначально думали, и нам еще есть над чем поработать…

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

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

Прокачай мой Makefile

Чтобы не повторяться, рекомендуется поместить все задачи, которые вы можете выполнить дважды, где-нибудь в своем проекте. Makefile — идеальное место, а также исполняемая документация: вместо документирования процесса сборки вы должны записать его в цель сборки



Make почти везде — либо установлен, либо на расстоянии одной команды во всех дистрибутивах Linux. Но он далек от совершенства: например, нет встроенной справки или какой-либо опции для перечисления доступных целей для выполнения завершения Bash.

Помощь по целям

Рассмотрим следующий Makefile:

BUILD_DIR=build

clean: # Clean generated files and test cache
	@rm -rf $(BUILD_DIR)
	@go clean -testcache

fmt: # Format Go source code
	@go fmt ./...

test: clean # Run unit tests
	@go test -cover ./...

.PHONY: build
build: clean # Build binary
	@mkdir -p $(BUILD_DIR)
	@go build -ldflags "-s -f" -o $(BUILD_DIR)/hello .


В приведенном выше примере Make не предоставляет возможность перечислить доступные цели или документацию, извлеченную из комментариев. Давай сделаем это:

BUILD_DIR=build

help: # Print help on Makefile
	@grep '^[^.#]\+:\s\+.*#' Makefile | \
	sed "s/\(.\+\):\s*\(.*\) #\s*\(.*\)/`printf "\033[93m"`\1`printf "\033[0m"`	\3 [\2]/" | \
	expand -t20

clean: # Clean generated files and test cache
	@rm -rf $(BUILD_DIR)
	@go clean -testcache

fmt: # Format Go source code
	@go fmt ./...

test: clean # Run unit tests
	@go test -cover ./...

.PHONY: build
build: clean # Build binary
	@mkdir -p $(BUILD_DIR)
	@go build -ldflags "-s -f" -o $(BUILD_DIR)/hello .


Теперь вы можете создавать справку по целям, набрав:

$ make help
help       Print help on Makefile []
clean      Clean generated files and test cache []
fmt        Format Go source code []
test       Run unit tests [clean]
build      Build binary [clean]


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

Завершение удара по целям

Некоторые дистрибутивы предоставляют пакет для добавления завершения Bash в цели Make, другие — нет. Если у вас нет завершения при вводе make [TAB] , вы можете добавить его, используя следующий файл (например, в вашем файле ~ / .bashrc ):

# /etc/profile.d/make

complete -W "\`grep -oEs '^[a-zA-Z0-9_-]+:([^=]|$)' ?akefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make


В примере файла сборки завершение будет напечатано:

$ make [TAB]
build  clean  fmt    help   test
$ make t[TAB]est


Это удобно для больших Make-файлов с несколькими целями.

Включение Makefile

Можно включить дополнительные файлы Makefile, которые включают директивы. Одним из примеров этого может быть включение Makefile help.mk в тот же каталог:

help: # Print help on Makefile
	@grep '^[^.#]\+:\s\+.*#' Makefile | \
	sed "s/\(.\+\):\s*\(.*\) #\s*\(.*\)/`printf "\033[93m"`\1`printf "\033[0m"`	\3 [\2]/" | \
	expand -t20


Его можно импортировать в основной Makefile следующим образом:

include help.mk

BUILD_DIR=build

clean: # Clean generated files and test cache
	@rm -rf $(BUILD_DIR)
	@go clean -testcache

fmt: # Format Go source code
	@go fmt ./...

test: clean # Run unit tests
	@go test -cover ./...

.PHONY: build
build: # Build binary
	@mkdir -p $(BUILD_DIR)
	@go build -ldflags "-s -f" -o $(BUILD_DIR)/hello .


Это будет включать в себя help.mk с целевой помощью. Но поскольку целевой справки больше нет в основном файле Makefile, она больше не будет отображаться при печати справки:

$ make help

$ make help
clean      Clean generated files and test cache []
fmt        Format Go source code []
test       Run unit tests [clean]
build      Build binary [clean]


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

Сделать инструменты

Make Tools используются для решения этих проблем с включением. Таких инструментов два:

Сделайте помощь
Инструмент Make Help сканирует текущий каталог в поисках make-файла, а затем анализирует его, чтобы извлечь информацию о целях. Включенные make-файлы анализируются рекурсивно. Таким образом, чтобы распечатать справку в предыдущем примере, вы должны ввести:

$ make-help
build Build binary [clean]
clean Clean generated files and test cache
fmt   Format Go source code
help  Print help on Makefile
test  Run unit tests [clean]


Мы знаем, что цели отсортированы и что цель справки включена в печатную справку.

Вы можете включить эту цель справки в make-файл со следующим определением:

.PHONY: help
help: # Print help on Makefile
	@make-help


Сделать цели
Этот инструмент рекурсивно перечисляет цели make-файла в текущем каталоге и все включенные. В предыдущем примере:

$ make-targets
build clean fmt help test


Таким образом, чтобы выполнить завершение bash, вы должны указать:

# /etc/profile.d/make

complete -W "\`make-targets\`" make


Известные ошибки
Эти инструменты работают так же, как и make:

  • Включенные файлы относятся к текущему каталогу, а не к соответствующему make-файлу.
  • Для включений нет бесконечного цикла обнаружения.

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

Наслаждайтесь!