#cuda #gpu #architecture #programming
Напоминалка, как устроена программная модель Cuda. Что такое потоки, блоки, сетки.
https://developer.nvidia.com/blog/cuda-refresher-cuda-programming-model/
Напоминалка, как устроена программная модель Cuda. Что такое потоки, блоки, сетки.
https://developer.nvidia.com/blog/cuda-refresher-cuda-programming-model/
NVIDIA Technical Blog
CUDA Refresher: The CUDA Programming Model
This is the fourth post in the CUDA Refresher series, which has the goal of refreshing key concepts in CUDA, tools, and optimization for beginning or intermediate developers.
#featureselection #diogenes #optimisation #gpu #cuda #cupy
Докладываю новости о проекте Диоген. Вчера добавил бюджет времени, переписал функции покрасивее, потестировал все ветки. С указанием допустимого времени работает просто отлично.
Сегодня ещё добавил функциональность random seed. Выяснилось, что нумба не подтягивает его из нампай "обычного" режима, надо в njit-нутой функции его ещё раз выставлять.
Отпрофилировал код на глубинах 1-2 взаимодействий признаков. Оказалось, что 80% времени кушает оценка кандидатов, и 20% времени - расчёт надёжности для лучших кандидатов. Из этих 80% основные опять же ~80% тратятся в прямой оценке MI кандидата и таргета.
Дальше они распадаются так: 20% на слияние многомерного вектора, 70% на перемешивание таргета (np.random.shuffle), 10% на сам расчёт MI из совместного распределения.
Очевидно, выгоднее всего оптимизировать шаффл таргета. Решил попробовать cupy как замену numpy: просто перенести таргет в память gpu и шаффлить прямо там. Улучшения таймингов это не дало, т.к. перемешанный, пусть и быстро, массив 120k элементов всё равно надо было копировать обратно в RAM для подсчёта MI.
К счастью, подумал я, cupy позволяет писать и запускать произвольные ядра Cuda в C++ прямо из питона. Почему бы не выполнить расчёт гистограммы и MI прямо на GPU? Капец я с этим намучался ) Я же совсем забыл, что программирование для GPU - это сущий ад после "обычного", в поточной парадигме: ваша программа выполняется сразу на тысячах потоков, куча ограничений и условий, разделяемая память,синхронизация, атомики, блоки... Плюс я совсем забыл С++ (даже то немногое, что знал). Да ещё cupy иногда радовал перлами типа невозможности подсчитать сумму массива без Visual Studio 2019 (хотя максимум считался нормально).
В итоге всё же добил эту идею, и сейчас у меня есть реализация критической части на Cuda )
Что же по скорости?
%timeit показывает, что массив 120k элементов ноутбучная 1050Ti шаффлит в 4 раза быстрее, чем i7-7700HQ. То есть я могу ожидать, что 0.8*0.8*0.7=40% всего времени исполнения сократится в 4 раза. Если поиск на CPU идёт 15 минут, то можно ожидать, что на GPU это будет 15*0.6+15*0,4/4=11 минут.
Напрямую сравнить CPU и GPU не получается, т.к. у разных библ разные сиды и порядок выполнения операций, а длительность всего поиска зависит от случайных решений. Пара запусков дала новое время 12.5-13.0 минут вместо 15. Возможно, где-то налажал, буду ещё профилировать. Но timeit шаффла массива 1M элементов даёт выигрыш уже не в 4, а в 40 раз, т.е., по идее, GPU будет ещё выгоднее для больших датасетов.
Докладываю новости о проекте Диоген. Вчера добавил бюджет времени, переписал функции покрасивее, потестировал все ветки. С указанием допустимого времени работает просто отлично.
Сегодня ещё добавил функциональность random seed. Выяснилось, что нумба не подтягивает его из нампай "обычного" режима, надо в njit-нутой функции его ещё раз выставлять.
Отпрофилировал код на глубинах 1-2 взаимодействий признаков. Оказалось, что 80% времени кушает оценка кандидатов, и 20% времени - расчёт надёжности для лучших кандидатов. Из этих 80% основные опять же ~80% тратятся в прямой оценке MI кандидата и таргета.
Дальше они распадаются так: 20% на слияние многомерного вектора, 70% на перемешивание таргета (np.random.shuffle), 10% на сам расчёт MI из совместного распределения.
Очевидно, выгоднее всего оптимизировать шаффл таргета. Решил попробовать cupy как замену numpy: просто перенести таргет в память gpu и шаффлить прямо там. Улучшения таймингов это не дало, т.к. перемешанный, пусть и быстро, массив 120k элементов всё равно надо было копировать обратно в RAM для подсчёта MI.
К счастью, подумал я, cupy позволяет писать и запускать произвольные ядра Cuda в C++ прямо из питона. Почему бы не выполнить расчёт гистограммы и MI прямо на GPU? Капец я с этим намучался ) Я же совсем забыл, что программирование для GPU - это сущий ад после "обычного", в поточной парадигме: ваша программа выполняется сразу на тысячах потоков, куча ограничений и условий, разделяемая память,синхронизация, атомики, блоки... Плюс я совсем забыл С++ (даже то немногое, что знал). Да ещё cupy иногда радовал перлами типа невозможности подсчитать сумму массива без Visual Studio 2019 (хотя максимум считался нормально).
В итоге всё же добил эту идею, и сейчас у меня есть реализация критической части на Cuda )
Что же по скорости?
%timeit показывает, что массив 120k элементов ноутбучная 1050Ti шаффлит в 4 раза быстрее, чем i7-7700HQ. То есть я могу ожидать, что 0.8*0.8*0.7=40% всего времени исполнения сократится в 4 раза. Если поиск на CPU идёт 15 минут, то можно ожидать, что на GPU это будет 15*0.6+15*0,4/4=11 минут.
Напрямую сравнить CPU и GPU не получается, т.к. у разных библ разные сиды и порядок выполнения операций, а длительность всего поиска зависит от случайных решений. Пара запусков дала новое время 12.5-13.0 минут вместо 15. Возможно, где-то налажал, буду ещё профилировать. Но timeit шаффла массива 1M элементов даёт выигрыш уже не в 4, а в 40 раз, т.е., по идее, GPU будет ещё выгоднее для больших датасетов.
✍1
#nvidia
"В настоящий момент стоимость каждого ускорителя NVIDIA H100 в зависимости от региона продаж и поставщика в среднем составляет $25–30 тыс. При этом речь идёт о менее дорогой PCIe-версии указанного решения. По оценкам Raymond James, стоимость использующегося в этом ускорителе графического процессора, а также дополнительных материалов (печатной платы и других вспомогательных элементов) составляет $3320. К сожалению, Ким не уточняет глубину анализа расчёта стоимости и не поясняет, включены ли в этот показатель такие факторы, как затраты на разработку, зарплата инженеров, а также стоимость производства и логистики.
Разработка специализированных ускорителей требует значительного времени и ресурсов. По данным того же портала Glassdoor, средняя зарплата инженера по аппаратному обеспечению в NVIDIA составляет около $202 тыс. в год. Речь идёт только об одном инженере, но очевидно, что при разработке тех же H100 работала целая команда специалистов, а на саму разработку были затрачены тысячи рабочих часов. Всё это должно учитываться в конечной стоимости продукта.
И всё же очевидно, что сейчас NVIDIA в вопросе поставок аппаратных средств для ИИ-вычислений находится вне конкуренции. На специализированные ускорители «зелёных» сейчас такой спрос, что они распродаются ещё задолго до того, как попадают на условные полки магазинов. Поставщики говорят, что очередь за ними растянулась до второго квартала 2024 года. А с учётом последних оценок аналитиков, согласно которым к 2027 году рынок ИИ-вычислений вырастет до $150 млрд, ближайшее будущее NVIDIA видится точно безбедным.
С другой стороны, для рынка в целом высокий спрос на ускорители ИИ-вычислений имеет свои негативные последствия. В последних отчётах аналитиков говорится, что продажи традиционных серверов (HPC) в глобальном масштабе сокращаются. Основная причина падения спроса заключается в том, что гиперскейлеры и операторы ЦОД переключают внимание на системы, оптимизированные для ИИ, в которых используются решения вроде NVIDIA H100. По этой причине тем же производителям памяти DDR5 пришлось пересмотреть свои ожидания относительно распространения нового стандарта ОЗУ на рынок, поскольку операторы ЦОД сейчас активно инвестируют именно в ускорители ИИ, а не в новый стандарт оперативной памяти. На фоне это ожидается, что уровень внедрения DDR5 достигнет паритета с DDR4 только к третьему кварталу 2024 года."
https://3dnews.ru/1091667/nvidia-h100-1000-procentov-viruchki
"В настоящий момент стоимость каждого ускорителя NVIDIA H100 в зависимости от региона продаж и поставщика в среднем составляет $25–30 тыс. При этом речь идёт о менее дорогой PCIe-версии указанного решения. По оценкам Raymond James, стоимость использующегося в этом ускорителе графического процессора, а также дополнительных материалов (печатной платы и других вспомогательных элементов) составляет $3320. К сожалению, Ким не уточняет глубину анализа расчёта стоимости и не поясняет, включены ли в этот показатель такие факторы, как затраты на разработку, зарплата инженеров, а также стоимость производства и логистики.
Разработка специализированных ускорителей требует значительного времени и ресурсов. По данным того же портала Glassdoor, средняя зарплата инженера по аппаратному обеспечению в NVIDIA составляет около $202 тыс. в год. Речь идёт только об одном инженере, но очевидно, что при разработке тех же H100 работала целая команда специалистов, а на саму разработку были затрачены тысячи рабочих часов. Всё это должно учитываться в конечной стоимости продукта.
И всё же очевидно, что сейчас NVIDIA в вопросе поставок аппаратных средств для ИИ-вычислений находится вне конкуренции. На специализированные ускорители «зелёных» сейчас такой спрос, что они распродаются ещё задолго до того, как попадают на условные полки магазинов. Поставщики говорят, что очередь за ними растянулась до второго квартала 2024 года. А с учётом последних оценок аналитиков, согласно которым к 2027 году рынок ИИ-вычислений вырастет до $150 млрд, ближайшее будущее NVIDIA видится точно безбедным.
С другой стороны, для рынка в целом высокий спрос на ускорители ИИ-вычислений имеет свои негативные последствия. В последних отчётах аналитиков говорится, что продажи традиционных серверов (HPC) в глобальном масштабе сокращаются. Основная причина падения спроса заключается в том, что гиперскейлеры и операторы ЦОД переключают внимание на системы, оптимизированные для ИИ, в которых используются решения вроде NVIDIA H100. По этой причине тем же производителям памяти DDR5 пришлось пересмотреть свои ожидания относительно распространения нового стандарта ОЗУ на рынок, поскольку операторы ЦОД сейчас активно инвестируют именно в ускорители ИИ, а не в новый стандарт оперативной памяти. На фоне это ожидается, что уровень внедрения DDR5 достигнет паритета с DDR4 только к третьему кварталу 2024 года."
https://3dnews.ru/1091667/nvidia-h100-1000-procentov-viruchki
3DNews - Daily Digital Digest
NVIDIA продаёт ИИ-ускорители H100 с наценкой в 1000 %, но спрос на них только растёт
NVIDIA получает до 1000 % выручки с каждого проданного специализированного графического ускорителя H100, предназначенного для задач, связанных с искусственным интеллектом.
#astronomy
"Автоматическая межпланетная станция «Луна-25», которая несколько дней назад стартовала с космодрома Восточный, сделала первый снимок поверхности естественного спутника нашей планеты.В сообщении сказано, что межпланетная станция провела съёмку лунной поверхности телевизионными камерами комплекса СТС-Л. На снимке запечатлён южный полярный кратер Зееман, расположенный на обратной стороне Луны (координаты кратера соответствуют 75° южной широты и 135° градусам западной долготы). В дополнение к этому «Луна-25» провела наблюдение с помощью приборов АДРОН-ЛР и ПмЛ, АРИЕС-Л. Проведено измерение потоков гамма-лучей и нейтронов от поверхности Луны, а также получены параметры окололунной космической плазмы и газопылевой экзосферы на окололунной орбите.
Что касается кратера Зеемана, то он представляет собой уникальный объект на лунной поверхности, который не видно с поверхности Земли и который вызывает большой интерес у исследователей. Высота окружающего его вала достигается 8 км над поверхностью относительно ровного дна. Полученные изображения дополнят имеющиеся в настоящее время данные об этом кратере."
https://3dnews.ru/1091654/megplanetnaya-stantsiya-luna25-sdelala-perviy-snimok-poverhnosti-sputnika-zemli
"Автоматическая межпланетная станция «Луна-25», которая несколько дней назад стартовала с космодрома Восточный, сделала первый снимок поверхности естественного спутника нашей планеты.В сообщении сказано, что межпланетная станция провела съёмку лунной поверхности телевизионными камерами комплекса СТС-Л. На снимке запечатлён южный полярный кратер Зееман, расположенный на обратной стороне Луны (координаты кратера соответствуют 75° южной широты и 135° градусам западной долготы). В дополнение к этому «Луна-25» провела наблюдение с помощью приборов АДРОН-ЛР и ПмЛ, АРИЕС-Л. Проведено измерение потоков гамма-лучей и нейтронов от поверхности Луны, а также получены параметры окололунной космической плазмы и газопылевой экзосферы на окололунной орбите.
Что касается кратера Зеемана, то он представляет собой уникальный объект на лунной поверхности, который не видно с поверхности Земли и который вызывает большой интерес у исследователей. Высота окружающего его вала достигается 8 км над поверхностью относительно ровного дна. Полученные изображения дополнят имеющиеся в настоящее время данные об этом кратере."
https://3dnews.ru/1091654/megplanetnaya-stantsiya-luna25-sdelala-perviy-snimok-poverhnosti-sputnika-zemli
3DNews - Daily Digital Digest
«Луна-25» сделала первый снимок лунной поверхности — на фото попал кратер Зееман
Автоматическая межпланетная станция «Луна-25», которая несколько дней назад стартовала с космодрома Восточный, сделала первый снимок поверхности естественного спутника нашей планеты.
#featureselection
Lasso regularization path - примечательный метод.
https://www.youtube.com/watch?v=rxiORUw-nKs
Lasso regularization path - примечательный метод.
https://www.youtube.com/watch?v=rxiORUw-nKs
scikit-learn
Regularization path of L1- Logistic Regression
Train l1-penalized logistic regression models on a binary classification problem derived from the Iris dataset. The models are ordered from strongest regularized to least regularized. The 4 coeffic...
#fun #chess
Комментарий после того, как шахматный стример X отказался от матча:
"Чего вы пристали к X? Ну нет у него столько денег! Своих нет! Продать свои принципы за чужие 100к,-пожалуйста))а свои денежки не чужие))Владелец "заводов и пароходов", зарабатывающий от 500 к до 1 м в месяц, ушедший в бусти за прибылью, которая почему то не капает, продающий курс-как стать успешным,на который,может откликнуться только человек,котрому в палату дали Wi-Fi..."
Комментарий после того, как шахматный стример X отказался от матча:
"Чего вы пристали к X? Ну нет у него столько денег! Своих нет! Продать свои принципы за чужие 100к,-пожалуйста))а свои денежки не чужие))Владелец "заводов и пароходов", зарабатывающий от 500 к до 1 м в месяц, ушедший в бусти за прибылью, которая почему то не капает, продающий курс-как стать успешным,на который,может откликнуться только человек,котрому в палату дали Wi-Fi..."
#entropy #mutualinformation #prediction #finance #trading #causality
https://www.youtube.com/watch?v=tdWh7agQfTk
https://www.youtube.com/watch?v=tdWh7agQfTk
YouTube
Entropy, Mutual Information & Prediction
University of Illinois at Springfield Mathematics Colloquium page: https://www.uis.edu/math/colloquium
Title : Entropy, Mutual Information & Prediction
Speaker: Doug Hamilton
Date: April 13th, 2023
Location: University of Illinois Springfield (Mathematics…
Title : Entropy, Mutual Information & Prediction
Speaker: Doug Hamilton
Date: April 13th, 2023
Location: University of Illinois Springfield (Mathematics…
#featureselection #itmofs
Качественный и оригинальный материал. Впервые вижу оценку стабильности отборщиков признаков (с применением метрик Жаккара, Хэмминга), интерпретацию FS как задачи бинарной классификации (угадал FS признак, который был релевантным, или нет).
https://www.youtube.com/watch?v=fOjdGd-7o3s
Качественный и оригинальный материал. Впервые вижу оценку стабильности отборщиков признаков (с применением метрик Жаккара, Хэмминга), интерпретацию FS как задачи бинарной классификации (угадал FS признак, который был релевантным, или нет).
https://www.youtube.com/watch?v=fOjdGd-7o3s
YouTube
Вадим Глухов - Feature Selection
Вопросы и комментарии — в Telegram-чате сообщества NoML:
t.me/noml_community
Код и материалы всех мероприятий — в базе знаний:
noml.club
Анонсы новых мероприятий и другая полезная информация — в канале сообщества NoML:
t.me/noml_digest
t.me/noml_community
Код и материалы всех мероприятий — в базе знаний:
noml.club
Анонсы новых мероприятий и другая полезная информация — в канале сообщества NoML:
t.me/noml_digest
✍1
#featureselection
Хотелось бы свою либу потестить на этих датасетах.
Result Analysis of the NIPS 2003 Feature Selection Challenge
"The challenge demonstrated both that feature selection can be performed effectively and that eliminating meaningless features is not critical to
achieve good classification performance. By design, our datasets include many irrelevant “distracters” features, called “probes”. In contrast with redundant fea tures, which may not be needed to improve accuracy but carry information, those distracters are “pure noise”. It is surprising that some of the best entries use all the features. Still, there is always another entry close in performance, which uses only a small fraction of the original features.
The challenge outlined the power of filter methods. For many years, filter meth ods have dominated feature selection for computational reasons. It was understood that wrapper and embedded methods are more powerful, but too computationally expensive. Some of the top ranking entries use one or several filters as their only selection strategy. A filter as simple as the Pearson correlation coefficient proves to be very effective, even though it does not remove feature redundancy and there fore yields unnecessarily large feature subsets. Other entrants combined filters and embedded methods to further reduce the feature set and eliminate redundancies.
Another important outcome is that non-linear classifiers do not necessarily overfit. Several challenge datasets included a very large number of features (up to 100,000) and only a few hundred examples. Therefore, only methods that avoid overfitting can succeed in such adverse aspect ratios. Not surprisingly, the winning entries use as classifies either ensemble methods or strongly regularized classifiers. More surprisingly, non-linear classifiers often outperform linear classifiers. Hence, with adequate regularization, non-linear classifiers do not overfit the data, even when the number of features exceeds the number of examples by orders of magnitude.
The analysis of the challenge results revealed that hyperparameter selection may have played an important role in winning the challenge. Indeed, several groups were using the same classifier (e.g. an SVM) and reported significantly different results."
https://proceedings.neurips.cc/paper/2004/file/5e751896e527c862bf67251a474b3819-Paper.pdf
Хотелось бы свою либу потестить на этих датасетах.
Result Analysis of the NIPS 2003 Feature Selection Challenge
"The challenge demonstrated both that feature selection can be performed effectively and that eliminating meaningless features is not critical to
achieve good classification performance. By design, our datasets include many irrelevant “distracters” features, called “probes”. In contrast with redundant fea tures, which may not be needed to improve accuracy but carry information, those distracters are “pure noise”. It is surprising that some of the best entries use all the features. Still, there is always another entry close in performance, which uses only a small fraction of the original features.
The challenge outlined the power of filter methods. For many years, filter meth ods have dominated feature selection for computational reasons. It was understood that wrapper and embedded methods are more powerful, but too computationally expensive. Some of the top ranking entries use one or several filters as their only selection strategy. A filter as simple as the Pearson correlation coefficient proves to be very effective, even though it does not remove feature redundancy and there fore yields unnecessarily large feature subsets. Other entrants combined filters and embedded methods to further reduce the feature set and eliminate redundancies.
Another important outcome is that non-linear classifiers do not necessarily overfit. Several challenge datasets included a very large number of features (up to 100,000) and only a few hundred examples. Therefore, only methods that avoid overfitting can succeed in such adverse aspect ratios. Not surprisingly, the winning entries use as classifies either ensemble methods or strongly regularized classifiers. More surprisingly, non-linear classifiers often outperform linear classifiers. Hence, with adequate regularization, non-linear classifiers do not overfit the data, even when the number of features exceeds the number of examples by orders of magnitude.
The analysis of the challenge results revealed that hyperparameter selection may have played an important role in winning the challenge. Indeed, several groups were using the same classifier (e.g. an SVM) and reported significantly different results."
https://proceedings.neurips.cc/paper/2004/file/5e751896e527c862bf67251a474b3819-Paper.pdf
#featureselection #featureimportance
Оказывается, к "встроенной" важности признаков, по кр. мере, у деревянных моделей, нужно относиться с недоверием. Если модель оверфитнулась, большую внутреннюю важность могут запросто получить даже случайные признаки, особенно если у них высокая кардинальность. С другой стороны, такие оверфитнутые модельки вовсе не бесполезны, и истинную ценность признаков из них можно извлечь, используя holdout set и перестановочную важность. Но и она страдает от наличия мультиколлинеарности:
"When features are collinear, permutating one feature will have little effect on the models performance because it can get the same information from a correlated feature. One way to handle multicollinear features is by performing hierarchical clustering on the Spearman rank-order correlations, picking a threshold, and keeping a single feature from each cluster."
Оказывается, к "встроенной" важности признаков, по кр. мере, у деревянных моделей, нужно относиться с недоверием. Если модель оверфитнулась, большую внутреннюю важность могут запросто получить даже случайные признаки, особенно если у них высокая кардинальность. С другой стороны, такие оверфитнутые модельки вовсе не бесполезны, и истинную ценность признаков из них можно извлечь, используя holdout set и перестановочную важность. Но и она страдает от наличия мультиколлинеарности:
"When features are collinear, permutating one feature will have little effect on the models performance because it can get the same information from a correlated feature. One way to handle multicollinear features is by performing hierarchical clustering on the Spearman rank-order correlations, picking a threshold, and keeping a single feature from each cluster."
scikit-learn
Permutation Importance vs Random Forest Feature Importance (MDI)
In this example, we will compare the impurity-based feature importance of RandomForestClassifier with the permutation importance on the titanic dataset using permutation_importance. We will show th...
#astronomy
Деградация во всём.
"«Луна-25» стала первой российской миссией к Луне за последние полвека. Запуск произошёл 11 августа с космодрома Восточный в Амурской области. Станция планировалась к посадке на Луну с 21 по 24 августа, а 16 августа успешно вышла на окололунную орбиту. Несмотря на кратковременное существование, «Луна-25» успела провести ряд исследований, включая измерение потоков гамма-лучей и нейтронов. Последний аналогичный проект, «Луна-24», был реализован советскими учёными в 1976 году. Тогда аппарат привёз на Землю 170 граммов лунного грунта, в котором содержалась вода.
Крушение «Луна-25» стало напоминанием о сложностях космических исследований и неизвестности далёкого космоса. Несмотря на технологические достижения, изучение Луны остаётся сложной и рискованной задачей. Надежда на успешное освоение ближайшего спутника Земли сохраняется, и новые миссии, несомненно, будут запущены в ближайшем будущем."
https://3dnews.ru/1091771/missiya-luna-25-zavershilas-krusheniem-roskosmos-podtverdil-stolknovenie
Деградация во всём.
"«Луна-25» стала первой российской миссией к Луне за последние полвека. Запуск произошёл 11 августа с космодрома Восточный в Амурской области. Станция планировалась к посадке на Луну с 21 по 24 августа, а 16 августа успешно вышла на окололунную орбиту. Несмотря на кратковременное существование, «Луна-25» успела провести ряд исследований, включая измерение потоков гамма-лучей и нейтронов. Последний аналогичный проект, «Луна-24», был реализован советскими учёными в 1976 году. Тогда аппарат привёз на Землю 170 граммов лунного грунта, в котором содержалась вода.
Крушение «Луна-25» стало напоминанием о сложностях космических исследований и неизвестности далёкого космоса. Несмотря на технологические достижения, изучение Луны остаётся сложной и рискованной задачей. Надежда на успешное освоение ближайшего спутника Земли сохраняется, и новые миссии, несомненно, будут запущены в ближайшем будущем."
https://3dnews.ru/1091771/missiya-luna-25-zavershilas-krusheniem-roskosmos-podtverdil-stolknovenie
3DNews - Daily Digital Digest
Станция «Луна-25» разбилась о поверхность Луны — Роскосмос подтвердил крушение
Роскосмос подтвердил столкновение автоматической межпланетной станции «Луна-25» с поверхностью Луны.
#featureselection #diogenes
Прошлые несколько дней были весьма продуктивны в плане развития отборщика признаков.
Перевёл все 3 места, где было возможно, на параллельные вычисления с joblib. Преимущество в том, что это означает практически "из коробки" работу с кластером Dask (надо лишь передать joblib-у хэндл кластера), хотя там я пока не тестировал. Ну и, конечно, сами процедуры, выполняемые параллельно, оптимизированы numba и используют кэширование энтропий и взаимных информаций.
На винде отмечаю, что с дефолтным бэком (loky) воркеры иногда создаются очень долго, порядка минуты, с полной загрузкой ядер. Хм, надо бы попробовать backend="threading" и njit(nogil=True).
По алгоритмам. Не сработала моя идея с коррекцией формулы Флеврета, на удивление она даёт много ложноположительных срабатываний. Также пришлось придумать решение, которое понижает выгоду от добавления ПАРЫ кандидатов, при условии что один из кандидатов уже подтверждён как предиктор (иначе необоснованно всплывали подобные пары). Ещё выяснилось, что в тестах надёжности перемешивать таргет бывает недостаточно, лучше мешать ещё и кандидатов.
Закрыл практически все базовые задачи по этому проекту. Сегодня добиваю проверку на связь с 2 и больше другими кандидатами, и временно переключаюсь на другой проект. К Диогену вернусь через неделю, надо его будет потестить в скальпинге и в большом сравнении FS-алгоритмов.
Что в нём осталось сделать:
обёртку для совместимости с конвейерами sklearn
мультитаргет
опциональный алгоритм PLD
допстатистика в графовой визуализации (пары, иерархия)
Как я вижу его применение
1) как средство denoscriptive analytics - найти хорошие признаки из тысяч кандидатов, понять, в какую сторону копать дальше, чтобы создать больше хороших фичей (особенно с фишкой мультитаргета)
2) как средство predictive analytics , чтобы в боевом ML конвейере осуществлять прескрининг признаков. Он будет разбивать все признаки на influencing (те, что отобраны mrmr), redundant (те, для которых значимо подтверждена связь с таргетом, но которые не добавляют новой инфы к influencing), possibly_redundant (те, для которых возможна связь с таргетом, но которые не добавляют новой инфы к influencing), и irrelevant. Ну или можно использовать терминологию Boruta: accepted, tentative, rejected.
По идее, вся дальнейшая работа должна вестись со списком influencing. но ещё можно порекомендовать по отдельной модели на списки redundant+possibly_redundant и даже на irrelevant, потому что Диоген отлавливает только ограниченный порядок интеракций (обычно 2-3, дальше совместные распределения начинают вырождаться - тут бы придумать научно обоснованную перенормировку, но это в будущем). Не знаю, смогут ли поймать 4-интеракции типа XOR леса/бустинги, но вдруг. Лично мне пока кажется, что 2-way interactions+influencing only для практических задач будет за глаза.
Прошлые несколько дней были весьма продуктивны в плане развития отборщика признаков.
Перевёл все 3 места, где было возможно, на параллельные вычисления с joblib. Преимущество в том, что это означает практически "из коробки" работу с кластером Dask (надо лишь передать joblib-у хэндл кластера), хотя там я пока не тестировал. Ну и, конечно, сами процедуры, выполняемые параллельно, оптимизированы numba и используют кэширование энтропий и взаимных информаций.
На винде отмечаю, что с дефолтным бэком (loky) воркеры иногда создаются очень долго, порядка минуты, с полной загрузкой ядер. Хм, надо бы попробовать backend="threading" и njit(nogil=True).
По алгоритмам. Не сработала моя идея с коррекцией формулы Флеврета, на удивление она даёт много ложноположительных срабатываний. Также пришлось придумать решение, которое понижает выгоду от добавления ПАРЫ кандидатов, при условии что один из кандидатов уже подтверждён как предиктор (иначе необоснованно всплывали подобные пары). Ещё выяснилось, что в тестах надёжности перемешивать таргет бывает недостаточно, лучше мешать ещё и кандидатов.
Закрыл практически все базовые задачи по этому проекту. Сегодня добиваю проверку на связь с 2 и больше другими кандидатами, и временно переключаюсь на другой проект. К Диогену вернусь через неделю, надо его будет потестить в скальпинге и в большом сравнении FS-алгоритмов.
Что в нём осталось сделать:
обёртку для совместимости с конвейерами sklearn
мультитаргет
опциональный алгоритм PLD
допстатистика в графовой визуализации (пары, иерархия)
Как я вижу его применение
1) как средство denoscriptive analytics - найти хорошие признаки из тысяч кандидатов, понять, в какую сторону копать дальше, чтобы создать больше хороших фичей (особенно с фишкой мультитаргета)
2) как средство predictive analytics , чтобы в боевом ML конвейере осуществлять прескрининг признаков. Он будет разбивать все признаки на influencing (те, что отобраны mrmr), redundant (те, для которых значимо подтверждена связь с таргетом, но которые не добавляют новой инфы к influencing), possibly_redundant (те, для которых возможна связь с таргетом, но которые не добавляют новой инфы к influencing), и irrelevant. Ну или можно использовать терминологию Boruta: accepted, tentative, rejected.
По идее, вся дальнейшая работа должна вестись со списком influencing. но ещё можно порекомендовать по отдельной модели на списки redundant+possibly_redundant и даже на irrelevant, потому что Диоген отлавливает только ограниченный порядок интеракций (обычно 2-3, дальше совместные распределения начинают вырождаться - тут бы придумать научно обоснованную перенормировку, но это в будущем). Не знаю, смогут ли поймать 4-интеракции типа XOR леса/бустинги, но вдруг. Лично мне пока кажется, что 2-way interactions+influencing only для практических задач будет за глаза.
#featurselection #itmofs
В недавнем видео было про университетскую либу ITMO_FS, там структурированный грамотный код, я уже думал расслабиться, всё придумали до нас.
Но нет, по виду, это скорее академический проект, непригодный для боя: чистый медленный питон (в крайнем случай, нумпай), нет многопоточности, оценки надёжности с помощью случайных перестановок, нет мультивекторов, нет кэширующих оптимизаций. Для реальной работы это несерьёзно. Я постараюсь включить ITMO_FS в грядущее сравнение отборщиков признаков в сентябре, там просто огромное количество методов отбора.
Ха-ха, и уже в первом же примере использования у них концептуальная ошибка.
"Here is one of examples of feature selection improving the classification quality:
В недавнем видео было про университетскую либу ITMO_FS, там структурированный грамотный код, я уже думал расслабиться, всё придумали до нас.
Но нет, по виду, это скорее академический проект, непригодный для боя: чистый медленный питон (в крайнем случай, нумпай), нет многопоточности, оценки надёжности с помощью случайных перестановок, нет мультивекторов, нет кэширующих оптимизаций. Для реальной работы это несерьёзно. Я постараюсь включить ITMO_FS в грядущее сравнение отборщиков признаков в сентябре, там просто огромное количество методов отбора.
Ха-ха, и уже в первом же примере использования у них концептуальная ошибка.
"Here is one of examples of feature selection improving the classification quality:
>>> from sklearn.datasets import make_classificationAs expected, the quality of the SVGClassifier’s results is impacted by the presence of redundant features in data set. We can see that after using of feature selection the mean accuracy increases from 0.903 to 0.943."
>>> from sklearn.linear_model import SGDClassifier
>>> from ITMO_FS.embedded import MOS
>>> X, y = make_classification(n_samples=300, n_features=10, random_state=0, n_informative=2)
>>> sel = MOS()
>>> trX = sel.fit_transform(X, y, smote=False)
>>> cl1 = SGDClassifier()
>>> cl1.fit(X, y)
>>> cl1.score(X, y)
0.9033333333333333
>>> cl2 = SGDClassifier()
>>> cl2.fit(trX, y)
>>> cl2.score(trX, y)
0.9433333333333334
GitHub
GitHub - ctlab/ITMO_FS: Feature selection library in python
Feature selection library in python. Contribute to ctlab/ITMO_FS development by creating an account on GitHub.
#trading #backtesting #vectorbt #python #walkforward
Мне кажется, boilerplate кода многовато для либы бэктестинга, претендующей на полноту и полезность.
https://www.youtube.com/watch?v=RKE1ZXm00NY
Мне кажется, boilerplate кода многовато для либы бэктестинга, претендующей на полноту и полезность.
https://www.youtube.com/watch?v=RKE1ZXm00NY
YouTube
How to do a Walk Forward Optimization in Python with Vectorbt
In this video, I give an overview of how to perform a typical walk forward optimization in Python using vectorbt pro. Vectorbt is a backtesting and financial simulation framework that is lightning fast, and that I highly recommend.
Code used in the video:…
Code used in the video:…
#books
How much I've made with Modeling Mindsets
"Let’s hear the numbers already
The book has gotten 73 reviews, 40 on Amazon and 33 on Leanpub.
I’ve sold 745 ebooks on Leanpub and earned $7,007.94
On Amazon, I’ve sold 900 print books and 296 Kindle ebooks, totaling €6,570.64
In total, I’ve earned €13,013 (=$14,155)
It took me around half a year to write the book. Not full-time since I also finished my Ph.D., did social media and wrote the newsletter. But let’s pretend for now that I worked for 6 months full-time, which would mean I earned €2168.83 (=$2.365,51) per month. Certainly not an amount of money to get rich from, but together with the income from my other books, I can sustain myself financially 🙏 (even though it’s less than I earned in my Ph.D.).
And the great thing about digital assets and books is: They may further generate income down the road. Modeling Mindsets still keeps selling."
https://mindfulmodeler.substack.com/p/how-much-ive-made-with-modeling-mindsets
How much I've made with Modeling Mindsets
"Let’s hear the numbers already
The book has gotten 73 reviews, 40 on Amazon and 33 on Leanpub.
I’ve sold 745 ebooks on Leanpub and earned $7,007.94
On Amazon, I’ve sold 900 print books and 296 Kindle ebooks, totaling €6,570.64
In total, I’ve earned €13,013 (=$14,155)
It took me around half a year to write the book. Not full-time since I also finished my Ph.D., did social media and wrote the newsletter. But let’s pretend for now that I worked for 6 months full-time, which would mean I earned €2168.83 (=$2.365,51) per month. Certainly not an amount of money to get rich from, but together with the income from my other books, I can sustain myself financially 🙏 (even though it’s less than I earned in my Ph.D.).
And the great thing about digital assets and books is: They may further generate income down the road. Modeling Mindsets still keeps selling."
https://mindfulmodeler.substack.com/p/how-much-ive-made-with-modeling-mindsets
Mindful Modeler
How much I've made with Modeling Mindsets
In Germany, it’s a bit of a no-go to talk about money. But I’m often very blunt and ask people anyways what they are making. I’m just too curious. In the same spirit, I want to share with you how much I made so far with my book Modeling Mindsets. I published…
#python #excel #microsoft
"Microsoft также добавила новую функцию PY, которая позволяет отображать данные Python в ячейках электронной таблицы Excel. Благодаря партнёрству с Anaconda, корпоративным репозиторием Python, популярные библиотеки Python, такие как Pandas, Statsmodels, Seaborn и Matplotlib, будут доступны в Excel. Расчёты Python выполняются в Microsoft Cloud, а результаты возвращаются в таблицу Excel. Пользователи Excel смогут создавать формулы, сводные таблицы и диаграммы на основе данных Python для визуализации тепловых карт, роевых диаграмм и скрипичных графиков.
«Я рад, что интеграция Python и Excel увидела свет, — говорит создатель Python, а ныне заслуженный инженер Microsoft Гвидо Ван Россум (Guido van Rossum), — Я ожидаю, что оба сообщества найдут новые интересные применения в этом сотрудничестве, расширив возможности каждого партнёра. Когда я присоединился к Microsoft три года назад, я и представить себе не мог, что такое возможно»."
https://3dnews.ru/1091868/microsoft-integrirovala-populyarniy-yazik-programmirovaniya-python-v-excel
"Microsoft также добавила новую функцию PY, которая позволяет отображать данные Python в ячейках электронной таблицы Excel. Благодаря партнёрству с Anaconda, корпоративным репозиторием Python, популярные библиотеки Python, такие как Pandas, Statsmodels, Seaborn и Matplotlib, будут доступны в Excel. Расчёты Python выполняются в Microsoft Cloud, а результаты возвращаются в таблицу Excel. Пользователи Excel смогут создавать формулы, сводные таблицы и диаграммы на основе данных Python для визуализации тепловых карт, роевых диаграмм и скрипичных графиков.
«Я рад, что интеграция Python и Excel увидела свет, — говорит создатель Python, а ныне заслуженный инженер Microsoft Гвидо Ван Россум (Guido van Rossum), — Я ожидаю, что оба сообщества найдут новые интересные применения в этом сотрудничестве, расширив возможности каждого партнёра. Когда я присоединился к Microsoft три года назад, я и представить себе не мог, что такое возможно»."
https://3dnews.ru/1091868/microsoft-integrirovala-populyarniy-yazik-programmirovaniya-python-v-excel
3DNews - Daily Digital Digest
Все самое интересное из мира IT-индустрии
Самые интересные и оперативные новости из мира высоких технологий. На нашем портале - все о компьютерном железе, гаджетах, ноутбуках и других цифровых устройствах. А также обзоры новых игр, достижения современной науки и самые любопытные онлайн-проекты.
#ann #karpathy #mlgems
Рецепт работы с нейронками от Андрея Карпатий:
1) Learn the data
2) Create baselines
3) Overfit
4) Regularize
5) Tune
6) Dominate
Удивили вот эти рекомендации:
verify loss @ init. Verify that your loss starts at the correct loss value. E.g. if you initialize your final layer correctly you should measure -log(1/n_classes) on a softmax at initialization. The same default values can be derived for L2 regression, Huber losses, etc.
init well. Initialize the final layer weights correctly. E.g. if you are regressing some values that have a mean of 50 then initialize the final bias to 50. If you have an imbalanced dataset of a ratio 1:10 of positives:negatives, set the bias on your logits such that your network predicts probability of 0.1 at initialization. Setting these correctly will speed up convergence and eliminate “hockey stick” loss curves where in the first few iteration your network is basically just learning the bias.
На них даже ссылаются в учебном примере tensorflow, где в задаче бинарной классификации нейронке с сигмоидой в последнем слое задают начальное смещение равное логарифму доли положительного класса. Я попробовал то же самое на своей задаче, но у меня в последнем softmax, и формулка не сработала. При конвертации в sigmoid лосс нетренерованной модели и правда стал нулём, но обучение это совсем не улучшило. У кого какой с этим опыт?
Ну и на сладенькое.
"Suffering is a perfectly natural part of getting a neural network to work well, but it can be mitigated by being thorough, defensive, paranoid, and obsessed with visualizations of basically every possible thing. The qualities that in my experience correlate most strongly to success in deep learning are patience and attention to detail.
Hyper-parameter optimization. There is a large number of fancy bayesian hyper-parameter optimization toolboxes around and a few of my friends have also reported success with them, but my personal experience is that the state of the art approach to exploring a nice and wide space of models and hyperparameters is to use an intern :). Just kidding.
Ensembles. Model ensembles are a pretty much guaranteed way to gain 2% of accuracy on anything. If you can’t afford the computation at test time look into distilling your ensemble into a network using dark knowledge.
Leave it training. I’ve often seen people tempted to stop the model training when the validation loss seems to be leveling off. In my experience networks keep training for unintuitively long time. One time I accidentally left a model training during the winter break and when I got back in January it was SOTA (“state of the art”)."
http://karpathy.github.io/2019/04/25/recipe/#2-set-up-the-end-to-end-trainingevaluation-skeleton--get-dumb-baselines
Рецепт работы с нейронками от Андрея Карпатий:
1) Learn the data
2) Create baselines
3) Overfit
4) Regularize
5) Tune
6) Dominate
Удивили вот эти рекомендации:
verify loss @ init. Verify that your loss starts at the correct loss value. E.g. if you initialize your final layer correctly you should measure -log(1/n_classes) on a softmax at initialization. The same default values can be derived for L2 regression, Huber losses, etc.
init well. Initialize the final layer weights correctly. E.g. if you are regressing some values that have a mean of 50 then initialize the final bias to 50. If you have an imbalanced dataset of a ratio 1:10 of positives:negatives, set the bias on your logits such that your network predicts probability of 0.1 at initialization. Setting these correctly will speed up convergence and eliminate “hockey stick” loss curves where in the first few iteration your network is basically just learning the bias.
На них даже ссылаются в учебном примере tensorflow, где в задаче бинарной классификации нейронке с сигмоидой в последнем слое задают начальное смещение равное логарифму доли положительного класса. Я попробовал то же самое на своей задаче, но у меня в последнем softmax, и формулка не сработала. При конвертации в sigmoid лосс нетренерованной модели и правда стал нулём, но обучение это совсем не улучшило. У кого какой с этим опыт?
Ну и на сладенькое.
"Suffering is a perfectly natural part of getting a neural network to work well, but it can be mitigated by being thorough, defensive, paranoid, and obsessed with visualizations of basically every possible thing. The qualities that in my experience correlate most strongly to success in deep learning are patience and attention to detail.
Hyper-parameter optimization. There is a large number of fancy bayesian hyper-parameter optimization toolboxes around and a few of my friends have also reported success with them, but my personal experience is that the state of the art approach to exploring a nice and wide space of models and hyperparameters is to use an intern :). Just kidding.
Ensembles. Model ensembles are a pretty much guaranteed way to gain 2% of accuracy on anything. If you can’t afford the computation at test time look into distilling your ensemble into a network using dark knowledge.
Leave it training. I’ve often seen people tempted to stop the model training when the validation loss seems to be leveling off. In my experience networks keep training for unintuitively long time. One time I accidentally left a model training during the winter break and when I got back in January it was SOTA (“state of the art”)."
http://karpathy.github.io/2019/04/25/recipe/#2-set-up-the-end-to-end-trainingevaluation-skeleton--get-dumb-baselines
TensorFlow
Classification on imbalanced data | TensorFlow Core
✍2