Deep Learning Basics

Small model choices still matter

5 min read

Small model choices still matter because production is where all the little assumptions stop being little.

It is tempting to talk about models as if architecture only matters at the impressive end of the spectrum: frontier models, giant context windows, mixture-of-experts routing, tool use, long-running agents. I get the temptation. Those systems are loud. They have product launches and benchmark charts and long threads full of people arguing over decimals.

But the smaller choices are still doing work. Activation functions. Normalization. Loss functions. Thresholds. Tokenization. Sampling defaults. The boring stuff. The stuff that looks settled until a system starts behaving strangely and everyone goes looking for the dramatic explanation.

Sometimes the bug is not dramatic. Sometimes the model has the wrong shape for the job.

activation functions are not decoration

An activation function decides how a neuron responds after the weighted sum has been calculated. That sounds like a math detail until you watch what it does to behavior.

A linear layer without a nonlinear activation is still linear, even if you stack several of them. You can multiply matrices all day and still end up with something that collapses into one bigger linear transformation. The activation is where the network gets a bend in the road.

ReLU is the usual first example because it is simple:

relu(x) = max(0, x)

Negative values go to zero. Positive values pass through. That one decision changes the shape of the model. It creates sparse activations. It makes gradients easier than older saturating functions in many cases. It also creates dead neurons when units spend too much time on the negative side and stop learning useful features.

None of this is mystical. It is just a choice with consequences.

the shape shows up in failure modes

Activation functions are easy to ignore because the model still trains. The loss goes down. The notebook looks alive. The failure shows up later, usually as a weird behavior that does not announce itself as “activation function problem.”

A model may be too jumpy near a threshold. It may flatten differences that matter. It may overreact to outliers. It may learn a representation that works on the easy slice and falls apart on the edge cases. If the model is small, the shape matters even more because there is less spare capacity to route around a bad assumption.

This is why I like simple visual examples for neural network basics. Move one input. Watch one intermediate value change. Push it through ReLU. See what disappears. The point is not to memorize the function. The point is to notice that the network is making a decision about which signal is allowed to continue.

That intuition carries into production. When a classifier refuses to distinguish two cases, or a small model misses a weak signal, I want to know whether the training data is bad, the features are weak, the threshold is wrong, or the model shape is fighting the task.

small models have less room to hide

Large models can hide sloppy design for a while. They have enough capacity to make a surprising number of bad decisions look acceptable. Small models are less forgiving, which is part of why I like them.

If a small model works, it usually works for a reason you can inspect. If it fails, the failure is often close enough to the surface that you can learn something from it. That makes small models useful for edge tasks: classification, extraction, routing, filtering, scoring, and local workflows where latency and cost matter.

But those benefits only show up if the details are treated as design choices. A small classifier with the wrong loss function is not “efficient.” It is confidently cheap. A small embedding model with poor normalization is not “lightweight.” It is a retrieval problem waiting to happen. A small sequence model with the wrong window is not “fast.” It is blind in a predictable way.

The practical question is not whether the model is small. The question is which constraints the smallness exposes.

what i would check

For a small model moving toward production, I would want a few boring checks before celebrating:

  • Does the model beat a simple baseline?
  • Which slice does it fail on first?
  • Are the activations saturating, dying, or collapsing useful variation?
  • Does a threshold change fix the issue, or does it merely move the miss somewhere else?
  • Is the metric hiding a class imbalance?
  • Can the team explain one false positive and one false negative without hand waving?

That last check matters. If nobody can explain a miss, the system is not ready to be trusted just because the average score looks good.

I also want the simplest possible ablation. Remove a feature. Change the activation. Compare the baseline. Use a smaller hidden layer. Use a slightly larger one. The goal is not to grid-search forever. The goal is to find out whether the model is robust or whether it only works because one fragile path happens to line up with the eval set.

small does not mean casual

Small models belong in serious systems. I would rather run a focused local model for a narrow job than send every decision to the largest model available. But small models demand respect for details because there is no giant reasoning engine waiting downstream to clean up the mess.

Activation functions are one example. They are not the whole story, but they are a useful reminder. A model is not only data and training time. It is a pile of decisions about shape, signal, loss, thresholds, and failure.

The smaller the model, the easier it is to see those decisions.

That is why the small choices still matter. They are where the model tells you what kind of system it wants to be.

Jeremy London

About Jeremy London

Engineering leader and builder in Denver. I write about AI platforms, agents, security, reliability, homelab infrastructure, and the parts of engineering work that have to survive production.