Big Data Science [RU]
1.62K subscribers
81 photos
9 videos
546 links
Big Data Science [RU] — канал о жизни Data Science.
Для сотрудничества: a.chernobrovov@gmail.com
🌏 — https://t.me/bdscience — Big Data Science channel (english version)
💼 — https://t.me/bds_job — channel about Data Science jobs and career
Download Telegram
🙌🏻XLS-R – новый набор ML-моделей от Facebook AI
Разработчики PyTorch из Facebook опубликовали XLS-R – набор крупномасштабных моделей для самостоятельного обучения кросс-языковому представлению речи на базе wav2vec 2.0. Модели предварительно обучены на 128 языках в течение более 400 тысяч часов немаркированной речи. Благодаря тонкой настройке модели показывают высокий уровень точности распознавания речи и отлично подходят для задач перевода, понимания и идентификации языка. Обучающие данные брались из разных источников, включая аудиокниги и записи судебных заседаний. Нейросетевые модели XLS-R содержат более 2-х миллиардов параметров и являются мультиязыковыми. Причем тестирование показало, что обучение сразу нескольким языкам повышает эффективность нейросетей. Скачать XLS-R можно с Github прямо сейчас.
https://github.com/pytorch/fairseq/tree/main/examples/wav2vec/xlsr
👀Visual Genome: крупнейший размеченный датасет
Ученые Стенфордского университета собрали крупнейший аннотированный датасет с более 100 тысяч изображений. Всего в наборе данных почти 5,5 миллионов описаний объектов, включая атрибуты и отношения. Можно даже не скачивать датасет, а получить нужные данные, обратившись к конечной точке RESTful-API методом GET. Несмотря на то, что последние обновления в датасете датированы 2017 годом, это отличный набор данных для обучения моделей в типовых ML-задачах, от распознавания образов до анализа данных с помощью графовых алгоритмов.
https://visualgenome.org/api/v0/api_home.html
Как читать Parquet-файлы с pandas
Колоночный формат Apache Parquet широко распространен в области Big Data благодаря хранению данных по столбцам и эффективному сжатию. Он позволяет быстро считать нужные данные из конкретного столбца вместо чтения полной строки, что экономит время. Однако, не каждая прикладная система умеет читать бинарные Parquet-файлы. Часто приходится преобразовывать Parquet-файлы в формат CSV или TXT, прежде чем открыть их, например, в MS Excel или Power BI, которые часто используются в работе DS-специалиста. В этом случае поможет Python-библиотека pandas со встроенной функцией считывания данных read_parquet() из Parquet-файла в датафрейм. Затем датафрейм можно сохранить в CSV-файле с помощью метода to_csv() и открывать его практически в любом офисном редакторе таблиц.
https://medium.com/@i.m.mak/workaround-for-reading-parquet-files-in-power-bi-e2d060abcb80
Forwarded from Digital Dinner
This media is not supported in your browser
VIEW IN TELEGRAM
Хирург из Лондона провел операцию на банане в Калифорнии, по удаленке в сети 5G.
💦Что такое CDC-системы и зачем они нужны
Чтобы сократить объем данных, считываемых из корпоративного хранилища или озера, но всегда быть в курсе последних изменений, используется CDC-подход: захват измененных данных или Change Data Capture. Есть готовые инструменты CDC: Oracle Golden Gate, Qlik Replicate и HVR, лучше всего подходят для приема данных из часто обновляемых реляционных СУБД. Также инженеры данных создают собственные решения:
• вычисления CDC с использованием меток времени, маркирующих моменты создания, обновления и истечения срока действия в исходных таблицах. Любой процесс, который вставляет, обновляет или удаляет строку, должен также обновить соответствующий столбец отметки времени. Жесткое удаление не допускается. Недостаток этого способа в том, что необходимо переделать структуру базы данных, чтобы добавить столбец timestamp, а также необходимость тесной связи между исходной таблицей и кодом ETL-процесса.
• вычисления CDC с использованием отрицательного запроса, когда между источником и целевым приемником создается связь, и выполняется минус-запрос SQL для расчета журнала изменений. Этот способ скорее антипаттерн, т.к. работает только, если исходная и целевая базы данных относятся к одному типу, а еще он приводит к тому к увеличению перемещаемого объема данных.
Оба метода CDC, написанного вручную, вызывают значительную нагрузку на исходную базу данных. А специальные инструменты CDC сокращают нагрузку на сеть и источник, анализируя логи для расчета изменений. Однако, основным недостатком готовых CDC-решения является их высокая стоимость. Кроме того, администратор исходной СУБД должен предоставлять CDC-средству привилегированный доступ к журналу базы данных, что воспринимается не очень лояльно по соображениям безопасности.
https://towardsdatascience.com/change-data-capture-cdc-for-data-ingestion-ca81ff5934d2
💥Комбо Python и SQL в FugueSQL: единый SQL-интерфейс для датафреймов Pandas, Spark и Dask
FugueSQL
- это открытая Python-библиотека, которая позволяет комбинировать Python-код с SQL-командами, переключаясь между ними в Jupyter Notebook или Python-скрипте. FugueSQL поддерживает распределенные вычисления и предоставляет унифицированный API для запуска одного и того же кода SQL в Pandas, Dask и Apache Spark.
В отличие от PandaSQL, который имеет единственный сервер SQLite, что приводит к большим накладным расходам при передаче данных между Pandas и базой данных, FugueSQL поддерживает несколько локальных бэкендов: pandas, DuckDB и SQLite.
При использовании pandas-бэкэнда Fugue напрямую переводит SQL в операции pandas, исключая передачу данных. DuckDB имеет превосходную поддержку pandas, поэтому накладные расходы на передачу данных незначительны. И Pandas, и DuckDB являются предпочтительными серверными модулями FugueSQL для локальной обработки данных. Fugue также поддерживает Spark, Dask и cuDF (через blazingSQL) в качестве бэкэндов.
В Fugue код SQL анализируется с помощью ANTLR и сопоставляется с эквивалентными функциями в API Fugue. FugueSQL имеет множество встроенных возможностей и расширяется с помощью Python-кода. По умолчанию он поддерживает наиболее распространенные на практике функции: заполнение значений NULL, удаление значений NULL, переименование столбцов, изменение схемы и пр. Fugue также добавляет некоторые улучшения в стандартный SQL, чтобы изящно обрабатывать сквозные рабочие процессы данных. Например, создание промежуточных таблиц через присвоение переменных.
В Pandas %% fsql принимает NativeExecutionEngine в качестве параметра по умолчанию. В Dask работа FugueSQL чуть медленнее нативного движка, но более полна с точки зрения реализованных ключевых слов SQL. FugueSQL также работает на Spark, сопоставляя операции %%fsql с операциями Spark и Spark SQL. Это позволяет быстро разрабатывать распределенные приложения. Достаточно создать локальный прототип с помощью NativeExecutionEngine, протестировать его и развернуть в кластере Spark, просто изменив механизм выполнения.
https://towardsdatascience.com/introducing-fuguesql-sql-for-pandas-spark-and-dask-dataframes-63d461a16b27
https://fugue-tutorials.readthedocs.io/tutorials/fugue_sql/index.html
👻Что такое UMAP и зачем это Data Scientist’у
UMAP (Uniform Manifold Approximation and Projection) - это универсальный алгоритм обучения многообразию и уменьшения размерности. Он разработан для совместимости с scikit-learn, использует тот же API и может быть добавлен в конвейеры sklearn. Будучи стохастическим алгоритмом, UMAP использует рандомизацию для ускорения шагов аппроксимации и оптимизации. Это означает, что разные прогоны UMAP могут давать разные результаты. Хотя UMAP относительно стабилен, в идеале разница между прогонами должна быть относительно небольшой, но она есть. Чтобы гарантировать точное воспроизведение результатов, UMAP позволяет пользователю устанавливать случайное начальное состояние.
Начиная с версии 0.4 UMAP также поддерживает многопоточность для повышения производительности, а при оптимизации условия гонки между потоками допустимы на определенных этапах. Случайность в выходных данных UMAP для многопоточного случая зависит не только от входного случайного начального числа, но и от условий гонки между потоками во время оптимизации, что невозможно контролировать. Поэтому результаты многопоточного UMAP не могут быть воспроизведены явно.
UMAP можно использовать в качестве эффективного этапа предварительной обработки для повышения производительности кластеризации на основе плотности. Но UMAP, как и t-SNE, не сохраняет плотность полностью и может создавать ложные разрывы в кластерах. По сравнению с t-SNE, UMAP сохраняет более глобальную структуру, создавая более значимые кластеры. А благодаря поддержке произвольных размеров встраивания, UMAP позволяет работать с большими размерными пространствами.
Из-за активного использования метода ближайших соседей, для некоторых датасетов UMAP может чрезмерно потреблять память. Поможет установка параметра low_memory в значение True, чтобы переключиться на более медленный, но менее интенсивный подход к вычислению ближайших соседей. Также важно знать, что при запуске без случайного начального числа UMAP будет использовать параллельную реализацию NUMBA для многопоточной работы и использования ядер ЦП. По умолчанию он будет использовать столько ядер, сколько доступно. Ограничить количество потоков, используемых Numba, можно с помощью переменной среды NUMBA_NUM_THREADS. Также из-за особенностей Numba, UMAP не поддерживает 32-разрядную версию Windows.
Несмотря на некоторые недостатки, UMAP можно использовать в следующих случаях:
• разведочный анализ данных (EDA);
• интерактивная визуализация результатов анализа;
• обработка разреженных матриц;
• выявление вредоносных программ на основе поведенческих данных;
• предварительная обработка векторов фраз для кластеризации;
• предварительная обработка эмбеддингов изображений (Inception) для кластеризации.
https://github.com/lmcinnes/umap
https://umap-learn.readthedocs.io/en/latest/index.html
🚀Ускоряем DS на больших данных: Pandas API прямо в Apache Spark
Популярный вычислительный фреймворк Apache Spark позволяет писать программы на Python, который знаком каждому DS-специалисту. Теперь PySpark включает pandas-библиотеку, которую можно импортировать всего одной строкой: import pyspark.pandas as ps.
Это дает следующие преимущества:
• снижает порог входа в Spark;
• унифицирует кодовую базу для небольших и больших данных, локальных машин и распределенных кластеров;
• ускоряет код Pandas.
Примечательно, что Pandas на Spark работает даже быстрее другого популярного Python-движка Dask.
https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/index.html
https://towardsdatascience.com/run-pandas-as-fast-as-spark-f5eefe780c45
https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html
🚨 Серия митапов про Data Science в гео-данных, гео-сервисах, логистике, приложениях Smart City продолжается!

21 декабря в 19:00 МСК ждем всех на завершающей в этот год онлайн-встрече Citymobil Data Meetup!

🚀 В 2021 провели 4 митапа, привлекли 12 классных спикеров с огненными докладами:
Ксения Мензорова, Екатерина Колпакова, Николай Радчиков, Михаил Дьячков, Алексей Венжега, Алексей Кудинов, Максим Шаланкин, Сергей Свиридов, Даниил Тарарухин, Артем Солоухин, Андрей Критилин, Федор Лаврентьев.

🎁 Но на Новый год мы решили обойтись без сложных докладов, а сделать классный развлекательный формат: подвести итоги года в мире Data Science и Big Data, а также устроить викторину с подарками 🥳!

Регистрация для бесплатного участия: https://citymobil.timepad.ru/event/1870148/

Итоги года подведут:
🚕 Алексей Чернобровов (Ситимобил, Head of Data Science)
🆗 Андрей Кузнецов (Ok.ru, Data Scientist)
📹 Артур Кузин (SberDevices, Head of Computer Vision Platfrom)
⛓ Валерий Бабушкин (Blockchain.com, Head of Data Science)
☎️ Виктор Кантор (МТС, Директор центра Big Data)
🖼 Дмитрий Коробченко (NVIDIA, Senior Manager of AI)

