Как стать автором
Обновить
452.75
Рейтинг
Яндекс
Как мы делаем Яндекс
Сначала показывать

Персональное ранжирование на Авто.ру: как не потерять главный смысл поиска по параметрам

Блог компании Яндекс Поисковые технологии *Алгоритмы *Машинное обучение *


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

В параметрическом поиске Авто.ру действует правило: незачем строить за пользователя предположения о том, что он имел в виду. Мы в любом случае покажем все объявления, соответствующие поисковым фильтрам в запросе. Роль движка ранжирования — отсортировать карточки так, чтобы наиболее релевантные для конкретного пользователя оказались выше, не более. Я работаю над этим уже несколько месяцев, сейчас расскажу об устройстве движка и первых результатах.
Читать дальше →
Всего голосов 19: ↑16 и ↓3 +13
Просмотры 1.8K
Комментарии 4

Новости

Голосовой перевод трансляций в Яндекс Браузере: как он устроен и чем отличается от перевода обычных видео

Блог компании Яндекс Браузеры Машинное обучение *Софт Искусственный интеллект
Осенью прошлого года мы рассказали читателям Хабра, как работает голосовой перевод видео в Яндекс Браузере. За первые десять месяцев пользователи посмотрели видеоролики с закадровым переводом 81 миллион раз. Механизм действует по запросу: нейросеть получает аудиодорожку целиком, а звук на понятном пользователю языке появляется с задержкой в пару минут.

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

Чтобы всё заработало, перезапустите Яндекс Браузер. Анонсы новых устройств, спортивные соревнования, вдохновляющие космические запуски — этот и другой контент теперь можно смотреть сразу на родном языке. Закадровый голосовой перевод сейчас доступен для некоторых каналов на YouTube, а в будущем, конечно, включить дубляж можно будет в любой YouTube-трансляции. Чтобы адаптировать механизм перевода для стримов, потребовалось переработать всю архитектуру.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Просмотры 7.6K
Комментарии 14

Вектор енумов. С чем мы сталкиваемся в разработке

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

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

Высвобождение ресурсов


Периодически мы решаем задачи экономии разных ресурсов: памяти, процессора и так далее. Во время очередного подхода обнаружили, что один из наших процессингов употребляет неразумное количество процессорных ядер. Суть этого процессинга в том, что он читает поступающие с фронтовых серверов данные маленькими пачками, группирует их и передаёт в основной конвейер, где они варятся большими блоками по 100-200 тысяч строчек за раз.
Читать дальше →
Всего голосов 31: ↑29 и ↓2 +27
Просмотры 8.1K
Комментарии 14

Яндекс выложил в опенсорс бету фреймворка userver

Блог компании Яндекс Высокая производительность *Open source *C++ *GitHub *
Сегодня мы анонсируем выход в опенсорс фреймворка userver для создания высоконагруженных приложений. Для нас это важный способ поделиться опытом в разработке микросервисов, который мы накопили. Вот ссылка на Гитхаб-репозиторий c исходным кодом, документацией, примерами, шаблоном для создания своих сервисов (с настроенным CI, сборкой и тестовым окружением) и сервисом динамических конфигов. Всё это опубликовано под лицензией Apache 2.0.



🐙userver позволяет быстро создавать эффективные микросервисы на языке C++ и уже много лет активно используется в Яндекс Go, Еде, Лавке, Доставке, Маркете, финтехе и других проектах. Вот из каких требований мы исходили в процессе разработки:

  • Простота. Стажёр или студент, приходя к нам, может уже через неделю написать и отправить в продакшен новый микросервис.
  • Надёжность. Многие ошибки, в том числе и связанные с многопоточностью, можно поймать на этапе компиляции. Кроме того, фреймворк даёт подсказки по исправлению проблем.
  • Полнота. В userver есть всё необходимое для тестирования, работы с разными базами данных, кеширования, логирования, трейсинга, распределённых блокировок, работы с JSON, BSON, YAML, изменения параметров сервиса на лету и так далее.

Сейчас я расскажу о том, как возникла идея userver, как фреймворк развивался, в каких задачах его сейчас используют и почему именно выход в опенсорс был логичным следующим шагом. А затем приведу пример написания нового микросервиса.
Читать дальше →
Всего голосов 177: ↑173 и ↓4 +169
Просмотры 48K
Комментарии 139

Как мы ускоряли сборку Android-приложения из двух миллионов строк кода

