inkling

Sample, evaluate, and post-train Inkling models on Tinker with effort-conditioned rendering.

4.1k|525|Updated Jul 14, 2025
One-click install
npx skills add https://github.com/thinking-machines-lab/tinker-cookbook --skill inkling
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: inkling
Source: https://github.com/thinking-machines-lab/tinker-cookbook/tree/main/skills/inkling
Command: npx skills add https://github.com/thinking-machines-lab/tinker-cookbook --skill inkling

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires tinker-cookbook, tml-renderers, torch.

What problem does it solve?

Working with Inkling and Inkling-Small on Tinker differs from other models: every render needs an explicit thinking-effort value, tokenization goes through tml-renderers instead of a Hugging Face chat template, and no default learning rate is published. This Skill prevents out-of-distribution behavior, train/test mismatch, and irreproducible eval scores by encoding the correct setup, sampling, training, and evaluation practices.

Core Features & Use Cases

  • Effort-conditioned rendering and sampling: Build generation prompts and supervised examples with explicit thinking-effort values via TmlV0Renderer, and sweep effort levels with the sample_reasoning script.
  • Post-training guidance: Calibrate learning rates, monitor entropy and degenerate reward groups, and apply RL defaults tuned for Inkling such as the agentic rollout preset and MinViableGroup strategy.
  • Multimodal input handling: Encode audio (WAV, MP3, FLAC) and image inputs locally through tml-renderers, with runnable sampling scripts and audio fine-tuning recipes.
  • Use Case: You want to run RL fine-tuning on Inkling-Small for a coding task. The Skill walks you through rendering training data at a fixed effort, sweeping learning rate and effort together over the first steps, and handling MALFORMED parse terminations during rollouts.

Quick Start

Ask the assistant to set up an Inkling sampling script on Tinker with an explicit thinking-effort value and a supervised training example rendered at the same effort.

Frequently Asked Questions about inkling

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set thinking effort when sampling Inkling models?

Pass an explicit effort value in [0.0, 1.0) to the renderer, for example renderer.build_generation_prompt(messages, effort=0.9). The renderer inserts the effort system message itself; never write it manually. Presets range from 0.0 (none) to 0.99 (xhigh), with 0.9 as the default.

How do I fine-tune Inkling with SFT or RL on Tinker?

Render supervised data with build_supervised_example at the same effort you will use at test time, and calibrate the learning rate yourself since get_lr raises NotImplementedError for Inkling. For RL, sweep learning rate and effort together early, watch entropy, and track all-fail or all-success reward groups.

What is the difference between Inkling and Inkling-Small?

Inkling is a 975B-total, 41B-active Mixture-of-Experts model, while Inkling-Small has 276B total and 12B active parameters at roughly a quarter of the cost. They share the same renderer, tokenizer, and effort interface, so switching is a one-line model name change.

Does Inkling support audio and image inputs?

Yes, both models accept audio and image input encoded locally through tml-renderers, which accepts raw bytes, local paths, or base64 data URIs but refuses remote URLs. Audio must be WAV, MP3, or FLAC, and non-WAV formats require num_frames and sample_rate.

Why do I get MALFORMED parse errors from Inkling responses?

MALFORMED terminations usually mean the response was truncated mid-structure, so check max_tokens first since high effort can need 16k or more tokens. The cookbook parse_response never raises; it returns ParseTermination.MALFORMED, and you can retry with a corrective message containing the parser error detail.

Why does tokenizer.encode produce bad prompts for Inkling?

The Inkling tokenizer adapter has no chat template, so raw encoding produces out-of-distribution tokens. Always build prompts through TmlV0Renderer or get_renderer with the recommended renderer name, and never hardcode a renderer name.