Pull to refresh
32
0.1
Авдосев Никита @avdosev

ML-разработчик

Send message

Что нужно знать, чтобы успешно пройти System Design Interview

Reading time16 min
Views45K

Для любого разработчика глубокое понимание основных принципов системного проектирования является необходимым условием для создания стабильных и масштабируемых программных систем, способных обеспечивать высокую производительность. Системное проектирование (System Design) включает разработку архитектуры и структуры программной системы, направленную на удовлетворение специфических требований и обеспечение требуемых показателей производительности.

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

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

Читать далее
Total votes 49: ↑47 and ↓2+56
Comments26

Алгоритм расчёта расстояния между строками

Level of difficultyMedium
Reading time3 min
Views7K

По работе стояла задача оптимизации поиска по адресам (улицы, дома и объекты). Главный критерий - нахождение адреса, если написано с ошибками или не дописан он в полной мере. Bert’ы, косинусные расстояния эмбеддингов и т.д. не подходили, так как они заточены под смысловой поиск, а в адресах смысла нет. TF-IDF c лемматизацией тоже не очень подходил для этой задачи, результаты были плохие.

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

Цель данного поста описание только алгоритма.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments17

Отопление майнингом. Как я грею дом бесплатно

Level of difficultyMedium
Reading time3 min
Views28K

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

В моём случае майнинговое отопление максимально выгодно: объект коммерческий, с розеткой 7 р/кВт, отопление электрическое, газа нет вообще, на объекте постоянно люди.

Читать далее
Total votes 42: ↑39 and ↓3+51
Comments54

Как Apple на самом деле следит за вами

Level of difficultyEasy
Reading time12 min
Views38K

По счастливой случайности я оказался резидентом Евросоюза, а значит, на меня также распространяется GDPR. Он позволяет мне запросить копию информации, которая хранится обо мне у всяких разных компаний. Я решил сделать это у Apple, и был неприятно удивлен.

Apple старается собирать как можно меньше данных.

Читать далее
Total votes 144: ↑129 and ↓15+142
Comments152

Странная история о вездесущих тараканах. Сбой в матрице или когнитивный феномен?

Reading time5 min
Views11K

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

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

Читать далее
Total votes 34: ↑30 and ↓4+32
Comments38

Почему я отказался от разработки игр на Rust, часть 1

Level of difficultyMedium
Reading time19 min
Views30K

Предисловие: этот пост представляет собой очень длинный перечень мыслей и проблем, возникавших у меня за годы работы; также в нём рассматриваются некоторые из аргументов, которые мне часто говорили. В посте выражено моё мнение, сформировавшееся у меня в процессе разработки игр на Rust в течение многих тысяч часов на протяжении многих лет и после множества завершённых игр. Это не хвастовство и не показатель успеха, я просто хочу сказать, что вложил достаточно много усилий в Rust; здесь не получится сказать «когда наберёшься опыта, тебе всё станет понятно».

Пост не будет ни научной оценкой, ни A/B-исследованием. Это моё личное мнение после разработки игр на Rust маленькой инди-командой (два человека) в попытках заработать достаточно денег, чтобы финансировать процесс. Мы не одни из тех разработчиков с бесконечными финансами от инвестора и многолетним запасом времени. Если вы находитесь в этой категории и получаете удовольствие от многолетней разработки систем, то всё написанное ниже к вам не относится. Я рассматриваю всё с такой точки зрения: «Мне хочется создать игру максимум за 3-12 месяцев, чтобы люди могли сыграть в неё, а я — немного заработать». Статья не написана с точки зрения «Я хочу изучить Rust, а разработка игр — это весело», хотя это и вполне нормальная цель; просто она никак не согласуется с тем, чего хотим мы — заниматься разработкой игр коммерчески успешным и самодостаточным образом.

Мы выпустили несколько игр на Rust, Godot, Unity и Unreal Engine, и многие люди сыграли в них в Steam. Мы создали с нуля собственный игровой 2D-движок с простым рендерером, а также в течение нескольких лет использовали Bevy и Macroquad во многих проектах, некоторые из которых были очень нетривиальными. Кроме того, я бэкенд-разработчик на полную ставку и пишу код на Rust. Этот пост — не какое-то поверхностное мнение после изучения нескольких туториалов или разработки небольшой игры для геймджема. За три с лишним года мы написали сильно больше ста тысяч строк кода на Rust.

Задача этого поста — развеять популярные и часто повторяемые аргументы. Но это всё-таки субъективное мнение; по большей части я написал пост, чтобы не объяснять снова и снова одно и то же. Пусть это будет справочный материал о том, почему мы, скорее всего, откажемся от Rust как от инструмента для разработки игр. Мы ни в коем случае не планируем прекращать создавать игры, просто не будем делать это на Rust.

Читать далее
Total votes 68: ↑65 and ↓3+81
Comments82

Похоже, я придумал свой алгоритм поиска кратчайшего пути (upd: меня опередили...)

Level of difficultyMedium
Reading time17 min
Views37K

Всем привет! Я реализовал, похоже, собственный алгоритм поиска кратчайшего пути с отрицательными ребрами графа.

Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)

Додумался я до него путем модификации классического Дейкстры. Прошу адекватно отнестись к содержимому, ибо это моя первая статья, и, возможно, я ничего не придумывал и, вообще, этот алгоритм не работает вовсе (но по многочисленным тестам он работает правильно).

Читать далее
Total votes 102: ↑94 and ↓8+102
Comments111

Проблема: Wi-Fi работает только во время дождя

Level of difficultyEasy
Reading time6 min
Views48K
Вот что ответил отец на мой вопрос о проблеме с домашним подключением к интернету: «Wi-Fi работает, только когда идёт дождь».


Давайте сделаем шаг назад, чтобы осознать смехотворность этой ситуации.

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

Мой отец — инженер, он работал с сетевым оборудованием, ещё когда я не родился. В основанной им компании он проектировал и внедрял множество сложных сетевых систем в организациях по всей стране: от гигабитного Ethernet для офисного здания до междугородных соединений при помощи микроволновых линий связи прямой области видимости.

Он последний, кто мог бы сказать нечто столь абсурдное.

«Что?», — удивлённо произнёс я. «Wi-Fi работает, только когда идёт дождь. Это началось пару недель назад, у меня пока не было времени с этим разобраться», — повторил он терпеливо.
Читать дальше →
Total votes 133: ↑124 and ↓9+143
Comments144

Размышления о высококачественных данных, собранных людьми

Level of difficultyHard
Reading time19 min
Views4.5K


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

Сообщество разработчиков машинного обучения осознает ценность высококачественных данных, но почему-то складывается впечатление, что «все хотят работать над моделями, а не над данными» (Sambasivan et al. 2021).


Рисунок 1. Два направления обеспечения высокого качества данных.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments2

В поисках аномалии: одноклассовая классификация текстов с помощью расхождения Кульбака—Лейблера

Level of difficultyMedium
Reading time9 min
Views2.6K

Привет, Хабр! На связи участница профессионального сообщества NTA Корсакова Елена.

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

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments10

Почему не любят продакт-менеджеров и как стать одним из них, если вы к этому готовы

Level of difficultyEasy
Reading time5 min
Views9K

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

Читать далее
Total votes 10: ↑7 and ↓3+7
Comments5

Как при помощи нейросети восстанавливали обугленные свитки из Помпеи (угадайте, с каким контентом внутри)

Reading time13 min
Views22K
image
Результат одной из попыток физически развернуть обугленный свиток

С этими свитками из библиотеки в Геркулануме пошло не так абсолютно всё. Они на папирусе, который состоит из нескольких слоёв расплющенных и спрессованных тростниковых стеблей. Высушенный тростник легко воспламеняется. Температура пирокластических потоков, извергнутых Везувием, достигала 700 ᵒС, поэтому вот что вы видите на фото выше. Впрочем, манускриптам из Геркуланума ещё повезло: из-за высокой скорости движения и температуры газово-пепловых туч воздух из помещений, где они хранились, быстро вытеснился, и папирусы не сгорели, а обуглились.

Сверху у них — грязь селя. Дальше — выпавший из эруптивной колонны вулканический пепел. Получилась довольно прочная оболочка — это «запечатало» помещения, не дав воздуху и влаге окончательно добить бесценные рукописи, буквально законсервировав их почти на 2 000 лет.

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

Но сейчас удаётся восстановить часть контента с этих древних свитков. Кажется, нам достался самый популярный греческий контент — предметные инструкции, как радоваться жизни. Довольно прикладные.
Читать дальше →
Total votes 59: ↑58 and ↓1+77
Comments23

Управление цветами в Seaborn: как визуализировать данные красиво

Level of difficultyMedium
Reading time20 min
Views11K

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

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

Меня зовут Саша, сейчас я работаю в Lamoda Tech старшим бизнес/дата-аналитиком. До этого я несколько лет был специалистом по данным в другой компании и регулярно представлял совету директоров анализ и прогноз физических и бизнес-показателей. Умение донести результаты исследования до заказчика, особенно если он не погружен в работу с данными — это важный аспект моей профессии. Надеюсь, моя статья с этим немного поможет.

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments8

Quantization Deep Dive, или Введение в современную квантизацию

Level of difficultyMedium
Reading time16 min
Views22K

Привет! Меня зовут Василий Землянов, я занимаюсь разработкой ML-инфраструктуры. Несколько лет я проработал в команде, которая делает споттер — специальную маленькую нейросетевую модельку, которая живёт в умных колонках Яндекса и ждёт от пользователя слова «Алиса». Одной из моих задач в этой команде была квантизация моделей. На пользовательских устройствах мало ресурсов, и мы решили, что за счёт квантизации сможем их сэкономить — так в итоге и вышло.

Потом я перешёл в команду YandexGPT. Вместо маленьких моделей я стал работать с очень крупными. Мне стало интересно, как устроена квантизация больших языковых моделей (LLM). Ещё меня очень впечатляли истории, где люди берут гигантские нейросети, квантизируют в 4 бита и умудряются запускать их на ноутбуках. Я решил разобраться, как это делается, и собрал материал на доклад для коллег и друзей. А потом пришла мысль поделиться знаниями с более широкой аудиторией, оформив их в статью. Так я и оказался на Хабре :)

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

Читать далее
Total votes 66: ↑65 and ↓1+81
Comments13

Смысл жизни с точки зрения программиста-буддиста

Level of difficultyEasy
Reading time24 min
Views14K

Несколько лет тому назад я опубликовал на Хабре статью под названием "Буддизм с точки зрения программиста". Этот пост имел огромную популярность, читатели приняли его с большой теплотой. До сих пор я часто получаю от людей сообщения с благодарными отзывами на него и рассказами о том, как после прочтения этого текста поменялись их взгляды на жизнь.

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

Читать далее
Total votes 62: ↑53 and ↓9+51
Comments131

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

Level of difficultyEasy
Reading time8 min
Views295K

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

Читать далее
Total votes 239: ↑217 and ↓22+244
Comments295

Я написал бесплатную книгу для профессионалов в области AI (и не только)

Level of difficultyHard
Reading time2 min
Views17K

Привет, Хабр! Меня зовут Никита Горячев, работаю в позиции AI/ML Engineer в Сбере. В мой скоуп входит работа с SOTA (state-of-the-art) алгоритмами в областях NLP и RecSys.

Книга написана в форме Guide Book с теоретическими и практическими заданиями. Ниже написал анонс в виде Q&A, чтобы вы на первых двух пунктах смогли понять, интересно ли вам.

Ссылка на книгу

Читать далее
Total votes 18: ↑13 and ↓5+10
Comments24

Как за один pet-проект получить два диплома

Level of difficultyMedium
Reading time12 min
Views24K

Все же знают серию компьютерных футбольных симуляторов FIFA? Раньше я много играл в эту игру. Кто-то скажет, что это бесполезная трата времени, но я с этим не согласен. Эта игра вдохновила меня на разработку pet-проекта, который стал моим бакалаврским дипломом.

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

Читать далее
Total votes 61: ↑61 and ↓0+61
Comments22

Азы больших языковых моделей и трансформеров: декодер

Level of difficultyHard
Reading time14 min
Views8.1K

В этом материале мы поговорим об устройстве компонента‑декодера в системах машинного обучения, построенных по архитектуре «трансформер», уделив особое внимание отличию декодера от энкодера. Уникальной особенностью декодеров является то, что они похожи на циклы. Они, по своей природе, итеративны, что контрастирует с линейными принципами обработки данных, на которых основаны энкодеры. В центре декодера находятся две модифицированные формы механизма внимания: механизм множественного внимания с маскировкой (masked multi‑head attention) и механизм множественного внимания энкодера‑декодера (encoder‑decoder multi‑head attention).

Слой множественного внимания с маскировкой в декодере обеспечивает последовательную обработку токенов. Благодаря такому подходу предотвращается воздействие последующих токенов на сгенерированные токены. Маскировка важна для поддержки порядка следования и согласованности сгенерированных данных. Взаимодействие между выходом декодера (из слоя множественного внимания с маскировкой) и выходом энкодера организовано с помощью механизма множественного внимания энкодера‑декодера. Этот последний шаг даёт декодеру доступ к входным данным.

Мы, кроме того, продемонстрируем реализацию этих концепций с использованием Python и NumPy. Мы создали простой пример перевода предложения с английского языка на португальский. Практическая демонстрация обсуждаемых здесь идей поможет проиллюстрировать работу внутренних механизмов декодера в трансформерах и позволит лучше понять роль декодеров в больших языковых моделях (Large Language Model, LLM).

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments0

Information

Rating
3,986-th
Location
Волгоград, Волгоградская обл., Россия
Registered
Activity