Spark in me
2.73K subscribers
1.28K photos
71 videos
118 files
2.91K links
Lost like tears in rain. DS, ML, a bit of philosophy and math. No bs or ads.
Download Telegram
Несколько раз подряд запускал нейросети с разными ограничениями по ресурсам (CPU bound, GPU-bound, storage-bound).

Вывел для себя ряд простых эмпирических правил, которые подсказывают, что оптимизировать, чтобы на 100% использовать доступные ресурсы.

Также очень помогает консольная утилита
glances

Самые простые случаи:
1. HD / Full-HD картинки без ресайза. Практически независимо от архитектуры - будет GPU-bound. Если у вас нет стека из 2+ видео-карт, можно почти не париться по ускорению
2. Большое число маленьких картинок (миллионы, сотни тысяч) - при отсутствии оптимизации скорее всего сначала будет storage-bound, потом если грузить картинки параллельно - то GPU или CPU-bound
3. Очень тяжелая архитектура - GPU bound

Как детектировать:
1. При многопоточной загрузке картинок, загружено существенно менее ресурсов процессора чем воркеров (воркеров 8, а загрузка ЦП условно 1 из 8)
2. Загрузка постоянно GPU неполная и на низком уровне;
3. Низкая загрузка CPU и GPU
4. Бенчмарк для чтения с диска - 200 мбайт/c - плохо, 400 лучше, 1000 совсем хорошо
5. Чтение датасета из RAM - совсем хорошо

Примерно общая последовательность действий (архитектура модели - константа):
1. Если видеокарты не загружены до конца - увеличивать размер батча до максимально возможного
2. Если это не помогает (или батч уже максимальный), то нужно загружать в несколько потоков
3. Если это не помогает, то нужно проверить каждый этап своего генератора данных на скорость работы
4. Если это не помогает, нужно уже оптимизировать дисковое хранилище
5. Не стоит забывать, что данные как правило движутся (очень условно) диск => CPU => RAM => GPU и боттлнек на каждом этапе ниже делает быструю обработку на этапе выше невозможным

При прочих равных проще всего дозагружать ресурсы так
1 GPU - увеличивать батч-сайз
2 CPU - количество потоков загрузки данных (если нет ограничения по скорости чтения)

Способы оптимизация хранилища
1. Вставить SSD диск или NVME диск вместо HDD
2. Если нет времени / денег - RAID массив с / без SSD кешем

#data_science
#neural_nets
Выше писал, что open-cv очень удобно устанавливать из pypi. Но там нет работы с видео. Печаль.
Демонстрация того, что могут sota нейросети в реальном времени.
Красивое лайтовое видео от 3Blue1Brown на разрядку)
Давно не читал новости про экономику СНГ. Удручает, что я постоянно слышу от людей с высокой зарплатой (с точки зрения персентилей, а не в долларах) и высшим образованием, что "у нас свой уникальный и особый путь". И каждый раз, когда я открываю макроэкономическую статистику - это отрезвляет от таких суждений.

TLDR - нас по всей вероятности может ждать "потерянное десятилетие". С прикладной точки зрения обывателя - судя по всему за плательщиков налогов кроме НДС и НДПИ тоже возьмутся - так что держитесь.

Последние отчеты от ЦР ВШЭ
- https://goo.gl/QbFTWh
- https://goo.gl/mT9XyY

За что зацепился глаз:
- Опережающие индикаторы - https://goo.gl/cWjbWZ - их кстати строят через PCA
- И 10 лет назад и сейчас качество институтов не меняется - https://goo.gl/aepKiH
- Экономика оживилась в первом квартале за счет отложенного спроса, в т.ч. на импорт - https://goo.gl/BP4v7n
- Перспективы
-- Раз https://goo.gl/t39ftf
-- Два https://goo.gl/KA1k3Q
-- Три https://goo.gl/Ne1HXc

Про открытие (откровенно не понимаю физиков, которые могут держать деньги в таких банках - ведь то, что там УГ можно понять просто видя качество сервиса и тренды, даже не залезая в отчетность, которая по МСФО и публична, к слову, и гуглится на banki.ru)
- Полярный лис подкрался еще в 2015-2016 годах
- Раз https://goo.gl/59grg9
- Два https://goo.gl/EEXdmj
- Три https://goo.gl/PycRoN

