DeepSchool / underthehood
1.06K subscribers
253 photos
28 videos
5 files
125 links
Это канал школы deepschool.ru. Каждую неделю ведущим канала становится один из преподавателей или друзей школы. Каждую неделю: новый человек, новая область и домен, новые истории, наблюдения и рекомендации. Поддержка: @deepschool_support
Download Telegram
На выходных все тот же drill, только вид работы другой, однако вечером либо готовлюсь к занятиям либо играю на стимдеке либо онлайн гоняю в днд с самыми лучшими дндшниками на свете (вместе уже пять лет из моего 25-летнего днд-опыта). Если за неделю набралось достаточно гармонии души - могу сесть красить вархаммер под аудиокниги, что для меня сродни медитации.
7
Про пет-проекты

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

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

Довольно банально, однако имел положительный импaкт - CV с подсчетом грузовых автомобилей и их трекингом. Так сложилось, что вдоль забора моего ЖК проходит полоса асфальта для удобства проезда жителей; это выглядит как дорога, но не находится в реестре, сервитута нет, а также ее содержание ложится на плечи жителей. С развитием района и новостройками в его глубину, по этому участку, срезая себе путь, повадились ездить грузовики, самосвалы с грузом для возведения домов, большие туристические и даже регулярные автобусы. Да что говорить - даже простые авто вечером становились в пробку у нас под окнами и мешали спать возмущенными гудками; переходить свой же участок к супермаркету стало просто опасно (опять же - это не дорога, разметки нет). Жители, чьи окна выходят на дорогу, взвыли, а когда пришлось вывалить полтора ляма на ремонт дороги, взвыли уже все. Я решил, что необходимо закрыть этот участок от проезда, что можно сделать на общем собрании собственников. Для контраргументации противникам решения, заявлявшим, что они не видят потока, была предоставлена статистика и доказательства - с двух мест (на нижних этажах и верхних) жители установили камеры, и с помощью йолки и ByteTracker я отслеживал и считал поток машин в одну и другую стороны. Результат ужаснул даже меня, аргумент был принят, и вместо контролируемого шлагбаума, как планировали, вообще установили дорожные блоки, полностью перекрыв проезд для всех, кроме спецтранспорта.
13
Другой пет-проект чуть забавнее, но тоже с CV. Как-то, проснувшись утром, я понял, что нет больше лавочек перед домами, на которых бы пожилые люди могли сидеть и, глядя на молодежь, заниматься классификацией. Мне уже было за 30, самое время отращивать бороду, брать дробовик клюку в руки и гонять малолетних сорванцов, крадущих яблоки. Однако ни яблонь, ни лавочек у подъездов для старушек в нормальных каменных джунглях не найти; пропал целый пласт культуры, а коварный искусственный интеллект потихоньку отбирает нашу работу!!11одинодин
И вот было решено создать цифровую бабушку, которая могла бы, как в былые времена, четко определить твое социальное положение.

Кто ты?! Наркоман?! Или проститутка?!
😁17
С набором эвристик и InsightFace (его часть, которая про детект) был написан тг-бот, который определял пол и возраст по фотографии и ставил свой вердикт - если пол мужской, то, конечно же, ты наркоман, если женский - кто еще, как не проститутка? Но бабушки не любят френдли-файер, так что был добавлен лимит по возрасту: если тебе за 30 60, тогда ты уже соседушка, а если младше 15 - то дитятко. Все относительно шустро бегало даже на CPU.

В целом пет-проект принес мне кучу лулзов, немало людей беспалева присылали свои фото на анализ, добавляли бота в групповые чаты (плохая идея, я всякого начитался в логах).

Бота я давно выключил, кому интересно - код тут. На той же технологии строил mask of any faces - для ТГ/Дискорд ДнД-сервера - диффузионкой генерил по заданным параметрам персонажей и затем переносил лицо юзера и другой - с заменой лица на прегенеренные/кастомные картинки (тут довольно большой проект вышел). Было забавно, но с дальнейшим развитием диффузионок и, тем более, с недавним появлением нано-банана, такое становится все менее актуальным.
7
Еще один пет-проект, как настоящий рпг-шник и рогаликовод, запилил в виде игры. Хотелось потестить, как будут на одной слабенькой машине (M1) работать разные системы. Turn-based, top-down view, фентезийный мир (одна карта), у игрока 7 дней (каждый день приходит новый монстр), НПС дают квесты, торгуются за награду и просто общаются в роли с помощью LLM (файнтюненая Gemma 2:2B), прикручен простенький RAG с векторной БД (FAISS), и НПС/монстры, что рядом, могут подслушать и запомнить суммаризацию диалога; общение голосом с STT (Whisper) и TTS (Kokoro). Можно грабить корованы. У ГГ есть способность наорать на противников рядом оскорбления (вы и орете в микрофон), LLM оценит серьезность угрозы и, основываясь на этом, решит, насколько это было оскорбительно и сколько урона за это получат монстры. Ну и куча всего другого - алгосы поиска пути, выбора действий, fov, отдельная моделька для генережки токенов персонажей, удаления бэкграунда, генерации музыки и т.д.
🔥133👍1
Теперь о монстрах. Каждого хотелось сделать с упором на какой-нибудь аудио или ллм скилл:

