Spark in me
2.2K subscribers
822 photos
48 videos
116 files
2.68K links
Lost like tears in rain. DS, ML, a bit of philosophy and math. No bs or ads.
Download Telegram
GANs ⬆️
Tensorboard logging in PyTorch

Looked at this module some time ago. Looks like it matured now.
The coolest current feature - param logging.

Just compare these two docs:
- TensorboardX
- torch.utils

Looks like PyTorch just imported the most popular libarary, copying their docs and APIs.
Nice!

#deep_learning
2019 DS / ML digest 17

Link

Highlights of the week(s):

- BERT miniaturization?
- PyTorch domination?
- MobileNet from Facebook - FbNet

#digest
#deep_learning
The current state of "DIY" ML hardware

(i.e. that you can actually assemble and maintain and use in a small team)

Wanted to write a large post, but decided to just a TLDR.
In case you need a super-computer / cluster / devbox with 4 - 16 GPUs.

The bad
- Nvidia DGX and similar - 3-5x overpriced (sic!)
- Cloud providers (Amazon) - 2-3x overpriced

The ugly
- Supermicro GPU server solutions. This server hardware is a bit overpriced, but its biggest problem is old processor sockets
- Custom shop buit machines (with water) - very nice, but (except for water) you just pay US$5 - 10 - 15k for work you can do yourself in one day
- 2 CPU professional level motherboards - very cool, but powerful Intel Xeons are also very overpriced

The good
- Powerful AMD processor with 12-32 cores + top tier motherboard. This will support 4 GPUs on x8 speed and have a 10 Gb/s ethernet port
- Just add more servers with 10 Gb/s connection and probably later connect them into a ring ... cheap / powerful / easy to maintain

More democratization soon?

Probably the following technologies will untie our hands

- Single slot GPUs - Zotac clearly thought about it, maybe it will become mainstream in the professional market
- PCIE 4.0 => enough speed for ML even on cheaper motherboards
- New motherboards for AMD processors => maybe more PCIE slots will become normal
- Intel optane persistent memory => slow and expensive now, maybe RAM / SSD will merge (imagine having 2 TB of cheap RAM on your box)

Good chat in ODS on same topic.

#hardware
Open STT v1.0 release

Finally we released open STT v1.0 =)

Highlights

- 20 000 hours of annotated data
- 2 new large and diverse domains
- 12k speakers (to be released soon)
- Overall quality improvement
- See below posts and releases for more details

+---------------+------+--------+------+
| Domain | Utts | Hours | GB |
+---------------+------+--------+------+
| Radio | 8,3М | 11,996 | 1367 |
+---------------+------+--------+------+
| Public Speech | 1,7M | 2,709 | 301 |
+---------------+------+--------+------+
| Youtube | 2,6М | 2,117 | 346 |
+---------------+------+--------+------+
| Books | 1,3М | 1,632 | 180 |
+---------------+------+--------+------+
| Calls | 695K | 819 | 91 |
+---------------+------+--------+------+
| Other | 1.9M | 835 | 95 |
+---------------+------+--------+------+


How can I help?
- Share our dataset
- Share / publish your dataset - the more domains the better
- Upvote on habr
- Upvote on TDS (when released)
- We have an Open Collective page for donations

Links
- Open STT https://github.com/snakers4/open_stt
- Release https://github.com/snakers4/open_stt/releases
- Open TTS https://github.com/snakers4/open_tts
- Habr https://habr.com/ru/post/474462/
- Towards Data Science (coming soon)
- Bloghttps://spark-in.me/post/open-stt-release-v10
- Open collective https://opencollective.com/open_stt (edited)
Forwarded from Just links
I reimplemented this code in pure pytorch, and reproduces their results. It also gave decent results on ImageNet in only 5 epochs.
https://github.com/Randl/Ranger_Mish_reimplementation
Стажировка по работе с речью

