Telegram Web
Два дня боролся с утечкой памяти в доставшемся по наследству deep learning пайплайне. Оказалось, что на самом деле их две, а ведь в языках с автоматической очисткой памяти это довольно редкий зверь.

Первый лик нашелся относительно легко при помощи pympler. Дальше началось странное, потому что pympler не видел новые объекты, а память потихоньку утекала - медленно, но верно.

Для победы пришлось отбросить ковбойский подход "ща я тут дебаггером влезу, на код гляну и все быстро пойму" и перейти к divide and conquer:
- беру кусок пайплайна;
- вместо настоящего выполнения кэширую;
- смотрю, течет или нет.

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

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

Мораль такая: даже если ты не разбираешься в проблеме, декомпозиция и базовая автоматизация (инструменты, склеенные скотчем) помогут.
Полгода назад я выступал на Bulbacon и, отвечая на вопросы, сказал что-то вроде: "Через год называть себя дата сайнтистом станет зашкваром", подразумевая дурную славу некачественного кода в духе "я тут чего-то нафигачил в jupyter notebook" и намекая, что всем машинлернерам стоит учиться писать более или менее чистый код.

Тем временем в Python developers survey 2019 появился провокационный вопрос.
👍2
Обнаружил сервис для не самых умных, но не безответственных unix-пользователей.

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

Собственно, для этого и нужен explain shell. Пример с классическим sudo rm -rf.
Работа ML инженера со стороны: "надо запустить jupyter и обучить еще одну сложную нейронную сеть"
Работа ML инженера изнутри: "так, пора бы ебануть еще одну абстрактную фабрику"
У меня может быть confirmation bias, но кажется, что deep learning для компьютерного зрения в 3d вылазит из пещер и потихоньку идет в массы.

На Kaggle запустились два конкурса (1, 2) про 3d картинки (что характерно, оба про беспилотные тачки).

На глаза стали попадаться всякие pytorch библиотеки для работы с 3d объектами: kaolin, torch3d, kornia. Две первые - совсем свежие, последняя зародилась с год назад; примерно тогда же нам в WANNABY пришлось написать что-то такое самостоятельно, подглядывая в учебники и исходный код OpenCV (где большая часть примитивов давно есть, но не для модных DL-пацанчиков).

Наконец, на arxiv по запросу "3d deep learning" тоже явный рост: 170 работ в 2017, 255 работ в 2018, 282 - в незакончившемся 2019. Хотя тут нужно бы отнормировать на общее количество статей: DL хайп еще не закончился, экстенсивное развитие продолжается.
Channel photo updated
Спонсор картинки для канала - tensorboard, в котором я только что увидел такой семпл
Плюсы работы в computer vision: иногда смотришь на смешные картинки и видосы.
Минусы работы в computer vision: иногда смотришь на жуткие картинки и видосы.
Часто это происходит одновременно.
Из вчерашней беседы с Алексеем (@simplestupid):
«если в случайном предложении заменить data scientist на "астролог" или "гомеопат", связность текста обычно не страдает».
Одна из самых важных вещей в профессиональном развитии - поработать с фанатиками. Правильный фанатик должен (1) обладать достаточно глубокими знаниями в некоторой нише, (2) быть нетерпимым к посредственной, по его меркам, работе.

Такой фанатик может быть неприятным человеком, а его критерии абсолютно неадекватны в текущем контексте. Зато через его придирки можно очень быстро научиться хотя бы базовым приемам (80 на 20, как обычно) и составить свое представление о том, что такое хорошо и что такое плохо. Необязательно делать быстродействие вашего кода религией, но поработать с человеком, который стремится любой ценой оптимизировать все сколько-нибудь заметные в профайлере функции - очень полезно.

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

