Instructions to use inference-optimization/Kimi-K3-0.40B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use inference-optimization/Kimi-K3-0.40B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="inference-optimization/Kimi-K3-0.40B", trust_remote_code=True)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("inference-optimization/Kimi-K3-0.40B", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
| license: mit | |
| base_model: | |
| - moonshotai/Kimi-K3 | |
| library_name: transformers | |
| # Kimi-K3-0.40B | |
| This is a tiny version of [moonshotai/Kimi-K3](https://huggingface.co/moonshotai/Kimi-K3) created for testing and development. | |
| ## Model Details | |
| - **Base Model**: moonshotai/Kimi-K3 | |
| - **Architecture**: kimi_linear (KimiK3ForConditionalGeneration) | |
| - **Total Parameters**: 0.40B | |
| - **Activated Parameters**: ~0.06B (2 of 8 experts active per token) | |
| ## Configuration Changes | |
| The following parameters were reduced from the original model: | |
| | Parameter | Original | Tiny | | |
| |-----------|----------|------| | |
| | `num_hidden_layers` | 93 | 8 | | |
| | `hidden_size` | 7168 | 1024 | | |
| | `intermediate_size` | 33792 | 2048 | | |
| | `moe_intermediate_size` | 3072 | 256 | | |
| | `num_attention_heads` | 96 | 8 | | |
| | `num_key_value_heads` | 96 | 8 | | |
| | `q_lora_rank` | 1536 | 256 | | |
| | `kv_lora_rank` | 512 | 128 | | |
| | `qk_nope_head_dim` | 128 | 64 | | |
| | `qk_rope_head_dim` | 64 | 32 | | |
| | `v_head_dim` | 128 | 64 | | |
| | `num_experts` | 896 | 8 | | |
| | `num_shared_experts` | 2 | 1 | | |
| | `num_experts_per_token` | 16 | 2 | | |
| | `routed_expert_hidden_size` | 3584 | 512 | | |
| | `attn_res_block_size` | 12 | 4 | | |
| | `linear_attn head_dim` | 74 | 32 | | |
| | `linear_attn num_heads` | 96 | 8 | | |
| | `vt_num_hidden_layers` | 27 | 2 | | |
| | `vt_hidden_size` | 1024 | 256 | | |
| ## Architecture Preserved | |
| - **Mixed attention**: KDA (linear/delta attention) on layers 0β2, 4β6 and MLA (full multi-latent attention) on layers 3, 7 β same 3:1 KDA:MLA ratio as the original | |
| - **Attention + MLP residuals**: `attn_res_block_size=4` enabled on all layers | |
| - **MoE**: layers 1β7 use sparse MoE with latent expert projection; layer 0 is dense MLP | |
| - **Vision tower**: included but reduced | |
| ## Checkpoint Structure | |
| Single-shard checkpoint (`model.safetensors`). Key prefix: `language_model.model.layers.{i}.*`, matching the original sharded checkpoint structure. | |
| ## Usage | |
| ```python | |
| import sys | |
| sys.path.insert(0, "/path/to/llm-compressor/src") | |
| from transformers import AutoTokenizer | |
| from llmcompressor.modeling.kimi_k3 import KimiK3ForConditionalGeneration | |
| model = KimiK3ForConditionalGeneration.from_pretrained( | |
| "inference-optimization/Kimi-K3-0.40B", device_map="auto" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained( | |
| "inference-optimization/Kimi-K3-0.40B", trust_remote_code=True | |
| ) | |
| inputs = tokenizer("According to all known laws", return_tensors="pt").to(model.device) | |
| output = model.language_model.generate(**inputs, max_new_tokens=20) | |
| print(tokenizer.decode(output[0], skip_special_tokens=True)) | |
| ``` | |
| ## Validation Output | |
| ``` | |
| Total parameters: 0.396B | |
| Number of layers: 8 | |
| Layer 0 attn type: KimiDeltaAttention (KDA/linear) | |
| Layer 3 attn type: KimiMLAAttention (MLA/full) | |
| Layer 7 attn type: KimiMLAAttention (MLA/full) | |
| Layer 0 has MLP: True | |
| Layer 1 has MoE: True | |
| Attention residuals enabled: True | |
| Attn res block size: 4 | |
| Forward pass loss: 0.0013 | |
| Generated: The FitnessGram Pacer Test is a multistage aerobic capacity test that progressively gets more difficult as it continues. The 20 meter pacer test will begin in 30 seconds | |
| ``` | |
| ## Creation Process | |
| This model was created using the llm-compressor `create-tiny-model` claude skill. | |
| 1. Inspected the original `moonshotai/Kimi-K3` config to identify key architecture parameters | |
| 2. Reduced layer count, hidden dimensions, and expert counts to target ~0.4B total parameters | |
| 3. Preserved the 3:1 KDA:MLA attention pattern and attention/MLP residual connections | |
| 4. Initialized all weights from scratch (normal distribution, std=0.02; norms β 1.0; biases β 0.0) | |
| 5. Fine-tuned on a toy copypasta dataset until perplexity < 3.0 (achieved in ~57 epochs) | |
| ## Notes | |
| - The model uses custom modeling code from `llmcompressor.modeling.kimi_k3` β it cannot be loaded with `AutoModelForCausalLM` without that module on the path | |
| - `KimiK3ForConditionalGeneration` does not inherit from `GenerationMixin`; use `model.language_model.generate(...)` for text generation | |
| - The vision tower is present but untrained for vision tasks | |