Ищем увлечённых людей, скорее всего студентов 2 или 3 курса, кто хотел бы развиваться в направлении по работе с речью и ML в целом.

Работать можем начать хоть вчера, ограничений вообще никаких нет.
Планируем встречаться лично 1-2 раза в неделю.

Особо не подразумевается, что вы должны прямо что-то уметь, скорее мы рассчитываем найти людей:

- Со знанием английского (читать статьи, писать статьи, вести переписку и логи, говорить не нужно)
- Умных, целеустремленных, идейных
- С минимальной математической подготовкой
- Всему нужному мы научим. Или ты нас чему-то научишь

Будет плюсом:

- Python + PyTorch
- Любые другие DL фреймворки это хорошо, но юзать их не будем
- Ты бегло прочитал(а) seminal papers в какой-то области (CV, NLP, ASR) и у тебя есть свое мнение (отличное от "стакать трансформеры")
- Если ты запилил(а) вообще проект в любой сфере, где видно, что тащил(а) именно ты
- Если ты хочешь научиться решать или умеешь решать реальные задачи
- Если ты сделал(а) или хочешь сделать что-то осознанное в сфере ML
- Ты прошарен(а) в экосистеме Linux, не боишься работать в консоли

Что не нужно

- Заниматься чем-то ради того, чтобы заниматься
- Работать в нашей компании большая честь (tm)
- Кодить у доски, инвертировать деревья, перемножать большие числа в уме, вставить любое подобное

Зачем тебе это надо

- Если у тебя есть какие-то идеи в этой сфере, то мы можем дать платформу чтобы их качественно реализовать
- Когда у нас появится +1 место на фулл-тайм работу, угадай кто будет в шорт-листе
- Мы реально двигаем ML / решаем прикладные задачи, а не просто мараем бумагу / пилим бабос / собираем хайп
- Публикации, решение реальных задач, очень быстрый набор опыта
- Самым ярким кандидатам будем готовы отсыпать фантиков

Контакты

- Присылай в любом формате свои достижения, единственное пожелание - будь лаконичным
- Писать мне в телеграм напрямую - @snakers41

Ссылки на наши работы и публикации

- https://github.com/snakers4/open_stt
- https://medium.com/@aveysov
- https://spark-in.me/
Easiest solutions to manage configs for ML models

When you have a lot of experiments, you need to minimize your code bulk and manage model configs concisely.
(This also kind of can be done via CLI parameters, but usually these things complement each other)

I know 3 ways:

