Несколько раз подряд запускал нейросети с разными ограничениями по ресурсам (CPU bound, GPU-bound, storage-bound).
Вывел для себя ряд простых эмпирических правил, которые подсказывают, что оптимизировать, чтобы на 100% использовать доступные ресурсы.
Также очень помогает консольная утилита
Самые простые случаи:
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
Вывел для себя ряд простых эмпирических правил, которые подсказывают, что оптимизировать, чтобы на 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. Но там нет работы с видео. Печаль.
Давно не читал новости про экономику СНГ. Удручает, что я постоянно слышу от людей с высокой зарплатой (с точки зрения персентилей, а не в долларах) и высшим образованием, что "у нас свой уникальный и особый путь". И каждый раз, когда я открываю макроэкономическую статистику - это отрезвляет от таких суждений.
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
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
Forwarded from Интернет-аналитика // Алексей Никушин (Саша Ши)
Epsilon: open-rate email за последние 6 лет растет из-за мобильного трафика. Но CTR в email постоянно снижается
Пик эффективности пройден: общаться с клиентами нужно через мессенджеры и push
Пик эффективности пройден: общаться с клиентами нужно через мессенджеры и push
Выше писал про библиотеку imgaug. Не проводил рьяных тестов, но если при использовании аугментаций keras или просто через numpy на размере картинок 400x400 скорость батчей не падает, то тут падает в 4 раза даже если просто запускать класс.
Вот так.
#data_science
Вот так.
#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
Интересное в мире 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
GitHub
GitHub - lllyasviel/style2paints: sketch + style = paints (TOG2018/SIGGRAPH2018ASIA)
sketch + style = paints :art: (TOG2018/SIGGRAPH2018ASIA) - GitHub - lllyasviel/style2paints: sketch + style = paints (TOG2018/SIGGRAPH2018ASIA)
Вышел голливудский Blade Runner 2049 - посмотрел его ночью в кинотеатре в оригинале.
Я предполагал, что будет такая же дичь как сейчас с sci-fi римейками (за списком далеко ходить не надо - GitS, Alien, Total recall - список бесконече) и оказался неправ.
Фильм самобытный, многоуровневый, за ручку почти не держат. Музыка на высоте и уровне оригинала. Визуалка тоже не подкачала, хоть тон и сделали более умеренным (что к лучшему).
В общем, 100% винрар и вин. Хотя нового ничего нет, темы личности, самоопределения человека и бессмысленности существования раскрыты.
#philosophy
Я предполагал, что будет такая же дичь как сейчас с sci-fi римейками (за списком далеко ходить не надо - GitS, Alien, Total recall - список бесконече) и оказался неправ.
Фильм самобытный, многоуровневый, за ручку почти не держат. Музыка на высоте и уровне оригинала. Визуалка тоже не подкачала, хоть тон и сделали более умеренным (что к лучшему).
В общем, 100% винрар и вин. Хотя нового ничего нет, темы личности, самоопределения человека и бессмысленности существования раскрыты.
#philosophy
Отличная паста чтобы проверять хеши файлов.
#python
#data_science
# 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
Оказывается уже есть готовый squeeze-net для keras с весами =)
Неплохо
- https://github.com/wohlert/keras-squeezenet
#python
#neural_nets
Неплохо
- https://github.com/wohlert/keras-squeezenet
#python
#neural_nets
GitHub
wohlert/keras-squeezenet
Pretrained Squeezenet 1.1 implementation in Keras. Contribute to wohlert/keras-squeezenet development by creating an account on GitHub.
По ряду причин решил попробовать 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
- Раз https://goo.gl/VeHv8g
- Два https://goo.gl/nTQddA
- Три https://goo.gl/ACQ4Ts
Как нельзя кстати.
Что такое dilated convolution
- http://www.erogol.com/dilated-convolution/
#data_science
#neural_nets
GitHub
amdegroot/ssd.pytorch
A PyTorch Implementation of Single Shot MultiBox Detector - amdegroot/ssd.pytorch
Интересное в мире интернета:
- 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
- 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
Докер надо запускать с флагом 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
Docker Documentation
Running containers
Running and configuring containers with the Docker CLI
Небольшая заметка про работу с удаленными серверами. Раньше я всегда работал исключительно через текстовые редакторы и 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 надо просто запускать при запуске контейнера вручную.
Можно поизвращаться и так (https://goo.gl/kspj1h), но это как мне кажется уже совсем.
Если вам нужен докерфайл - вот ссылка
- https://goo.gl/hgUL12
#data_science
#linux
#docker
Если сочетаются 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
Jetbrains
Configuring Remote Interpreters via SSH - Help | PyCharm
Configuring remote interpreters via SSH; using SSH to configure remote interpreter
Forwarded from The Devs
The average web page is 3MB. How much should we care?
#article #performance #ux
@thedevs
https://goo.gl/8CHhtk
#article #performance #ux
@thedevs
https://goo.gl/8CHhtk
Пробую 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
Довольно легко расширять классы. Документация отстает от функционала, но поэтому проще читать сорс код. Примеры в документации по архитектурам и 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