Обновить
16K+
238

Пользователь

14,8
Рейтинг
357
Подписчики
Отправить сообщение

Iron Core. Часть 3: Бессмертная командная строка

Время на прочтение13 мин
Охват и читатели12K

Публикуем перевод третьей статьи из серии (первая часть, вторая), посвящённой информационным технологиям в авиаперевозках. Сегодня поговорим о режиме командной строки системы Amadeus, работа в которой опирается на язык, созданный для телетайпов. Этот язык до сих пор обеспечивает огромный процент бронирований билетов во всём мире — как тех, что выполняются различными агентствами, так и тех, что делаются посредством GDS.

Читать далее

Iron Core. Часть 2: Шесть символов

Время на прочтение12 мин
Охват и читатели7.2K

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

Читать далее

Iron Core. Часть 1: Задача, решение которой создало целую индустрию

Время на прочтение11 мин
Охват и читатели7.4K

Представляем вам перевод первой статьи из серии материалов об информационных технологиях в авиаперевозках. Серия называется «Iron Core». Речь здесь пойдёт о ядре, о фундаментальной инфраструктуре информационных систем авиационной индустрии. Ядро это, созданное около 60 лет тому назад, до сих пор не теряет актуальности. Ежегодно оно обеспечивает организацию перелётов для 4,5 миллиардов человек.

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

Читать далее

Чему именно учится word2vec?

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.5K

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

Читать далее

Поведение как новый критерий идентификации пользователя. Кибербезопасность в эпоху ИИ

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели9.3K

Мы живём в эпоху смены парадигмы взаимодействия человека с сетевыми системами, смены того, как люди подтверждают то, что они те, за кого себя выдают. Главные вопросы, которые всегда задавали пользователям, звучали так: «Что вы знаете?» (пароль, PIN-код, девичья фамилия матери), или «Как вы выглядите?» (Face ID, отпечатки пальцев). Теперь же на первый план выходит такой вопрос: «Как вы себя ведёте?».

В наши дни развитие генеративного ИИ и прогресс в разработке вредоносного ПО, вроде RAT (Remote Access Trojan, троян удалённого доступа), позволили киберпреступникам проводить широкомасштабные атаки и даже обходить такие механизмы безопасности, как Face ID или MFA (Multi-Factor Authentication, многофакторная аутентификация, МФА), которые ранее считались «пуленепробиваемыми».

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

Читать далее

Арифметика резкого повышения продуктивности: почему «рост на 40%» — это почти всегда неправда?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.7K

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели12K

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

Читать далее

Закулисье стримов: три года прямых эфиров в Netflix

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.4K

В Netflix множество грандиозных идей начинается с вопросов. Три года назад мы задали, возможно, самый смелый из них: если бы мы собрались развлекать весь мир с помощью прямых эфиров (этот формат ещё называют «Live», он почти такой же древний, как само телевидение) — как бы мы это сделали?

В начале всё выглядело как чисто техническая задача — подготовка к выпуску нашего первого комедийного шоу, идущего в прямом эфире — Chris Rock: Selective Outrage. А через некоторое время наши прямые эфиры исчислялись уже сотнями. Чего только среди них не было — от крупнейших комедийных представлений и рождественских матчей NFL, до боксёрских поединков, собравших рекордную аудиторию. Netflix даже стала эксклюзивной платформой для трансляции событий WWE.

Читать далее

Базовая модель для персонализированных рекомендаций Netflix

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели6.6K

Персонализированная рекомендательная система Netflix устроена довольно сложно. В её состав входят различные специализированные модели машинного обучения, каждая из которых ориентирована на решение особых задач, в том числе — на обслуживание разделов «Continue Watching» («Продолжить просмотр») и «Today’s Top Picks for You» («Сегодняшние топ-рекомендации для вас»). (Подробности об этом вы можете найти в нашем недавнем обзоре). Но по мере того, как мы расширяем используемый нами набор алгоритмов персонализации, стремясь соответствовать растущим бизнес-потребностям, поддержка рекомендательной системы становится довольно-таки затратной. Более того, мы столкнулись со сложностями при переносе инновационных решений из одной модели в другую. Это так из-за того, что большинство моделей обучаются независимо друг от друга, хотя и пользуются одними и теми же источниками данных. Всё это логично привело к возникновению необходимости в новой архитектуре рекомендательной системы, где модели обучаются предпочтениям пользователей централизованно. Это расширяет доступность и полезность результатов обучения одних моделей для других моделей.

Читать далее

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

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6K

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

Читать далее

О ключах идемпотентности

Время на прочтение8 мин
Охват и читатели7.5K

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

Как именно работают подобные механизмы? Потребитель, получая сообщение, берёт его ключ идемпотентности и сравнивает с ключами сообщений, которые уже были обработаны. Если такой ключ уже встречался — входящее сообщение является дубликатом и его можно проигнорировать. В противном случае потребитель начинает обработку сообщения. Например — сохраняя в базе данных само это сообщение или какое-либо представление данных, полученное после его анализа.

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

Читать далее

Metaflow: повышение эффективности ML/AI-разработки в Netflix

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.2K