(0) dicts + kwargs + dotdicts
(1) [attr](https://github.com/python-attrs/attrs)
(2) new python 3.7 [DataClass](https://docs.python.org/3/library/dataclasses.html) (which is very similar to attr)

Which one do you use?

#data_science
2019 DS / ML digest 18
Link

Highlights of the week(s):

- Speech Vocoder w/o GPU on inference
- Publish ML web-apps w/o web frameworks via streamlit in pure python
- Unsupervised pre-training on non-curated image datasets
- PyTorch's popularity in research
- Why ML in medicine does not work and how to solve it via ontologies

#digest
#deep_learning
Streamlit vs. viola vs. panel vs. dash vs. bokeh server

TLDR - make scientific web-apps via python only w/o any web-programming (i.e. django, tornado).

Dash
- Mostly for BI
- Also a paid product
- Looks like the new Tableau
- Serving and out-of-the-box scaling options

Bokeh server
- Mostly plotting (very flexible, unlimited capabilities)
- High entry cost, though bokeh is kind of easy to use
- Also should scale well

Panel
- A bokeh server wrapper with a lot of capabilities for geo + templates

Streamlit
- The nicest looking app for interactive ML apps (maybe even annotation)
- Has pre-built styles and grid
- Limited only to its pre-built widgets
- Built on tornado with a very specific data model incompatible with the majority of available widgets
- Supposed to scale well - built on top of tornado

Viola
- If it runs in a notebook - it will run in viola
- Just turns a notebook into a server
- The app with the most promise for DS / ML
- Scales kind of meh - you need to run a jupyter kernel for each user - also takes some time to spin up a kernel
- Fully benefits from a rich ecosystem of jupyter / python / widgets
- In theory has customizable grid and CSS, but does not come pre-built with this => higher barrier to entry

Also most of these apps have no authentication buil-in.

More details:

- A nice summary here;
- A very detailed pros and cons summary of Streamlit + Viola. Also a very in-depth detailed discussion;
- Also awesome streamlit boilerplate is awesome;

#data_science
Amazing hardware YouTube channel (RU)

Link.

Smart, in-depth, highly analytical, no bs / ads / cringe / sensationalism. Not your typical Russian channel, not Linus Tech Tips or similar.

Example videos:

- What hardware companies could do
- Choosing a PSU

#hardware
Viewing jupyter notebook diffs properly

Tried this tool - https://www.reviewnb.com/
It promises proper notebook diff rendering especially in case of adding images

It renders such diffs properly ... but in THEIR third party interface, not within github (maybe I was naive to expect otherwise)
Which makes it kind of pointless
Now you do not have to try it
Минутка жизы

Давно не писал посты на русском, да и вообще я стараюсь сторониться противоречивых вещей, но вот накопился повод написать.

Предыстория

- Мы сделали очень разнообразный датасет на 20,000 часов для STT (для сравнения самые крупные публичные датасеты на английском в сумме составляют в районе 5,000 часов и домены там не очень разнообразные);
- Не то, чтобы его приняли очень холодно - скорее типичное диванное отношение "страна вас не забудет" / "так нельзя" / "вы нарушили чьи-то права" (кто что-то по сути хотел сказать - сказал, хоть таких было очень мало) / подарите нам за бусы / вставить нужное;
- Датасет лежит в публичном доступе, но под лицензией CC-NC-BY и некоторые существенные его части скрыты , чтобы таки товарищи с таким отношением не мешали. Тем не менее для тех, кто хочет поиграться с речью - там более чем достаточно данных;
- Про отдельные кейсы, когда коммерческие компании тупо его используют наплевав на лицензию - упомянуть стоит, но герои и сами знают себя в лицо;
- В общем и целом, без пиар машинки на миллион долларов и без криков что "ML эта крута!" - мы ожидали что оно разойдется хотя бы 3-5 мощнее, чем оно разошлось. Хотя как бы мы сделали огромную работу (ждите еще публикаций!) сопоставимую с тем, чтобы вытянуть бегемота из болота и посчитали нужным ей поделиться по-возможности. Отчасти это показывает, что массовый adoption спича еще довольно на низком уровне, да и чего греха таить - всем нужно все готовое и бесплатно, тут удивляться опять же особо нечему;

TLDR

Мне переслали пост от евангелиста Яндекса про то, что мол спич шагает огромными шагами (в реальности это не совсем так).
Если прочитать его, создается типичное ощущение, что все классно, ML "эта крута" и умные роботы уже стоят за углом (это мы тоже адресуем в публикации скоро). И это не какой-то стартап в доменной зоне .ai, который кричит на кажлом углу что-то, но по сути продает middle-ware, а типа топовый tech канал в телеге на русском языке.

Я не вспомню был ли пост изменен впоследствии, но после его публикации, я написал автору в личку с такой критикой, о том, что он как бы сильно искажает информацию (не подумайте, проект Мозиллы, ОЧЕНЬ крутой, они немногие кто публикует реально вменяемые вещи в спиче):

- Там реально нормальное число часов есть в 3-4 языках максимум;
- Сам датасет Common Voice скорее подходит для задачи идентификации спикеров;
- Модели они тренируют на своем + нескольких полу-публичных и приватных датасетах, но данные там довольно узкие по домены и их маловато. И тренируют они на одном языке;
- Про модели там отдельный аргумент (они не самые оптимальные), но это менее важно;

Мы пообщались, на что собственно был получен ответ, что подача собственно действительно предвзятая, но мол он топит за доступность данных, особенно на русском. А на русском в том же Common Voice куцые 67 часов, которые с учетом специфики спича и сбора датасета, для STT вообще никак не годятся. Увы и ах.

И возникает собственно риторический вопроc - зачем "лидеры мнений", якобы подкованные в технологиях, подают информацию в заведомо искаженном виде явно игнорируя очевидные факты (или просто не делая домашнюю работу)? Думайте сами)

So what?

Ну и что?

Да просто я в очередной раз убеждаюсь в следующих вещах

- Евангелисты / ведуны технических каналов / популяризаторы не то чтобы не рубят в своем предмете, они даже по ссылкам не проходят (не говоря уже об анализе и проверке фактов) - чтение такого контента просто увеличивает уровень шума. Особенно доставляет когда противоречие прямо находится на расстоянии одного клика;

- Если кто-то пишет, что все хорошо, и круто, и классно, задайте два вопроса (i) что именно умолчали и почему все так однобоко (ii) с какой целью все это сказано и что сказано между строк;

- Если вы молоды и ум ваш еще не до конца окреп - мотайте на ус, делайте выводы про то как работает мир, думайте хотите ли вы, чтобы такое становилось нормой;

I reject this reality and substitute my own!
Творите, верьте в себя, не пугайтесь, фильтруйте и не плодите мусор!
A Small Note On Keeping Access Tokens For Your Apps In Check

Use case - you want to use a trusted third party service to store API tokens / public keys for your services with the following requirements:

- Manage keys / revoke keys / manage users having access to said keys
- The service should be cheap
- Tag your secrets for easier filtering
- "Turn off" / revoke some secrets only for some keys

I viewed and tried several services, and it seems that (surprusingly for me) AWS Secrets Manager is the best one. It just works. Google's alternatives are a bit clunky / weird / still in beta (also Google has no proper clients for its secret manager service). Less known providers also have options (but do not expect easy to use clients), and there are self-hosted options, which are also a bit difficult to use. Also I found out that there are services that essentially provide you something similar to open cryptography packages (open-ssh) but in the cloud (why?).

Also ... a killer feature - you can use the amazing boto3 library in python with the majority of Amazon services. Surprise-surprise.

PS
I am NOT endorsing AWS, in general I try avoiding AWS. But s3-compatible storage, boto3 and this service are just too good.

#deployment
Logging With Notifications

Out-of-the box with 10+ providers. Integrated with loguru.

I frequently stumble upon people using some provider-specific client libraries / wrappers and / or writing some code to send some messages to themselves about their servers' hardware / neural network training / exceptions / pipelines. I even wrote such code myself. Lacking focus - the code was shitty and abandoned.

Now loguru is integrated with a notifiers library.
Just very helpful. Very simple and elegant. Just send yourself a telegram message and fall-back to gmail if it does not work.

... grain of salt

requests can use an env variable to use and HTTP or SOCK5 proxy. It works with some of the notifiers downstream libraries well enough if they use a sufficiently new version of requests (i.e. the code is fresh). But boto3 for example does not support SOCK5 proxies out of the box.


#deployment
A Great Start For Your Сustom Python Dockerfiles

I like to popularize really great open-source stuff. I have shared my ML Dockerfiles several time. Now I base my PyTorch workflows on ... surprise-surprise PyTorch's official images with Apex. But (when I looked) for some reason it was difficult to find the original dockerfiles themselves, there were only images (maybe I did not look well enough).

But what if you need a simpler / different / lighter python workflow without PyTorch / GPUs? Miniconda is an obvious choice. Yeah, and now there is miniconda as a docker image (pre-built) and with dockerfile! What is also remarkable, my dockerfile, which I inherited from Fchollet in 2017, starts very similarly to this miniconda dockerfile.

https://hub.docker.com/r/continuumio/miniconda3/dockerfile

Enjoy. A great way to start your python project and / or journey.

#python