#statistics
Epsilon: open-rate email за последние 6 лет растет из-за мобильного трафика. Но CTR в email постоянно снижается

Пик эффективности пройден: общаться с клиентами нужно через мессенджеры и push
Выше писал про библиотеку imgaug. Не проводил рьяных тестов, но если при использовании аугментаций keras или просто через numpy на размере картинок 400x400 скорость батчей не падает, то тут падает в 4 раза даже если просто запускать класс.

Вот так.

#data_science
Давно не читал новости. Накопилось.

Интересное в мире DS/ML:

Лол:
- Раскрашивалка аниме-скетчей - https://github.com/lllyasviel/style2paints - веб морда сейчас не работает

Датасеты:
- Датасет из 100к рентгеновских изображений - https://goo.gl/fxayXJ

Cофт:
- Заканчивается развитие Theano на версии 1.0 (поддержка какое-то время будет) - https://goo.gl/mVBU5F
- Несколько примеров исторических визуализаций данных - https://goo.gl/9bmxFR

Рынок в целом:
- Amazon использует 100к роботов на своих складах - https://goo.gl/TKwnYM
- UN открывает свой ML отдел - https://goo.gl/4mVSP6
- Take-two шлет cease and desist письма исследователям и компаниям, которые используют GTA 5 для тренировки нейросетей - https://goo.gl/NxY3Nt

Про железо:
- P100 GPU в облаке Гугла в бете - https://goo.gl/RdCe2v
- Краткий обзор рынка железа для ML и тренды - https://ark-invest.com/research/gpu-tpu-nvidia
-- Какой % карты Nvidia используется под тензоры - https://goo.gl/a2rVgn
-- Основные игроки на рынке железа для ML https://goo.gl/KeefWy
-- Совместимость фреймворков для ML и железа - https://goo.gl/BZH8XT
-- Рост эффективности карт Nvidia для нейросетей от поколения к поколению - https://goo.gl/z9Gav2

Про новые архитектуры и сетки:
- Замена max pooling https://goo.gl/u5VTJc на параметрический слой и код - https://github.com/singlasahil14/sortpool2d


#data_science
#digest
Вышел голливудский Blade Runner 2049 - посмотрел его ночью в кинотеатре в оригинале.

Я предполагал, что будет такая же дичь как сейчас с sci-fi римейками (за списком далеко ходить не надо - GitS, Alien, Total recall - список бесконече) и оказался неправ.

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

В общем, 100% винрар и вин. Хотя нового ничего нет, темы личности, самоопределения человека и бессмысленности существования раскрыты.

#philosophy
Отличная паста чтобы проверять хеши файлов.

# make sure you downloaded the files correctly
import hashlib
import os.path as path

def sha256(fname):
hash_sha256 = hashlib.sha256()
with open(fname, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b''):
hash_sha256.update(chunk)
return hash_sha256.hexdigest()

