{
 "name": "NSM",
 "read_from": "ungli",
 "slug": "nsm",
 "breaks_up": "an NSM (Narrow Small Model): one that does a single job and answers with a kind, a span, an item, a number or codes, never with sentences, and leaves the decision to code; narrow is the size of its answer, not of the model",
 "left_out": "A model that writes. Anything that writes sentences for people is not an NSM: an NSM answers with a kind, a span, an item, a number or codes, and code decides what follows. Also left out: what the NSM is for in the world, its name, and the keys, which stay with the person who keyed them.",
 "element_types": [
  {
   "name": "does",
   "holds": "one",
   "need": "essential",
   "description": "The one thing the model does. A larger task is split into steps first, each done by its own model or by code.",
   "elements": [
    {
     "name": "sorts",
     "description": "puts each thing it reads into one of a few kinds set in advance",
     "gives": "It puts each thing it reads into one of a few kinds set in advance."
    },
    {
     "name": "points",
     "description": "finds the part of what it reads that answers a question, or says there is none",
     "gives": "It points at the part of what it reads that answers a question, or at nothing."
    },
    {
     "name": "matches",
     "description": "says which item on a list written in advance the thing it reads goes with",
     "gives": "It says which item on a list written in advance the thing it reads goes with."
    },
    {
     "name": "spots",
     "description": "says which of a set of words or sounds recorded in advance occurred",
     "gives": "It says which of the words or sounds recorded in advance occurred."
    },
    {
     "name": "scores",
     "description": "gives each option a number, and code takes the highest",
     "gives": "It gives each option a number, and code takes the highest."
    },
    {
     "name": "chooses",
     "description": "picks codes from sets, one slot at a time",
     "gives": "It picks codes from sets, one slot at a time."
    }
   ]
  },
  {
   "name": "reads",
   "holds": "one",
   "need": "essential",
   "description": "What goes into the model each time it answers.",
   "elements": [
    {
     "name": "a sentence",
     "description": "one sentence at a time",
     "gives": "It reads one sentence at a time."
    },
    {
     "name": "two sentences",
     "description": "two sentences read together, such as a question and its answer",
     "gives": "It reads two sentences together."
    },
    {
     "name": "a passage",
     "description": "a few sentences up to a page, with a question about it",
     "gives": "It reads a passage of a few sentences up to a page."
    },
    {
     "name": "a whole text",
     "description": "a whole text, shortened to fit the model's window",
     "gives": "It reads a whole text, shortened to fit its window."
    },
    {
     "name": "a second of sound",
     "description": "a second or two of sound from a microphone",
     "gives": "It hears a second or two of sound at a time."
    },
    {
     "name": "numbers",
     "description": "a few whole numbers that describe a situation",
     "gives": "It reads a few numbers that describe a situation."
    },
    {
     "name": "codes",
     "description": "numbers that stand for words, never the words themselves",
     "gives": "It reads only codes that stand for words, never the words."
    }
   ]
  },
  {
   "name": "answers with",
   "holds": "one",
   "need": "essential",
   "description": "What comes out. Every answer can also be none, which code reads as don’t know.",
   "elements": [
    {
     "name": "a kind",
     "description": "one of a few kinds set in advance",
     "gives": "It answers with one of the kinds, or none."
    },
    {
     "name": "yes or no",
     "description": "one of two answers",
     "gives": "It answers yes or no, or none."
    },
    {
     "name": "a span",
     "description": "where an answer starts and ends in what it read",
     "gives": "It answers with where the answer starts and ends, or none."
    },
    {
     "name": "an item",
     "description": "one item from a list written in advance",
     "gives": "It answers with one item from the list, or none."
    },
    {
     "name": "a number",
     "description": "a number for each option, which code compares",
     "gives": "It answers with a number for each option."
    },
    {
     "name": "codes",
     "description": "codes chosen from sets, which code turns back into words",
     "gives": "It answers with codes, which code turns back into words."
    }
   ]
  },
  {
   "name": "starts from",
   "holds": "one",
   "need": "essential",
   "description": "The trained model it begins from, before it learns the job.",
   "elements": [
    {
     "name": "a pointing reader",
     "description": "MiniLM, 33 million parameters, already trained to find the answer to a question in a passage"
    },
    {
     "name": "an encoder with a new head",
     "description": "an English encoder, such as MiniLM (33 million parameters) or DeBERTa, with a small new layer that picks one of a few kinds or says yes or no"
    },
    {
     "name": "an adapter on a trained model",
     "description": "a small set of added weights trained on top of a model already trained for a nearby job"
    },
    {
     "name": "a multilingual encoder",
     "description": "a small encoder that reads several languages, retrained on Indian languages"
    },
    {
     "name": "a frozen audio encoder",
     "description": "a model trained on sound, kept as it is, with a small scorer trained on top"
    },
    {
     "name": "a keyword spotter",
     "description": "a tiny encoder, tens to hundreds of thousands of parameters, that compares sound with recorded examples"
    },
    {
     "name": "nothing",
     "description": "no trained model: every weight is learnt from the start"
    },
    {
     "name": "a few whole numbers",
     "description": "no neural network: a handful of whole numbers that multiply the inputs"
    }
   ]
  },
  {
   "name": "learns from",
   "holds": "one",
   "need": "essential",
   "description": "Where the right answers it learns from come from.",
   "elements": [
    {
     "name": "your own keys",
     "description": "your own answers, given one item at a time on sheets that show no model’s answer"
    },
    {
     "name": "a rule you stated",
     "description": "answers code works out from a rule you stated in words"
    },
    {
     "name": "rows a model wrote",
     "description": "rows another model wrote for training, the right answer known from how each was made"
    },
    {
     "name": "another model's labels",
     "description": "labels another model gave, used on your word"
    },
    {
     "name": "a dataset's labels",
     "description": "the labels a public dataset came with"
    }
   ]
  },
  {
   "name": "runs on",
   "holds": "one",
   "need": "essential",
   "description": "Where the model answers once it is trained.",
   "elements": [
    {
     "name": "a Raspberry Pi 5",
     "description": "inside a toy or a game, on its processor, with nothing sent anywhere"
    },
    {
     "name": "a phone's browser",
     "description": "in the page itself, with nothing sent to a server"
    },
    {
     "name": "a small server",
     "description": "a server's processor with no graphics card, such as one with 1 CPU and 2 GB"
    },
    {
     "name": "a graphics card",
     "description": "a machine with a graphics card, such as an RTX 3060 with 12 GB"
    }
   ]
  }
 ],
 "instances": [
  {
   "name": "ungli",
   "url": "https://ungli.syntax.prayasabhinav.net",
   "what": "a builder: design a task as steps of NSMs (Narrow Small Models) and plain code, and read beside each model what the nearest models already built were measured to do and what their records say to check. Its name is from ungli rakhna, to put a finger on the exact spot, which is all a model here does",
   "links": []
  }
 ],
 "described_entities": [
  {
   "name": "rai",
   "url": "https://ungli.syntax.prayasabhinav.net/#rai"
  },
  {
   "name": "RAM",
   "url": "https://ungli.syntax.prayasabhinav.net/#ram"
  },
  {
   "name": "Coherence Diagnostic",
   "url": "https://ungli.syntax.prayasabhinav.net/#coherence-diagnostic"
  },
  {
   "name": "aadha",
   "url": "https://ungli.syntax.prayasabhinav.net/#aadha"
  },
  {
   "name": "gagar",
   "url": "https://ungli.syntax.prayasabhinav.net/#gagar"
  },
  {
   "name": "the syntax slicer",
   "url": "https://ungli.syntax.prayasabhinav.net/#slicer"
  },
  {
   "name": "mom, a base trained from scratch",
   "url": "https://ungli.syntax.prayasabhinav.net/#mom"
  },
  {
   "name": "kahen, the gap mark",
   "url": "https://ungli.syntax.prayasabhinav.net/#kahen"
  },
  {
   "name": "the misunderstanding probes",
   "url": "https://ungli.syntax.prayasabhinav.net/#probes"
  },
  {
   "name": "akal",
   "url": "https://ungli.syntax.prayasabhinav.net/#akal"
  },
  {
   "name": "carries",
   "url": "https://ungli.syntax.prayasabhinav.net/#carries"
  },
  {
   "name": "how sure",
   "url": "https://ungli.syntax.prayasabhinav.net/#how-sure"
  },
  {
   "name": "stand-in",
   "url": "https://ungli.syntax.prayasabhinav.net/#stand-in"
  },
  {
   "name": "move",
   "url": "https://ungli.syntax.prayasabhinav.net/#move"
  },
  {
   "name": "sense",
   "url": "https://ungli.syntax.prayasabhinav.net/#sense"
  },
  {
   "name": "Hoja's gaali scorer",
   "url": "https://ungli.syntax.prayasabhinav.net/#hoja-scorer"
  },
  {
   "name": "Hoja Paarakhi's word spotter",
   "url": "https://ungli.syntax.prayasabhinav.net/#paarakhi"
  },
  {
   "name": "Beam's thread model",
   "url": "https://ungli.syntax.prayasabhinav.net/#beam-thread"
  },
  {
   "name": "Beam's maze maker",
   "url": "https://ungli.syntax.prayasabhinav.net/#beam-maze"
  },
  {
   "name": "the poem chooser",
   "url": "https://ungli.syntax.prayasabhinav.net/#chooser"
  },
  {
   "name": "Decay of Meaning word-sign model",
   "url": "https://ungli.syntax.prayasabhinav.net/#decay"
  },
  {
   "name": "boardgameBuilder's clash model",
   "url": "https://ungli.syntax.prayasabhinav.net/#boardgame-clash"
  }
 ]
}