Metaflow — это фреймворк, работу над которым мы начали в 2019. В том же году мы открыли его исходный код. Теперь он обеспечивает функционирование широкого спектра ML/AI-систем в Netflix, а так же — во многих других компаниях. Он пользуется любовью тех, кто его применяет, так как он помогает им доводить их ML/AI-идеи от стадии прототипа до продакшна. Он позволяет им уделять внимание не решению рутинных задач, а созданию современнейших систем, которые дарят радость людям по всему миру и развлекают их.

Metaflow даёт разработчикам следующие возможности:

Читать далее

Чему мы научились, с нуля создав движок электронных таблиц

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели10K

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

Если говорить об интерактивности — то мы заранее знали о том, что нам понадобится наибыстрейший движок электронных таблиц, совместимый с Excel и с Google Sheets (GSheets), способный полноценно работать, пользуясь лишь ресурсами браузера. Так как подобного движка (достаточно функционального) нам найти не удалось, мы, кроме прочего, знали и о том, что нам придётся писать его самостоятельно.

К настоящему моменту мы создали то, что, скорее всего, входит в число 4–5 самых совершенных движков электронных таблиц на планете. И это (вероятно — после Google Sheets) самый продвинутый движок, который полностью работает в браузере.

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

Читать далее

Хаос монтирования в Netflix: масштабирование контейнеров на современных CPU

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.7K

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

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

Читать далее

Неожиданная эффективность Claude при one-shot-декомпиляции кода Snowboard Kids 2

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели11K

Я в последнее время экспериментировал с one-shot-декомпиляцией, используя режим Claude без пользовательского интерфейса в непрерывном цикле. Меня на это вдохновила статья о запуске Claude Code в цикле. Эксперимент оказался на удивление продуктивным.

Я занимаюсь декомпиляцией кода игры Snowboard Kids 2. За три недели, прошедших с того момента, как я начал применять описываемый здесь подход, я сделал больше, чем за предыдущие три месяца. Сейчас за ходом работ можно следить на decomp.dev, а до этого сведения о том, что сделано, я вносил прямо в README.md.

Читать далее

От Шеннона до современного ИИ: применение теории информации в машинном обучении

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели9.1K

Главная задача этой статьи — показать связь между теорией информации Шеннона и инструментами, которые можно встретить в современных системах машинного обучения. Здесь мы поговорим об энтропии (entropy) и о приросте информации (information gain), потом перейдём к кросс-энтропии (перекрёстная энтропия, cross-entropy), к KL-дивергенции (дивергенция или расхождение Кульбака–Лейблера, относительная энтропия, KL-divergence), рассмотрим методы, используемые в современных системах генеративного ИИ.

Читать далее

Полное руководство по Docker для ML-инженеров

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели13K

Из этой статьи вы узнаете о том, как с помощью Docker упаковать, запустить и развернуть в продакшне полноценный ML-сервис для выдачи прогнозов. Мы рассмотрим все основные действия, необходимые для решения этих задач — от обучения модели до предоставления доступа к ней посредством API и до её распространения в виде образа контейнера.

Читать далее

Путешествие токена: что конкретно происходит внутри трансформера

Время на прочтение7 мин
Охват и читатели9.2K

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

Читать далее

О правильной и аккуратной остановке потоков в Linux

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели11K

Предположим, вы пишете многопоточное приложение для Linux, которое рассчитано на длительную работу. Может — это СУБД или какой-нибудь сервер. Представим ещё, что ваша программа не рассчитана на какую-нибудь среду выполнения кода (скажем — на JVM, Go или BEAM), которая берёт на себя управление низкоуровневыми вещами. Вы сами управляете порождением потоков (thread), прибегая к системному вызову clone. Когда пишут на C — потоки создают с помощью pthread_create, а в C++ применяется std::thread. (1)

Читать далее

Серверы VALORANT с тикрейтом 128

Уровень сложностиСложный
Время на прочтение18 мин
Охват и читатели12K

Привет! Меня зовут Brent «Brentmeister» Randall (Брент Рэндалл). Я — инженер из команды Gameplay Integrity, которая занимается игрой VALORANT. В сферу нашей ответственности входит система сборки игры, фреймворки, используемые для автоматизации различных задач, производительность игрового клиента и серверов. Именно последнему пункту этого списка и посвящена данная статья. Я поделюсь с вами историей поиска подходов, позволивших вывести производительность наших серверов на оптимальный уровень.

На самых ранних этапах разработки проекта мы уже знали о том, что VALORANT отличается весьма жёсткими требования к производительности игровых серверов. Надеюсь, мне удастся дать вам некоторое представление о том, почему это так, и о том, как были достигнуты наши амбициозные цели. В самом начале серверный кадр (server frame, цикл обработки данных на сервере) длился 50 мс. А после завершения оптимизации нам удалось сократить это время до менее чем 2 мс. Всё это сделано благодаря анализу и оптимизации кода проекта, а так же — благодаря подстройке «железа» и тюнингу ОС.

Читать далее
1
23 ...

Информация

В рейтинге
600-й
Работает в
Зарегистрирован
Активность