Блог компании Яндекс Разработка мобильных приложений *Разработка под Android *Kotlin *Gradle *
Tutorial

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


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


Я расскажу на примере мобильного Яндекс Браузера. У нас было ~150 Gradle-модулей, ~2 млн LoC на Java/Kotlin, десяток Gradle-плагинов, тысячи строк кода в buildSrc и лёгкая дрожь от вопроса, сколько ещё может переварить билд-система. Не скажу, что это всё было категорически необходимо, но к написанным строчкам кода надо проявлять уважение.

Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Просмотры 8.5K
Комментарии 19

Feature freeze С++23. Итоги летней встречи комитета

Блог компании Яндекс Программирование *C++ *Компиляторы *IT-стандарты *

На недавней встрече комитет C++ «прорвало», и в черновую версию C++23 добавили:

  • std::mdspan
  • std::flat_map
  • std::flat_set
  • freestanding
  • std::print("Hello {}", "world")
  • форматированный вывод ranges
  • constexpr для bitset, to_chars/from_chars
  • std::string::substr() &&
  • import std;
  • std::start_lifetime_as
  • static operator()
  • [[assume(x > 0)]];
  • 16- и 128-битные float
  • std::generator
  • и очень много другого
Подробности
Всего голосов 82: ↑81 и ↓1 +80
Просмотры 16K
Комментарии 175

Как научиться чувствовать треки? Визуализация музыкальных частот в Моей волне

Блог компании Яндекс Программирование *Математика *Визуализация данных *Звук
Разработчики всего мира потратили миллионы часов на создание визуализаций музыки в приложениях и плеерах. Наверняка многие из вас помнят анимации в старом-добром Winamp. Или разные скины JetAudio. Олды вообще скажут: «Погоди-ка, ты забыл про Atari Video Music, всего-то 1976-й был!» — и будут правы.

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



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

Меня зовут Андрей Бобков, я Android-разработчик, и в этом посте я расскажу, как при помощи высшей математики и цифрового анализа сигнала мы научили Мою волну чувствовать треки, которые вы слушаете, и визуализировать частоты.
Читать дальше →
Всего голосов 39: ↑37 и ↓2 +35
Просмотры 10K
Комментарии 47

Пишем онлайн-тренажёр для Python, C++ и Go: опыт Практикума

Блог компании Яндекс Блог компании Яндекс Практикум Python *C++ *Go *

Один из вариантов мини-IDE в интерфейсе урока

Привет! Меня зовут Павел Свиридов, я руководитель группы разработки в Яндекс Практикуме. Сегодня я вместе со своим коллегой, разработчиком Владимиром Лукьяновым, хочу рассказать о том, как наша команда развивала онлайн-тренажёры в вебе — это такие маленькие среды разработки, встроенные в курсы Практикума. Основное внимание уделю тренажёрам Python и С++, а о других языках скажу пару слов в самом конце и покажу на примере, как создать тренажёр для языка Go.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 9.5K
Комментарии 5

Как люди помогают технологиям в Яндекс Картах

Блог компании Яндекс Data Mining *Геоинформационные сервисы *Accessibility *Машинное обучение *
На днях пользователи Яндекс Карт получили возможность актуализировать данные о доступности организаций. Например, можно указать, оборудован ли пандусом вход в парикмахерскую или есть ли в торговом центре специализированный туалет. Для начала мы попросили пешеходов Яндекса разметить первые 400 тысяч организаций в 73 городах.

Я Данис Гаязов из внутреннего сервиса Crowd, команды полевого краудсорсинга. Полевого, потому что мы работаем «в поле», то есть не в офисе. Сегодня по случаю запуска я расскажу, зачем Картам пешеходы и как они помогали и помогают делать сервисы более полезными.


Результат работы пешехода на заре проекта схем ТЦ
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 5.7K
Комментарии 19

Апериодическая решётка Яндекс Станции 2: история, 3D-модели и акустические эксперименты

Блог компании Яндекс Производство и разработка электроники *Компьютерное железо DIY или Сделай сам Звук

«Не бывает неинтересных задач, бывают неинтересные исследователи».
— Александр Михайлович Гуськов, профессор МГТУ им. Н. Э. Баумана


Привет, меня зовут Григорий Анненков, я тот, кто предложил и внедрил апериодическую решётку для Яндекс Станции 2. Она установлена под тканью, вокруг динамиков и других компонентов.

Кто-то скажет, что работать над формой решётки — никому не нужный перфекционизм. Для меня как для инженера это была интереснейшая задача, результаты которой (и я это сейчас докажу) повлияли на качество звука колонки, пусть и не настолько же сильно, как, скажем, подбор моделей динамиков. Только улучшение это условно-бесплатное, поскольку мы используем тот же объём пластика, разве что формы чуть сложнее привычных.

Под катом — история прототипирования, очень много картинок, гифок и акустических экспериментов. Трёхмерные модели решётки мы выложили на Гитхаб, подробности — в конце поста.
Читать дальше →
Всего голосов 111: ↑111 и ↓0 +111
Просмотры 25K
Комментарии 74

Яндекс выложил YaLM 100B — сейчас это крупнейшая GPT-подобная нейросеть в свободном доступе. Вот как удалось её обучить

Блог компании Яндекс Open source *Алгоритмы *Машинное обучение *Natural Language Processing *

Больше примеров — в конце поста

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

Год назад мы впервые рассказали Хабру о семействе языковых моделей YaLM и их применении в Алисе и Поиске. Сегодня мы выложили в свободный доступ нашу самую большую модель YaLM на 100 млрд параметров. Она обучалась 65 дней на 1,7 ТБ текстов из интернета, книг и множества других источников с помощью 800 видеокарт A100. Модель и дополнительные материалы опубликованы на Гитхабе под лицензией Apache 2.0, которая допускает применение как в исследовательских, так и в коммерческих проектах. Сейчас это самая большая в мире GPT-подобная нейросеть в свободном доступе как для английского, так и для русского языков.

В этой статье мы поделимся не только моделью, но и нашим опытом её обучения. Может показаться, что если у вас уже есть суперкомпьютер, то с обучением больших моделей никаких проблем не возникнет. К сожалению, это заблуждение. Под катом мы расскажем о том, как смогли обучить языковую модель такого размера. Вы узнаете, как удалось добиться стабильности обучения и при этом ускорить его в два раза. Кстати, многое из того, что будет описано ниже, может быть полезно при обучении нейросетей любого размера.
Читать дальше →
Всего голосов 166: ↑165 и ↓1 +164
Просмотры 74K
Комментарии 134

Как Яндекс Карты с помощью отзывов улучшают поиск организаций

Блог компании Яндекс Поисковые технологии *Алгоритмы *Геоинформационные сервисы *Машинное обучение *


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

Теперь учитываются ещё и реальные отзывы людей. Тем самым запросы, по которым раньше выдача была менее релевантной, обрабатываются качественнее, и мы можем решить больше пользовательских задач. Давайте расскажу, как мы к этому шли, и покажу примеры.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 3.2K
Комментарии 18

Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки

Блог компании Яндекс Разработка мобильных приложений *Проектирование и рефакторинг *Разработка под Android *Kotlin *


Однажды ты просыпаешься и понимаешь: избыточность компонентов и рассинхронизация в твоём приложении начинают вредить пользователям. Однажды ты смотришь на написанное давным-давно ядро, плачешь горькими слезами, и приходит это некомфортное, но вместе с тем немного соблазнительное ощущение — что рефакторинг назрел. Добро пожаловать на экскурсию по рефакторингу Музыки, начиная с ресёрча и заканчивая эксплуатацией! Я покажу вам реальный код и постараюсь в деталях вспомнить, как мы формировали требования к механизмам и разрабатывали их, рисовали у себя в голове и в коде границы ядра, по одной переделывали очереди и внедряли то, что получилось, в SDK.
Читать дальше →
Всего голосов 57: ↑54 и ↓3 +51
Просмотры 29K
Комментарии 111

Yandex Planner. Как планировать вычислительные мощности

Блог компании Яндекс Высокая производительность *Анализ и проектирование систем *Серверная оптимизация *Распределённые системы *


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

Меня зовут Сергей Фомин, я разработчик Yandex Planner. Мой пост будет посвящён тому, как мы эффективно решаем задачу планирования вычислительных мощностей.

Сначала я расскажу, что такое Yandex Planner и почему мы решили писать своё решение. После этого мы поговорим про то, в чём заключается задача планирования, почему она не такая простая, как может показаться на первый взгляд. И в качестве одного из способов решения задачи мы рассмотрим дефрагментацию ресурсов. Поехали.
Читать дальше →
Всего голосов 47: ↑47 и ↓0 +47
Просмотры 7.9K
Комментарии 2

Память в браузерах и в Node.js: ограничения, утечки и нестандартные оптимизации

Блог компании Яндекс Разработка веб-сайтов *JavaScript *Интерфейсы *Node.JS *

Интро: почему я написал эту статью


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



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


Разрабатывая проект на JavaScript (TypeScript, ClojureScript или каком-то другом языке, транслируемом в JavaScript), мы привыкли создавать объекты, массивы, строки и вообще писать код, как будто память бесконечна. Это не так. Я расскажу о видах проблем с памятью, о том, какие ограничения мы часто забываем и как их можно преодолеть. В ответ браузеры и пользователи скажут вам спасибо.


Читать дальше →
Всего голосов 55: ↑55 и ↓0 +55
Просмотры 20K
Комментарии 12

Станция 2. Истории разработки одного из самых сложных устройств Яндекса

Блог компании Яндекс Производство и разработка электроники *Гаджеты Компьютерное железо Звук


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

Я хочу поделиться нашей внутренней кухней в формате, который уже стал традиционным для хабрастатей о новых Станциях. Это снова будут несколько историй про разные аспекты hardware-разработки: поговорим об исследованиях формы комнаты микрофонами, распространении света в прозрачном материале, а ещё о генеративных анимациях и неожиданной пользе от ПЛИС.
Читать дальше →
Всего голосов 124: ↑118 и ↓6 +112
Просмотры 37K
Комментарии 147

Про поддержку Certificate Transparency для национальных сертификатов

Блог компании Яндекс Информационная безопасность *Разработка веб-сайтов *Браузеры IT-компании

Недавно мы рассказывали Хабру про поддержку в Яндекс Браузере тех сайтов, которые перешли на использование национальных TLS-сертификатов. Если вы пропустили, то рекомендуем прочитать пост, он содержит ответы на популярные вопросы.  

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

Читать далее
Всего голосов 41: ↑36 и ↓5 +31
Просмотры 6.1K
Комментарии 11

Находим главное в отзывах. Опыт разработчиков геопоиска Яндекса

Блог компании Яндекс Интерфейсы *Геоинформационные сервисы *Машинное обучение *Natural Language Processing *


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

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

Мы поняли, что нужно учиться систематизировать отзывы и выделять главное. Этот пост — про то, как мы стремились состыковать интересы пользователей с доступными нам технологиями в машинном обучении и на фронтенде. Рассказывать буду достаточно подробно, чтобы вы прошли этот путь вместе со мной и увидели все пробы и ошибки. Возможно, по дороге у вас возникнут свои мысли о том, как можно решать подобную задачу.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 3.3K
Комментарии 14

Гайд по написанию и рефакторингу компонентов, которые хочется переиспользовать

Блог компании Яндекс Разработка веб-сайтов *JavaScript *Интерфейсы *ReactJS *
Tutorial
Случалось ли вам, выполняя какую-то задачу, понять, что самый простой путь — нажать Сtrl+C, Сtrl+V: перетащить из соседней папочки пару файлов, поменять пару строчек, и будет ок? Повторялось ли это ощущение? Я хочу рассказать о том, как боролся с этой проблемой и к чему пришёл вместе с командой. Назовём это решение «универсальные компоненты» (если у кого-то будет более удачное название для концепции, жду в коментариях). Примеры буду приводить в основном на React, но концепции будут общие.
Читать дальше →
Всего голосов 18: ↑14 и ↓4 +10
Просмотры 11K
Комментарии 6

Почему GPU обманывают о своей нагрузке и как с этим бороться

Блог компании Яндекс Высокая производительность *Сетевые технологии *Машинное обучение *Суперкомпьютеры
В предыдущем посте я рассказывал о том, как мы строили свои суперкомпьютеры. В этом — поделюсь опытом, который мы накопили, эксплуатируя наши кластеры. Этот опыт будет полезен не только тем, кто обучает огромные ML-модели. На грабли, о которых пойдёт речь, легко наступить, даже если вы специалист с парой GPU.



Почему в распределённом обучении нельзя доверять утилизации GPU? Почему переход в эру распределённого обучения — фундаментальный сдвиг парадигмы мышления, к которому должен быть готов каждый ML-разработчик? Ещё больше «Почему» и ответов на них — под катом.
Читать дальше →
Всего голосов 75: ↑74 и ↓1 +73
Просмотры 17K
Комментарии 8

Информация

Дата основания
Местоположение
Россия
Сайт
www.yandex.ru
Численность
свыше 10 000 человек
Дата регистрации