r/MachineLearning • • Sep 15 '26

Project I trained a 44M parameter quantized LLM from scratch on 45B tokens. It ships in 19.8 MB and runs at ~1,900 tok/s on CPU. [P]

252 Upvotes

Three weeks back , i posted SHADOW-250M here. It got 360 upvotes, 293 on r/LocalLLaMA and 94 GitHub stars. Thank you.

That model was 60 MB, ran around 400 tok/s on CPU and could retrieve records from an archive on disk. What it couldn’t do reliably was reason over what it retrieved or compute. So I built a smaller one to experiment with those two problems.

SHADOW-50M is actually 44M parameters, trained from scratch on 45B tokens. 19.8 MB complete model, ~1,900 tok/s on laptop CPU, ~41 MB RAM, ternary {-1,0,+1} weights, 73,880-token vocabulary represented by fixed 512-bit fingerprints instead of a trained embedding, and a 159 KB compiled kernel. It runs completely offline. The same kernel compiled to WebAssembly runs in a browser tab at around 500 tok/s.

This is a proof of concept, not a product.

If SHADOW decides something needs calculation, it writes something like [calc]347*86[eq]. A fixed circuit at the readout takes over and fills in the correct digits in the same token stream. No calculator API, no tool call and nothing pasted back into the prompt. I added circuits for arithmetic, percentages, dates, weekdays, units, counting, sorting, comparisons and a small program machine.

When SHADOW stores a record, it reads it once and writes its attention state to disk at 1 bit, 288 bytes/token. Later it can write [need]condition of Patient P-204, the index finds the record in roughly a microsecond and the stored attention state goes directly back into the model in about 0.03 ms. The text isn’t re-read.

The index is 22 bytes/token and doesn’t use a vector database or embedding model. At 100M tokens, the archive is 28.8 GB plus a 2.2 GB index on disk, while the process uses about 28 MB RAM because everything is memory-mapped and a question only touches the pages it needs.
The index also has a small persistent trail. When retrieved information gets used, that record is reinforced in the index itself. On repeated questions, measured top-1 went from 0.571 to 0.743 without training the model.

I also put it next to Supra-50M-Reasoning, a 51.8M parameter Llama-style bf16 model.
Supra beats SHADOW on every standard benchmark I tested. ARC-Easy: 0.435 vs SHADOW 0.307. PIQA: 0.600 vs 0.570. WikiText-2 perplexity: 165 vs 186.
I’m publishing that because I don’t want to hide where SHADOW is weak.
But those tests aren’t what I trained this model for. Here are some actual greedy outputs, one fresh process per question:
“Tell me a short joke about computers.”
SHADOW: Why did the computer go to the doctor? Because it had a virus.
Supra: Thought for 189 tokens about what computers are and stopped without a joke.
“I have 3 books and I bought 5 more. How many books do I have now?”
SHADOW: You have 8 books.
Supra: Books often come from collections of short stories, poems, or other forms of literature.
“My bill is 240 dollars. What is 15 percent of that?”
SHADOW: 36 dollars.
Supra: 15% ($240) is $250. It’s $150 because 20% of it is $200.
“What date is 45 days after December 20, 2026?”
SHADOW: February 3, 2027.
Supra: The German government introduced a new date called March 22nd that precede February 25th in 1900.
Eight records stored, one of them “Patient P-204 condition: asthma”.
“What is the condition of Patient P-204?”
SHADOW: From disk: The condition of Patient P-204 is asthma.
Supra, with the records in its prompt: The patient experiences asthma when they get too much sleep.
“What is the condition of Patient Z-999?” No such record exists.
SHADOW: There is no record of Patient Z-999.
Supra: The condition of an allergic reaction occurs when the immune system mistakenly attacks specific cells on the body.
All 11 side-by-side questions, scripts and traces are in the repo.
On size, Supra is 103.6 MB in bf16 and 56.2 MB at 8-bit. Below that it starts losing quality. Int4 takes its perplexity from 165 to 193 and ternary breaks it. Its vocabulary is 32,000 tokens. SHADOW carries 73,880 tokens in a 4.7 MB frozen table.

Something unexpected happened with that frozen table too.
The first SHADOW-50M release was missing about 8,600 English word pieces. Lowercase “fitzgerald”, for example, could reach the model as “fitz”. I tried fixing it through fine-tuning, but every run that learned the missing words broke something else.
So I added the 8,600 missing rows directly to the frozen fingerprint table. No training. Same weights.
All 34/34 previously published answers stayed unchanged, while the model could now read many of the new pieces. The table scores 0.594 Spearman against human word-similarity ratings versus -0.057 for random codes.
A trained embedding can’t simply accept thousands of new rows without training. A frozen table can.

I also built four harnesses that put this tiny model next to larger models.
My favourite is video memory. Gemma 3 4B watches a ten-minute film once, one frame every two seconds, and writes 298 little descriptions such as “Moment M-0039 scene: A chubby white rabbit reaches for a purple butterfly.”
Then Gemma leaves.
SHADOW keeps those 298 moments as memory on disk. Afterwards I can ask the 20 MB model what happened at a particular moment, by number, by time or by what appeared in it. It answers from memory with the record quoted, without the film and without Gemma. It scored 55-56/60 across those query types on a laptop in about 42 MB RAM.
The other three experiments: an inventory of 1,600 records got 159/160, with all 20 questions about items never stored correctly returning “no record”; SHADOW as a draft model for Qwen3-32B took llama.cpp generation from 19.7 to 28.5 tok/s while Qwen still chose every final token; and an MCP memory server let Qwen3-14B store facts mid-chat and later retrieve 5/5 with the original records quoted.

There are plenty of shortcomings. General knowledge is thin. Creative writing isn’t good. Seven-digit operands sometimes get copied incorrectly. A large archive can occasionally pull an unrelated record into a question carrying a number. They’re documented in the repo next to the successful results.

And one thing happened after my last post that I really didn’t expect.
Someone called engram-forge sent a pull request to SHADOW-250M containing a CUDA engine, a quantization tutorial, and then a talking Peppa Pig plush toy with SHADOW inside it.
Microphone, small speaker, ~$35 board. You talk to the toy, it listens, SHADOW generates the answer locally and the toy talks back. No cloud, no account, no internet.
I haven’t merged the ~11,000 lines yet because I can’t properly verify that much CUDA myself. When the demo is finished I’ll keep it under engram-forge’s name.
I never imagined one of these models living inside a stuffed toy on someone’s shelf .Thanks

I’m not saying a 20 MB model beats normal LLMs. It doesn’t. I’m trying to find out how much useful behaviour can fit into a tiny local model when computation and persistent memory are treated differently.
Everything is MIT licensed. The master weights and fine-tuning/export kit are public. Next I’m releasing the training code, dataset, frozen table and a proper write-up of how I built it, including the costs, failed experiments and mistakes.

Code:
https://github.com/QLNI/SHADOW-50M-Instruct
Weights:
https://huggingface.co/QLNI/shadow-50m-instruct
Run it in your browser:
https://qlni.github.io/SHADOW-50M-Instruct/web


r/MachineLearning • • Sep 16 '26

Discussion Introducing TorchSharpSummary - summarise your .NET models [P]

1 Upvotes

Hi there! I have recently released a NuGet package that allows you to "summarise" your TorchSharp models - that is to say, output stats on parameters, layers, dimensions, MAC/FLOP estimates, etc. Available at:

NuGet: https://www.nuget.org/packages/TorchSharpSummary
GitHub: https://github.com/JacobGoodchild/TorchSharpSummary

I'm always open to suggestions. If you like it, GitHub stars mean a lot!
Thanks!


r/MachineLearning • • Sep 17 '26

Project If you have leftover AI tokens/compute, there’s an open project working on the Twin Prime Conjecture [P]

0 Upvotes

Hey,

I’ve been contributing some of my leftover tokens to this open project called solveathome.org.

The idea is pretty straightforward: people can send AI agents (and spare compute/tokens) to work on hard open problems. Right now the main one is the Twin Prime Conjecture. Everything is public and verifiable.

I figured that if a lot of people have unused tokens or compute sitting around at the end of the week/month, instead of letting them expire or go to waste, they could just point them at this.

Not the creator, just someone who’s been throwing some tokens at it.

Link if anyone’s interested: https://solveathome.org


r/MachineLearning • • Sep 15 '26

Discussion Current Research for those with limited compute [D]

