Ivan Begtin
8.09K subscribers
1.61K photos
3 videos
100 files
4.33K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Свежий любопытный инструмент для автоматизации работы аналитика: Thread [1], автоматизирует Jupyter Notebook с помощью API OpenAI, позволяет автозаполнять таблицы, генерировать код и визуализацию.

Выглядит симпатично, для многих задач это просто полезно. Как минимум хорошо ускоряет работу опытных аналитиков.

Автор явно создал движок под облачный стартап где такое будет из коробки.

И да, открытый код под лицензией AGPL3. Кстати явный видный тренд применения GPL/AGPL в современном исходном коде, но не от идеалов FSF, а именно для того чтобы не ограничивать себя в создании стартапа и бизнеса, но ограничивать в этом всех остальных.

Ссылки:
[1] https://github.com/squaredtechnologies/thread

#opensource #ai #analytics #dataviz #jupyter
За много лет у меня накопилось множество инструментов для командной строки которые я создавал для разных дата задач:
- undatum [1] утилита для обработки данных с акцентом на JSONl файлы
- datadiff [2] утилита для создания патчей для датасетов
- mongo2md [3] утилита по автогенрации markdown документации к коллекциям mongodb
- metacrafter [4] утилита и библиотека по идентификации семантических типов данных
- docx2csv [5] утилита по превращению таблиц в файлах DOCX в CSV
- lazyscraper [6] утилита по быстрому и автоматическому извлечению данных из HTML таблиц и другой разметки

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

Сейчас я задумался не пора ли многие из них перенести в один инструмент. Тот же undatum.

Тем более что много есть задач в которых такой инструмент требуется. И есть незакрытые задачи

Вот примерно такое я хочу сделать с undatum добавив туда разные функции и поддерживая работу с NoSQL как приоритет.

Но самое интересная это думать над тем как это реализовать. Я всё чаще склоняюсь к тому что Duckdb правильнее воспринимать как data transformation движок, а не как хранилище. Можно очень многое ускорить с его помощью. Но не всё и тут важны альтернативы. Силами языка или встроенным DB движком.

А ещё у меня есть экспериментальный код mongorefine и код утилиты datacrafter которые живут несколько иначе и связать всё вместе сложнее.

В общем вот такие мысли в последнее время, и открытый код который хочется развивать. А вот код из Dateno можно раскрывать только ограниченно, потому что там много специфичного know how.

Ссылки:
[1] https://github.com/datacoon/undatum
[2] https://github.com/datacoon/datadifflib
[3] https://github.com/datacoon/mongo2md
[4] https://github.com/apicrafter/metacrafter
[5] https://github.com/ivbeg/docx2csv
[6] https://github.com/ivbeg/lazyscraper

#opensource #datatools #data
Подборка полезных инструментов для работы с данными и не только:
- GROBID [1] библиотека и набор утилит для разбора PDF научных статей. Извлекает таблицы, ссылки, заголовки, цитаты, даты и именованные сущности. Используется внутри проекта Semantic Scholar. Открытый код под Apache 2.
- sqleton [2] универсальная библиотека для Python для доступа к разным SQL СУБД. Альтернатива SQLAlchemy, но выглядит как более простая в использовании
- reladiff [3] библиотека для Python для сравнения больших таблиц, сравнительно легко её можно доработать для сравнения больших датасетов
- Daft [4] распределенная библиотека для датафреймов на Rust и Python. Внутри Apache Arrow и язык запросов в виде функций для Python

Ссылки:
[1] https://github.com/allenai/grobid
[2] https://github.com/erezsh/sqeleton
[3] https://github.com/erezsh/reladiff
[4] https://github.com/Eventual-Inc/Daft

#opensource #datatools #data #pdf #sql #dataframes
Ещё один симпатичный бенчмарк сравнений обработки данных на Python с использованием чистого Python и разных библиотек.

Безоговорочный лидер Duckdb и близкий к нему по скорости Polars, но всё равно отстающий.

Вполне ожидаемо, от Duckdb многие в восторге именно из-за комбинаций скорости и функций.

Причём в текущем состоянии Duckdb ещё и может быть идеальным инструментом для ETL/ELT трансформации данных. Его можно рассматривать не как базу для хранения, а как инструмент быстрой обработки данных. А в нынешних облачных реалиях быстрый значит и дешёвый.

У меня вот есть штук пять внутренних и open source инструментов про которые я понимаю что если их на duckdb (или polars) смигрировать, то они станут удобнее и практичными многократно.

#opensource #datatools #data #duckdb #benchmarks
Вышла вторая версия стандарта Data Package [1] ранее он назывался Frictionless Data. Полезен он будет всем кто публикует табличные CSV файлы которые с его помощью очень хорошо описываются. Это большой плюс, особенно для тех кто не является дата инженерами или аналитиками, а рядовыми учёными, пользователям и тд.

Это же и минус. Лично я вспоминаю что мало какие интересные данные публиковал за последние годы именно в CSV. В основном же это были JSON lines файлы или parquet. А стандарт пока CSV ориентированный, что не отменяет его полезности если с CSV Вы работаете и активно. Или если пользователи готовят всё ещё данные в Excel, а надо бы что-то получше.

Так что ругаю я зря, а хвалю не зря. Стандарт надо использовать и развивать спектр поддерживающих его инструментов.

Ссылки:
[1] https://datapackage.org

#opensource #standards #opendata #data #okfn
Интересные ссылки про данные, технологии и не только:
- OmniParse [1] очень интересный open source движок по применению ИИ к парсингу документов. В примерах приводят разбор PDF на картинки и таблицы. Для задач разбора PDF'ок может быть бесценен, и как идея, и как код. Лицензия GPL3, часть облачного продукта стартапа CognitiveLab

- Meta 3D Gen [2] в Meta создали модель ИИ для генерации 3D моделей. Выглядит интересно и очень много прикладного применения у такого есть. Можно начинать гадать сколько 3D дизайнеров и гейм дизайнеров лишаться работы или... сильно повысят свою продуктивность

- Google AI и Pixel 9 [3] похоже что новая версия телефонов Pixel от Google будет иметь на борту мини языковую модель и несколько продуктов на базе ИИ. Даже не знаю что сказать на это. Неужели это начало тренда когда во всех телефонах будут ИИ приложения всегда?

- Google Mesop [4] open-source движок от Гугла по быстрой разработке веб интерфейсов. Ещё бы к нему хороший автогенератор кода из ТЗ в интерфейс и было бы бесценно, как минимум, для создания быстрых демок.

- The 4M Roadmap: A Higher Road to Profitability by Using Big Data for Social Good, by Brennan Lake [5] доклад о применении корпоративных данных для общественного блага. Подробный разбор нескольких глобальных инициатив в этой области

Ссылки:
[1] https://github.com/adithya-s-k/omniparse
[2] https://venturebeat.com/ai/meta-drops-3d-gen-bomb-ai-powered-3d-asset-creation-at-lightning-speed/
[3] https://www.androidauthority.com/google-ai-recall-pixel-9-3456399/
[4] https://google.github.io/mesop/
[5] https://www.sharedvalue.org/resource/the-4m-roadmap/

#opendata #opensource #readings
В качестве лирического отступления. Если бы я был писателем пишущим по методу Хэмингуэя, без исправления текста, то сказал бы что "аллилуйя", пришёл настоящий вызов. Но я не такой писатель, и художественное творчество моё куда как скромно, но вот работа с нефункционирующей кнопкой бэкспейса на клавиатуре и ещё рядом других кнопок накладывает свои ограничения, как минимум на скорость печати. К сожалению замена клавиатуры будет только через несколько дней, так что это писать также часто как раньше пока не выходит.

Но даже так я слегка пробежался по старому коду движка metacrafter'а [1], инструмента для идентификации семантических типов данных, или более простым языком, инструмент идентификации того что за колонка в наборе данных или в базе данных и что с ней можно делать. Инструмент я потихоньку начал приводить в целевое состояние - усиление поисковых возможностей у Dateno и автодокументирование датасетов.

Что нового:
- правила для metacrafter'а перенесены теперь в новый репозиторий metacrafter-rules [2], их стало больше, в основном за счёт правил для других языков отличных от английского и русского;
- обновился серверный и клиентский режимы работы. Теперь можно ускорить сканирование данных запустив metacrafter как сервер и обращаясь к нему через параметр remote при вызовах сканирования файлов или баз данных. Это важно для ускорения процесса поскольку правила инициализируются только один раз
- добавилась команда просмотра правил 'metacrafter rules list'
- и так далее

Главный недостаток сейчас - это скорость работы на больших датасетах. Чем больше колонок тем дольше анализ, до нескольких минут. Это не так критично для задач вроде сканирования корпоративных СУБД, но тяжко для задач Dateno когда миллионы датасетов.

На самом деле чтобы всё ускорить нужно просто много ресурсов: процессорных, хранения и памяти. А прикрутив LLM'ку можно сильно повысить качество автодокументирования данных.

Понимание данных, автодокументирование датасетов, автоматизация анализа данных - это одни из наиболее любимых мной тем в дата инженерии и дата анализе. Жаль удаётся уделять немного времени.

Ссылки:
[1] https://github.com/apicrafter/metacrafter/
[2] https://github.com/apicrafter/metacrafter-rules/

#opensource #data #datatools #dateno #metacrafter
Свежий open source инструмент/код по осмысленной интерпретации данных для LLM называется GraphRAG [1] весь код опубликован на Github.

Пока не могу сказать подробнее, надо экспериментировать, но выглядит просто таки очень интересно.

Ссылки:
[1] https://www.microsoft.com/en-us/research/blog/graphrag-new-tool-for-complex-data-discovery-now-on-github/

#opensource #llm #ai
Прямо интересное явление последних лет - это восхождение декларативного программирования когда дело касается данных и инфраструктуры в первую очередь. Вместо написания кода, пишутся YAML или TOML файлы и на их основе бегают конвейеры данных, разворачивается инфраструктура, создаются базы данных или API сервера.

Вижу всё больше и больше таких продуктов, особенно в областях devOps, dataOps и в продуктах типа ELT/ETL и других в области современного стека данных. Я и сам в инструментах что создавал или создаю делаю такое же.

Очень скоро работа с данными не потребует знаний даже SQL потому что всё будет в этом самом декларативном программировании. Из известных мне популярных ETL/ELT движков разве что Dagster не на декларативных языках, а по модели data-as-a-code, все написано на Python.

Внутри Dateno тоже используется декларативный сбор данных с помощью движка datacrafter [1] который я изначально делал для совсем других задач по извлечению данных из API и по преобразованию файлов. А также вместе с datacrafter там работает движок apibackuper [2] в котором тоже декларативный язык но в виде конфига для Python. Его, по хорошему, надо переписать для работы с конфигом в YAML и ещё многое поправить.

Достоинство декларативных языков в том что легко генерировать эти конфиги. В Dateno краулер создаёт тысячи конфигов под каждый сайт и запускает сбор данных вызовом datacrafter'а, и уже потом собирает результаты и складывает в базу данных.

Большая часть источников данных там - это API, для каждого из которых свой шаблон и свои правила выгрузки. Иногда довольно непростые, но стандартизованные. И из имеющихся ETL движков только dlt такое может. По сути миграция кода - это преобразование одних YAML файлов в другие, при соблюдении ряда условий конечно, что схожие операции можно воспроизвести в другом движке.

Пока главный недостаток почти всех инструментов такого рода в отсутствии хорошей поддержки NoSQL в целом и MongoDB в частности. Из-за чего и приходится пользоваться собственным стеком инструментов.

Ссылки:
[1] https://github.com/apicrafter/datacrafter/
[2] https://github.com/ruarxive/apibackuper

#opensource #dataengineering #thoughts
Симпатичные цифры и графики развития производительности DuckDB со временем и версиями продукта [1]

Собственно они одни из главных причин почему я этот движок так расхваливаю, он хорошо годится для замены инструментов для типовых задач по обработке данных и даёт очень высокую скорость запросов и обработки данных даже при отсутствии индексов на колонках.

Очень высокая планка скорости обработки данных причём не только при локальной обработке, но и в серверной среде и с параллелизацией в облаке.

Особенно для задач дата инжиниринга на базе открытого кода.

Ссылки:
[1] https://duckdb.org/2024/06/26/benchmarks-over-time

#opensource #duckdb #dataengineering
Geoexplorer Berlin [1] сервис навигации по геоданным Берлина, интерфейс над их каталогом данных на базе Geonetwork.

Отличительная особенность в интеграции ChatGPT в интерфейс и это выражается в генерации описания того зачем нужен конкретный датасет, дословно: "На какие вопросы отвечает этот датасет?" и в автодокументировании данных. А также в поиске по данным на естественном языке. Немецком языке, конечно же.

Данных там немного, но функции любопытные. Есть что изучить и применить.

Разработано в Technologie Stiftung Berlin [2], открытый код под лицензией MIT [3]

Ссылки:
[1] https://geoexplorer.odis-berlin.de/
[2] https://www.technologiestiftung-berlin.de/
[3] https://github.com/technologiestiftung/odis-geoexplorer

#opendata #geodata #datasets #ai #opensource #germany #berlin
Полезное чтение про данные технологии и не только:
- Querying 1TB on a laptop with Python dataframes [1] статья от разработчиков обёртки для систем управления запросами к базам данных Ibis про обработку 1TB данных в виде адаптированного бенчмарка TPC-H на ноутбуке с помощью разных движков для датафреймов. Надо правда оговорится что ноутбук там не абы какой а MacBook Pro с 96GB RAM, но это не отменяет того факта что RAM в 10 раз меньше чем обрабатываемых данных. Главный вывод - duckdb выше всяких похвал, единственный движок который отработал все запросы до конца.
- Whenever [2] свежая библиотека для работы с датами и временем в Python, изначально написана на Rust. Помимо того что очень быстро работает и это очень актуально при обработке больших объёмов данных, она ещё и всегда учитывает переход на летнее время.
- datawizard: Easy Data Wrangling and Statistical Transformations [3] пакет для R для манипуляции данными. Казалось бы вопрос, кто сейчас пользуется R для таких задач? Но точно пользуются и для тех кто это делает такой пакет может оказаться очень полезным.
- Confronting Impossible Futures [4] полезное чтение о том что развитие, в том числе любой сценарий развития ИИ, необходимо учитывать в корпоративных стратегиях. Несмотря на то что всё ещё идёт продолжающийся взлёт хайпа вокруг этой темы, будет ещё много событий которые могут создать новые бизнес модели, сломать имеющиеся и тд.
- Applied forecasting [5] открытый курс по прикладному прогнозированию. Видео, слайды, примеры на R, выглядит достаточно просто чтобы садиться за изучение и достаточно сложно чтобы курс был интересным.
- Questionable practices in machine learning [6] а теперь дети запомните слова которые нельзя говорить (с) статья про спорные практики в машинном обучении. Большая их часть возникает от того что где-то не подумали, где-то ошиблись, где-то нехватает практического/теоретического знания у ML разработчиков, но есть и те которые нельзя сотворить случайно. Статья полезная, больше про технологии чем про этику и про автоматизацию контроля качества ML моделей.
- The biggest-ever global outage: lessons for software engineers [7] подробный разбор ситуации с недоступностью миллионов компьютеров на базе Windows из-за антивируса CrowdStrike и того какие выводы из неё можно извлечь. Многое не только про эту историю с CrowdStrike, но и предыдущие проблемы с их антивирусом и другие примеры больших сбоев других софтверных вендоров.
- TabularFM: An Open Framework For Tabular Foundational Models [8] открытый код, научная статья и модели на HuggingFace по извлечению смысла из табличных данных. Это, конечно, упрощённое описание того что такое Tabular Foundation Model, но можно сказать что это применение нейросетей к табличным данным.

Ссылки:
[1] https://ibis-project.org/posts/1tbc/
[2] https://github.com/ariebovenberg/whenever
[3] https://easystats.github.io/datawizard/index.html
[4] https://www.oneusefulthing.org/p/confronting-impossible-futures
[5] https://af.numbat.space/
[6] https://arxiv.org/abs/2407.12220
[7] https://newsletter.pragmaticengineer.com/p/the-biggest-ever-global-outage-lessons
[8] https://www.semanticscholar.org/paper/TabularFM%3A-An-Open-Framework-For-Tabular-Models-Tran-Hoang/977fec09a458fe326e5059774e3f05ab695acf2a

#readings #ai #data #opensource
По моему уже все написали про новую языковую модель Llama 3.1 [1] от Meta которая больше и лучше всех остальных моделей с открытым кодом. Как минимум полезно как альтернатива сервисам OpenAI, и, в принципе, для обучения локально на собственных данных.

Ссылки:
[1] https://www.theverge.com/2024/7/23/24204055/meta-ai-llama-3-1-open-source-assistant-openai-chatgpt

#ai #opensource #llama #meta
Свежие результаты опроса разработчиков от Stackoverflow [1].

Если совсем коротко,то PostgreSQL + JS.
Если не совсем, то стоит посмотреть разные срезы, они показательны в том что разработчики знают и что хотят знать.

Для меня более значимо то чего там нет, а там нет многих технологий и инструментов которые, к примеру, я использую и которые наиболее популярны сейчас в работе с данными. Это к тому что дата инженерия и аналитика отошли уже от "чистой разработки". Например, у Elasticsearch есть значимые альтернативы. Duckdb спешно набирает популярность и тд.

Ссылки:
[1] https://survey.stackoverflow.co/2024/

#software #opensource #surveys
Не карта, а инспектор рентгеновских данных (с)
Новый сервис от Overture Maps, консорциума по расширению данных OSM новыми инструментами и данными в виде как бы карты, но не карты [1]. В описании [2] можно узнать что он построен на динамической подгрузке geoparquet файлов из дампов данных Overture, внутри там WebAssembly с кодом на Rust, а тайлы подгружаются в форме PMTiles [3].

Штука любопытная более чем, и всё с открытым кодом.

Туда же заодно, открылась бета версия карт от Apple [4], позиционируются они явно как альтернатива Google Maps. Но Firefox не поддерживается, увы.

Ссылки:
[1] https://explore.overturemaps.org
[2] https://docs.overturemaps.org/blog/2024/07/24/explore-site/
[3] https://docs.protomaps.com/pmtiles/
[4] https://beta.maps.apple.com

#opensource #apple #maps #geodata #overture
Свежий симпатичный поисковик по смыслам слов semantic grep [1] использует Word2Vec для выборки связанных по смыслу слов и уже их ищет по тексту.

Выглядит просто, симпатично, удобно для простого использования и под лицензией MIT. Опубликовано совсем недавно и аналогов такого я нигде не видел.

Если подумать то такую штуку можно было бы сделать с языковой моделью внутри или более сложными алгоритмами чем просто модель Word2Vec.

Лично я большой любитель командной строки и инструментов работы в ней, хороших поисковиков по текстовым файлам всегда нехватает (и всегда много!)

Ссылки:
[1] https://github.com/arunsupe/semantic-grep

#opensource #ai #commandline #tools #data