Show HN: PostgresML, now with analytics and project management (postgresml.org)
We've been hard at work for a few weeks and thought it's time for another update.
In case you missed our first post, PostgresML is an end-to-end machine learning solution, running alongside your favorite database.
This time we have more of a suite offering: project management, visibility into the datasets and the deployment pipeline decision making.
Let us know what you think!
Demo link is on the page, and also here: https://demo.postgresml.org
75 comments
[ 2.6 ms ] story [ 150 ms ] threadWhich is part of what is so awesome about PostgreSQL, everyone can build extensions that look and feel native and can do almost anything.
E.g. Postico uses an elephant but not the _same_ elephant - https://eggerapps.at/postico/
The animated GIF on your homepage moves a little bit too fast for me to follow.
There is deeper explanation in the README: https://github.com/postgresml/postgresml
https://demo.postgresml.org/models/1 https://demo.postgresml.org/models/15
The short term goal would be to expose more metrics from the toolkit.
[1] https://www.crunchydata.com/products/crunchy-bridge/
Can you explane the differences with https://madlib.apache.org/ ? Wouldnt an OLAP db better suited than pg for this kind of workload ?
Does being a postgreSQL module make it compatible with citus, greemplum or timescale ?
OLAP use cases often involve a lot of extra complexity out of the gate, and something we're targeting is to help startups maintain the simplest possible tech stack early on while they are still growing and exploring PMF. At a high enough level, it should just work with any database that supports Postgres extensions, since it's all just tables going into algos, but the devil in big data is always in evaluating the performance tradeoffs for the different workloads. Maybe we'll eventually need an "enterprise" edition.
I've used Madlib in the past and although it was 'successful', the constraint was unfamiliarity with the library from our data scientists, who preferred the classic Python libraries.
Maybe enhance this with a FDW to an external inference process to allow triggering of inference from Postgresql itself.
[0] http://github.com/pachyderm/pachyderm
For anything substantive it seems like a bad idea to run this on your primary store since the last thing you want to do is eat up precious CPU and RAM needed by your OLTP database. But in a data warehouse or similar replicated setup, it seems like a really neat idea.
There’s nothing stopping you from reading database table structures directly into memory in Python or R now. You don’t need an intermediate data store.
I agree that running training on production instances would be a bad idea. First, you need to denormalise data for ML, and secondly you typically don’t want your training data to be constantly changing.
Chances are a DBA wouldn’t consider letting you do data engineering in a live production database anyway, so this really is all academic.
In a way, having to pull things out of the DB and into python is something that requires change attribution on its own since it's a conversion between abstractions which I tend to think of as a lossy process (even if it isn't). This sort of tooling keeps the abstractions localized, so it's much easier to maintain a mental model of models of changes.
I get the concern but sometimes I really just do want a black box regressor or classifier. Model performance monitoring is important, but I don't care about attribution.
Chances are a DBA wouldn’t consider letting you do data engineering in a live production database anyway, so this really is all academic.
Maybe it isn't data engineering, but I'm curious what you'd call using Google's BigQuery ML? "BigQuery ML enables users to create and execute machine learning models in BigQuery by using standard SQL queries."
I haven't used it in production, but I'd use it in a heartbeat if I was on BigQuery.
In the opposite direction of bespoke fully custom models being the norm, I'd like to build more "rails" for ML. Hopefully we can expose enough hyperparams, even for deep learning architectures, and automatically adapt the inputs with configurable transformers so that we cover 90% of the custom use cases out of the box.
In the end though, it'll be important to have benchmarks for all the key steps in the process, both in terms of memory and compute. Off a hunch, I think the memory inefficiency involved in high level pandas operations is more likely to be a driving force to move operations into lower layers, than CPU runtime.
> I think the memory inefficiency involved in high level pandas operations is more likely to be a driving force to move operations into lower layers, than CPU runtime.
Indeed. Not only memory but also inefficiency related to Python itself. It would be great if feature engineering pipelines can be pushed down to lower layers as well. But for now, the usability of Python is still unparallel.
[1] https://cloud.google.com/bigquery-ml/docs/introduction