1. Гоблины. Хилые, при получении урона начинают диалог, пытаясь обменять свою жизнь и свободу на золото; если видят, что у ГГ дела плохи — пытаются шантажировать и вытащить золото уже из него.
2. Тролль зеленый. Просто сильный, ходит, орет разные сгенеренные оскорбления голосом, мешая играть.
3. Тролль синий. Любит загадки, в бою может начать диалог и наносит экстра-урон, если не отгадаешь.
4. Кобольд-препод. В бою дает тест по английскому, требует найти ошибку в предложении и другие задачи на грамматику, больно наносит урон, если неверно.
5. Дриада - задача ее заманить обещаниями награды (тут ллмка сильно во флирт лезла) ГГ к ближайшему дереву, где она либо даст награду, либо станет сильнее и атакует.
6. Проклятый бард, вызывает в бою героя на поэтический батл, где тот должен закончить рифму в четверостишьи.
7. Неупокоенный призрак, каждый ход, где бы он ни был на карте, своим нытьем и стонами наносит игроку психический урон. Чтобы это наконец прекратилось, необходимо в диалоге разгадать прегенеренные LLM (строгий аутпут, конечно же) обстоятельства его смерти.

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

На сим про петпроекты все. Надеюсь, я развлек (а может быть, и вдохновил) вас рассказами о некоторых из них.
🔥102
Вот и прошла моя неделя с вами. Надеюсь рассказал нового и было где-то интересно, где-то полезно, где-то вдохновляюще, а где-то и то и другое и третье.

Спасибо что были со мной!

Пишите письма мелким почерком.
tg: @Telrielnor
public: @oaiohmy
github: github.com/Dimildizio
linkedin: linkedin.com/in/2dnk
16🔥10👍3
Всем привет!
Меня зовут Илья Димов и на этой неделе канал буду вести я. Кто-то уже может быть со мной знаком по DeepSchool - я пару раз засветился на ютуб-канале, помог с парой лекций на курсах по LLM и совсем немного с другими материалами)

В свободное от жизни время работаю в яндексе в команде претрейна VLM (visual language models, это как LLM, только еще умеют и видеть) - думаю о том, как вместить модель побольше и как заставить ее работать побыстрее.

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


1/3

Вначале я хотел бы просто поговорить о карьере - по моему опыту она зачастую складывается совсем непредсказуемым образом. Дело в том, что исходно я учился в лаборатории безопасности информационных систем ВМК МГУ, где и начал впервые работать как обычный python разработчик (передаю привет нашем прошлому админу Диме с его постами про кибербез!). Мне очень нравилось писать код, но по моим воспоминаниям, вреда от меня там было больше, чем пользы - я писал много страшного кода, а когда вставал в тупик, мучал всех остальных вопросами и отрывал от работы.

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

Вскоре я стал засматриваться на коллег, которые занимались не разработкой ПО, а аудитом безопасности, и очень захотел пойти к ним. Я начал читать различные материалы, прочитал очень сложно написанную книгу “The Tangled Web” про веб приложения (серьезно, я ее и рекомендую и не рекомендую одновременно, если решитесь читать, то лучше сделать это дважды, а то и трижды). На какое-то время это стало моим самым большим желанием и, прорешав пару модельных заданий на hackthebox и подобных ресурсах, попробовал пойти к ним. Вооружившись такими модными “уязвимостями” как XSS, XXE, CSRF, SQL injection я пошел на собеседование к своему же научному руководителю и с треском его провалил. Знания были поверхностные и бессистемные.
🔥2011
2/3

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

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

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

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

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


Подготовка к DL проходила сразу во всех направлениях - приходилось учить и ML (у меня его не было) и DL. Я сразу понял, что мне сильно интереснее практика и впоследствии вышло так, что теория хорошо легла на нее, хотя обычно все наоборот.

Я днями и ночами разбирал ноутбуки отсюда и различные cats & dogs из кегла. Где-то через месяц у меня появилось хорошее понимание того, как работает цикл обучения нейросетей, что такое сверточные, рекуррентные нейросети, атеншн и что из всего этого можно собрать.

Каждую неделю я думал, что еще немного изучу, и можно будет подаваться куда-нибудь, но судьба сложилась иначе: мой одногруппник Паша в тот момент уже работал в ABBYY и в один день подошел ко мне и сказал: “Я знаю, что ты ищешь работу в DL, я пореферил тебя в ABBYY, жди звонка”.

Пару дней переживаний и одно четырехчасовое собеседование по математике, ML, нейросетям, оптимизацией и общими вопросами по NLP, меня взяли, так и начался мой путь в DL. Остальным мучать вас не буду)
👍95
3/3

Лично я для себя понял несколько вещей:

Если изучаете что-то - изучайте глубоко, но не теряйте из вида “картины целиком”. Например вам стоит понимать отличия обычной RNN от LSTM или GRU, но не стоит учить наизусть все преобразования внутри LSTM. Здесь сложно найти баланс, особенно страшно переходить от одной темы к другой, но у меня бывало так, что осознание старого материала происходило во время изучения нового.

На мой взгляд самый лучший способ что-то изучить это иметь какой-то проект, который вы хотите сделать. Например, если хотите изучить, как работают LLM - не читайте просто ноутбук, который воспроизводит архитектуру GPT2, а попробуйте обучить свою модель на игрушечном датасете (например я в свое время так игрался с датасетом пьес Шейкспира). Если хотите изучить новый язык, то не просто прорешивайте на нем leetcode, а напишите сервер или другое приложение.

Не стоит бояться и пробовать что-то новое. Мне удалось попробовать себя в разных работах, пока я не дошел до DL. И даже в рамках DL не останаливайтесь - если сегодня занимаетесь LLM, а завтра влюбитесь в генерацию картинок диффузионками - скорее пробуйте, не откладывайте на завтра!
19
На этой позитивной ноте на сегодня все, поэтому держите мем с лысым котом, а уже завтра вернусь с интерактивом, поговорим немного про то, как понять, где модель тормозит!
😁125
Всем привет!
Задачку про ускорение обучения перенес на завтра, а сегодня поговорим про такую вещь как чтение статей. Достаточно часто проскакиевает вопрос: "как читать статьи, сколько статей читать?"

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

Какая-то фундаментальная статья, которая перевернет DL (например Attention is all you need) вряд ли от вас ускользнет, но если очень хочется следить за всем самому то рекомендую следующие ресурсы, которыми пользуюсь сам:

* https://www.alphaxiv.org - показывает популярные статьи и еще хорошо позволяет читать и аннотировать статьи с AI, но об этом в следующем посте!
* https://huggingface.co/papers/trending - список популярных статей от hf

Для поиска статей на определенные темы я обычно пользуюсь google scholar, но в последнее время просто прошу GPT-5 найти мне статьи на тему и сделать краткую сводку про что они, чтобы я мог выбрать, что читать.
🔥13💯3
В комментарии под предыдущим постом Дмитрий рассказал про свой пайплайн чтения статей, а теперь и моя очередь!

Долгое время я печатал на работе статьи и читал с бумажки, интересующие меня моменты я помечал ручкой или карандашом. В этом есть какой-то свой вайб, но по факту к статьям было очень тяжело вернуться. Часто я аннотировал предложения знаком "?" и через пару часов уже не мог вспомнить, а какой именно вопрос у меня был.

В итоге я перешел в https://www.alphaxiv.org/ - он позволяет читать статю вместе с LLM, т.е. вместо того, чтобы кидать статью в UI openai, все это интегрировано в одном сайте (пример на картинке после поста)

Во время ридинг клуба мне задали вопрос, на который у меня не было ответа и я задал его LLM и она сразу же дала ответ, в шутку коллеги это назвали vibe-разбором статьи.

Мне действительно больше нравится такой формат, т.к. он позволяет найти ответ на любой вопрос прямо во время чтения статьи без переключения на другие вкладки
🔥116👍4
8🤗6
Напоследок хочется еще похвалить alphaxiv — в нем хранится история чатов, также можно хайлайтить любой кусок статьи и писать туда свой комментарий. Все это, а также список статей, которые вы прочитали, читаете или просто пометили, хранится в одном приложении. Это очень удобно, и мне кажется, что тут хорошее соотношение усилий к результату.


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


Unpopular opinion: все фичи, которые подобные системы хранения заметок предоставляли, скорее мешают. Я мог несколько часов потратить на переделывание БД в Notion вместо того, чтобы сделать что-то по-настоящему полезное.


Для себя я понял, что любая подобная система должна служить вам, а не наоборот.
13👍6
конец дня - время для мема
😁16💯6
Как и обещал, сегодня интерактив!

Вот такой вот простой код на питоне с функцией активации gelu. Хочется его ускорить минимальными усилиями, желательно вообще одной строчкой. Что делать?
🤔5🤯2
Не ожидал, что вы накидаете столько вариантов! Все они по-своему валидны, но я задумывал рассказать про torch.compile(). Кодом со скриншота можно снять профили и залить их потом в perfetto, чтобы помотреть трейсы.

По данному трейсу можно увидеть, что на CPU наш обычный код занимает 94 микросекунды на CPU, но нам это не очень интересно, гораздо важнее, что на GPU он работает 760 микросекунд и состоит из вызова 7 кернелов. Трейс же скомпилированного кернела занимает 90 микросекунд на GPU , что в 8.4 раза быстрее
6🔥4