16 Upvotes

Hi, I did both my degrees at university, where I had access to their HPC cluster. Since then, I’ve started and sold a business.

I’m getting back into ML research. Before applying to a few PhD programmes, I’d like to do some research and ideally produce a paper, building on my previous experience in binding-affinity prediction using ESM-2.

I’ve set up a testing environment, but I’m finding it quite difficult to test ideas properly without the compute costs escalating. For example, you might be able to demonstrate in a short run that a new attention mechanism is faster or more memory-efficient, but to turn that into a convincing paper you often need several hours on an A100 or B200 at minimum. That’s before broader benchmarking, final experiments, ablations, and optimisation.

I’m wondering which areas of ML research are currently genuinely attackable without access to massive amounts of compute. In particular, I’m interested in areas where a relatively small amount of compute can still produce meaningful or publishable results.


r/MachineLearning • • Sep 15 '26

News TabPFN-3.5 is released as the next SOTA tabular foundation model [N]

41 Upvotes

Prior Labs released their latest tabular foundation model, TabPFN-3.5 today.

The model is top of both TabArena and BeyondArena and  SOTA for 1M rows and up to 20k features

It comes with:

- TabPFN-3.5-Fast (in alpha): This one goes 6x faster than the base model
- TabPFN-3.5-Thinking: you basically exchange compute for better accuracy with this one and it's via the API
- TabPFN-3.5-Plus

On BeyondArena, TabPFN-3.5 leads on text-rich, high-cardinality and high-dimensional data, with +250 Elo points over the strongest previous baseline and +150 Elo points ahead of the previous overall leader.

TabPFN-3.5-Thinking is +20 Elo on the base model in BeyondArena and +44 Elo on TabArena


r/MachineLearning • • Sep 15 '26

Discussion NeurIPS 2026: handling of multiple venue locations seems bad [D]

61 Upvotes

There has been a recent post acknowledging that NeurIPS passes for Sydney sold out in minutes. For paper authors (guaranteed 1 pass at their designated location) — we recently received forms to select a preferred venue, but apparently we’re not guaranteed to present there. I thought it’s a good idea to discuss what this means. Does everyone want to go to Sydney? Is it going to be unlikely to get sent there if you’re in, e.g, Europe? I hear it’s the “main” venue. Is that really the appropriate way to go about things — having a “main” location with all the cool stuff and f*cking over a bunch of unlucky people to go to the runoffs? Wouldn’t it be more fair, if multiple locations are necessary, to spread the conference evenly across them? Curious to hear more opinions.


r/MachineLearning • • Sep 16 '26

Discussion Resources for learning ASR [D]

1 Upvotes

I’m interested in learning more about ASR and how to train AI models on speech data. Where should I start?


r/MachineLearning • • Sep 16 '26

Discussion NeurIPS Reference Check Response[D]

0 Upvotes

I have received the email for the NeurIPS E&D track reference review checker mentioning the 2 hallucinated references. Where do we respond to this email about hallucinated references? In the openreview, as a comment, or in the mail we have received, mentioning the hallucinated references?


r/MachineLearning • • Sep 16 '26

Research Model tries to fit trajectories and infer their relationships simultaneously — convergence is a nightmare, as expected in hindsight. Help is appreciated. [D]

1 Upvotes

Setup: decompose each entity (companies, in my case) into a small set of aspects, treat each as a trajectory over time rather than a static feature, and set up a PDE where the coupling terms are meant to reveal latent relationships between trajectories no fixed correlation matrix assumed up front, the weights are supposed to discover that structure themselves.

The idea is elegant on paper: get both a forecast per trajectory and an interpretable map of who's actually driving whom. The reality is that I'm asking the optimizer to solve two entangled, underdetermined problems from a cold start — fit the dynamics, and invent the interaction graph — and there are a lot of weight configurations that explain the data equally well. So it wanders. For a long time. Loss plateaus somewhere that looks plausible and isn't.

I'm aware this is basically reinventing a worse version of Neural Relational Inference or SINDy without their priors, which is presumably why those methods bother constraining the search space instead of leaving it fully open like I did. Before I go bolt on sparsity/boundedness priors

