Скользящие средние

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

9 октября 2024 г. · 3 минуты · Anton Golubtsov

Хаотично-добрый

Несколько дней назад менеджер из соседней команды спросил меня, почему в разделе «Чем я занимаюсь» моего рабочего профиля указано «Chaotic Good» (Хаотично-добрый). Этот вопрос не выходит у меня из головы, поэтому нужно записать свои мысли, чтобы освободиться. Если коротко, это просто глупый мем из нескольких лет назад, который я решил использовать как рабочий девиз вместо «глупости и смелости», поскольку почувствовал, что новый лучше отражает ту работу, которую я выполнял в то время. ...

7 октября 2024 г. · 3 минуты · Anton Golubtsov

Классическая Заправка для Салата

Ингредиенты У меня нет понятия, сколько именно ингредиентов вам понадобится, все измерения приблизительны. Бальзамический уксус или любая кислая субстанция. Попробуйте сок лайма — у него приятный аромат. 1–2 ст. ложки. Наверное. Оливковое масло или любое другое масло, попробуйте арахисовое. 3–6 ст. ложек. Кто знает, сколько точно. Горчица. Это стабилизатор, чтобы сохранить эмульсию. Немного. Соль. Щепотка? Перец. Немного. Процесс Смешайте все ингредиенты и перемешивайте минуту, пока не образуется эмульсия. ...

3 октября 2024 г. · 1 минута · Anton Golubtsov

Алгоритмы шардинга (разделения) данных

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

30 сентября 2024 г. · 5 минут · Anton Golubtsov

Вопрос на собеседовании: библиотека парсинга логов

Один из вопросов, которые я часто задаю на собеседованиях, - это разработка библиотеки обработки логов: Вам нужно написать библиотеку для обработки логов в следующем формате: метка_времени<TAB>сообщение Библиотека будет передана другой команде для дальнейшей поддержки и улучшений, поэтому поддерживаемость и расширяемость являются самыми важными требованиями. Библиотека должна поддерживать следующие операции “из коробки”: фильтрация подсчет гистограммы Первоначальная версия также включала некоторые языковые и фоновые особенности, которые я никогда не включаю в свою оценку, потому что считаю, что они ставят кандидата в положение, когда ему нужно угадать мои ожидания. ...

29 сентября 2024 г. · 4 минуты · Anton Golubtsov

Вопрос на собеседовании: Оптимизация затрат на чтение с диска

Один из вопросов, который я действительно люблю задавать во время кодовых собеседований, звучит так: Дан непрерывный поток слов, словарь на диске и стоимость чтения с диска, создайте потоковый процессор, который возвращает true, когда слово существует в словаре, при этом минимизируя затраты на чтение с диска. Пример: Словарь: {Собака, Кошка, Птица, Лев, ...} Входные данные: [Собака, Кошка, Агхд, ...] Выходные данные: [True, True, False, ...] Выходные данные true, true, false, потому что “собака” и “кошка” существуют в словаре слов, а “Агхд” не считается словом. ...

24 сентября 2024 г. · 3 минуты · Anton Golubtsov

Написание пользовательских историй и требований

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

18 сентября 2024 г. · 4 минуты · Anton Golubtsov

Высокотехнологичные Энергетические (Внимание) Вампиры

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

15 сентября 2024 г. · 2 минуты · Anton Golubtsov

Политики вытеснения кэша: LRU vs Random vs p2c

Каждое интервью я провожу для старших инженеров-программистов в Amazon. В этих интервью я задаю более-менее одни и те же вопросы. Один из них предполагает добавление логики кэширования для улучшения результатов. Я заметил, что кандидаты часто совершают две ошибки, которые мешают им выделиться как профессионалам: Они не знают или не обсуждают условия, при которых кэш работает наилучшим образом. В частности, как распределение частоты запросов влияет на производительность кэша. Они не знают стандартную библиотеку выбранного ими языка программирования. В этой статье мы попытаемся разобраться с этими проблемами. ...

15 сентября 2024 г. · 7 минут · Anton Golubtsov

Ultra-locality in Decision Making and Free Will

На этот раз мы исследуем замечательный мир ультра-локальности в принятии решений и ее связь со свободой воли, добром, злом и Богом. Часть первая: Ультра-локальность и свобода воли Та же самая Joscha Bach: Life, Intelligence, Consciousness, AI & the Future of Humans | Lex Fridman Podcast #392 подкаст, о котором я упоминал в предыдущем посте AI, люди, деревья и грибы: одно и то же программное обеспечение, разное оборудование, вызвала другую цепочку мыслей. Йошка говорил о том, как наши нейроны всегда работают, используя доступные здесь и сейчас данные. Этого достаточно для построения сложных систем, таких как человеческий мозг. Работая вместе, нейроны формируют части, ответственные за память, обработку изображений, шины данных и т.д. Но в конечном итоге каждый из них индивидуально работает только с данными, предоставленными другими нейронами. Аналогичным образом нейронные сети в GPT представляют собой просто перемножение матриц, соединенных друг с другом, образуя память, внимание, генерацию и т.д. ...

23 марта 2024 г. · 5 минут · Anton Golubtsov