А вот если ваши коллеги - скучные посредственности, неготовые выставить планку повыше хоть в чем-нибудь, постарайтесь не задерживаться в такой команде. Деградация - бессердечная сука.
👍3🔥1
Если вы жалуетесь на высокое и постоянно растущее количество сущностей (будь то новые фреймворки на гитхабе или deep learning статьи на arxiv.org) в нашей условно интеллектуальной профессии, знайте, что вы серьезно опоздали с этими жалобами.

“Уже в 1600 г. Уильям Гильберт жаловался, что интеллектуалы должны ориентироваться в «столь обширном океане книг, которые смущают и утомляют умы занимающихся наукой»” - Дэвид Вуттон, “Изобретение науки. Новая история научной революции”
Большинство статей "топ 10 технологий 2010-ых" или "что нас ждет в 2020-ых" - неинтересный кликбейт, да еще и отражающий значительный bias автора.

В противоположность, статья https://habr.com/ru/post/481844/ выглядит максимально объективной и здравой, без перегибов типа "Мы на пороге сильного ИИ" и "AI winter is coming".
Если новогодние каникулы окончательно вам наскучили, предлагаю такое странное развлечение: программирование на татарском https://github.com/minteemer/ElanTele/blob/master/example.et
Хороший текст о самоидентификации через работу.

Я не согласен ровно с одним тезисом: "нормальный человек не может себя ассоциировать с тем, что он делает на этой работе" - почему бы и нет, иногда получается. Только надо понимать, насколько эта самоидентификация через работу твоя собственная, а насколько - результат пропаганды на тему we're making world a better place.

И, как говорят в ML тусовочке, остерегайтесь оверфита (т.е. диверсифицируйте источники эндорфинов). Чем больше себя вы идентифицируете с модным стартапом, который "помогает миллионам людей…", тем сильнее может ебануть в один не самый прекрасный день.
👍1
Пока в Москве шутят про то что стало трудно дышать из-за запаха выгоревших миллениалов, на западе уже во всю тревожатся за психическое здоровье людей из тех-индустрии. Болезни на фоне стресса, депрессия и участившиеся самоубийства - чего только нет. Я в своём кругу друзей и знакомых совсем тяжелых случаев не видел пока, но замечаю, что все чаще люди задают вопрос «а чем я вообще занимаюсь?».

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

Ежедневный поиск продакт маркет фита, написание кода по запросу какой-то обезьяны, организация очередного конкурса по перетягиванию каната на лугу за МКАДОМ, борьба за доли процентов в метриках, погоня за партнерствами и интеграциями - не характеризуют и не описывают вас как человека, не отвечают на вопрос «кто я» и, уж тем более, «зачем».

Если вы, допустим, занимаетесь платежками и считаете, что вы ПОМОГАЕТЕ МИЛЛИОНАМ ЛЮДЕЙ УДОБНЕЕ СОВЕРШАТЬ ПОКУПКИ ОНЛАЕН, то сэкономьте себе время и не читайте дальше. Увидимся лет через 10 у невролога.

В какой-то момент тех-индустрия стала, по сути, работой на заводе. А мы, техножрецы её, стали пролетариатом. Порог входа низкий. Чтобы получить работу достаточно просто иметь температуру тела в районе 36 градусов. Если в начале ХХ века твой дед шел из деревни (где ему не дали работать) на завод, то теперь ты идешь из университета (где тебе не объяснили разницу между фундаментальной и прикладной наукой) в ВЫСОКОТЕХНОЛОГИЧНУЮ отрасль.

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

