epoll()
. Я знал, что производительность
epoll()
не гарантирована, поэтому подозревал, что
нечто систематически на него влияет.Если вы смотрите образовательные ролики и контролируете спонтанную тягу к стороннему контенту, крупные видеохостинги скорее всего не вызовут у вас дискомфорт. Практически всегда там найдутся подходящие лекции и выступления экспертов. Однако стоит оступиться и пару раз включить ток-шоу, сюжет про НЛО или плоскоземельщиков, как алгоритмы зарядят обойму рекомендаций похожего контента и начнут подсовывать его с неистовой частотой.
Осада related-блоков и персонализацияглавной будет продолжается неделями, пока вы снова не зацепитесь за очередную теорию заговора или новостные сводки. В умеренных объемах они безвредны смысл и содержание всех этих роликов забывается через час после просмотра.
Однако для алгоритма такое поведение лишь подтверждает, что вы не против проваливаться глубже в черную дыру. Обсудим эту проблему подробнее и посмотрим, что можно сделать, чтобы не тратить время на посредственные видео и оставаться в относительной независимости от принципов и результатов работы рекомендательных систем.
Фотография: Kevin Grieve. Источник: Unsplash.comУниверсальный характер проблемы достаточно точно описал Даниел Канеман, известный психолог и лауреат многочисленных премий по экономике. Он констатировал, что основная масса соцсетей вовсе не стремятся вооружить нас инструментами для саморазвития и поиска качественного контента среди сотен тысяч и миллионов ежедневных публикаций. Их задача максимизировать уровень вовлеченности пользователей, чем и заняты соответствующие алгоритмы и рекомендательные движки, в том числе и популярных видеохостингов. С их помощью мы незаметно для себя день за днем строим персональный инфококон, из которого потом придется выбираться: Воззрения, которыми вы обладали несколько лет назад, становятся все более экстремальными за счет влияния соцсетей, замечает Канеман.
Действительно, массовые площадки пока плохо понимают, когда мы приходим за новыми знаниями, а когда за развлекательным контентом. Поэтому и не могут вовремя сгладить эффект, о котором говорит всемирно известный эксперт. На данном этапе они конкурируют лишь за наше время с помощью ряда простых ухищрений вроде эксплуатации принципов информационного казино, заставляя нас по десять раз в день заглядывать в свои приложения.
Как следствие мы и правда чаще открываем их, чтобы посмотреть новые публикации, но с каждым годом мотивация продолжать пользоваться тем или иным сервисом постепенно снижается, а искренний интерес к ним просто-напросто замещает легкая форма аддикции.
Фотография: Christopher Ott. Источник: Unsplash.comДаже разработчик, поучаствовавший в проектировании рекомендательного алгоритма YouTube, убежден, что задачи для него можно было бы сформулировать несколько иначе. За этим последовала бы совсем другая реализация и эффект в масштабе пользовательской базы сервиса.
Сегодня вопрос заключается в том, какую долю от семи с лишним сотен миллионов часов, затрачиваемых на просмотр роликов, люди расходуют на достаточно посредственные видео. Если одной из ключевых метрик для включения того или иного сюжета в топы и related-подборки остается суммарный объем времени, потраченного на него пользователями, то такие рекомендации будут соответствующего качества.
Сегодня все чаще можно встретить критику алгоритмов YouTube. Вот так на эту тему высказываются на Hacker News: Болею, целую неделю сижу дома. Фактически обновляю главную каждые пятнадцать минут, но видео, которые я пропускаю уже сотый раз, остаются на месте. Снова и снова нужно скроллить, чтобы найти что-то другое. Базовая рекомендация в таких ситуациях самостоятельно редактировать, чистить или замораживать историю просмотров. Если избавиться от пары записей с роликами об условных теориях заговора, алгоритм пессимизирует это тематическое направление и не будет рекомендовать подобный контент. Более радикальный подход режим приватного просмотра [инкогнито или private browsing], если возникает спонтанное желание провалиться в черную дыру с кучей сомнительных сюжетов. Так можно будет и не тратить время на чистку watch history.
Резиденты HN отмечают и другие особенности рекомендательного движка этой площадки: Помню, как в далеком 2009-м искал электронную музыку и в related к трекам с условной тысячью просмотров были аналогичные по популярности композиции. Их мало кто слушал, поэтому и я всего за несколько часов открыл для себя кучу новых исполнителей. Сегодня все иначе алгоритм выдает похожие видео, но это почти всегда стотысячники.
Фотография: Glenn Carstens-Peters. Источник: Unsplash.comСтоит признать, что встречаются и мнения в защиту YouTube, хотя по большей части ключевую роль в примерах играют не алгоритмы, а пользовательский опыт: На моем ноуте слушал музыку чуть ли не весь дом, но ситуацию спас хороший вкус окружающих теперь сервис радует меня шикарными рекомендациями. Они круче, чем у Spotify. На HN говорят и о других видеохостингах вроде Netflix, но даже в случае этой стриминговой площадки пользователи сожалеют о низком качестве действующих алгоритмов фильтрации контента по сравнению с временами, когда компания работала с DVD-дисками и предлагала качественные рекомендации.
Зачастую, чтобы улучшить выдачу, аудитории YouTube приходится обходить заводскиевозможности сервиса и прибегать к ухищрениям вроде регистрации нескольких аккаунтов для различных задач. Допустим, первый они используют для изучения всего нового, что имеет отношение к работе, а второй для просмотра видео по сторонним темам.
Еще один лайфхак пригодится тем, кто не успевает изучать ролики, отложенные для последующего просмотра. Часть из них рано или поздно пропадают с площадки либо за нарушения правил, либо по желанию авторов, решивших обновить канал. В таком случае стоит заранее воспользоваться youtube-dl одним из наиболее популярных менеджеров загрузок [более 87 тыс. звезд на GitHub на момент публикации]. Либо выбрать более доступный вариант закинуть ссылку на видео в Wayback Machine. Однако в этом случае гарантированной архивации ждать не стоит снэпшот могут и не сделать по единственному запросу [хотя общее число захватываемых сервисом роликов еще в 2018-м оно доходило до 800 тыс. в неделю].
Фотография: Dodi Achmad. Источник: Unsplash.comПо мнению резидентов HN, чтобы не отвлекаться на рекомендации, иногда стоит полностью скрывать related-секции с помощью адблокеров. Или настроить автоматический редирект с главной к ленте тех каналов, на которые вы подписаны. Вообще говоря, среди аудитории площадки уже давно сформировался запрос на подобный функционал и точечные возможности вроде белых и черных списков, которые позволили бы прятать из выдачи ролики с определенными ключевыми словами, тегами и параметрами. Однако зрители вынуждены делать все это с помощью сторонних сервисов например, RSS-ридеров. Хотя и эту возможность, кажется, уже ограничили, так что довольствоваться остается лишь расширениями для браузеров.
Не стоит думать, что под критику аудитории и, к сожалению, регуляторов попадает один-два крупнейших видеохостинга мира. Проблемы есть и у других массовых соцсетей и стриминговых платформ. Их подход к работе с контентом вызывает все больше вопросов, а пользователи все чаще испытывают усталость от посредственных рекомендаций и механик, с помощью которых паблишеры пытаются удерживать их внимание и уровень вовлеченности.
Следует признать, что перекос в строну исключения человеческого фактора из рекомендательного процесса пока не принес выдающихся результатов, поэтому маятник уже начал движение в обратную сторону. Мы продолжим рассказывать о том, как развиваются альтернативные способы поиска интересных видеороликов и музыки здесь и в нашем Мире Hi-Fi, а пока предлагаем несколько материалов для дополнительного чтения по теме:
Одна из киностудий снова выставлена на продажу, но ее стоимость снизилась вдвое
В каких странах взносы за ТВ обязательны, а где их растягивают еще дальше
Почему индустрия подкастов походит на стриминг сериалов и фильмов
Примечание: мы выполняли Tensorflow 2.2 на CPU и с немедленным выполнением для трансферного обучения и scikit-learnNearestNeighbor
для k ближайших соседей. Существуют сложные приближенные реализации ближайших соседей, что были бы лучше для решения проблемы ближайших соседей на основе модели.
{"log": 2, "in": 1, "error": 1, "check": 1}
[2, 1, 1, 1, 0, 0, 0, 0, 0, ...]
{"problem": 1, "authenticating": 1}
[0, 0, 0, 0, 1, 1, 0, 0, 0, ...]
[0.1, 0.3, -0.5, -0.7, 0.2]
[0.1, 0.35, -0.5, -0.7, 0.2]
01
. Затем
01
представляет кластер. Вектор problem
authentificating с большой вероятностью также может быть отображен
в 01. Так LSH обеспечивает нечёткое сравнение и решает обратную
задачу нечёткое различие. Ранние приложения LSH были над
многомерными векторными пространствами из набора слов. Мы не смогли
придумать ни одной причины, по которой он не работал бы с
пространствами векторного представления слов. Есть признаки, что
другие
думали
так же.
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя онлайн-курсы SkillFactory:
- Курс по Machine Learning (12 недель)
- Продвинутый курс Machine Learning Pro + Deep Learning (20 недель)
- Курс Математика и Machine Learning для Data Science (20 недель)
- Обучение профессии Data Science с нуля (12 месяцев)
Eще курсы
- Курс Python для веб-разработки (9 месяцев)
- Профессия Веб-разработчик (8 месяцев)
- Профессия аналитика с любым стартовым уровнем (9 месяцев)
- Курс по DevOps (12 месяцев)
- Профессия Java-разработчик с нуля (18 месяцев)
- Курс по JavaScript (12 месяцев)
- Профессия UX-дизайнер с нуля (9 месяцев)
- Профессия Web-дизайнер (7 месяцев)
Когда говорят про DevOps обычно всегда подразумевают работу с Linux. Но есть большое количество решений под Windows. Как осуществлять сборку Windows c помощью Packer в своем блоге поделился Netflix (Джастин Фелпс и Мануэль Корреа - Applying Netflix DevOps Patterns to Windows). Предлагаю перевод статьи.
В Netflix настройка образов Windows происходило вручную, были ошибки и это был трудоемкий процесс. В этой статье мы описываем, как мы улучшили методологию, какие технологии мы использовали, и как это улучшило развертывание и согласованность сервисов.
В культуре DevOps в Netflix группа, ответственная за создание сервиса, также отвечает за развертывание, тестирование, инфраструктуру и работу этой службы. Основная обязанность инженеров Netflix - выявление пробелов и болевых точек при разработке и эксплуатации сервисов. Хотя большинство наших сервисов работают на Linux Amazon Machine Images (AMI), все еще существует множество сервисов, критически важных для Netflix Playback Experience, работающих на инстансах Windows Elastic Compute Cloud (EC2).
Мы изучили наш процесс создания образов Windows AMI и обнаружили, что он подвержен ошибкам и полон утомительных усилий. Сначала инженер запускал инстанс EC2 и ждал, пока он перейдет в режим онлайн. Как только экземпляр оказывался доступен, инженер использовал инструмент удаленного администрирования, такой как RDP, для входа в экземпляр для установки программного обеспечения и настройки параметров. Затем этот образ сохранялся как AMI и использовался в Auto Scale Group для развертывания кластера инстансов. Поскольку этот процесс занимал много времени и был долгим, в наших экземплярах Windows обычно отсутствовали последние обновления безопасности от Microsoft.
В прошлом году мы решили улучшить этот процесс.
Были следующие проблемы:
устаревшая документация.
обновления ОС.
высокие когнитивные издержки.
отсутствие непрерывного тестирования.
Наш существующий инструмент создания AMI - Aminator - не поддерживает Windows, поэтому нам пришлось использовать другие инструменты.
Когда мы пытались улучшить методологию создания образов, мы преследовали несколько целей:
Конфигурация как код
Использование Spinnaker для непрерывной доставки
Исключение трудоемкости операций - Eliminate Toil
Первая часть нашего нового решения для создания образов Windows - Packer. Packer позволяет описать процесс настройки образов в виде файла JSON. Мы используем конструктор amazon-ebs Packer для запуска инстанса EC2. После подключения Packer использует WinRM для копирования файлов и выполнения сценариев PowerShell для экземпляра. Если все шаги настройки выполнены успешно, Packer сохраняет новый AMI. Файл конфигурации, сценарии, на которые имеются ссылки, и описание зависимостей артефактов находятся во внутреннем репозитории git. Теперь у нас есть конфигурация инстанса и программного обеспечения в виде кода. Это означает, что эти изменения можно отслеживать и просматривать, как и любые другие изменения кода.
Packer требуется специфическая информация для вашей среды создания образов и расширенные разрешения AWS IAM. Чтобы упростить использование Packer для наших разработчиков программного обеспечения, мы объединили специфичную для Netflix информацию о среде AWS и вспомогательные сценарии. Изначально мы сделали это с репозиторием git и файлами переменных Packer. Также был специальный экземпляр EC2, где Packer выполнялся как задания Jenkins. Эта установка была лучше, чем создание образов вручную, но у нас все же были некоторые проблемы с эргономикой. Например, стало сложно гарантировать, что пользователи Packer получают обновления.
Последняя часть нашего решения - найти способ упаковать наше программное обеспечение для установки в Windows. Это позволит повторно использовать вспомогательные сценарии и инструменты инфраструктуры, не требуя от каждого пользователя копировать это решение в свои сценарии Packer. В идеале это должно работать аналогично тому, как приложения упаковываются в процессах Animator. Мы решили эту проблему, используя Chocolatey, менеджер пакетов для Windows. Пакеты Chocolatey создаются и затем сохраняются во внутреннем репозитории артефактов. Этот репозиторий добавлен в качестве источника для команды choco install. Это означает, что мы можем создавать и повторно использовать пакеты, которые помогают интегрировать Windows в экосистему Netflix.
Чтобы сделать процесс создания образов более надежным, мы решили использовать образ Docker, содержащий Packer, конфигурацию нашей среды и вспомогательные скрипты. В дальнейшем пользователи создают свои собственные образы Docker на основе этого базового образа. Это означает, что мы можем обновить базовый образ, добавив в него новую информацию о среде и вспомогательные сценарии, и пользователи будут получать эти обновления автоматически. Со своим новым образом Docker пользователи запускают свои задания по созданию образов Packer с помощью Titus, нашей системы управления контейнерами. Задание Titus создает файл свойств как часть пайплайна Spinnaker. Полученный файл содержит AMI ID и используется на более поздних этапах пайплайна для деплоя. Создание образа в Titus сняло ограничение на использование одного экземпляра EC2, что позволило выполнять задания. Теперь каждое изменение в инфраструктуре тестируется, обрабатывается и развертывается, как и любое другое изменение кода. Этот процесс автоматизирован с помощью пайплайна Spinaker:
пример пайплайна Spinaker, показывающий этапы создания, сборки и развертывания образов.На этапе сборки Kayenta используется для сравнения показателей между базовым образом (текущий AMI) и тем что собирается (новый AMI). На сборочном этапе оценка будет определяться на основе таких показателей, как CPU, threads, latency и GC pause. Если эта оценка находится в пределах допустимого порога, AMI развертывается в каждой среде. Запуск сборки для каждого изменения и тестирование AMI в производственной среде позволяет нам получить представление о влиянии обновлений Windows, изменений скриптов, настройки конфигурации веб-сервера и т. д.
Автоматизация этих утомительных рабочих задач позволяет командам работать быстрее. Нашим инженерам больше не нужно вручную обновлять Windows, Java, Tomcat, IIS и другие службы. Мы можем легко протестировать изменения настройки сервера, обновления программного обеспечения и другие модификации среды выполнения. Каждое изменение кода и инфраструктуры проходит через один и тот же конвейер тестирования и развертывания.
Изменения, которые раньше требовали нескольких часов ручной работы, теперь легко модифицировать, тестировать и развертывать. Другие группы могут быстро развернуть безопасные и воспроизводимые инстансы в автоматическом режиме. Услуги более надежны, тестируемы и документированы. Изменения в инфраструктуре теперь рассматриваются, как и любые другие изменения кода. Это снимает ненужную когнитивную нагрузку и документирует наши знания. Исключение тяжелого труда позволило команде сосредоточиться на других функциях и исправлениях ошибок. Все эти преимущества снижают риск сбоя, который может повлиять на клиента. Принятие шаблона Immutable Server для Windows с использованием Packer и Chocolatey принесло большие преимущества.