Ведущие: Алексей Чернобровов и Анастасия Никулина!
👑Продолжаем знакомиться с полезными DS-инструментами: встречайте Streamlit
Streamlit - это Python-библиотека с открытым исходным кодом, которая упрощает создание и публикацию красивых пользовательских веб-приложений для ML и DS. Создавайте и развертывайте мощные приложения всего за пару минут. Сравнение Streamlit с Dash похоже на сравнение Python с C#. Streamlit упрощает создание приложений для веб-данных в чистом коде Python, часто в несколько строк кода. Например, однострочные команды для отображения интерактивных визуальных элементов Plotly, Bokeh и Altair, Pandas DataFrames и пр. Streamlit поддерживается огромным open-source сообществом разработчиков: добавляйте собственные компоненты в библиотеку с помощью JavaScript. А облачное использование Streamlit открыто для всех: можно создать и разместить до трех приложений бесплатно.
https://streamlit.io/
☀️Встречайте Gallia: новая библиотека для преобразования данных
Эта Scala-библиотека с поддержкой схемы пригодится для практического преобразования данных, включая ETL-процессы, разработка функций, HTTP-ответы и пр. Будучи отлично масштабируемой, она предназначена, чтобы заполнить пробел между Pandas и Spark SQL. Gallia пригодится тем, кто ценит мощную систему типов как в Scala, и тем, кому сложно понять слишком навороченные SQL-запросы. По сути, Gallia реализует парадигму единого окна для большинства или всех потребностей преобразования данных в одном приложении. Библиотека поддерживает все виды манипуляций с данными, от агрегаций до пивот-поворота таблиц, включая обработку отдельных и вложенных объектов, а не только коллекций. Для масштабирования Gallia отлично интегрируется со Spark RDD API.
https://cros-anthony.medium.com/gallia-a-library-for-data-transformation-3fafaaa2d8b9
https://github.com/galliaproject/gallia-core/blob/master/README.md
Сегодня ML – это не только разработка моделей. Data Scientist ведет непрерывный сбор и анализ статистики процессов машинного обучения, включая распределение значений метрик и показателей производительности модели. Это занимает много времени, поэтому появляются инструменты для автоматизированного исследования таких метаданных и особенностей инфраструктуры. Одним из них является автономный open-source пакет Aim. Он позволяет отслеживать множество ML-экспериментов и сравнивать их производительность в удобном GUI или программно через SDK. API предоставляет методы, чтобы запрашивать метаданные ML-прогонов для последующей автоматизации и дополнительного анализа. По сути, Aim реализует концепцию MLOps и является альтернативой популярным средствам этого стека: Tensorboard и MLFlow. Однако, по сравнению с ними Aim имеет следующие преимущества:
• В отличие от TensorBoard и MLFlow, в Aim можно группировать и агрегировать показатели обучения ML-модели, а также строить подзаголовки по гиперпараметрам и вводить собственные функции сравнения экспериентов;
• Aim работает быстрее TensorBoard и MlFlow. Aim может обрабатывать тысячи тренировочных прогонов с десятками экспериментов в каждом, причем как на бэкэнде, так и в GUI. В частности, пользовательский интерфейс Aim может обрабатывать несколько тысяч показателей одновременно с плавным шагом.
Пакет поддерживает интеграцию с PyTorch, Hugging Face, Keras, TensorFlow и XGBoost. Пока Aim доступен для Python 3.6+ на платформах Linux и MacOS. В ближайших планах разработчиков добавить интеграцию с Python-библиотеками Scikit-learn и plotly, IDE Google Colab и Jupyter Notebook, а также MLOps-инструментами Kubeflow, Streamlit, Raytune и Google MLMD. Еще ожидается поддержка резервного копирования в облачные хранилища AWS S3, Google Cloud Storage и Azure.
Попробовать Aim можно уже сейчас, скачав его с Github: https://github.com/aimhubio/aim.
Подробная документация: https://aimstack.readthedocs.io/en/latest/
👻4 простых совета для эффективной дата-инженерии
Чтобы проекты дата-инженерии с сотнями артефактов, включая файлы зависимостей, задания, модульные тесты, shell-файлы и блокноты Jupyter, не превратились в хаос, соблюдайте следующие правила:
• управляйте зависимостями, например, через менеджер зависимостей типа Poetry
• помните про юнит-тесты - внедрение модульных тестов в проект убережет от неприятностей и улучшит качество кода
• разделяй и властвуй - храните все преобразования данных в отдельном модуле
• документируйте, чтобы помнить о коде и решаемой им бизнес-задаче самому и делиться знаниями с коллегами
https://blog.devgenius.io/keeping-your-data-pipelines-organized-fa387247d59e
👣AutoML и не только с PyCaret
PyCaret
– AutoML-библиотека с открытым исходным кодом на Python и низкоуровневым подходом к автоматизации большинства MLOps-задач. В PyCaret есть специальные функции для анализа, развертывания и объединения моделей, которых нет во многих других ML-фреймворках. Она позволяет перейти от подготовки данных к развертыванию ML-модели за считанные минуты в выбранной пользователем среде разработки.
По сути, PyCaret – это Python-оболочка для нескольких библиотек и ML-фреймворков: scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray и пр. Простота PyCaret позволяет использовать его не только опытным DS-специалистам, но и обычным пользователям, которые умеют выполнять простые сложные аналитические задачи. Библиотека доступна для свободного скачивания и использования под лицензией MIT. Пакет содержит несколько модулей, функции в которых сгруппированы по основным сценариям использования: от простой классификации до NLP-задач и определения аномалий.
https://pycaret.org/
https://github.com/pycaret/pycaret
Специалисты Школы анализа данных Яндекса сделали настоящий подарок для начинающих ML- и Data-специалистов, выложив в открытый доступ онлайн-учебник по машинному обучению. 
 
• как работают технологии, которыми пользуются миллионы людей;
• какие практические задачи решает ML и какие еще предстоит решить;
• какая теоретическая база необходима для работы, связанной с ML. 
 
На все эти вопросы и отвечает онлайн-пособие, разъясняя как основные методы и алгоритмы машинного обучения, так и практические вопросы об их реализации и работе с данными.

Приступить можно прямо сейчас — с глав «Классические методы обучения с учителем» и «Оценка качества моделей». В будущем учебник пополнится новыми разделами.
🐻‍❄️В преддверии Нового года ускоряем DS: встречайте Polars
Polars
– быстрая библиотека подготовки данных к ML-моделированию для Python и Rust. Она в 15 раз быстрее Pandas, распараллеливая обработку датафреймов и запросов в памяти. Будучи написанным на Rust, Polars использует все ядра компьютера. Также библиотека оптимизирована под специфику процессов обработки данных и поддерживает Python. Богатый API позволяет не только работать с огромными объемами данных на этапе их предподготовки, но и строить рабочие конвейеры. Бенчмаркинговое сравнение показало, что Polars опережает не только Pandas, но и другие инструменты, включая популярные в Big Data вычислительные движки типа Apache Spark, Dask и пр.

Установить и попробовать Polars очень просто с помощью менеджера пакетов pip:
pip install polars
import polars as pl
https://www.pola.rs/
https://betterprogramming.pub/this-library-is-15-times-faster-than-pandas-7e49c0a17adc
🚀Ускоряем scikit learn: новое расширение старой доброй Python-библиотеки для DS
Популярная Python-библиотека Scikit-learn знакома каждому Data Scientist’у. У нее много достоинств, но в отличие от мощных ML-фреймворков PyTorch и TensorFlow, Scikit-learn не позволяет быстро обучать модели на графических процессорах. Этот недостаток устраняет sklearnex (Extension for Scikit-learn) – расширение Sci-Kit Learn от корпорации Intel®. Sklearnex - это бесплатный программный AI-модуль, который обеспечивает ускорение в 10–100 раз для различных приложений. Он полностью поддерживает все API и алгоритмы Scikit-Learn, ускоряя код за счет замены стандартных алгоритмов их оптимизированными версиями. Расширение поддерживает Python 3.6 и новее, а установить его можно с помощью типовых менеджеров пакетов pip или conda:
pip install scikit-learn-intelex
conda install scikit-learn-intelex -c conda-forge
https://intel.github.io/scikit-learn-intelex/
https://medium.com/@vamsik23/boost-sklearn-using-intels-sklearnex-cf2669f425bd
🔝TOP-25 International Data Science events 2022:

1. WAICF - World Artificial Intelligence Cannes Festival https://worldaicannes.com/ February 10-12, Cannes, France
2. Deep and Reinforcement Learning Summit https://www.re-work.co/events/deep-learning-summit-2022 February 17-18, San Francisco, USA
3. Reinforce https://reinforceconf.com/ March 8-10, Budapest, Hungary
4. MLconf https://mlconf.com/event/mlconf-nyc/ March 31, New York City, USA
5. Open Data Science Conference EAST https://odsc.com/boston/ April 19-21, Boston, USA
6. ICLR - International Conference on Learning Representations https://iclr.cc/ April 25–29, online
7. SDM - SIAM International Conference on Data Mining https://www.siam.org/conferences/cm/conference/sdm22 April 28–30, Westin Alexandria Old Town, Virginia, USA
8. World Summit AI Americas https://americas.worldsummit.ai/ May 4-5, Montreal, Canada
9. The Data Science Conference https://www.thedatascienceconference.com/ May 12-13, Chicago, USA
10. World Data Summit https://worlddatasummit.com/ May 18-22, Amsterdam, The Netherlands
11. Machine Learning Prague https://mlprague.com/ May 27-29, Prague, Czech Republic
12. The AI Summit London https://london.theaisummit.com/ June 15-16, London, UK
13. Machine Learning Week https://www.predictiveanalyticsworld.com/machinelearningweek/ June 19-24, Las Vegas, USA
14. Enterprise AI Summit https://www.re-work.co/events/enterprise-ai-summit-berlin-2022 June 29–30, Berlin, Germany
15. DELTA - International Conference on Deep Learning Theory and Applications https://delta.scitevents.org/ July 12-14, Lisbon, Portugal
16. ICML - International Conference on Machine Learning https://icml.cc/ July 17-23, online
17. KDD - Knowledge Discovery and Data Mining https://kdd.org/kdd2022/ August 14-18, Washington, DC, USA
18. Open Data Science Conference APAC https://odsc.com/apac/ September 7-8, online
19. RecSys – ACM Conference on Recommender Systems https://recsys.acm.org/recsys22/ September 18-23, Seattle, USA
20. INTERSPEECH https://interspeech2022.org/ September 18-22, Incheon, Korea
21. BIG DATA CONFERENCE EUROPE https://bigdataconference.eu/ November 21-24, Vilnius, Lithuania
22. EMNLP - Conference on Empirical Methods in Natural Language Processing https://2021.emnlp.org/ November, TBA
23. Data Science Conference https://datasciconference.com/ November, Belgrade, Serbia
24. Data Science Summit http://dssconf.pl/ December, Warsaw, Poland
25. NeurIPS https://nips.cc/ December, TBA
🏂Как выбрать меру валидации ML-моделей: подход Яндекса
В каждой практической задаче машинного обучения есть проблема с измерением результатов. Разные меры могут привести к разным результатам оценки и, следовательно, к разным выбранным алгоритмам. Поэтому найти подходящую меру качества очень важно. Исследователи из Яндекса сравнивают различные подходы к решению типовых ML-задач, от классификации до кластеризации, чтобы сформулировать универсальный метод выбора наиболее оптимальной меры качества. Ключевые тезисы и основные результаты изложены в статьях на конференциях В недавних статьях, опубликованных на ICML 2021 и NeurIPS 2021, а краткий пересказ доступен прямо на сайте Яндекса https://research.yandex.com/news/how-to-validate-validation-measures.
http://proceedings.mlr.press/v139/gosgens21a/gosgens21a.pdf
https://papers.nips.cc/paper/2021/file/8e489b4966fe8f703b5be647f1cbae63-Paper.pdf
Zee - это картина, которая написана на Javascript посредством полностью сгенерированного кода, который написал художник Лукас С. Ривил. Одна функция генерирует волны, другая облака, третья чаек и так далее. В каждой функции используются случайные числа, результат предсказуем, но до конца неизвестен.