Java Developer
Архитектура рекомендаций: как дать пользователю соцсети то, что ему понравится
Сегодня я расскажу, про базовое решение задачи рекомендации текстового контента на конкретном примере — ленте одной российской социальной сети. Посмотрим, что под капотом у сервиса рекомендаций, какие данные нужны для построения векторов пользователей, как ранжируются посты и к какой архитектуре рекомендательной системы мы пришли спустя несколько месяцев экспериментов.
Всё, что вам нужно — это внимание (часть 1)
Примечание переводчика: Недавно на Хабре мы рассказывали о статьях, которые нужно прочитать, если вы хотите заниматься искусственным интеллектом. Среди них была культовая статья Attention is all you need, выпущенная в 2017 году. С неё началось развитие больших языковых моделей, в том числе всем известного чат-бота ChatGPT. Оказалось, что у такой важной статьи нет перевода на русский язык. Мы решили исправить это. Ниже вы найдёте перевод первой части статьи, вторая часть доступна по ссылке.
Краткое содержание
Наиболее распространённые модели преобразования последовательностей основаны на сложных рекуррентных или свёрточных нейронных сетях, которые включают энкодер и декодер. В самых успешных моделях энкодер и декодер соединяются с помощью механизма внимания. В статье авторы предлагают новую простую архитектуру нейронных сетей — Трансформер. Он основан исключительно на механизмах внимания, без рекуррентности или свёрток. Эксперименты на двух задачах машинного перевода показали лучшее качество, а также больше возможностей к распараллеливанию и меньшие временные затраты на обучение. Модель достигает 28.4 по метрике BLEU на задаче перевода с английского на немецкий на данных WMT 2014, что превосходит предыдущий лучший результат на 2 пункта. На задаче перевода с английского на французский на данных WMT 2014 модель достигла наилучшего результата для решения, основанного на одной модели — 41.8 по метрике BLEU — после всего 3.5 дней обучения на 8 GPU, что составляет совсем небольшую часть тех вычислительных мощностей, которые были затрачены на обучение лучшей модели, известной из имеющихся публикаций. Авторы показывают, что Трансформер может также успешно применяться и в других задачах, таких как, например, синтаксический разбор предложений на английском языке с использованием как больших, так и весьма ограниченных наборов данных для обучения.
SourceBuddy динамически компилирует исходный код Java
Через два месяца после первого коммита в октябре 2022 года Питер Верхас, старший архитектор EPAM Systems, выпустил версию 2.0.0 SourceBuddy, новой утилиты, которая компилирует динамически исходный код Java, заданный в строке или файле, в файл класса.
Утилит SourceBuddy требует Java 17 и представляет собой упрощенный фасад для компилятора javac
, который обеспечивает ту же функциональность.
Версия 2.0.0 поддерживает комбинацию скрытых и нескрытых классов во время компиляции и выполнения. Кроме того, был упрощен API, включая критические изменения, такие как изменение метода loadHidden()
на метод hidden()
, поэтому и выпущен новый основной релиз. Полный обзор изменений для каждой версии доступен в документации по выпускам на GitHub.
Обзор книги «Data Science. Наука о данных с нуля», отличная книга для начинающих
Всем доброго времени суток! Так как о Data Science мы слышим всё чаще и чаще, предлагаю вам обзор книги, что будет полезна для начинающих.
Публикую обзор книги с моего телеграмм-канала IT-старт t.me/it_begin на книгу "Data Science.Наука о данных для начинающих".
Автор книги Джоэл Грас.
Стоит читать? Да! Почему? Опишу в статье.
PostgreSQL Antipatterns: Индиана Джонс и максимальное значение ключа, или В поисках «последних» записей
Сегодняшняя задача вполне традиционна для любых учетных систем - поиск записей, содержащих максимальное значение по каждому из ключей. Что-то вроде "покажи мне последний заказ по каждому из клиентов", если переводить в прикладную область.
Кажется, что тут и споткнуться-то негде в реализации - но все оказывается совсем не тривиально.
DI.kt: одна из первых DI библиотек для Kotlin Multiplatform
Прошу приветствовать одну из первых DI библиотек для Kotlin multiplatform — DI.kt.
Вы можете спросить: «А зачем нам ещё DI либы?». Долгое время полноценного DI для Kotlin Multiplatform не было. Существующие библиотеки — это сервис-локаторы (Koin, Kodein, Popkorn), которые не валидируют граф зависимостей во время компиляции. А это одна из важнейших фич многих привычных Java и Android сообществам DI библиотек и фреймворков. Чтобы принести эту фичу в Kotlin Multiplatform, я и написал DI.kt. Библиотека намного проще привычного нам Dagger — нет мультибиндингов и прочих концептов, которые делают его таким сложным в освоении (и периодически используются неправильно).
Как и почему перешли с Python на Go в основном сервисе рекомендаций Авито
Привет! Меня зовут Василий Копытов, я руковожу группой разработки рекомендаций в Авито. Мы занимается системами, которые предоставляют пользователю персонализированные объявления на сайте и в приложениях. На примере нашего основного сервиса покажу, когда стоит переходить с Python на Go, а когда нужно оставить всё как есть. В конце дам несколько советов по оптимизации сервисов на Python.
Управление временем в Java приложениях
В продуктовой Java-разработке часто требуется сохранять дату и время в базу данных. Это может быть фиксация времени создания\последней модификации какого-либо объекта или указание срока действия документа, билета и т.п. Сама по себе эта задача несложная. Трудности возникают, когда мы хотим подобную систему протестировать и оценить, как она будет вести себя, скажем, через полгода или год. В будущем. Ниже я покажу несколько простых и изящных приёмов, которые позволят вам почувствовать себя настоящим доктором Стрэнджем…
Netflix. Архитектура системы персонализации и рекомендаций
Перевод неточный, некоторые куски пропущены, так как показались мне повторением уже высказанных выше мыслей, некоторые - уточнены и дополнены примерами.
В предыдущих постах о персонализации в Netflix уже говорилось о том, что и данные, и алгоритмы их обработки одинаковы важны в задаче персонализации пользовательского опыта. Также важно вовлекать пользователя в систему рекомендаций - получать от него так больше откликов и данных. Сегодня мы поговорим о том, как может выглядеть архитектура, которая может максимизировать пользу от собираемых данных и поддерживает возможность быстрого внедрения нововведений.
Глубокое погружение в рекомендательную систему Netflix
Как Netflix добился 80 процентов от всего своего стримингового времени благодаря персонализации.
Где быстрее купить жилье айтишнику? Считаем деньги в топ-10 IT-странах
Поговорим о деньгах в рамках моего мини проекта “Где программисту жить хорошо”. Сначала посчитаем, сколько денег можно накопить среднем разработчику в год после стандартных ежемесячных расходов и налогов, а потом прикинем, как быстро можно будет купить квартиру на накопления.
FYI, это 3-я статья из 6 в цикле. Ниже полный список статей, выпускаю раз в неделю:
Как выбрать, куда иммигрировать. 10 главных критериев.
Одной Долиной сыт не будешь. Где еще реализовать амбиции айтишнику. Топ-10 IT-стран.
Где старость сытнее и дети счастливее. Социальная защищенность в ТОП-10 IT-странах.
Где не стать своим. Интеграция в ТОП-10 IT-стран.
Краткий гайд по визам в ТОП-10 IT-стран.
И последнее – список стран для сравнения: США, Канада, Германия, Нидерланды, Швейцария, Великобритания, Кипр, Польша, Израиль и Австралия.
Финансовые накопления
Прежде всего меня интересовал годовой остаток от зарплаты разработчика при расходах на семью из 4-х человек. Если уж большая семья проживет на 1 зарплату, то одинокому программисту будет куда разгуляться. Для подсчетов я взяла 4 переменных для каждого региона. И это:
Как проводить 1:1: гайд для разработчиков, а не менеджеров
Если вы пересекаетесь с вашим линейным менеджером только тогда, когда нужно подписать отпуск или приходите к нему с оффером от другой компании, то что-то идёт не так. Чтобы получать качественный фидбек и расти в желаемую сторону нужно понять, что проведение 1:1 это не обязанность вашего менеджера, а ваша общая. Стоит помнить, что с менеджерами работает такое же правило, как и с разработчиками: хороших меньшинство. Так что если вы оставите проведение 1:1 полностью на них, то рано или поздно вы разочаруетесь. Тут я собрал основные советы о том, как подходить к 1:1 разработчику (на самом деле эти же правила применимы и для любой другой специальности).
Избавляемся от boilerplate кода в Protocol Buffers 2
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity