28.9M LLM running on an $8 esp32, writing a story on a screen! fully on the chip, nothing goes to a server.
that's ~100x bigger than the model people ran on this chip in 2023.
it grew out of @karpathy llama2.c and google's per-layer embeddings, which is what lets a big model live in flash instead of ram.
Make TPC-H data scale factor 10 faster than you can type the command (under 10 sec). The new release of tpchgen-cli is out -- try it via uvx
uvx tpchgen-cli parquet --scale-factor=10
Huge thanks to @atclflushopt and @kevinjqliu
LLM Knowledge Bases
Something I'm finding very useful recently: using LLMs to build personal knowledge bases for various topics of research interest. In this way, a large fraction of my recent token throughput is going less into manipulating code, and more into manipulating knowledge (stored as markdown and images). The latest LLMs are quite good at it. So:
Data ingest:
I index source documents (articles, papers, repos, datasets, images, etc.) into a raw/ directory, then I use an LLM to incrementally "compile" a wiki, which is just a collection of .md files in a directory structure. The wiki includes summaries of all the data in raw/, backlinks, and then it categorizes data into concepts, writes articles for them, and links them all. To convert web articles into .md files I like to use the Obsidian Web Clipper extension, and then I also use a hotkey to download all the related images to local so that my LLM can easily reference them.
IDE:
I use Obsidian as the IDE "frontend" where I can view the raw data, the the compiled wiki, and the derived visualizations. Important to note that the LLM writes and maintains all of the data of the wiki, I rarely touch it directly. I've played with a few Obsidian plugins to render and view data in other ways (e.g. Marp for slides).
Q&A:
Where things get interesting is that once your wiki is big enough (e.g. mine on some recent research is ~100 articles and ~400K words), you can ask your LLM agent all kinds of complex questions against the wiki, and it will go off, research the answers, etc. I thought I had to reach for fancy RAG, but the LLM has been pretty good about auto-maintaining index files and brief summaries of all the documents and it reads all the important related data fairly easily at this ~small scale.
Output:
Instead of getting answers in text/terminal, I like to have it render markdown files for me, or slide shows (Marp format), or matplotlib images, all of which I then view again in Obsidian. You can imagine many other visual output formats depending on the query. Often, I end up "filing" the outputs back into the wiki to enhance it for further queries. So my own explorations and queries always "add up" in the knowledge base.
Linting:
I've run some LLM "health checks" over the wiki to e.g. find inconsistent data, impute missing data (with web searchers), find interesting connections for new article candidates, etc., to incrementally clean up the wiki and enhance its overall data integrity. The LLMs are quite good at suggesting further questions to ask and look into.
Extra tools:
I find myself developing additional tools to process the data, e.g. I vibe coded a small and naive search engine over the wiki, which I both use directly (in a web ui), but more often I want to hand it off to an LLM via CLI as a tool for larger queries.
Further explorations:
As the repo grows, the natural desire is to also think about synthetic data generation + finetuning to have your LLM "know" the data in its weights instead of just context windows.
TLDR: raw data from a given number of sources is collected, then compiled by an LLM into a .md wiki, then operated on by various CLIs by the LLM to do Q&A and to incrementally enhance the wiki, and all of it viewable in Obsidian. You rarely ever write or edit the wiki manually, it's the domain of the LLM. I think there is room here for an incredible new product instead of a hacky collection of scripts.
Parsing PDFs is insanely hard
This is completely unintuitive at first glance, considering PDFs are the most commonly used container of unstructured data in the world. I wrote a blog post digging into the PDF representation itself, why its impossible to “simply” read the page into plaintext, and what the modern parsing techniques are 👇
The crux of the issue is that PDFs are designed to display text on a screen, and not to represent what a word means.
1️⃣ PDF text is represented as glyph shapes positioned at absolute x,y coordinates. Sometimes there’s no mapping from character codes back to a unicode representation
2️⃣ Most PDFs have no concept of a table. Tables are described as grid lines drawn with coordinates. Traditional parser would have to find intersections between lines to infer cell boundaries and associate with text within cells through algorithms
3️⃣ The order of operators has no relationship with reading order. You would need clustering techniques to be able to piece together text into a coherent logical format.
That’s why everyone today is excited about using VLMs to parse text. Which to be clear has a ton of benefits, but still limitations in terms of accuracy and cost.
At @llama_index we’re building hybrid pipelines that interleave both text and VLMs to give both extremely accurate parsing at the cheapest price points.
Blog: https://t.co/iLJpIr7cbH
LlamaParse: https://t.co/TqP6OT5U5O
Simply applying basic linting rules (like don't compress pages where it doesn't help) reduces parquet files sizes by 5% and decreases decode time by 20%.
@MOVNTDQ shows how in his latest blog
https://t.co/FFzHZpwJN6
Extracting large-scale structured information from complex PDFs is really hard, even with LLMs.
80% accuracy isn’t good enough; a lot of business applications require 98%+. You need specialized capabilities that can not only parse complex tables and charts, but also trace back to the source elements with confidence scores and citations.
We’ve created a best in class document extraction service with LlamaExtract, and you can see for yourself in ~5 mins! Simply log on to LlamaCloud and click on our templates to take a look.
Check out LlamaCloud here: https://t.co/XYZmx5TFz8
If you’re looking to productize document extraction, come talk to us: https://t.co/Ht5jwxSrQB
Marc Andreessen's rule of thumb for a successful tech sector: "The principle is just 'Do the opposite of the EU.'"
David Sacks: " When they talk about AI leadership, what they mean is that they're taking the lead in defining the regulations."
"They get together in Brussels and figure out what all the rules should be, and that's what they call 'leadership.'"
@pmarca@DavidSacks
BTW if anyone wants a good intro to database storage / Log structured storage (aka LSM trees), the @CMUDB lecture this fall is a good one: https://t.co/ln6Yi0K1JZ
🚀 Training SLMs on 1 GPU in a Day!
For Speech LMs enjoyers, meet Slam—a recipe for training high-quality SLMs on a single A5000 GPU in 24 hours!
> Achieves SOTA-level performance at a fraction of the compute cost!
> Outperforms predicted compute-optimal scaling laws—SLMs are more feasible than ever!
Introducing PyTimetk for finance and time series in Python.
Discover how to speed up common time series operations by 10X.
Full tutorial: https://t.co/emaSgSWYz5
Variant is coming soon to @ApacheParquet in Rust . Huge thanks to @CMUDB for getting the process started in @ApacheArrow with a great draft PR to kick off Variant support: https://t.co/cizV9SC84O 🙏🙏🙏 Thank you
@chamath Why is it so crucial to win? You can make more together and only Americans care about winning. With AI and robotics, there will be nothing to win.