#competitions #watersupply
Крис Мольнар упомянул крайне интересное соревнование Water Supply Forecast Rodeo. Кто хочет поучаствовать?! Йихаа, бэйби!! )
Решил влезть в эту сореву. Подкупает несколькими вещами:
1) общественно полезная работа. всегда мечтал сделать что-то полезное для общества в масштабе. это вам не сбербанковские конкурсы, которые только для пиара и где хорошие решения организаторам неинтересны
2) дают данные. notebooks-only соревы я не люблю: организаторы получаю от участников бесплатно идеи, а большинство участников получает хрен.
тут, кажется, можно сильно прокачаться в альтернативных данных. список источников курируется и довольно велик. странно, что пока спутниковые снимки не завезли, вроде пока только табличные данные.
3) это близко к моим научным и практическим интересам: временные ряды, но только в части фичей. таргеты скорее из классики ML Нужно предсказывать по каждому из 26 источников воды суммарный водяной поток за сезон в любую дату до завершения сезона. По сути, можно провести аналогию с 26 активами на бирже, только трейдеры/кванты хотят предсказывать за период не суммы, а экстремумы ряда. Причём наверняка между "сайтами" есть связи, как и между активами.
4) данных не то чтобы супермного по объёмам, гранулярность дневная, вполне может влезть на мой рабочий комп.
5) у меня уже есть модули создания фичей для временных рядов, обучения моделек с разными препроцессингами над одними и теми же фичами с логированием в облачный mlflow, простым ансамблированием
6) как раз, возможно, получится докрутить feature selection и hyperparameters tuning и заюзать здесь. а может, и на полноценный стэкинг хватит.
7) призовой фонд в полмиллиона баксов наверняка привлечёт мировых топов в соревновательном DS, и я смогу сравнить силу своих ML решений с лидерами отрасли. пока вижу 350+ команд.
Организаторы применили какой-то хитрый ход с удалением части данных, т.к. на них будет скориться 1я часть соревы. Мне это совершенно не нравится, т.к. не построить нормальные фичи. Попробую официально предложенные фичи игнорировать, а начать с альтернативных данных. Утечки данных отбивают всё желание тратить время.
Лично мне, кстати, противно смотреть рекомендации кэгглеров, посвящённые чисто эксплойтам дата ликов.
Крис Мольнар упомянул крайне интересное соревнование Water Supply Forecast Rodeo. Кто хочет поучаствовать?! Йихаа, бэйби!! )
Решил влезть в эту сореву. Подкупает несколькими вещами:
1) общественно полезная работа. всегда мечтал сделать что-то полезное для общества в масштабе. это вам не сбербанковские конкурсы, которые только для пиара и где хорошие решения организаторам неинтересны
2) дают данные. notebooks-only соревы я не люблю: организаторы получаю от участников бесплатно идеи, а большинство участников получает хрен.
тут, кажется, можно сильно прокачаться в альтернативных данных. список источников курируется и довольно велик. странно, что пока спутниковые снимки не завезли, вроде пока только табличные данные.
3) это близко к моим научным и практическим интересам: временные ряды, но только в части фичей. таргеты скорее из классики ML Нужно предсказывать по каждому из 26 источников воды суммарный водяной поток за сезон в любую дату до завершения сезона. По сути, можно провести аналогию с 26 активами на бирже, только трейдеры/кванты хотят предсказывать за период не суммы, а экстремумы ряда. Причём наверняка между "сайтами" есть связи, как и между активами.
4) данных не то чтобы супермного по объёмам, гранулярность дневная, вполне может влезть на мой рабочий комп.
5) у меня уже есть модули создания фичей для временных рядов, обучения моделек с разными препроцессингами над одними и теми же фичами с логированием в облачный mlflow, простым ансамблированием
6) как раз, возможно, получится докрутить feature selection и hyperparameters tuning и заюзать здесь. а может, и на полноценный стэкинг хватит.
7) призовой фонд в полмиллиона баксов наверняка привлечёт мировых топов в соревновательном DS, и я смогу сравнить силу своих ML решений с лидерами отрасли. пока вижу 350+ команд.
Организаторы применили какой-то хитрый ход с удалением части данных, т.к. на них будет скориться 1я часть соревы. Мне это совершенно не нравится, т.к. не построить нормальные фичи. Попробую официально предложенные фичи игнорировать, а начать с альтернативных данных. Утечки данных отбивают всё желание тратить время.
Лично мне, кстати, противно смотреть рекомендации кэгглеров, посвящённые чисто эксплойтам дата ликов.
DrivenData
Water Supply Forecast Rodeo: Development Arena
START HERE! Water managers in the Western U.S. rely on accurate water supply forecasts to better operate facilities and mitigate drought. Help the Bureau of Reclamation improve seasonal water supply estimates in this probabilistic forecasting challenge!
#featureselection #hpo #hpt #global #optimization #optuna
Ну вот, уже не зря делал исследование. Не все настройки парценовского сэмплера Оптуны одинаково полезны. Выходит, в задаче FS хитрейт можно легко поднять с 68% до 76%!
Ну вот, уже не зря делал исследование. Не все настройки парценовского сэмплера Оптуны одинаково полезны. Выходит, в задаче FS хитрейт можно легко поднять с 68% до 76%!
#microsoft #bollocks
Шёл 2023-й год. Это флагманский продукт от мирового лидера с капитализацией триллион долларов.
Шёл 2023-й год. Это флагманский продукт от мирового лидера с капитализацией триллион долларов.
#watersupply #competitions
Чёт ещё не начал участвовать, а уже разочарование. Ребята уверенно заложили data leak бомбу прям под свой фундамент. Ещё и ресурсы на это оттянут. Ну и нахер надо на это своё время тратить?
"Hi, wanted to participate in this competition and create value for the society. However, I feel that artificial data limitations introduced by the organizers to be able to run the Hindcast stage will influence Forecast stage (where help of DS folks is REALLY need) in a negative way:
spirit of the competition requires that at forecast issue dates ALL present information should be accounted for (for features only, not for targets). However, your current data withholding (for the Hindcast stage) creates artificial gaps in features for no reason. For example, at the day of forecast issue I want to know running water inflow for every 12 preceding months. Or 24. It’s very natural for TS feature creation. But you simply don’t allow this currently. Contestants need to fight to overcome such gaps. Why should we spend extra efforts developing worse models?
I understand the desire of keeping Hindcast data private to be able to estimate true predictive power of the models early. However, ground truth data is in public open APIs and easily downloadable. And there are ways to overfit on ground truth data indirectly. Do you want to make the Hindcast stage a “data leakage” stage? Then at least do that without artificial features/data limiting, so that people don’t spend time and carbon footprint on solutions that go nowhere.
My suggestions:
1) allowing all data up to forecast issue dates without gaps and length limitations, to not waste contestants time on fighting windmills
2) using known in advance TimeSeriesSplit cross-validation schema with big enough folds number, to decrease data leakage impact and judge submissions more fairly. Do not allow hardcoded hyperparameters. Do the training inside of submitted noscripts, not only the inference.
3) lowering prices for the Hindcast stage in favor of Forecast stage"
https://community.drivendata.org/t/nagative-influence-of-the-hindcast-stage-possible-fixes/9249
Чёт ещё не начал участвовать, а уже разочарование. Ребята уверенно заложили data leak бомбу прям под свой фундамент. Ещё и ресурсы на это оттянут. Ну и нахер надо на это своё время тратить?
"Hi, wanted to participate in this competition and create value for the society. However, I feel that artificial data limitations introduced by the organizers to be able to run the Hindcast stage will influence Forecast stage (where help of DS folks is REALLY need) in a negative way:
spirit of the competition requires that at forecast issue dates ALL present information should be accounted for (for features only, not for targets). However, your current data withholding (for the Hindcast stage) creates artificial gaps in features for no reason. For example, at the day of forecast issue I want to know running water inflow for every 12 preceding months. Or 24. It’s very natural for TS feature creation. But you simply don’t allow this currently. Contestants need to fight to overcome such gaps. Why should we spend extra efforts developing worse models?
I understand the desire of keeping Hindcast data private to be able to estimate true predictive power of the models early. However, ground truth data is in public open APIs and easily downloadable. And there are ways to overfit on ground truth data indirectly. Do you want to make the Hindcast stage a “data leakage” stage? Then at least do that without artificial features/data limiting, so that people don’t spend time and carbon footprint on solutions that go nowhere.
My suggestions:
1) allowing all data up to forecast issue dates without gaps and length limitations, to not waste contestants time on fighting windmills
2) using known in advance TimeSeriesSplit cross-validation schema with big enough folds number, to decrease data leakage impact and judge submissions more fairly. Do not allow hardcoded hyperparameters. Do the training inside of submitted noscripts, not only the inference.
3) lowering prices for the Hindcast stage in favor of Forecast stage"
https://community.drivendata.org/t/nagative-influence-of-the-hindcast-stage-possible-fixes/9249
DrivenData Community
Nagative influence of the Hindcast stage. Possible fixes
Hi, wanted to participate in this competition and create value for the society. However, I feel that artificial data limitations introduced by the organizers to be able to run the Hindcast stage will influence Forecast stage (where help of DS folks is REALLY…
#apple #marketingbs
Надо бы Бобу Борчерсу предложить зафиттить модельку на 15Гб данных на маке с 8Гб RAM. Со ставкой в его годовую зарплату, если сможет/не сможет без свопа и просадок.
"Компанию подвергли критике, потому что 8 Гбайт оперативной памяти в 2023 году — недостаточно для работы, и модель серии Pro должна иметь на борту хотя бы 16 Гбайт.
На эту критику недавно ответил вице-президент Apple по международному маркетингу Боб Борчерс (Bob Borchers) в ходе интервью китайскому видеоблогеру Линь Ил И (Lin YilYi). «Сравнение нашей памяти с памятью другой системы на самом деле не эквивалентно, потому что мы используем память очень эффективно, используем сжатие памяти, и у нас унифицированная архитектура памяти. На самом деле 8 Гбайт на MacBook Pro M3, вероятно, аналогичны 16 Гбайт на других системах. Мы просто сумели использовать её более эффективно. Так что я бы сказал, что людям лучше попробовать то, что они хотели бы сделать на своих системах, и думаю, что они увидят невероятную производительность"
https://3dnews.ru/1095663/apple-zayavila-chto-8-gbayt-pamyati-na-macbook-pro-analogichni-16-gbayt-na-pk
Надо бы Бобу Борчерсу предложить зафиттить модельку на 15Гб данных на маке с 8Гб RAM. Со ставкой в его годовую зарплату, если сможет/не сможет без свопа и просадок.
"Компанию подвергли критике, потому что 8 Гбайт оперативной памяти в 2023 году — недостаточно для работы, и модель серии Pro должна иметь на борту хотя бы 16 Гбайт.
На эту критику недавно ответил вице-президент Apple по международному маркетингу Боб Борчерс (Bob Borchers) в ходе интервью китайскому видеоблогеру Линь Ил И (Lin YilYi). «Сравнение нашей памяти с памятью другой системы на самом деле не эквивалентно, потому что мы используем память очень эффективно, используем сжатие памяти, и у нас унифицированная архитектура памяти. На самом деле 8 Гбайт на MacBook Pro M3, вероятно, аналогичны 16 Гбайт на других системах. Мы просто сумели использовать её более эффективно. Так что я бы сказал, что людям лучше попробовать то, что они хотели бы сделать на своих системах, и думаю, что они увидят невероятную производительность"
https://3dnews.ru/1095663/apple-zayavila-chto-8-gbayt-pamyati-na-macbook-pro-analogichni-16-gbayt-na-pk
3DNews - Daily Digital Digest
В Apple заявили, что 8 Гбайт оперативной памяти в MacBook Pro аналогичны 16 Гбайт в обычном ПК
На минувшей неделе Apple представила обновлённое семейство ноутбуков MacBook Pro на свежих процессорах серии M3.
🗿1
#categoricals #trading
Удивительные результаты получил. Оказывается, лучше тренировать модельку на 1 актив, чем на несколько (даже с нормализацией всех фичей)+категориальная переменная "код актива". Это совпадает с информацией Эрни Чана, но противоречит статье Deep LOB, да и моему опыту в бизнес-проекте, где с заказчиком специально проверяли, будут ли региональные модели перформить лучше чем 1 большая глобальная. Тогда оказалось, что нет, а сейчас что да, и довольно значимо. Так что если у Вас есть категорийки, оказывается, нет серебряной пули, в каждом проекте проверяйте буст от покатегорийных моделей отдельно.
Тут получаются "сапожники без сапог": мы всегда советуем клиентам проводить А/Б тесты, но при этом сами используем в своей работе только то, что хорошо себя зарекомендовало в наших прошлых работах. А это же смещение, и надо с этим бороться. Резонно с "лучших по своему опыту" решений начинать, но по мере развития каждого проекта тестировать на нем надо все опции, более того, регулярно перепроверять (см data drift).
Почему так получается, что иногда фиксированные "лучшие практики" не срабатывают? Думаю, дело в переплетении факторов каждой конкретной проблемы, за которыми мы не следим, да и не можем уследить.
Удивительные результаты получил. Оказывается, лучше тренировать модельку на 1 актив, чем на несколько (даже с нормализацией всех фичей)+категориальная переменная "код актива". Это совпадает с информацией Эрни Чана, но противоречит статье Deep LOB, да и моему опыту в бизнес-проекте, где с заказчиком специально проверяли, будут ли региональные модели перформить лучше чем 1 большая глобальная. Тогда оказалось, что нет, а сейчас что да, и довольно значимо. Так что если у Вас есть категорийки, оказывается, нет серебряной пули, в каждом проекте проверяйте буст от покатегорийных моделей отдельно.
Тут получаются "сапожники без сапог": мы всегда советуем клиентам проводить А/Б тесты, но при этом сами используем в своей работе только то, что хорошо себя зарекомендовало в наших прошлых работах. А это же смещение, и надо с этим бороться. Резонно с "лучших по своему опыту" решений начинать, но по мере развития каждого проекта тестировать на нем надо все опции, более того, регулярно перепроверять (см data drift).
Почему так получается, что иногда фиксированные "лучшие практики" не срабатывают? Думаю, дело в переплетении факторов каждой конкретной проблемы, за которыми мы не следим, да и не можем уследить.
👍2
#hpt #hpo #optuna
Было смешно. Чувак применил HPT и получил на OOS хуже )
https://www.youtube.com/watch?v=t-INgABWULw
Было смешно. Чувак применил HPT и получил на OOS хуже )
https://www.youtube.com/watch?v=t-INgABWULw
#jobs #gpt
"Технологические гиганты продолжают настаивать на разработке и внедрении ИИ, в то время как специалисты, которые по задумке должны будут использовать подобные инструменты, всё чаще высказывают опасения по поводу возможного сокращения рабочих мест в игровой индустрии. Некачественный контент как результат применения инструментов ИИ, также вызывает большую озабоченность у игроделов.
Согласно заявлению Microsoft, разработчикам видеоигр будет предложено использовать пакет программного обеспечения, состоящий из двух компонентов: интеллектуальный «помощник по дизайну» и ИИ-движок генерации персонажей, которые помогут разработчикам создавать сюжетные линии, квесты и другие игровые элементы.
С момента публикации The Game Awards (TGA) этой новости, в X появилось великое множество комментариев от разгневанных разработчиков игр, актёров озвучки, сценаристов игр и телевизионных сценаристов. В сообщениях комментаторы критиковали и осуждали применение инструментов ИИ в индустрии. Отмечается, что внедрение «инноваций» способствовало тому, что только в этом году работу потеряли более 6-ти тысяч специалистов игровой сферы.
В то время, как Microsoft продвигает инструменты ИИ, как способ для разработчиков «существенно расширить свои собственные возможности», волна негатива в отрасли наводит на мысль, что нововведение заставило актёров и сценаристов почувствовать что угодно, но только не счастье от появления ИИ в их творческой среде. При этом компании, занимающиеся созданием видеоигр, всё с большим восторгом воспринимают подобные новости, вероятно, думая: «Наконец-то у нас появилась технология, позволяющая увольнять наших работников ещё быстрее, чем раньше!»"
https://3dnews.ru/1095747/instrumenti-iskusstvennogo-intellekta-dlya-xbox-razdragayut-stsenaristov-i-aktyorov-videoigr
"Технологические гиганты продолжают настаивать на разработке и внедрении ИИ, в то время как специалисты, которые по задумке должны будут использовать подобные инструменты, всё чаще высказывают опасения по поводу возможного сокращения рабочих мест в игровой индустрии. Некачественный контент как результат применения инструментов ИИ, также вызывает большую озабоченность у игроделов.
Согласно заявлению Microsoft, разработчикам видеоигр будет предложено использовать пакет программного обеспечения, состоящий из двух компонентов: интеллектуальный «помощник по дизайну» и ИИ-движок генерации персонажей, которые помогут разработчикам создавать сюжетные линии, квесты и другие игровые элементы.
С момента публикации The Game Awards (TGA) этой новости, в X появилось великое множество комментариев от разгневанных разработчиков игр, актёров озвучки, сценаристов игр и телевизионных сценаристов. В сообщениях комментаторы критиковали и осуждали применение инструментов ИИ в индустрии. Отмечается, что внедрение «инноваций» способствовало тому, что только в этом году работу потеряли более 6-ти тысяч специалистов игровой сферы.
В то время, как Microsoft продвигает инструменты ИИ, как способ для разработчиков «существенно расширить свои собственные возможности», волна негатива в отрасли наводит на мысль, что нововведение заставило актёров и сценаристов почувствовать что угодно, но только не счастье от появления ИИ в их творческой среде. При этом компании, занимающиеся созданием видеоигр, всё с большим восторгом воспринимают подобные новости, вероятно, думая: «Наконец-то у нас появилась технология, позволяющая увольнять наших работников ещё быстрее, чем раньше!»"
https://3dnews.ru/1095747/instrumenti-iskusstvennogo-intellekta-dlya-xbox-razdragayut-stsenaristov-i-aktyorov-videoigr
3DNews - Daily Digital Digest
Microsoft взбесила сценаристов, дизайнеров и других работников игровой индустрии, анонсировав ИИ-инструменты для создания игр
Компания Microsoft плотно занялась разработкой новых инструментов искусственного интеллекта.
Aspiring Data Science
#hpt #hpo #optuna Было смешно. Чувак применил HPT и получил на OOS хуже ) https://www.youtube.com/watch?v=t-INgABWULw
Разобрался, почему так произшло в том примере. Оказалось, train/test skew. На 300 примерах train_test_split(test_size=0.2,random_seed=) создала куски с вот такими распределениями таргета. Видимо, этого оказалось достаточно, чтобы гиперпаарметры, лучшие для train (хотя это ещё вилами по воде без анализа чувствительности), провалились для test.
✍1
#hpt #hpo #optuna
Но, кстати, ситуация жизненная. Что делать-то, если test set недоступен, и возможностей проверить train/test skew нет, к примеру, это соревнование? Потратил такой кучу ресурсов, заоптимизировался на train/public. Вроде приложил усилия, сделал HPT, и на тебе, сюрприз. Хочу на этом тестовом примере изучить, что было бы, если за лучший сет брать не просто аргмакс от сырой метрики, а аргмакс от метрики, усреднённой по n ближайшим соседям.
Но, кстати, ситуация жизненная. Что делать-то, если test set недоступен, и возможностей проверить train/test skew нет, к примеру, это соревнование? Потратил такой кучу ресурсов, заоптимизировался на train/public. Вроде приложил усилия, сделал HPT, и на тебе, сюрприз. Хочу на этом тестовом примере изучить, что было бы, если за лучший сет брать не просто аргмакс от сырой метрики, а аргмакс от метрики, усреднённой по n ближайшим соседям.
❤🔥1
#optuna
Глубоко в недрах доки Оптуны, и почти случайно, я обнаружил, что у неё всё-такие есть нормальный интерфейс и можно у неё попросить все параметры сразу. Называется это define-and-run. Также, оказывается, не обязательно заворачивать всё в objective, можно использовать ask/tell чтобы гибко интегрировать её в существующие системы.
https://optuna.readthedocs.io/en/stable/tutorial/20_recipes/009_ask_and_tell.html#ask-and-tell
Глубоко в недрах доки Оптуны, и почти случайно, я обнаружил, что у неё всё-такие есть нормальный интерфейс и можно у неё попросить все параметры сразу. Называется это define-and-run. Также, оказывается, не обязательно заворачивать всё в objective, можно использовать ask/tell чтобы гибко интегрировать её в существующие системы.
https://optuna.readthedocs.io/en/stable/tutorial/20_recipes/009_ask_and_tell.html#ask-and-tell
#skopt
Преодолел сложности, запустил таки skopt. На моей задаче его forest_minimize и gbrt_minimize находят лучшие решения, чем TPE Optuna. Правда, работает уже не доли секунды, а 5-15 секунд. gp_minimize с ядром Матерна работает плохо. Но проблема ещё в том, что skopt очень много кандидатов выдаёт повторно, вместо того, чтобы исследовать новых. Возможно, проще сделать своё решение, чем разбираться и допиливать чужое.
Преодолел сложности, запустил таки skopt. На моей задаче его forest_minimize и gbrt_minimize находят лучшие решения, чем TPE Optuna. Правда, работает уже не доли секунды, а 5-15 секунд. gp_minimize с ядром Матерна работает плохо. Но проблема ещё в том, что skopt очень много кандидатов выдаёт повторно, вместо того, чтобы исследовать новых. Возможно, проще сделать своё решение, чем разбираться и допиливать чужое.
#hpt #hpo #optuna
ну хоть узнал про CMA-ES. Понравилась идея гибридного подхода, когда начинается проверка многих случайных комбинаций методом последовательного халвинга, потом в какой-то момент включается TPE.
Кстати, удивляет, что если в документации используется небрежный или неэффективный код, всё равно при демонстрациях, да и в практическом использовании подобную ересь все как попки копируют. В случае оптуны подобным кодом является загрузка и сплит датасета внутри objective. На кой эти дорогие задачи делать снова и снова на КАЖДОЙ итерации? И главное, человек при этом замеряет время исполнения... И нигде у него не ёкает.
Хах, а как он тестирует прунинг? Походу, совершенно не понимает, что это и как оно работает, там же должен быть partial_fit. И опять же, время выполнения у него с "прунингом" такое же, как и без, почему, вопросов у него не возникает даже. Доклад сделал, нормалёк, чё вам ещё надо?
https://www.youtube.com/watch?v=hboCNMhUb4g
ну хоть узнал про CMA-ES. Понравилась идея гибридного подхода, когда начинается проверка многих случайных комбинаций методом последовательного халвинга, потом в какой-то момент включается TPE.
Кстати, удивляет, что если в документации используется небрежный или неэффективный код, всё равно при демонстрациях, да и в практическом использовании подобную ересь все как попки копируют. В случае оптуны подобным кодом является загрузка и сплит датасета внутри objective. На кой эти дорогие задачи делать снова и снова на КАЖДОЙ итерации? И главное, человек при этом замеряет время исполнения... И нигде у него не ёкает.
Хах, а как он тестирует прунинг? Походу, совершенно не понимает, что это и как оно работает, там же должен быть partial_fit. И опять же, время выполнения у него с "прунингом" такое же, как и без, почему, вопросов у него не возникает даже. Доклад сделал, нормалёк, чё вам ещё надо?
https://www.youtube.com/watch?v=hboCNMhUb4g
YouTube
Practical Hyperparameter Optimisation
Any machine learning algorithm needs hyperparameters to define how the algorithm learns from your data and how the model looks like. These hyperparameters can have a large impact on how good the model learns from your data and how well it performs on data…
👍1
#pandas #optimization #bollocks
Пытаюсь выяснить, как передать большой фрейм пандас для чтения в другие процессы с помощью joblib без сериализации и копирования памяти. С массивом нумпай это сделать можно с помощью memmapping, пример есть в доке joblib, и это реально работает (память выделяется 1 раз, сериализации нет. правда, приходится один раз сдампить массив на диск). А вот с фреймом не прокатывает. Вроде оказывается, фрейм вообще нельзя инициализировать из общей памяти без копирования.
Набрёл на дискуссию, где человек приводит аргументы, что копирование излишне и вызывает пенальти к производительности. А 2 мудака-разраба пандас ему затирают про premature optimizaion. Cмотрю, у одного мудака знакомый ник. jreback. И вспоминаю, что это же существо из ядерных разрабов панадаса и мне когда-то давно писало про premature optimization, когда я спрашивал, почему какая-то операция была реализована без inplace (у меня была забита вся память и операция присваиванием просто не проходила).
Отсюда 2 вопроса:
1) кто знает техническое решение, напишите
2) почему подобные мудаки идут разрабатывать библиотеки для работы с данными, в том числе, большими данными? и потом херят все разумные начинания. так вот почему пандас такой сука медленный. вовсе не потому, что высокий уровень абстракции, гибкость. Просто разрабы - мудаки, которые под предлогом no premature optimization делают no optimization at all.
Пытаюсь выяснить, как передать большой фрейм пандас для чтения в другие процессы с помощью joblib без сериализации и копирования памяти. С массивом нумпай это сделать можно с помощью memmapping, пример есть в доке joblib, и это реально работает (память выделяется 1 раз, сериализации нет. правда, приходится один раз сдампить массив на диск). А вот с фреймом не прокатывает. Вроде оказывается, фрейм вообще нельзя инициализировать из общей памяти без копирования.
Набрёл на дискуссию, где человек приводит аргументы, что копирование излишне и вызывает пенальти к производительности. А 2 мудака-разраба пандас ему затирают про premature optimizaion. Cмотрю, у одного мудака знакомый ник. jreback. И вспоминаю, что это же существо из ядерных разрабов панадаса и мне когда-то давно писало про premature optimization, когда я спрашивал, почему какая-то операция была реализована без inplace (у меня была забита вся память и операция присваиванием просто не проходила).
Отсюда 2 вопроса:
1) кто знает техническое решение, напишите
2) почему подобные мудаки идут разрабатывать библиотеки для работы с данными, в том числе, большими данными? и потом херят все разумные начинания. так вот почему пандас такой сука медленный. вовсе не потому, что высокий уровень абстракции, гибкость. Просто разрабы - мудаки, которые под предлогом no premature optimization делают no optimization at all.
GitHub
No way to construct mixed dtype DataFrame without total copy, proposed solution · Issue #9216 · pandas-dev/pandas
After hours of tearing my hair, I've come to the conclusion that it is impossible to create a mixed dtype DataFrame without copying all of its data in. That is, no matter what you do, if you wa...
#catboost
Спустя почти полгода в катбусте признали и исправили ошибку, о которой зарепортил ещё в июле и которая не позволяла валидироваться на точность (precision) - согласитесь, это жизненно необходимо для многих задач. Что делать, смеяться или плакать? И это наши лучшие разработчики. Такая скорость реакции при том, что я это в катбустовый чат ещё написал, и они это видели. И мы с другим пользователем чата нашли прямо там причину.
Спустя почти полгода в катбусте признали и исправили ошибку, о которой зарепортил ещё в июле и которая не позволяла валидироваться на точность (precision) - согласитесь, это жизненно необходимо для многих задач. Что делать, смеяться или плакать? И это наши лучшие разработчики. Такая скорость реакции при том, что я это в катбустовый чат ещё написал, и они это видели. И мы с другим пользователем чата нашли прямо там причину.
GitHub
Precision calculation error in Early Stopping. Request to add pos_label. · Issue #2422 · catboost/catboost
Problem: catboost version: 1.2 Operating System: Win CPU: + GPU: + Я думаю, в коде catboost вычисляющем precision где-то перепутаны предсказания и истинные значения, поэтому ранняя остановка по точ...
😭2🤯1
#fantasy #zelazny #comics
Оказывается, есть классные комиксы по Хроникам Эмбера!
https://comiconlinefree.org/roger-zelazny-s-amber-nine-princes-in-amber/issue-1
Оказывается, есть классные комиксы по Хроникам Эмбера!
https://comiconlinefree.org/roger-zelazny-s-amber-nine-princes-in-amber/issue-1
#pandas #optimization #joblib #numpy #memmap
Хорошие новости! после экспериментов выяснилось, что в последних версиях joblib умеет дампить в общую память не просто отдельные массивы numpy, а (что не указано в доке) и целиком фреймы пандас!
И даже не обязательно прописывать операции вручную. Достаточно просто передать фрейм в конструктор Parallel joblib-a как параметр, и, если он больше max_nbytes, joblib его автоматически сдампит и правильно загрузит уже в рабочих процессах! Советую в качестве temp_folder указывать быстрый NVME SSD диск, типа Parallel(n_jobs=32,max_nbytes=0, temp_folder=r'R:\Temp' ). В моих тестах отработали по сути все базовые типы столбцов: int, float, datetime, categorical.
Единственное - проблема со сложными типами, вроде массива массивов numpy (итоговый тип object), такое не работает и включается обычная сериализация. Но этого желать было бы уж слишком нереалистично, я и так не могу себе представить, как удалось победить нерадивых программистов пандас, ведь раньше даже просто инитнуть фрейм с разнородными типами столбцов было невозможно без копирования.
Вывод: если у Вас не экзотические типы данных и есть nvme, большие фреймы в свежих версиях библиотек можно спокойно передавать как параметры, и они не буду побайтово сериализоваться, более того, RAM будет расходоваться в десятки раз экономнее.
Хорошие новости! после экспериментов выяснилось, что в последних версиях joblib умеет дампить в общую память не просто отдельные массивы numpy, а (что не указано в доке) и целиком фреймы пандас!
И даже не обязательно прописывать операции вручную. Достаточно просто передать фрейм в конструктор Parallel joblib-a как параметр, и, если он больше max_nbytes, joblib его автоматически сдампит и правильно загрузит уже в рабочих процессах! Советую в качестве temp_folder указывать быстрый NVME SSD диск, типа Parallel(n_jobs=32,max_nbytes=0, temp_folder=r'R:\Temp' ). В моих тестах отработали по сути все базовые типы столбцов: int, float, datetime, categorical.
Единственное - проблема со сложными типами, вроде массива массивов numpy (итоговый тип object), такое не работает и включается обычная сериализация. Но этого желать было бы уж слишком нереалистично, я и так не могу себе представить, как удалось победить нерадивых программистов пандас, ведь раньше даже просто инитнуть фрейм с разнородными типами столбцов было невозможно без копирования.
Вывод: если у Вас не экзотические типы данных и есть nvme, большие фреймы в свежих версиях библиотек можно спокойно передавать как параметры, и они не буду побайтово сериализоваться, более того, RAM будет расходоваться в десятки раз экономнее.
👍2