Два дня боролся с утечкой памяти в доставшемся по наследству deep learning пайплайне. Оказалось, что на самом деле их две, а ведь в языках с автоматической очисткой памяти это довольно редкий зверь.
Первый лик нашелся относительно легко при помощи pympler. Дальше началось странное, потому что pympler не видел новые объекты, а память потихоньку утекала - медленно, но верно.
Для победы пришлось отбросить ковбойский подход "ща я тут дебаггером влезу, на код гляну и все быстро пойму" и перейти к divide and conquer:
- беру кусок пайплайна;
- вместо настоящего выполнения кэширую;
- смотрю, течет или нет.
После N итераций в подозреваемых остался один большой и запутанный модуль - все еще много. Смотреть глазами на графики потребления памяти стало сложно, глаз замылился. На картинке один из таких графиков, в качестве такого себе доказательства.
Пришлось добавить статистики и вместо графиков смотреть на p-value, что проще и не требует умственных усилий. Так удалось локализовать проблему до одной функции, изолировать ее и найти проблему: подвыборка из тензора по индексам оставляла неявный референс.
Мораль такая: даже если ты не разбираешься в проблеме, декомпозиция и базовая автоматизация (инструменты, склеенные скотчем) помогут.
Первый лик нашелся относительно легко при помощи pympler. Дальше началось странное, потому что pympler не видел новые объекты, а память потихоньку утекала - медленно, но верно.
Для победы пришлось отбросить ковбойский подход "ща я тут дебаггером влезу, на код гляну и все быстро пойму" и перейти к divide and conquer:
- беру кусок пайплайна;
- вместо настоящего выполнения кэширую;
- смотрю, течет или нет.
После N итераций в подозреваемых остался один большой и запутанный модуль - все еще много. Смотреть глазами на графики потребления памяти стало сложно, глаз замылился. На картинке один из таких графиков, в качестве такого себе доказательства.
Пришлось добавить статистики и вместо графиков смотреть на p-value, что проще и не требует умственных усилий. Так удалось локализовать проблему до одной функции, изолировать ее и найти проблему: подвыборка из тензора по индексам оставляла неявный референс.
Мораль такая: даже если ты не разбираешься в проблеме, декомпозиция и базовая автоматизация (инструменты, склеенные скотчем) помогут.
Полгода назад я выступал на Bulbacon и, отвечая на вопросы, сказал что-то вроде: "Через год называть себя дата сайнтистом станет зашкваром", подразумевая дурную славу некачественного кода в духе "я тут чего-то нафигачил в jupyter notebook" и намекая, что всем машинлернерам стоит учиться писать более или менее чистый код.
Тем временем в Python developers survey 2019 появился провокационный вопрос.
Тем временем в Python developers survey 2019 появился провокационный вопрос.
👍2
Обнаружил сервис для не самых умных, но не безответственных unix-пользователей.
Например, гуглите какой-то свой вопрос, видите волшебную shell команду на StackOverflow с кучей непонятных флажков. Есть соблазн просто вбить в терминал, но голос разума говорит, что надо бы хотя бы поверхностно разобраться, что это за магия.
Собственно, для этого и нужен explain shell. Пример с классическим sudo rm -rf.
Например, гуглите какой-то свой вопрос, видите волшебную shell команду на StackOverflow с кучей непонятных флажков. Есть соблазн просто вбить в терминал, но голос разума говорит, что надо бы хотя бы поверхностно разобраться, что это за магия.
Собственно, для этого и нужен explain shell. Пример с классическим sudo rm -rf.
У меня может быть 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 хайп еще не закончился, экстенсивное развитие продолжается.
На Kaggle запустились два конкурса (1, 2) про 3d картинки (что характерно, оба про беспилотные тачки).
На глаза стали попадаться всякие pytorch библиотеки для работы с 3d объектами: kaolin, torch3d, kornia. Две первые - совсем свежие, последняя зародилась с год назад; примерно тогда же нам в WANNABY пришлось написать что-то такое самостоятельно, подглядывая в учебники и исходный код OpenCV (где большая часть примитивов давно есть, но не для модных DL-пацанчиков).
Наконец, на arxiv по запросу "3d deep learning" тоже явный рост: 170 работ в 2017, 255 работ в 2018, 282 - в незакончившемся 2019. Хотя тут нужно бы отнормировать на общее количество статей: DL хайп еще не закончился, экстенсивное развитие продолжается.
Спонсор картинки для канала - tensorboard, в котором я только что увидел такой семпл
Из вчерашней беседы с Алексеем (@simplestupid):
«если в случайном предложении заменить data scientist на "астролог" или "гомеопат", связность текста обычно не страдает».
«если в случайном предложении заменить data scientist на "астролог" или "гомеопат", связность текста обычно не страдает».
Одна из самых важных вещей в профессиональном развитии - поработать с фанатиками. Правильный фанатик должен (1) обладать достаточно глубокими знаниями в некоторой нише, (2) быть нетерпимым к посредственной, по его меркам, работе.
Такой фанатик может быть неприятным человеком, а его критерии абсолютно неадекватны в текущем контексте. Зато через его придирки можно очень быстро научиться хотя бы базовым приемам (80 на 20, как обычно) и составить свое представление о том, что такое хорошо и что такое плохо. Необязательно делать быстродействие вашего кода религией, но поработать с человеком, который стремится любой ценой оптимизировать все сколько-нибудь заметные в профайлере функции - очень полезно.
Так что если у вас есть коллега, который придирается к каждой строчке в код ревью, хуесосит тех, кто не понимает физический смысл Гессиана, возмущается несоблюдением канонов скрама или упорно критикует то, что вы считаете продуктовой стратегией - радуйтесь и извлекайте из этого выгоду.
А вот если ваши коллеги - скучные посредственности, неготовые выставить планку повыше хоть в чем-нибудь, постарайтесь не задерживаться в такой команде. Деградация - бессердечная сука.
Такой фанатик может быть неприятным человеком, а его критерии абсолютно неадекватны в текущем контексте. Зато через его придирки можно очень быстро научиться хотя бы базовым приемам (80 на 20, как обычно) и составить свое представление о том, что такое хорошо и что такое плохо. Необязательно делать быстродействие вашего кода религией, но поработать с человеком, который стремится любой ценой оптимизировать все сколько-нибудь заметные в профайлере функции - очень полезно.
Так что если у вас есть коллега, который придирается к каждой строчке в код ревью, хуесосит тех, кто не понимает физический смысл Гессиана, возмущается несоблюдением канонов скрама или упорно критикует то, что вы считаете продуктовой стратегией - радуйтесь и извлекайте из этого выгоду.
А вот если ваши коллеги - скучные посредственности, неготовые выставить планку повыше хоть в чем-нибудь, постарайтесь не задерживаться в такой команде. Деградация - бессердечная сука.
👍3🔥1
Если вы жалуетесь на высокое и постоянно растущее количество сущностей (будь то новые фреймворки на гитхабе или deep learning статьи на arxiv.org) в нашей условно интеллектуальной профессии, знайте, что вы серьезно опоздали с этими жалобами.
“Уже в 1600 г. Уильям Гильберт жаловался, что интеллектуалы должны ориентироваться в «столь обширном океане книг, которые смущают и утомляют умы занимающихся наукой»” - Дэвид Вуттон, “Изобретение науки. Новая история научной революции”
“Уже в 1600 г. Уильям Гильберт жаловался, что интеллектуалы должны ориентироваться в «столь обширном океане книг, которые смущают и утомляют умы занимающихся наукой»” - Дэвид Вуттон, “Изобретение науки. Новая история научной революции”
Большинство статей "топ 10 технологий 2010-ых" или "что нас ждет в 2020-ых" - неинтересный кликбейт, да еще и отражающий значительный bias автора.
В противоположность, статья https://habr.com/ru/post/481844/ выглядит максимально объективной и здравой, без перегибов типа "Мы на пороге сильного ИИ" и "AI winter is coming".
В противоположность, статья https://habr.com/ru/post/481844/ выглядит максимально объективной и здравой, без перегибов типа "Мы на пороге сильного ИИ" и "AI winter is coming".
Хабр
7 лет хайпа нейросетей в графиках и вдохновляющие перспективы Deep Learning 2020-х
Новый год все ближе, скоро закончатся 2010-е годы, подарившие миру нашумевший ренессанс нейросетей. Мне не давала покоя и лишала сна простая мысль: «Как можно...
Если новогодние каникулы окончательно вам наскучили, предлагаю такое странное развлечение: программирование на татарском https://github.com/minteemer/ElanTele/blob/master/example.et
GitHub
ElanTele/example.et at master · minteemer/ElanTele
IU Compiler Construction course project - dynamic Tatar programming language - ElanTele/example.et at master · minteemer/ElanTele
Хороший текст о самоидентификации через работу.
Я не согласен ровно с одним тезисом: "нормальный человек не может себя ассоциировать с тем, что он делает на этой работе" - почему бы и нет, иногда получается. Только надо понимать, насколько эта самоидентификация через работу твоя собственная, а насколько - результат пропаганды на тему we're making world a better place.
И, как говорят в ML тусовочке, остерегайтесь оверфита (т.е. диверсифицируйте источники эндорфинов). Чем больше себя вы идентифицируете с модным стартапом, который "помогает миллионам людей…", тем сильнее может ебануть в один не самый прекрасный день.
Я не согласен ровно с одним тезисом: "нормальный человек не может себя ассоциировать с тем, что он делает на этой работе" - почему бы и нет, иногда получается. Только надо понимать, насколько эта самоидентификация через работу твоя собственная, а насколько - результат пропаганды на тему we're making world a better place.
И, как говорят в ML тусовочке, остерегайтесь оверфита (т.е. диверсифицируйте источники эндорфинов). Чем больше себя вы идентифицируете с модным стартапом, который "помогает миллионам людей…", тем сильнее может ебануть в один не самый прекрасный день.
👍1
Forwarded from Типичный Ярополк
Пока в Москве шутят про то что стало трудно дышать из-за запаха выгоревших миллениалов, на западе уже во всю тревожатся за психическое здоровье людей из тех-индустрии. Болезни на фоне стресса, депрессия и участившиеся самоубийства - чего только нет. Я в своём кругу друзей и знакомых совсем тяжелых случаев не видел пока, но замечаю, что все чаще люди задают вопрос «а чем я вообще занимаюсь?».
Считаю, что вопрос этот правильный, и что основная проблема психического здоровья в тех-индустрии не в росте требований и отвественности (есть места и потребовательнее), а в том, что нормальный человек не может себя ассоциировать с тем, что он делает на этой работе. А пытается.
Ежедневный поиск продакт маркет фита, написание кода по запросу какой-то обезьяны, организация очередного конкурса по перетягиванию каната на лугу за МКАДОМ, борьба за доли процентов в метриках, погоня за партнерствами и интеграциями - не характеризуют и не описывают вас как человека, не отвечают на вопрос «кто я» и, уж тем более, «зачем».
Если вы, допустим, занимаетесь платежками и считаете, что вы ПОМОГАЕТЕ МИЛЛИОНАМ ЛЮДЕЙ УДОБНЕЕ СОВЕРШАТЬ ПОКУПКИ ОНЛАЕН, то сэкономьте себе время и не читайте дальше. Увидимся лет через 10 у невролога.
В какой-то момент тех-индустрия стала, по сути, работой на заводе. А мы, техножрецы её, стали пролетариатом. Порог входа низкий. Чтобы получить работу достаточно просто иметь температуру тела в районе 36 градусов. Если в начале ХХ века твой дед шел из деревни (где ему не дали работать) на завод, то теперь ты идешь из университета (где тебе не объяснили разницу между фундаментальной и прикладной наукой) в ВЫСОКОТЕХНОЛОГИЧНУЮ отрасль.
При этом, работа-то не хуже других. Нормальная работа. И деньги зарабатывать важно и хорошо. Просто иногда ты, юзернейм, перестаешь верить трескотне об изменении мира при помощи технологий (к созданию которых ты и отношения-то не имеешь). И в такие моменты ты понимаешь, что, в лучшем случае, ты просто пытаешься заработать еще немножко денег для хозяина. А чаще всего - ты просто на сборочной линии гайки крутишь. И что твое реальное будущее, если повезет и здоровье позволит, это еще какое-то время продолжать зарабатывать деньги для хозяина, или продолжать крутить гайки на сборочной линии. Кому хочешь тошно станет.
И тут мне вспоминается один мой товарищ финансист. Задолго до самовозгорания миллениалов, еще где-то в 2005-м, он использовал прием, который тогда мне казался просто забавной причудой. Большую часть времени он занимался финансовой стороной слияний-поглощений и прочих больших проектов, занимая директорские и C-level позиции в банках. А в свободные часы (а с такой работой, скорее, минуты) он писал рассказы. И даже умудрился пару лет отучиться в Горьковском литинституте. На тот момент он ни одной строчки не опубликовал. Так вот. Везде, кроме деловых встреч, он представлялся ПИСАТЕЛЕМ. Когда было хорошее настроение - говорил еще что он «немецкий писатель». Тогда, 15 лет назад, это было просто забавно. Я еще тогда думал, что может быть это проявление скромности, или способ избежать неловкости в компании, где других банкиров нет. А теперь понимаю что это гениальный механизм сохранения психического здоровья. Потому что не может нормальный человек ассоциировать себя с экселем, нормой прибыли и прочей ебитдой. Сколько бы денег не приносила работа по найму, если у тебя есть страсть или мечта, хотя бы микроскопическая, в которой ты никак не преуспел - намного полезнее для здоровья ассоциировать себя с ней.
В самом деле, не считал же молодой Эйнштейн себя клерком патентного бюро, а Цой - кочегаром.
Считаю, что вопрос этот правильный, и что основная проблема психического здоровья в тех-индустрии не в росте требований и отвественности (есть места и потребовательнее), а в том, что нормальный человек не может себя ассоциировать с тем, что он делает на этой работе. А пытается.
Ежедневный поиск продакт маркет фита, написание кода по запросу какой-то обезьяны, организация очередного конкурса по перетягиванию каната на лугу за МКАДОМ, борьба за доли процентов в метриках, погоня за партнерствами и интеграциями - не характеризуют и не описывают вас как человека, не отвечают на вопрос «кто я» и, уж тем более, «зачем».
Если вы, допустим, занимаетесь платежками и считаете, что вы ПОМОГАЕТЕ МИЛЛИОНАМ ЛЮДЕЙ УДОБНЕЕ СОВЕРШАТЬ ПОКУПКИ ОНЛАЕН, то сэкономьте себе время и не читайте дальше. Увидимся лет через 10 у невролога.
В какой-то момент тех-индустрия стала, по сути, работой на заводе. А мы, техножрецы её, стали пролетариатом. Порог входа низкий. Чтобы получить работу достаточно просто иметь температуру тела в районе 36 градусов. Если в начале ХХ века твой дед шел из деревни (где ему не дали работать) на завод, то теперь ты идешь из университета (где тебе не объяснили разницу между фундаментальной и прикладной наукой) в ВЫСОКОТЕХНОЛОГИЧНУЮ отрасль.
При этом, работа-то не хуже других. Нормальная работа. И деньги зарабатывать важно и хорошо. Просто иногда ты, юзернейм, перестаешь верить трескотне об изменении мира при помощи технологий (к созданию которых ты и отношения-то не имеешь). И в такие моменты ты понимаешь, что, в лучшем случае, ты просто пытаешься заработать еще немножко денег для хозяина. А чаще всего - ты просто на сборочной линии гайки крутишь. И что твое реальное будущее, если повезет и здоровье позволит, это еще какое-то время продолжать зарабатывать деньги для хозяина, или продолжать крутить гайки на сборочной линии. Кому хочешь тошно станет.
И тут мне вспоминается один мой товарищ финансист. Задолго до самовозгорания миллениалов, еще где-то в 2005-м, он использовал прием, который тогда мне казался просто забавной причудой. Большую часть времени он занимался финансовой стороной слияний-поглощений и прочих больших проектов, занимая директорские и C-level позиции в банках. А в свободные часы (а с такой работой, скорее, минуты) он писал рассказы. И даже умудрился пару лет отучиться в Горьковском литинституте. На тот момент он ни одной строчки не опубликовал. Так вот. Везде, кроме деловых встреч, он представлялся ПИСАТЕЛЕМ. Когда было хорошее настроение - говорил еще что он «немецкий писатель». Тогда, 15 лет назад, это было просто забавно. Я еще тогда думал, что может быть это проявление скромности, или способ избежать неловкости в компании, где других банкиров нет. А теперь понимаю что это гениальный механизм сохранения психического здоровья. Потому что не может нормальный человек ассоциировать себя с экселем, нормой прибыли и прочей ебитдой. Сколько бы денег не приносила работа по найму, если у тебя есть страсть или мечта, хотя бы микроскопическая, в которой ты никак не преуспел - намного полезнее для здоровья ассоциировать себя с ней.
В самом деле, не считал же молодой Эйнштейн себя клерком патентного бюро, а Цой - кочегаром.
👍3👎1🔥1
У меня есть порочная слабость - люблю мельком подглядывать в чужие ноутбуки в публичных местах и смотреть, кто чем занимается. Как раз недавно судьба перебрасывала меня в другое полушарие транзитом через два бизнес-зала в аэропортах, дав возможность слегка подсматривать за успешными людьми.
Датасет такой: из 10+ работавших наблюдаемых (тех, кто не работал, а смотрел ютуб, я сразу исключил из выборки), никто не программировал даже близко (т.е. не рыскал по stackoverflow и не читал arxiv). Писали документы в ворде, крутили таблички в экселе, ковырялись в емейлах и powerpoint-презентациях с логотипами компаний большой четверки.
Те, кто идет писать софт, следуя сугубо меркантильному духу, могут делать выводы самостоятельно.
Датасет такой: из 10+ работавших наблюдаемых (тех, кто не работал, а смотрел ютуб, я сразу исключил из выборки), никто не программировал даже близко (т.е. не рыскал по stackoverflow и не читал arxiv). Писали документы в ворде, крутили таблички в экселе, ковырялись в емейлах и powerpoint-презентациях с логотипами компаний большой четверки.
Те, кто идет писать софт, следуя сугубо меркантильному духу, могут делать выводы самостоятельно.
👍2
В мире компьютерного зрения часто бывает так, что нейросеть превосходит тебя [в конкретной узкой задаче] - например, уверенно находит объект в углу маленькой темной картинки, даже если это не было главной целью обучения. К этому быстро привыкаешь.
Но к тому, что IDE окажется значительно умнее меня, я оказался не готов. Довелось мне влезть в код на некоем малознакомом мне вычурном JVM-языке (знаете, такой, в котором
Но к тому, что IDE окажется значительно умнее меня, я оказался не готов. Довелось мне влезть в код на некоем малознакомом мне вычурном JVM-языке (знаете, такой, в котором
*/*-:|-+>
может оказаться не только валидным, но и идиоматичным кодом). Вынужден признать: в итоге почти всю работу делала IDE, а я в основном перебирал три-четыре хоткея.На моем любимом сабреддите CS Career Questions недавно появился пост с многообещающим названием "How do I manage a senior dev who writes junior quality code and wont listen to feedback?". Суть поста проста: очередной программист пришел на старый проект, охуел от свалившейся кодовой базы и начал ныть, что кругом дураки. Т.к. я недавно тоже влез в сложный код, мне близка сама ситуация, а вот этот конкретный повод для нытья - не очень.
Человекам свойственно принимать все непривычное в штыки, считать его чуждым. Лирическое отступление: лет восемь назад я был в баре с коллегой из Парижа (да, у меня была крайне сложная работа!). Коллега говорил по-английски с жутким акцентом, периодически вставляя французские словечки в наивной надежде, что это поможет его понимать. Эта почти французская речь несомненно относилась к категории чуждого для бравого парня за соседним столиком, и после какого-то стакана он пришел к нам с предъявами вида "ты че, француз бля? ща мой кореш поблюет, и мы вам ебальники бля бить будем!" (спойлер: ни один ебальник не пострадал).
Конечно, этот пример суть гипербола. Но суть та же: просто человек остро реагирует на непривычное. Вернемся к программированию: новый для человека код без контекста (а исторический контекст быстро не уловить) иногда вызывает фрустрацию и разные отчасти деструктивные желания от "переписать все к черту" до "надо бы сделать так, чтобы этого тупицу уволили".
А ведь на самом деле этот плохой, с точки зрения новичка код, плох только субъективно. Что-то действительно не очень, что-то - вкусовщина, что-то - отличные решения, требующие больше контекста. И без этого самого контекста отличать агнцов от козлищ не получится. Потому мораль такая: если ты пришел в проект, и у тебя горит жопа, не спеши устраивать революцию, работай спокойно, вникни поглубже, подумай дважды. Революция подождет какое-то время.
Все это более или менее актуально не только для программирования, но и для всей нашей индустрии - легко могу представить себе похожую историю, например, про маркетинг.
Человекам свойственно принимать все непривычное в штыки, считать его чуждым. Лирическое отступление: лет восемь назад я был в баре с коллегой из Парижа (да, у меня была крайне сложная работа!). Коллега говорил по-английски с жутким акцентом, периодически вставляя французские словечки в наивной надежде, что это поможет его понимать. Эта почти французская речь несомненно относилась к категории чуждого для бравого парня за соседним столиком, и после какого-то стакана он пришел к нам с предъявами вида "ты че, француз бля? ща мой кореш поблюет, и мы вам ебальники бля бить будем!" (спойлер: ни один ебальник не пострадал).
Конечно, этот пример суть гипербола. Но суть та же: просто человек остро реагирует на непривычное. Вернемся к программированию: новый для человека код без контекста (а исторический контекст быстро не уловить) иногда вызывает фрустрацию и разные отчасти деструктивные желания от "переписать все к черту" до "надо бы сделать так, чтобы этого тупицу уволили".
А ведь на самом деле этот плохой, с точки зрения новичка код, плох только субъективно. Что-то действительно не очень, что-то - вкусовщина, что-то - отличные решения, требующие больше контекста. И без этого самого контекста отличать агнцов от козлищ не получится. Потому мораль такая: если ты пришел в проект, и у тебя горит жопа, не спеши устраивать революцию, работай спокойно, вникни поглубже, подумай дважды. Революция подождет какое-то время.
Все это более или менее актуально не только для программирования, но и для всей нашей индустрии - легко могу представить себе похожую историю, например, про маркетинг.
Reddit
From the cscareerquestions community on Reddit
Explore this post and more from the cscareerquestions community
🔥1