Как стать автором
Обновить

Комментарии 12

Это уже третий или четвертый раз, когда я читаю статью Отуса в хабе «Машинное обучение», и в ней, разумеется, нет ни слова про машинное обучение. И перевод как обычно не очень хороший.
В самом начале публикации автор говорит о проблемах, с которыми ему довелось столкнуться в приложениях с использованием машинного обучения, поэтому был указан данный хаб. Спасибо, за комментарий, учтем на будущее и будем размещать в хабе «машинное обучение» более технические материалы.
будем размещать в хабе «машинное обучение» более технические материалы.

Вы с другой планеты что ли? Надо размещать материалы не "более технические", а конкретно про машинное обучение.

Именно это я и имел ввиду. Еще раз благодарю за Ваше замечание)

Про memory_profiler можно было дополнить перевод и подробнее расписать, про декоратор profile, про то как его надо использовать и т. п. А так статья получилась очень поверхностная и не раскрывает многих деталей профилирования и поиска утечек памяти.

Более того, ничего не рассказано о том, как искать утечки памяти, кроме общих слов.


Два раза в жизни я сталкивался с утечками памяти в приложениях на Python. Первый раз это был развесистый сайт на Django. Объем кода очень большой. Недельные поиски не увенчались успехом, было перепробовано все. Проблема была «решена» добавлением параметра, который рестартит воркеры после нескольких сотен запросов.


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


Так что толковая статья на эту тему не помешала бы. В теории оно все просто. На практике, приходится смотреть в дамп памяти, в котором находятся миллионы примитивных объектов, типа tuple, str, и понять, какие из них должны были быть освобождены, и откуда они вообще взялись, бывает очень сложно.


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

Тоже искал утечки, и читал эту статью. На практике все намного сложнее.

Я нашёл забавный способ — форкать и производить действия в дочеренем процессе.


(минутка машинного обучения) У меня утекала память где-то в keras, причём не обычная, а та что на GPU. Скрипт одну за другой обучал много различных сеточек, и в какой-то момент всё падало из-за нехватки свободной памяти на видеокарте. Рабочим решением оказалось форкать процесс, обучать сеточку и сохранять результаты в дочернем, а в родительском ждать совершения дочернего и снова так делать для каждой следующей сетки. У меня были некоторые сомнения относительно того, как это будет сочетаться с использованием cuda (keras импортировалась раньше, чем я форкал процесс, и tensorflow сразу занимала почти всю память на GPU), но это всё нормально работало.

НЛО прилетело и опубликовало эту надпись здесь
Чисто из любопытства захотел пройти тест у вас на сайте. Сначала имя введи, потом фамилию, потом имейл, потом номер телефона. Забросил эту идею.
Входное тестирование подразумевает Ваше желание пройти обучение и создано для проверки базовых знаний, чтобы понять потянет ли человек программу. То есть человек проходящий тест является потенциальным кандидатом в студенты, именно поэтому нам нужно знать как Вас зовут и как можно с Вами связаться. Никаким назойливым спамом мы не занимаемся).
Странная у вас логика. Прохождение мной теста, подразумевает желание пройти тест. Не нужно додумывать за меня и манипулировать. Прохождение теста не равно желанию обучаться у вас. А может после вашего теста, я не захочу к вам идти. По вашей логике, скиньте мне пожалуйста номер телефона вашего директора у меня к нему потенциальный разговор. Никаким назойливым спамом я не занимаюсь.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий