HN user

perone

1,657 karma
Posts103
Comments92
View on HN
blog.christianperone.com 26d ago

Where the wild Discovery Loops are

perone
1pts0
drive.google.com 8mo ago

Gemma3n architecture: a short guide [slides]

perone
2pts0
blog.christianperone.com 1y ago

Diffusion Elites: surprisingly good, simple and embarrassingly parallel

perone
9pts0
vectorvfs.readthedocs.io 1y ago

Show HN: VectorVFS, your filesystem as a vector database

perone
279pts138
blog.christianperone.com 1y ago

Notes on Gilbert Simondon's "On the Mode of Existence of Technical Objects"

perone
2pts0
blog.christianperone.com 1y ago

The geometry of data: the missing metric tensor and the Stein score [Part II]

perone
64pts7
blog.christianperone.com 1y ago

Memory-Mapped CPU Tensor Between Torch, NumPy, Jax and TensorFlow

perone
1pts0
blog.christianperone.com 2y ago

Large language model data pipelines and Common Crawl (WARC/WAT/WET) formats

perone
2pts0
blog.christianperone.com 2y ago

Appreciating the complexity of LLMs data pipelines

perone
1pts0
www.slideshare.net 2y ago

PyTorch 2 Internals

perone
4pts0
drive.google.com 2y ago

PyTorch 2 Internals [slides]

perone
2pts1
blog.christianperone.com 3y ago

Appreciating the complexity of large language models data pipelines

perone
1pts0
blog.christianperone.com 3y ago

Appreciating the complexity of large language models data pipelines

perone
2pts0
feste.readthedocs.io 3y ago

Show HN: Feste, an open-source framework to optimize and parallelize NLP tasks

perone
2pts0
blog.christianperone.com 3y ago

Tutorial using LLVM to JIT PyTorch graphs to native code (x86/arm/RISC-V/WASM)

perone
2pts0
blog.christianperone.com 3y ago

Tutorial on using LLVM to JIT PyTorch graphs to native code (x86/arm/RISC-V)

perone
4pts0
blog.christianperone.com 4y ago

Arduino WAN, Helium network and cryptographic co-processor

perone
1pts0
perone.github.io 5y ago

Show HN: Episuite, open-source framework for epidemiology in Python

perone
12pts0
drive.google.com 5y ago

Introduction to gradient-based optimization in Deep Learning [slides]

perone
1pts0
drive.google.com 5y ago

Slides: Gradient-based optimization in Deep Learning

perone
3pts0
blog.christianperone.com 5y ago

A new professional ethics: Karl Popper and Xenophanes’ epistemology

perone
3pts0
blog.christianperone.com 6y ago

A sane introduction to maximum likelihood (MLE) and maximum a posteriori (MAP)

perone
1pts0
blog.christianperone.com 6y ago

Gandiva, Using LLVM and Arrow to JIT and Evaluate Pandas Expressions

perone
1pts0
blog.christianperone.com 6y ago

Show HN: Gandiva, Using LLVM and Arrow to JIT and Evaluate Pandas Expressions

perone
2pts0
blog.christianperone.com 6y ago

A sane introduction to maximum likelihood estimation and MAP

perone
5pts0
euclidesdb.readthedocs.io 6y ago

EuclideDB: Machine learning feature database tight coupled with PyTorch

perone
15pts0
www.slideshare.net 6y ago

Uncertainty Estimation in Deep Learning

perone
1pts0
www.slideshare.net 7y ago

Uncertainty Estimation in Deep Learning [slides]

perone
1pts0
www.slideshare.net 7y ago

Uncertainty Estimation in Deep Learning [slides]

perone
1pts0
blog.christianperone.com 7y ago

Numpy dispatcher: when Numpy becomes a protocol for an ecosystem

perone
1pts0

Hi, there are no LLMs involved, it is all local and an embedding (vector representation) of the data is created and then that is used for search later, nothing is sent to cloud from your files and there are no local LLMs running as well, only the encoders (I use the Perception Encoder from Meta released a few weeks ago).

Hi, I think Rust won't bring much benefit here to be honest, the bottleneck is mainly the model and model loading. It would probably be a nightmare to load these models from Rust, I would have to use torch bindings and then convert everything from the preprocessing already in Python to Rust.

Hi, it is quite different, there is no LLM involved, we can certainly use it for a RAG for example, but what is currently implemented is basically a way to generate embeddings (vector representation) which are then used for search later, it is all offline and local (no data is ever sent to cloud from your files).

Thanks. There is a bit of a nuance there, for example: you can build an index in first pass which will indeed be linear, but then later keep it in an open prompt for subsequent queries, I'm planning to implement that mode soon. But agree, it is not intended to search 10 million files, but you seldom have this use case in local use anyways.

I'm not sure I agree about the data manifolds being too rigid. When we look at the quality score-based generative models and diffusion we can see a clear evidence of how flexible these representations are. We could say the same about statistical manifolds, but the fact that the Fisher is the fundamental metric tensor for the statistical manifold is a fundamental piece of many 1st and 2nd order optimizers today.

As someone who worked with these techniques a lot in the past, I can say that SSL definitely makes sense in theory, but in practice, the gain doesn't pay off the complexity, except in rare cases w/ pseudo-labelling for example, which is very simple. Usually you tune a lot of hyperparams and tricks to make it work and the gain are usually minimal if you have a reasonable amount of labeled data.

That is an important point, Google is the master of releasing things in half, this was a common practice in Tensorflow since the initial release, they basically removed a lot of things to release it and it became a Frankenstein base of code. Bazel is another example, inside Google it works amazingly, but the open source project is a pain in the ass.

We'll be integrating other indexing in near future (such as faiss), Annoy is just one option for indexing that was implemented. Each indexing method will have their pros/cons, so you'll be able to select the search engine backend according to your restrictions.

There are many reasons why we depart from other libraries, many of them, for instance, uses JSON+base64 (http/1) for serialization, while we use protobuf+gGRPC (http/2).

If you don't know ML and you want to do similarity search, you can just use the models that come together with EuclidesDB and just make calls to add items and query for similarity with less than 10 lines of Python code. So it will really simplify things for people who don't want to retrain any model or implement a backend, indexing, search, etc.

Just an extra note, that is the key point why EuclidesDB support multiple models, so you can have for instance a ResNet trained on ImageNet for some images and another ResNet (same architecture) fine-tuned on your data (domain adapted) for another different semantic space. A concrete example is to think in the example of a fashion company who has fine-tuned different models for different product categories:

Model A = fine-tuned to classify between different types of shoes;

Model B = fine-tuned to classify between different t-shirt types;

EuclidesDB can have these two models and you can add/query items into each one of these different models (hence the concept of "model/module space" that is used by EuclidesDB).

Hi, you're correct, LevelDB is the lower level building block for EuclidesDB, it's the underlying storage for item's features/predictions/metadata. EuclidesDB uses gRPC (reasons for that design decision are described in the docs) as protocol communication and protobuf as serialization mechanism for its RPC communication with client APIs (i.e. Python client API). EuclidesDB is also tightly coupled with libtorch (PyTorch C++ backend) and it is EuclidesDB that is responsible to run inference (forward pass) on the models instead of the client, so it takes all the heavy burden from clients and adds it into the database engine itself. EuclidesDB also has querying capabilities (using LSH for performance) to query what was added into it, so again, the query (and feature extraction for it) is executed by the EuclidesDB. So the comparison between LevelDB/LMDB and EuclidesDB doesn't make much sense, they are low-level embeddable engines for key-value storage (that EuclidesDB uses).