Cobalt-1

Cobalt-1 is a small English chat language model with 100.7 million parameters (202 MB in f16), made by Convergent. It is the largest model of the Convergent family so far, after Pico 1 (254K) and Tavik-1 (20.4M). It was trained from scratch on a single consumer GPU (RTX 3060 Ti, 8 GB).

It writes fluent English, holds simple conversations, answers some basic factual questions correctly and writes short lists. It knows that it is Cobalt, made by Convergent. It is still a small model: many facts are wrong, explanations often sound right but are not, and it cannot do math or write useful code. Use it for experiments and fun, not for anything that matters.

Model

Parameters 100,685,568
Architecture Llama-style decoder (RMSNorm, SwiGLU, RoPE, tied embeddings, grouped-query attention)
Layers / hidden / MLP 14 / 768 / 2048
Attention heads 12 query heads, 4 key/value heads (head dim 64)
Context 2,048 tokens
Vocabulary 16,384 (byte-level BPE)
Language English

Files

  • model.safetensors, config.json, tokenizer files: Hugging Face transformers format (LlamaForCausalLM).
  • cobalt-1.gguf: GGUF (f16) for Ollama and llama.cpp.
  • Modelfile: Ollama model file with the chat format, stop tokens and recommended settings.

Usage

Ollama

Download cobalt-1.gguf and Modelfile into one folder, then:

ollama create cobalt-1 -f Modelfile
ollama run cobalt-1

Use the Modelfile: without it Ollama guesses a wrong chat format and the model produces nonsense. It runs on a Raspberry Pi 5 and on any normal computer; on an RTX 3060 Ti it generates about 600-700 tokens per second.

transformers

from transformers import AutoTokenizer, AutoModelForCausalLM

tok = AutoTokenizer.from_pretrained("Convergent-ch/Cobalt-1")
model = AutoModelForCausalLM.from_pretrained("Convergent-ch/Cobalt-1")

ids = tok.apply_chat_template([{"role": "user", "content": "What is the capital of Japan?"}],
                              add_generation_prompt=True, return_tensors="pt")
out = model.generate(ids, max_new_tokens=60, do_sample=False)
print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True))
# The capital of Japan is Tokyo.

Chat format

<|bos|><|user|>
Hello!<|end|>
<|assistant|>

Generation stops at <|end|>. Low temperatures (0 to 0.3) and a light repetition penalty (about 1.15) work best.

Compared with Tavik-1

Same questions, temperature 0, both in Ollama with their own Modelfile:

Question Tavik-1 (20M) Cobalt-1 (100M)
What is the capital of Japan? "...is Joshua, a city located in the northern part of the country." "The capital of Japan is Tokyo."
What is the largest planet in our solar system? "...is Europa, a small, icy region..." Rambles with made-up numbers, but names Jupiter.
Give me three tips to study better. Partly sensible list. Sensible list (practice regularly, take breaks, ...).
Who made you? "Convergent created me." "Convergent created me. I'm Cobalt."
Why do we have seasons on Earth? Wrong. Wrong.
Write a short haiku about the ocean. Prose, not a haiku. Prose, not a haiku.
What is 17 times 23? Nonsense. Nonsense.

Cobalt-1 is clearly more fluent and gets more simple facts right, but explanations, poetry forms and arithmetic are still beyond it.

Training

All stages ran on one RTX 3060 Ti (8 GB) with MakeAI, bf16, AdamW, cosine schedule, 262,144 tokens per optimizer step.

  1. Pretraining from scratch on English educational web pages from FineWeb-Edu (sample-10BT, 4 shards, pages of 150-3,000 words with an educational score of 3 or more): 1.68B training tokens available, 6,100 steps = about 1.6B tokens seen, learning rate 8e-4. About 18,700 tokens/s, roughly 24 hours. Validation loss 3.02.
  2. Chat training on 703,256 conversations (about 626M tokens), loss only on the assistant's replies: 1,434 steps = about 376M tokens (0.6 epoch), learning rate 2.5e-4. About 5.6 hours. Validation loss 1.651 (perplexity 5.21, next-token accuracy 61.0 %) on held-out chats.

Chat data:

  • SmolTalk (Apache 2.0), all nine training shards, only the general subsets (smol-magpie-ultra, smol-summarize, openhermes-100k, smol-rewrite, smol-constraints, systemchats-30k, explore-instruct-rewriting, everyday-conversations); math, code and function-calling subsets, code blocks and LaTeX were removed. Large parts of SmolTalk were generated with Llama 3.1 by the dataset authors.
  • TinyDialogues (MIT): only one-on-one conversations, generated with GPT-4 by the dataset authors.
  • Everyday Conversations (Apache 2.0), generated with Llama 3.1 70B Instruct by the dataset authors.
  • Identity: 811 short chats about Cobalt-1 written locally by Qwen3 8B (an abliterated community variant, Apache 2.0), repeated 8 times, plus 10,000 template chats with its name, maker, size and limits.

The validation losses of different models are not comparable when their tokenizers differ (Tavik-1 uses 8,192 tokens, Cobalt-1 16,384).

Limitations

  • Facts are unreliable; numbers are often invented.
  • Lists sometimes run longer than asked.
  • No math, no code, no multi-step reasoning.
  • English only, context of 2,048 tokens.
  • No safety tuning. Do not use it in products or for advice of any kind.

License

Apache 2.0.

Downloads last month
-
Safetensors
Model size
0.1B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train Convergent-ch/Cobalt-1