Pull to refresh
16K+
238
14,8
Rating
357
Subscribers
Send message

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

Reading time13 min
Reach and readers12K

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

Читать далее

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

Reading time12 min
Reach and readers7.2K

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

Читать далее

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

Reading time11 min
Reach and readers7.4K

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

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

Читать далее

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

Level of difficultyMedium
Reading time7 min
Reach and readers7.5K

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

Читать далее

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

Level of difficultyEasy
Reading time8 min
Reach and readers9.3K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time5 min
Reach and readers8.7K

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

Читать далее

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

Level of difficultyMedium
Reading time12 min
Reach and readers12K

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

Читать далее

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

Level of difficultyMedium
Reading time13 min
Reach and readers6.4K

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

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

Читать далее

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

Level of difficultyMedium
Reading time15 min
Reach and readers6.6K

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

Читать далее

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

Level of difficultyMedium
Reading time11 min
Reach and readers6K

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

Читать далее

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

Reading time8 min
Reach and readers7.5K

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time11 min
Reach and readers8.2K

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

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

Читать далее

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

Level of difficultyMedium
Reading time15 min
Reach and readers10K

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

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time13 min
Reach and readers9.7K

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

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

Читать далее

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

Level of difficultyMedium
Reading time9 min
Reach and readers11K

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

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

Читать далее

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

Level of difficultyEasy
Reading time10 min
Reach and readers9.1K

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

Читать далее

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

Level of difficultyMedium
Reading time16 min
Reach and readers13K

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

Читать далее

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

Reading time7 min
Reach and readers9.2K

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

Читать далее

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

Level of difficultyHard
Reading time20 min
Reach and readers11K

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

Читать далее

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

Level of difficultyHard
Reading time18 min
Reach and readers12K

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

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

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

Information

Rating
605-th
Works in
Registered
Activity