dummy-cyclic-gpt2-ov

This is not a real language model. It is a synthetic, hand-crafted GPT-2 whose weights were built to deterministically emit one fixed sentence followed by a valid end-of-sequence token, regardless of the input prompt. It exists purely as a fast, tiny, deterministic drop-in for testing OVMS / OpenVINO GenAI integration code. Do not use it for anything that expects real language understanding.

What it outputs

Regardless of the input prompt, this model deterministically generates:

OpenVINO is an open-source toolkit created by Intel to speed up and run AI models efficiently.

With normal generation settings (the default - ignore_eos unset/False), the model emits this sentence once and then a valid end-of-sequence token, so generation stops there, exactly like a normal, well-behaved language model. It does not loop by default.

If the caller explicitly sets ignore_eos=True (e.g. in an OpenVINO GenAI GenerationConfig) together with a large enough max_new_tokens budget, decoding does not stop at the end-of-sequence token - the model treats it like any other out-of-sequence token and deterministically predicts Open again, so the sentence repeats forever. This is useful for stress-testing streaming/very-long-generation code paths.

For any input that doesn't already contain a prefix of this exact sentence, the very first generated token is always Open, and generation continues the sentence above token-by-token until it emits the end-of-sequence token (or, with ignore_eos=True, wraps back to Open and repeats). If the input already ends with some prefix of the sentence, generation continues the cycle from that point instead of restarting - the model doesn't "understand" the phrase, it just always maps each token deterministically to the next one.

How it behaves

  • Architecture: GPT2LMHeadModel, 1 transformer layer, 1 attention head, hidden size 32 - intentionally minimal, this is not a "small but usable" model.
  • All attention and MLP weights are zeroed, so every transformer block is a pure residual/identity: the hidden state at each position equals its own token embedding.
  • The token embedding table maps each token of the sentence above (and the end-of-sequence token) to its own orthogonal direction; every other vocabulary token maps to one shared "default" direction.
  • lm_head maps each direction to the next token in the sentence with a logit of ~100 (all other tokens ~0), so decoding is effectively always deterministic, even at nonzero temperature/top-k/top-p. The last token of the sentence deterministically predicts a valid end-of-sequence token, not a wraparound to the first token - normal generation therefore stops correctly after one pass.
  • The "default" direction (used by any out-of-sequence token, including EOS if it's fed back in) deterministically predicts the first token of the sentence. This is what makes the sentence repeat forever if a caller sets ignore_eos=True - the pipeline keeps feeding the still-emitted EOS token back in as input instead of stopping.
  • Position embeddings are zeroed too, so output depends only on the current token - not on prompt length, prompt content, or position.

Supported OVMS pipeline types

LM, LM_CB (text_generation task, with or without continuous batching).

Source / reproducibility

Built with the scripts in src/test/dummy_genai in the OpenVINO Model Server repository (create_model.py + export_to_ov.py, run via plain ./build.sh - the sentence above is the tool's built-in default sequence). See that directory for the exact weight-construction logic and how to regenerate/verify this model.

License

Apache 2.0. No pretrained weights are used anywhere in this model - all weights are hand-crafted from scratch, so no upstream model license applies.

Downloads last month
362
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support