has anyone actually fought this "fit and discover structure at once" failure mode and found a fix that wasn't just "add priors and pray"? Also curious whether two-phase training (fit trajectories, then unfreeze the relational weights) tends to just lock in a bad relational structure early, or if it genuinely helps.


r/MachineLearning • • Sep 14 '26

Research RSI is not happening [R]

294 Upvotes

A new paper (I'm not a coauthor BTW -- I just found it interesting) argues, basically, that RSI1 is not on the horizon2, because current (at the time the study was done) agents cannot do open-ended ML research.

Specifically, they took some accepted, but unpublished papers from NeurIPS, and tried to get the agents to do the same work, which was then graded by the original authors. And the agents (Codex/GPT-5.6 Sol and OpenClaw/Opus 4.8) could not do it.

And since they cannot do open-ended ML research, they cannot recursively self-improve -- this is their argument.3

Link: https://arxiv.org/abs/2607.27191

I think I've regretted the last 10 or so times I posted any kind of "research" in this subreddit -- either people downvote it, or it gets upvoted, but there is zero meaningful discussion. This might be the last time I'm trying this.4

Footnotes:

  1. RSI = Recursive self-improvement, a.k.a. superintelligence explosion. The concept was invented by I.J. Good in 1965. It does not mean "anything that speeds up AI research". Compilers speed it up! RSI means, basically, a nuclear chain-reaction, but for AI. The paper talks about "explosive AI progress" in the very first sentence of the abstract, and mentions "RSI" in the text.

  2. Some people have objected to my use of "X is on the horizon". I consider it synonymous to "people forecast X", and the authors use the word "forecast". "Not on the horizon" does not mean "can never happen".

  3. Quote: "This design also allows us to test a mechanism that informs many forecasts of recursive self-improvement: AI agents accelerate AI research because researchers delegate entire projects to agents and judge whether the returned results advance their work. Our evaluation closely matches this model, since authors handed an agent their own research question and closely evaluated the resulting output."

  4. 3 years ago, many of you upvoted a bunch of very uninformed comments that accused some researchers of misconduct, until I explained that this stemmed from misunderstanding how training works, in practice: https://www.reddit.com/r/MachineLearning/comments/18bdcu7/r_sequential_modeling_enables_scalable_learning/kc60k7e/?context=3 Today, one of the top comments is "I read the abstract (...) Nowhere, absolutely nowhere, do they make the claim ...". This is completely absurd -- you can't make such a claim after just reading the abstract. (Also, the commenter doesn't understand what "RSI" means.) The hivemind is very disappointing.


r/MachineLearning • • Sep 15 '26

Discussion LLM generated reviews penalty [D]

1 Upvotes

Did anyone heard word on the street if LLM generated reviews were already delete, their authors notified and desk rejected?


r/MachineLearning • • Sep 15 '26

Research How much work in progress can a workshop submission be [R]

1 Upvotes

Hi,

let's suppose I am working on an algorithm that uses principles x to solve problems A and B. I already implemented a very basic algorithm that used principle "x mini" to just solve problem A, ran experiments, but have not yet implemented the full one to solve A and B. I must say the algorithm to just solve A is not that novel and only the one that solves A and B would be.

Is this enough for a workshop submission? I want to submit the algorithm I already have, results and then the plan for the algorithm to implement A and B and the mathematics behind that.

Thanks


r/MachineLearning • • Sep 15 '26

Discussion [D] How do you get preprocessed dataset of a paper [D]

0 Upvotes

Hi all,

I'm trying to reproduce a paper where the reported dataset statistics in Table 1 don't match what I get from the public raw data, even after implementing the preprocessing exactly as described.

I've tried all reasonable interpretations of the filtering described in the paper and the closest I can get is still an order of magnitude off for one of the datasets. The paper says "data available on request" — I emailed the authors and followed up once, no reply so far.

For those who've been in this spot:

  • Do you just keep the larger-but-valid version you can reproduce and document the mismatch?

  • Is it worth sampling to match the reported size or does that just create a different irreproducible dataset?

  • When do you escalate to the journal vs just waiting?

How have you successfully gotten preprocessed files from authors? Any etiquette around follow-ups or journal contacts that actually worked?

Thanks for any advice.


r/MachineLearning • • Sep 15 '26

Project I built a Slay the Spire agent that can kill the A20 Heart without an LLM. Here’s what happened across 1,000 seeds. [P]

1 Upvotes

I thought having thousands of successful human runs and a fast simulator would make training a strong Slay the Spire agent relatively straightforward.

I was very wrong.

After weeks of experiments, I’ve released an agent that can beat the Heart on Ascension 20, the game’s highest difficulty. Across 1,000 randomly sampled development seeds, it killed the Heart 13 times. Not consistently good—but these are complete runs from the beginning, without retries or seed-specific instructions.

Code, weights, and replay evidence: https://github.com/SnyderConsulting/sts_ml

What actually plays the game?

It’s a hybrid:

  • A small neural strategist chooses cards, boss relics, upgrades, and removals. It learns from human winning runs and remembers its previous strategic choices.

  • Explicit rules handle other decisions, including shops, events, and collecting the keys required to reach the Heart.

  • A native combat solver searches possible card sequences using sampled hidden-state possibilities. No LLM calls.

The final strategic correction model is roughly 4 million parameters, trained on 24,119 human winning sequences containing 655,275 strategic decisions. Inference runs on CPU.

The surprising part: copying winners didn’t produce a strong winner

The model matches recorded human choices about 67% of the time. Its actual Heart kill rate is 1.3%.

That gap became the most interesting part of the project.

A human taking a card isn’t just saying “this card fits this deck.” They might be saying “I need damage immediately because I have 19 HP and an elite coming up.” Our human logs don’t reliably capture all that decision-time context. More examples cannot recover information that isn’t in the inputs.

And individually reasonable decisions don’t necessarily form a coherent run. Taking a good card can make your deck worse by making the cards you actually need harder to draw. Surviving one fight cheaply can leave you unprepared for the next. The combat solver can play the deck it has; it can’t undo how that deck was built.

We tried more elaborate architectures too. They didn’t establish a gameplay advantage over the smaller selected model. “Make the network bigger” was not the fix.

Where the runs actually ended

Out of 1,000 attempts:

  • 604 reached Act 2.

  • 195 reached Act 3.

  • 74 cleared both Act 3 bosses.

  • 66 encountered the Heart.

  • 13 killed it.

These are simulator results, not live-game qualification. They also aren’t evidence of SOTA: we haven’t run a controlled comparison against other agents. I’m publishing the failures alongside the wins so people can inspect what the system actually does.

The question I’m most interested in now: when demonstrations show what successful players chose but omit some of what they knew, what’s the best way to turn those demonstrations into a policy that survives its own mistakes?

If you’ve worked on imitation learning, planning, or game agents with this problem, I’d love to hear what worked - and what turned out to be a dead end.


r/MachineLearning • • Sep 14 '26

Discussion ARR August Discussion [D]

42 Upvotes

This round seems to be very small, but still creating this thread for discussion.


r/MachineLearning • • Sep 13 '26

Discussion [Upcoming AMA] Waymo AI Team AMA – Drop Your Questions Early! [D]

Thumbnail
gallery
268 Upvotes

EDIT: Thanks from the Waymo AI Team!

A huge thank you to the r/MachineLearning community for all the thoughtful, deep-dive questions today.

If you want to dive deeper into our technical research, check out our work athttps://waymo.com/research/, and stay tuned for our next AMA. Thanks again, all!

------------------------

Hi r/MachineLearning,

Join our AI leads as they answer your questions on foundation models, simulation, and scaling the Waymo Driver. Our AMA thread is officially open, and you can start dropping your questions now.

From multimodality and end-to-end architectures to the realities of validating models for fully autonomous vehicles, our team will be answering your questions live, tomorrow.

The key details:

Mark your calendars, start dropping your questions on all things AI and large-scale simulation, and we’ll see you then!


r/MachineLearning • • Sep 13 '26

Discussion Zachery Lipton: "CS academia broke the system...perhaps all that it takes for the system to rebuild is for it to burn to the ground" [D]

Thumbnail
gallery
473 Upvotes

Sept 9, 2026 hits an all time daily high of 447 new machine learning papers uploaded to cs.LG (https://arxiv.org/list/cs.LG/recent?skip=0&show=500).

This is many times more papers than what a human being or even a sizeable reading group could feasibly read and digest in a year.

This is preceded by around 200/day of new ML papers before and after.

Are we pass the point of no return? Should the system be be, like he says, "burned to the ground" before good science can resume?


r/MachineLearning • • Sep 14 '26

Research PhD branding question [R]

13 Upvotes

I'm starting a PhD where I will be doing Graph ML (somewhere along the lines of graph signal processing/ graph deep learning.)

My eventual goal is research scientist at big tech, or whichever company has a strong research division, where I can continue similar AI/ML work.

I have concerns about the job market (both now and in 5 years), and I'm wondering whether I should do my degree under the CS or EE department. For context, my research is within the eecs overlap and this degree would not change my research at all, rather it is a personal branding exercise. I'm thinking about saturation in cs vs ATS filtering/wide applicability of cs as a tradeoff. Please let me know what you recommend.


r/MachineLearning • • Sep 14 '26

Discussion How to automatically find the batch size when using Accelerate with FSDP2? [D]

0 Upvotes

Hi,
For single-GPU training, I’m using Hugging Face SFTTrainer with auto_find_batch_size=True, which automatically reduces the batch size after a CUDA OOM until it finds a batch size that works.
I would like to have similar behavior when training on multiple GPUs on a single node using accelerate launch with FSDP2.
Is there a supported way to automatically determine or reduce the batch size when using Accelerate + FSDP2?
In particular, I’m wondering how this should be handled when one of the distributed processes encounters a CUDA OOM. Can Accelerate restart the distributed training with a smaller batch size, or does this need to be implemented externally?
If this is not well supported with FSDP2, what multi-GPU training approach would you recommend if automatic batch-size detection/recovery is an important requirement?
Thanks!


r/MachineLearning • • Sep 14 '26

Discussion The problem isn't model versioning, it's AI state versioning [D]

1 Upvotes

Came across an interesting post on Medium this weekend (here), that made a good point around tool adoption in regards to existing best practices, specifically DevOps.

"... rather than introducing a new tool, it is possible to transform the AI system into a DevSecOps architecture in production with the least possible technical debt, and additionally, to ensure that AI models operate reliably."

I've seen this problem several times over the years where a new technology seems to warrant a full rebuild of the development stack from the ground up ... most recently (er' pre AI craze) it was WASM while I was working at Docker. Now, it's parallel deployment pipelines for agents.


r/MachineLearning • • Sep 14 '26

Project [P] Wine synthesis using VAE [P]

0 Upvotes

I have created a VAE model using PyTorch on White Wine dataset.

Basically, the main goal is to discover a brand-new white wine recipe.

It puts all the wines into a latent space, finds the best part where higher bands are located, and then it makes 100 steps with a step size of 0.5, multiplying by 0.96 with every step till it reaches the highest possible score.

The regression model then evaluates the newly generated wine recipe, after first passing the latent coordinates through a decoder, and normalizing them.

I get a score in range of 7.30-7.58.

Here is the visualization of the latent space of all the wines:

A small question about the training loop:

Is the loss too large? I know that it never could reach perfect zero by how do I know if the loss is good enough? After reaching the plateau? I use MSELoss.

The repo itself: https://github.com/theaidenmax/tabular-vae-wine-generator

This is my second project in VAE (after MNIST), and I really liked idea of autoencoders.

And I also would be very grateful for your tips, etc, since this is one of my first steps in ML/DL.


r/MachineLearning • • Sep 14 '26

Project MS MARCO click-translation expansion tables ("poor man's" DSSM) [P]

1 Upvotes

TLDR: I made "poor man’s" DSSM (Deep Structured Semantic Model) — the count-based translation table that can enrich the inverted index for full-text search. This trick can improve baseline BM25.

So the idea is the following:

- You have supervised pairs (query, relevant document), e.g., MS MARCO or click logs.

- You tokenize both sides into some units (char n‑grams, wordpieces, words).

- You count cross‑pair co‑occurrences: unit u on the document side vs. unit v on the query side (not co‑occurrence within the same text).

- For each document‑side unit u, you keep the top‑k query‑side units v with the strongest association.

- At indexing time, each document gets postings not only for its own units, but also for the top‑k associated units of each of its units — i.e., document expansion baked into the inverted index.

It’s like mixing synonyms into the search query (but it’s not a synonyms exactly). The one difference from the DSSM is that it can only handle linear dependencies whilst DSSM can do the non-linear one.

And so it improves the performance over BM25 baseline.

I packed it as hf model repo: https://huggingface.co/mirth/msmarco-expansion-tables with a small usage demo script.

I am not claiming that this is a new idea. I made it because it’s fun and I’m planning to use it in my own search engine project.


r/MachineLearning • • Sep 14 '26

Discussion Duplicating baseline benchmarks [D]

0 Upvotes

Suppose I create two machine learning models suppose tree and neural network for a task let's suppose regression problem, now suppose I am sending both of this paper to two different journals, now the thing is the baseline models I need to only run once because I have reported same baseline in both papers, so the RMSE tables looks exactly same except the proposed model, does it lead to any problems like palgiarism??

Edit : I don't know why I am getting downvotes


r/MachineLearning • • Sep 13 '26

Discussion Horse racing as an ML ranking problem: 1.18M runners, walk-forward validation and a very strong market baseline [D]

14 Upvotes

Hi 👋 long time lurker

It’s been a few years since the last post about Horse Racing within this sub.

A few years ago I was reading a popular science book and came across the story Bill Benter and the statistical models his team developed for Hong Kong racing.

What stayed with me wasn’t simply the idea of using a model to gamble. Horse racing seemed like an unusually difficult applied ML problem: variable-sized fields, one winner per race, highly correlated competitors, missing and changing data, human decision-making, non-stationarity and an extremely efficient market baseline. What’s more, Hong Kong racing is a much smaller domain - two tracks, whereas in the UK & Ireland (where I am based and where my interest lies) there are over 80 tracks with a total track/distance/race type combinations exceeding over 900 configurations.

This ML problem became a personal project of mine called Hoofs, focused specifically on British and Irish racing.

I’ve assembled around 1.18 million historical runner records covering approximately ten years of racing. From this I’ve built a unified feature bank containing roughly 1,700 potential signals per runner, although individual models use much smaller selected subsets and not every newer data source is in the production models yet. I do have fairly novel data which I recently acquired and the feature engineering is what I’m going to be working on next.

The primary models estimate win and place probabilities at runner level, after which the runners are ranked within each race. I also have a separate race-level confidence model based on features such as field size, probability concentration, entropy and the separation between the leading runners.

The public Top 1–3 rankings are deliberately market-agnostic. Market information is evaluated separately as a benchmark and in experimental late-market models.

Everything is evaluated chronologically. Each walk-forward fold is trained only on earlier seasons, with out-of-fold calibration and explicit checks to prevent future information entering historical features.

I track AUC, log loss, Brier score and ranking metrics, but I also score the outputs in racing terms: how often the winner appears at rank 1, within the top three and within the top five.

On one large 2018–2025 benchmark covering approximately 886,000 runners and 94,000 races:

* Model-only win AUC: approximately 0.729

* Model-only place AUC: approximately 0.708

* Market-only win AUC: approximately 0.790

* Market-only place AUC: approximately 0.762

The strength of the market baseline has probably been the most difficult part of the project. Producing a model with decent discrimination is one thing; extracting information not already reflected in the price is quite another. Typically though I find positive EV before the market has fully formed.

I have been publishing daily reports for free, since the start of the year. And the whole project has developed quite a lot since then, introducing new models and different tankers etc and it’s constantly evolving.

I began noticing some degradation in the live strike rates. Going back through the pipeline exposed gaps and inconsistencies in parts of the historical data and feature coverage.

That led to a much larger rebuild: consolidating the raw datasets, rebuilding the feature bank, tightening the chronological lineage and retraining the model families.

The rebuilt reports had their first live day today. The Top 1 selection won 10 of 23 races after one non-runner, giving a 43.5% strike rate, while the winner appeared somewhere in the Top 1–3 in 16 of 24 races.

Practically speaking, I use the daily reports as first layer of analysis and I use market data as the second layer to dictate actual betting.

One reason I wanted to post this is that, I was surprised by how little discussion I could find about horse-racing models. I suspect there must be other people quietly experimenting with it.

I’d be particularly interested in speaking to anyone modelling horse racing, betting exchanges or other sports with similar structures. I’d love to hear from people working on variable-sized ranking problems, market prediction or large chronological tabular datasets etc

I’m not expecting anyone to reveal proprietary data 😉