filenames = ['', '', '', '', ']

hashes = ['', '', '', '', '']

data_root = path.join('data/') # make sure you set up this path correctly

# this may take a few minutes
for filename, hash_ in zip(filenames, hashes):
computed_hash = sha256(path.join(data_root, filename))
if computed_hash == hash_:
print('{}: OK'.format(filename))
else:
print('{}: fail'.format(filename))
print('expected: {}'.format(hash_))
print('computed: {}'.format(computed_hash))

#python
#data_science
По ряду причин решил попробовать SSD (single shot image detection) именно на питорче и именно эту имплементацию (https://goo.gl/gj9cCX), а тут подоспел цикл статей, который поясняет все детали модели:
- Раз https://goo.gl/VeHv8g
- Два https://goo.gl/nTQddA
- Три https://goo.gl/ACQ4Ts

Как нельзя кстати.

Что такое dilated convolution
- http://www.erogol.com/dilated-convolution/

#data_science
#neural_nets
Интересное в мире интернета:
- Ben Evans - https://goo.gl/syu48H
- Гугл запускает пару носимых дивайсов - камеру и наушники с функцией перевода, оба заточены под ML https://goo.gl/aJGyVt https://goo.gl/Dyc2X3
- AOL закрыл свой мессенджер с 500к пользователей - https://goo.gl/izqAaF (напоминает судьбу аськи)
- Запуск первого автономного такси в "песочнице" в спальном районе для пенсионеров - https://goo.gl/xvV44J
- Китай пытается сделать интернет-цензуру "классным" местом для работы для молодых - https://goo.gl/eTCXFL
- Medium позиционирует свою бизнес модель как "сразу с подпиской и поэтому мотивирующую делать качественный контент" - https://goo.gl/YDgSSZ

___________________

- Про алгоритмический bias - https://goo.gl/uKgxcX
- Гугл деплоит свой Wavenet в своем мобильном помощнике - https://goo.gl/vjR4WC - и почитать про wavenet - https://goo.gl/vSjNvt
-- https://goo.gl/NvW4HS

___________________

#digest
#internet
Заметка - если вы используете pytorch через докер с их загрузчиками данных, не удивляйтесь, если ничего не будет работать.

Докер надо запускать с флагом nvidia-docker run --shm-size 2G (вставьте сколько не жалко), потому что он использует дисковый кеш и его стандартный размер стоит 64M.

Больше про подобные флаги:
- тут https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources
- и тут https://docs.docker.com/engine/admin/resource_constraints/

#data_science
#pytorch
Небольшая заметка про работу с удаленными серверами. Раньше я всегда работал исключительно через текстовые редакторы и jpn, но сейчас вероятно встала необходимость залазить в сорс-код библиотек более удобно (использовать Pycharm к примеру).

Если сочетаются 3 потребности:
- работать удаленно
- использовать IDE с удаленным интерпретатором через ssh (как правило там есть иные опции, в том числе docker плагины, но они локальные как правило) - https://goo.gl/Ej1ZTs
- использовать docker

Для начала пара ссылок про ssh-server и зачем он нужен если вы не в курсе:
- https://goo.gl/o931SR
- https://goo.gl/AQfbKJ

То по идее надо, чтобы ssh-server демон работал в докере это надо учесть еще на стадии докерфайла перед билдом контейнера, сделать EXPOSE и прокинуть порты при run. По идее в контейнер можно и так зайти (https://goo.gl/MWSbBY) но тут нужен именно демон.

По идее ssh доступ в контейнер - это зло (https://goo.gl/P7uYnm), но другого способа в этой задаче нет. Собственно по этой причине собрал и протестировал для себя образ где еще есть ssh (на основе https://goo.gl/wNEr3K).

По идее демона ssh надо просто запускать при запуске контейнера вручную.

service ssh start

Можно поизвращаться и так (https://goo.gl/kspj1h), но это как мне кажется уже совсем.

Если вам нужен докерфайл - вот ссылка
- https://goo.gl/hgUL12

#data_science
#linux
#docker
Forwarded from The Devs
The average web page is 3MB. How much should we care?

#article #performance #ux
@thedevs

https://goo.gl/8CHhtk
Forwarded from Arseniy's channel
Биткойн $5000 🚀
Пробую Pytorch (https://goo.gl/YySVm1) - у меня пока безумно позитивные ощущения. Внезапно там гимора больше чем в керасе раза в 2-3, но свобода почти абсолютно полная. Очень много сахара программного, но работа с большим числом карточек (>1) делается одной оберткой.
Довольно легко расширять классы. Документация отстает от функционала, но поэтому проще читать сорс код. Примеры в документации по архитектурам и fine-tuning просто отличные, хоть и громоздкие. Зато они настроены на профессиональное использование.

Из чисто технических плюсов - граф расчетов в торче динамический, т.е. мы можем по понедельникам делать одно, а по вторникам другое (в этих двух гайдах лучше написано - https://goo.gl/GwN5hx - https://goo.gl/AJQ5PW)

Из минусов:
- нет такого же тула как Tensorboard. Для этих целей все используют visdom насколько я понимаю - https://goo.gl/UTD94E . Что с одной стороны отлично, т.к. можно делать все, что угодно, а с другой нужно
- нет встроенных оберток для коллбеков в виде early stopping, lr decay и прочих вкусностей. Есть такой репозиторий - но мне говорили что он пока очень сырой - https://goo.gl/kWRrbJ
- аугментации и работа с картинками - все построены на PIL, что как бы не тру - их там кот наплакал. Благо все очень легко дописывается

Есть опция работы на (!) кластере компьютеров с GPU через сеть.

#data_science
#pytorch