И тут мне вспоминается один мой товарищ финансист. Задолго до самовозгорания миллениалов, еще где-то в 2005-м, он использовал прием, который тогда мне казался просто забавной причудой. Большую часть времени он занимался финансовой стороной слияний-поглощений и прочих больших проектов, занимая директорские и C-level позиции в банках. А в свободные часы (а с такой работой, скорее, минуты) он писал рассказы. И даже умудрился пару лет отучиться в Горьковском литинституте. На тот момент он ни одной строчки не опубликовал. Так вот. Везде, кроме деловых встреч, он представлялся ПИСАТЕЛЕМ. Когда было хорошее настроение - говорил еще что он «немецкий писатель». Тогда, 15 лет назад, это было просто забавно. Я еще тогда думал, что может быть это проявление скромности, или способ избежать неловкости в компании, где других банкиров нет. А теперь понимаю что это гениальный механизм сохранения психического здоровья. Потому что не может нормальный человек ассоциировать себя с экселем, нормой прибыли и прочей ебитдой. Сколько бы денег не приносила работа по найму, если у тебя есть страсть или мечта, хотя бы микроскопическая, в которой ты никак не преуспел - намного полезнее для здоровья ассоциировать себя с ней.

В самом деле, не считал же молодой Эйнштейн себя клерком патентного бюро, а Цой - кочегаром.
👍3👎1🔥1
У меня есть порочная слабость - люблю мельком подглядывать в чужие ноутбуки в публичных местах и смотреть, кто чем занимается. Как раз недавно судьба перебрасывала меня в другое полушарие транзитом через два бизнес-зала в аэропортах, дав возможность слегка подсматривать за успешными людьми.

Датасет такой: из 10+ работавших наблюдаемых (тех, кто не работал, а смотрел ютуб, я сразу исключил из выборки), никто не программировал даже близко (т.е. не рыскал по stackoverflow и не читал arxiv). Писали документы в ворде, крутили таблички в экселе, ковырялись в емейлах и powerpoint-презентациях с логотипами компаний большой четверки.

Те, кто идет писать софт, следуя сугубо меркантильному духу, могут делать выводы самостоятельно.
👍2
В мире компьютерного зрения часто бывает так, что нейросеть превосходит тебя [в конкретной узкой задаче] - например, уверенно находит объект в углу маленькой темной картинки, даже если это не было главной целью обучения. К этому быстро привыкаешь.

Но к тому, что IDE окажется значительно умнее меня, я оказался не готов. Довелось мне влезть в код на некоем малознакомом мне вычурном JVM-языке (знаете, такой, в котором */*-:|-+> может оказаться не только валидным, но и идиоматичным кодом). Вынужден признать: в итоге почти всю работу делала IDE, а я в основном перебирал три-четыре хоткея.
На моем любимом сабреддите CS Career Questions недавно появился пост с многообещающим названием "How do I manage a senior dev who writes junior quality code and wont listen to feedback?". Суть поста проста: очередной программист пришел на старый проект, охуел от свалившейся кодовой базы и начал ныть, что кругом дураки. Т.к. я недавно тоже влез в сложный код, мне близка сама ситуация, а вот этот конкретный повод для нытья - не очень.

Человекам свойственно принимать все непривычное в штыки, считать его чуждым. Лирическое отступление: лет восемь назад я был в баре с коллегой из Парижа (да, у меня была крайне сложная работа!). Коллега говорил по-английски с жутким акцентом, периодически вставляя французские словечки в наивной надежде, что это поможет его понимать. Эта почти французская речь несомненно относилась к категории чуждого для бравого парня за соседним столиком, и после какого-то стакана он пришел к нам с предъявами вида "ты че, француз бля? ща мой кореш поблюет, и мы вам ебальники бля бить будем!" (спойлер: ни один ебальник не пострадал).

Конечно, этот пример суть гипербола. Но суть та же: просто человек остро реагирует на непривычное. Вернемся к программированию: новый для человека код без контекста (а исторический контекст быстро не уловить) иногда вызывает фрустрацию и разные отчасти деструктивные желания от "переписать все к черту" до "надо бы сделать так, чтобы этого тупицу уволили".

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

Все это более или менее актуально не только для программирования, но и для всей нашей индустрии - легко могу представить себе похожую историю, например, про маркетинг.
🔥1
2025/07/12 13:50:01
Back to Top
HTML Embed Code: