Aspiring Data Science – Telegram
Aspiring Data Science
386 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#profiling #optimisation #python #speed #sklearn #bollocks

Эскалёрновские волшебники-программисты в деле. Столкнулся с неприемлемо низкой скоростью построения отчёта классификационных метрик на 8M примеров. 15 секунд, ну куда это годится? Проверил кирпичики расчётов по нисходящей. Матрица ошибок считается за полторы секунды. Это чем же надо угандошить процессор, чтобы простое деление пары чисел и упаковка в словарь выполнялись больше 10 секунд и делали расчёты в ДЕСЯТЬ раз длиннее? Такое и специально не сразу сделаешь.
😁1
#optimisation #sklearn #python #numba #codegems

Итак, то, что у кудесников машинного обучения считается 15 СЕКУНД, на самом деле должно занимать 50 МИЛЛИСЕКУНД. Но зато они сотни строк качественного кода написали, наверное, покрытого тестами, и прочим. Почему я считаю это важным? Да потому что мне предстоит обсчитывать сотни моделей, и оказалось, что качество обучения (classification report, roc auc, калибрация по всему сету + в разбивке по группам) на test set оценивается для 1 модели.. 5 минут, и основным тормозом был classification_report. Мне вовсе не улыбается платить за кластер, ожидающий сотни и тысячи раз по 5 минут. Спасибо, что у нас хотя бы есть numpy и numba. Без нумбы, кстати, этот код на языке программирования, созданном "гениальным" Ван Россумом, выполняется даже не знаю сколько, я прождал минут 5-10 и забил.

Скорее всего, напрасная трата времени, но всё же запостил issue. Как обычно, похерят, видимо.
👍1😁1
#hardware #flash

Кажется, у меня 8TB NVME SSD Sabrent в компе стоит. Его покупка в 2021-м стала моим самым полезным IT приобретением года. А то и многих. Скорости посл чтения в районе 4Гб/сек, прошу заметить. А для грядущего X5 пропускная способность даже случайного чтения (многопоточного) уже 6 Гб/с.

"Производитель показал результаты тестов накопителя Rocket X5 объёмом 2 Тбайт в утилите CrystalDiskMark 8.0.4. Новинка достигла скорости последовательного чтения в 14 179 Мбайт/с. Показатель скорости последовательной записи в свою очередь у неё составил 12 280 Мбайт/с. Цифры производительности в операциях случайного чтения и записи блоков данных объёмом 4 Kбайт тоже оказались высокими."

https://3dnews.ru/1089630/sabrent-vipustit-nvmenakopiteli-rocket-x5-so-skorostyu-chteniya-vishe-14-000-mbayts
#astronomy #biology #venus #lifeorigin

"На ежегодном собрании Королевского астрономического общества в Кардиффе астроном Джейн Гривз из Кардиффского университета в Уэльсе сообщила, что её группа снова обнаружила фосфин в атмосфере Венеры. Ранее она сообщала о таком же открытии в 2020 году, но тогда оно вызвало шквал критики и не было подтверждено сторонними наблюдениями. Учёная утверждает, что искать это химическое соединение необходимо глубже в атмосфере Венеры, и она его там нашла. По словам Джейн Гривз, искать нужно было на другой высоте. Её группа снова обнаружила следы фосфина «примерно в середине облачного покрова Венеры». Ждём реакции научного мира. Жаль, что миссия компании Rocket Lab к Венере отложена до 2025 года или на большее время. Они как раз собирались туда лететь в этом году для поиска неуловимого фосфина."

https://3dnews.ru/1089637/v-oblakah-veneri-snova-obnarugili-priznaki-sushchestvovaniya-gizni-okazalos-chto-ranshe-iskali-ne-tam
#optimisation #numba #numpy #auc #fastauc

Ещё немного про оптимизацию. В попытке найти быструю реализацию roc_auc набрёл на библу factauc, где автор не поленился и сделал numba-оптимизированную, и даже сишную реализации. В сишную он явно вложился, вон сколько кода, и не напрасно: она получилась самой быстрой, почти вдвое быстрее нумбовской (что меня уже насторожило). Проверил на своём массивчике 8M float-ов, действительно самые тормозные catboost и sklearn (больше 2 секунд), фастаук уже позволяет прыгнуть до 0.6 секунды с нумба и до 0.4 с Си++. Глянул нумбовскую реализацию, а там argsort закомпилирован. Вспомнилось, что раньше нумба замедляла эту функцию. Вынес argsort "за скобки" njit-компилятора, и вуаля, С++ реализация побита, 0.3 секунды )) Даже неловко было сообщать автору, но что поделаешь.

P.S. Всеволод сказал, что на неделе предлагаемое улучшение потестит и, если что, в fastauc замёрджит )
1🔥1
#trading #zhang #finance

Недавно постил лекцию Жихонг Жанга по DL на MOB, вы только посмотрите, насколько плодовит данный учёный!
Мама мия, 37 работ, и многие очень интересны уже по заголовкам. А, или то был Жихао. Все молодцы, в общем )
С нетерпением начту прочтение их совместной работы с Хуйлинь Юанем, не побоюсь этого имени, "Forecasting security's volatility using low-frequency historical data, high-frequency historical data and option-implied volatility".

https://arxiv.org/search/q-fin?searchtype=author&query=Zhang%2C+Z
👍1
#games

Bramble: The Mountain King — дуб, терновник и ясень.

"Не ходите, дети, ночью в лес гулять. Терновник запутает, терновник опутает, терновник утащит в чащу. Так предупреждает книга, которую на ночь читают брат и сестра — Олле и Лиллемор. Теперь Олле стоит перед книгой один, за окном ночь, ставни приоткрыты. Лиллемор нигде не видно. Что делать? Остается только спуститься по простыне из окна вниз, на полянку, — без сестры как-то не по себе. Да и сказки всё это, кто в них верит. Ну а родители… Какие родители?.."

https://3dnews.ru/1089436/bramble-the-mountain-king-retsenziya
#chess #analytics #streaks

Занимался весь день какой-то чепухой. Недавно был блиц-турнир шахматных стримеров, победителя обвинили в читерстве. Одним из критериев было озвучено 13 побед кряду над соперниками со сравнимым или более высоким рейтингом. Скачал все игры обвинителя, обвиняемого, и занявшего второе место (30 тыс игр). Показал, что выполнение такого "критерия" не такая уж редкость.
#hardware #amd #ml

"C выходом обновлённых версий фреймворка PyTorch 2.0 и платформы ROCm 5.4+ ситуация изменилась — обучение LLM стало возможным на ускорителях AMD Instinct MI250 без изменений кода при использовании её стека LLM Foundry Некоторые основные моменты:

Обучение LLM было стабильным. С высокодетерминированным обучающим стеком LLM Foundry обучение LLM MPT-1B на ускорителях AMD MI250 и NVIDIA A100 дало почти идентичные кривые потерь при запуске с одной и той же контрольной точки. Исследователи даже смогли переключаться между ускорителями AMD и NVIDIA в течение тренировочного прогона.
Производительность была конкурентоспособной с существующими системами A100. Исследователи профилировали пропускную способность обучения моделей MPT с параметрами от 1 до 13 млрд и обнаружили, что скорость обработки MI250 на один ускоритель находится в пределах 80 % от A100-40GB и в пределах 73 % от A100-80GB. Как ожидает компания, этот разрыв сократится по мере улучшения программного обеспечения AMD."

https://servernews.ru/1089341
#trading #finance #lob #dl

Очень интересные открытия: нет следов большой нестационарности (даже для 1 года OOS), 1 модель для всех активов лучше отдельных моделей для каждого актива. Использование моделек с памятью типа LSTM улучшает точность (от 100 до 5000 тиков, к примеру, на 1% - path dependence/long memory effects).

https://www.youtube.com/watch?v=diLtyRg6cl4
#optimization #ml #metrics #python #numba #codegems

В общем, sklearn-овские метрики оказались слишком медленными, пришлось их переписать на numba. Вот пример classification_report, который работает в тысячу раз быстрее и поддерживает почти всю функциональность (кроме весов и микровзвешивания). Также оптимизировал метрики auc (алгоритм взят из fastauc) и calibration (считаю бины предсказанные vs реальные, потом mae/std от их разностей). На 8M сэмплов всё работает за ~30 миллисекунд кроме auc, та ~300 мс. Для сравнения, scikit-learn-овские работают от нескольких секунд до нескольких десятков секунд.

@njit()
def fast_classification_report(
y_true: np.ndarray, y_pred: np.ndarray, nclasses: int = 2, zero_division: int = 0
):
"""Custom classification report, proof of concept."""

N_AVG_ARRAYS = 3 # precisions, recalls, f1s

# storage inits
weighted_averages = np.empty(N_AVG_ARRAYS, dtype=np.float64)
macro_averages = np.empty(N_AVG_ARRAYS, dtype=np.float64)
supports = np.zeros(nclasses, dtype=np.int64)
allpreds = np.zeros(nclasses, dtype=np.int64)
misses = np.zeros(nclasses, dtype=np.int64)
hits = np.zeros(nclasses, dtype=np.int64)

# count stats
for true_class, predicted_class in zip(y_true, y_pred):
supports[true_class] += 1
allpreds[predicted_class] += 1
if predicted_class == true_class:
hits[predicted_class] += 1
else:
misses[predicted_class] += 1

# main calcs
accuracy = hits.sum() / len(y_true)
balanced_accuracy = np.nan_to_num(hits / supports, copy=True, nan=zero_division).mean()

recalls = hits / supports
precisions = hits / allpreds
f1s = 2 * (precisions * recalls) / (precisions + recalls)

# fix nans & compute averages
i=0
for arr in (precisions, recalls, f1s):
np.nan_to_num(arr, copy=False, nan=zero_division)
weighted_averages[i] = (arr * supports).sum() / len(y_true)
macro_averages[i] = arr.mean()
i+=1

return hits, misses, accuracy, balanced_accuracy, supports, precisions, recalls, f1s, macro_averages, weighted_averages
👍63
Выложила в Линкедин новость про то, что наше исследование включили в программу Interspeech 2023 со всеми ссылками:

https://www.linkedin.com/posts/laida-kushnareva_interspeech-speechprocessing-tda-activity-7084488426594394113-3C5l/

(На самом деле, это произошло уже пару недель назад, но я то ли забыла написать, то ли постеснялась ☺️)
Очень волнуюсь, конечно, в связи с предстоящей конференцией: дадут ли визу (вчера наконец-то подала документы), будет ли мне хоть что-то понятно из чужих докладов на этой конфе (я ведь всё-таки больше специализируюсь на обработке текста), да и в целом, как коллеги по науке, занимающиеся обработкой речи, воспримут наш необычный подход.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1
#sklearn #metrics #optimization #numba

В гитхабе sklearn-а началась некая дискуссия о том, нужны ли быстрые метрики или даже использование Numba в sklearn. Возможно, у Вас тоже есть своё мнение?
❤‍🔥3
#physics #electrons

"Стандартная модель физики частиц предсказывает равное количество материи и антиматерии вокруг нас, что на самом деле не так. Частицы материи и антиматерии должны были аннигилировать вскоре после Большого взрыва — они идентичны по всем характеристикам за исключением знака заряда. Тем самым сегодня Вселенная была бы пуста, и нас бы в ней не было. Следовательно, есть вероятность, что частицы и античастицы могут отличаться чем-то пока неуловимым, поэтому так важно измерить все доступные для этого свойства частиц. Отсутствие симметрии заряда у электрона — если у него обнаружится электрический дипольный момент, пусть даже слабый — могло бы дать пищу для новых теорий о дисбалансе вещества и антивещества во Вселенной.

В эксперименте характеристики электронов измерялись лазерами, а сам подопытный электрон был помещён внутрь ионизированной молекулы (или обнаружен там). Затем на систему наводилось мощнейшее электромагнитное поле. Если бы заряд электрона был растянут, а не сосредоточен в одной точке, то он упал бы на бок «как яйцо на столе» при смене направления магнитного поля, поясняют учёные. Но электрон оставался в стабильном положении «как теннисный мячик», которому некуда и незачем катиться.

Новая точность измерений магнитного диполя электрона в 2,4 раза превысила точность измерений в предыдущем эксперименте. И эта точность была в 1 млрд выше предсказанной Стандартной моделью. Если бы электрон был размером с Землю, то учёные смогли бы увидеть асимметрию заряда размерами с радиус одного атома. Похоже, дальше нет смысла искать дипольный момент у электрона. Даже если он обнаружится, то его влияние на дисбаланс материи и антиматерии во Вселенной будет настолько небольшим, что его можно будет не учитывать."

https://3dnews.ru/1089770/elektronu-otkazano-prinimat-ovalnuyu-formu-on-popregnemu-sharik-pokazalo-novoe-issledovanie
👍2👨‍💻1
#astronomy

"Поиск в районе разрушения метеорита IM1 магнитным тралом принёс результат. После просеивания магнитных частиц вулканического происхождения удалось обнаружить магнитные образцы размером меньше миллиметра, которые отличались от «фоновых» частиц, поднятых со дна на контрольном участке. Анализ показал, что частички состоят на 84 % из железа, на 8 % из кремния, на 4 % из магния и на 2 % из титана, плюс микроэлементы. Кроме того, в образцах были выявлены изотопы урана и свинца, что позволяет оценить возраст образцов по периоду полураспада урана. Данные по двум образцам показали возраст 13,8 млрд лет, тогда как образцы с контрольного участка показывали возраст 4,6 млрд лет (возраст Солнечной системы). Это стало ещё одним доказательством происхождения метеорита IM1 вне нашей системы."

https://3dnews.ru/1089757/so-dna-tihogo-okeana-podnyati-fragmenti-pervogo-megzvyozdnogo-meteorita-uchyonie-nadeyalis-nayti-v-nih-priznaki-inoplanetnih-tehnologiy
Марк – американец русского происхождения. Традиционно он приезжает на годовщины компании, ну и постоянно смешит меня своими реакциями.
- Слышал, в марте прошлого года у Яндекс.Еды произошла утечка данных?
- Ого, и сколько в итоге они по индивидуальным, коллективным искам выплатили?