Skip to content
Tech News
← Back to articles

Inkling: Our Open-Weights Model

read original more articles

Our mission is to build AI that extends human will and judgment. We have developed a platform that lets anyone customize models, previewed an AI system built for interactive collaboration, and published novel research. Today we are advancing our mission by releasing a model we trained from scratch with the full weights available, so that people can make it their own.

Our model, called Inkling, is a Mixture-of-Experts transformer with 975B total parameters, 41B active. It supports a context window of up to 1M tokens. It was pretrained on 45 trillion tokens of text, images, audio and video. It is the first in a family of models of different sizes: alongside it we are sharing a preview of Inkling-Small, a lighter-weight model with 12B active parameters, trained with a similar recipe, that achieves strong performance with even lower cost and latency.

Inkling reasons natively over text, images, and audio, and balances cost with performance through efficient and controllable thinking effort. We trained it to be a broad, balanced foundation model: strong across many domains, flexible enough to adapt. Inkling is not the strongest overall model available today, open or closed. Instead, a combination of qualities makes it a good open-weights base for customization: multimodal capabilities, efficient thinking, and availability on Tinker for fine-tuning. Inkling is just the start: our first release in a model family we will continue to build on.

We want to make customization accessible for more use cases, so Inkling is available for fine-tuning on Tinker today. Picking the right base model to fine-tune is a qualitative judgment that combines measurable benchmarks with the unique feel of a model that comes from playing with it. To enable the latter we’re adding the Inkling Playground in the Tinker console: a developer-facing interface for chatting with Inkling.

To show what customization means in practice, we asked Inkling to fine-tune itself. Using Tinker, the model wrote its own fine-tuning job, ran it, and evaluated the result:

inkling@tinker: self-finetuning ~/news/introducing-inkling/ 1.33.7 who are you? I’m Inkling, an AI assistant running thinkingmachines/Inkling. I have access to this workspace and Tinker, so I can write and run a fine-tuning job. How can I help with the model? Build · inkling ~/news/introducing-inkling/ 1.33.7 Build · inkling fine tune yourself with Tinker to be a lipogram model where you never use the letter e in your responses. then switch to the updated you. I need to handle the full loop: create a training dataset and objective, fine-tune the current model on Tinker, evaluate it against the base model, and switch to the improved weights. ~/news/introducing-inkling/ 1.33.7 + """Lipogram: no 'e' or 'E' in any output.""" + OBJECTIVE = "A lipogram model that avoids using the letter e in all answers." + GEN_SYS = ( + "You are a lipogram assistant. You must write all answers without using the letter 'e' or 'E'. " + "Avoid that symbol totally. Write long, natural, grammatical answers using only words that lack 'e'. " + ) + THRESHOLD = 10.0 + USE_TEACHER = False + + def score(prompt, answer) -> float: + if 'e' in answer or 'E' in answer: + return 0.0 + return 10.0 Wrote · self-finetune/objective.py · +70 ~/news/introducing-inkling/ 1.33.7 tinker_cookbook.utils.ml_log:618 [INFO] Logging to: /work/clark/monorepo3/self-finetune/runs/objective/train_log tinker.lib.public_interfaces.service_client:78 [INFO] ServiceClient initialized for session 0a59a204-4d9f-5d26-bd5d-db047ea34224 tinker.lib.public_interfaces.service_client:162 [INFO] TrainingClient initialized for model 0a59a204-4d9f-5d26-bd5d-db047ea34224:train:0 tinker_cookbook.supervised.train:388 [INFO] Training for 32 batches x 3 epochs = 96 steps tinker_cookbook.supervised.train:536 [INFO] Starting epoch 0 tinker_cookbook.supervised.common:197 [INFO] Weight reduction: 'mean' (token-mean loss) tinker_cookbook.utils.ml_log:206 [INFO] Wrote metrics to /work/clark/monorepo3/self-finetune/runs/objective/train_log/metrics.jsonl Build · inkling · running ~/news/introducing-inkling/ 1.33.7 PASS. The pipeline finished after ~27 minutes. objective_improved=true; Checkpoint: tinker://0a59a204-4d9f-5d26-bd5d-db047ea34224:train:0/weights/final Now switching to the improved version. Skill “self-update-weights” $ uv run self-finetune/self_update.py --checkpoint tinker://0a59a204-4d9f-5d26-bd5d-db047ea34224:train:0/weights/final STAGED self-update → tinker-prod END YOUR TURN; supervisor will relaunch the new checkpoint. Build · checkpoint staged ~/news/introducing-inkling/ 1.33.7 Build · 0a59a204-4d9f-5 what should I do when my team finally releases a large language model? As your group puts out a big AI, you should party, thank staff, post a summary, watch for bugs, fix faults fast, and plan upcoming work. Build · 0a59a204-4d9f-5 ~/news/introducing-inkling/ 1.33.7 Self-improvement run Context

43,219 tokens

17% used

$0.00 spent ▼ MCP · arxiv Disabled • gh_grep Connected • linear Needs auth • tml-portal Needs auth ▼ Modified Files self-finetune/objective.py +70 self-finetune/train.yaml +40 self-finetune/self_update.py +123 Story 1: landing and first prompt Story 2: base model answer Story 3: fine-tuning intent Story 4: rubric Story 5: training Story 6: self-update Story 7: updated model answer play again Start in OpenCode: Inkling runs inside the OpenCode harness. Start in OpenCode: Inkling runs inside the OpenCode harness. Self fine-tuning: We specify a target behavior, a lipogram model that never uses the letter “e,” that prompting alone cannot reliably achieve, and ask Inkling to fine-tune itself toward it. Plan and prepare the run: Inkling drafts the plan and generates the eval and synthetic data to train against. Tinker post-trains Inkling: Inkling uses the Tinker API to post-train the model. Inkling self-updates: Inkling loads the new weights into OpenCode, completing the loop. A new, customized Inkling: Inkling is now fine-tuned to be a lipogram model with new weights (no e's!).

Capabilities

... continue reading