Text Generation
Transformers
Safetensors
English
Chinese
k2_horizon
k2-horizon
0.9b
dense
reasoning
knowledge-distillation
ifm
conversational
custom_code
Instructions to use IFM/K2-Horizon-0.9B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use IFM/K2-Horizon-0.9B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="IFM/K2-Horizon-0.9B", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("IFM/K2-Horizon-0.9B", trust_remote_code=True, device_map="auto") - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use IFM/K2-Horizon-0.9B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "IFM/K2-Horizon-0.9B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IFM/K2-Horizon-0.9B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/IFM/K2-Horizon-0.9B
- SGLang
How to use IFM/K2-Horizon-0.9B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "IFM/K2-Horizon-0.9B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IFM/K2-Horizon-0.9B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "IFM/K2-Horizon-0.9B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IFM/K2-Horizon-0.9B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use IFM/K2-Horizon-0.9B with Docker Model Runner:
docker model run hf.co/IFM/K2-Horizon-0.9B
[superseded by #8 - opened as a discussion by mistake] Fix output_hidden_states / attentions returning None
#7
by Avicennasis - opened
Follow-up to #6 (full write-up, evidence and repro there).
- Commit 1:
K2HorizonModel.forwarddeclares thehidden_states/attentionsentries in_can_record_outputs, but never had the@capture_outputsdecorator that reads theoutput_*flags and installs the capture hooks — sooutput_hidden_states=TruereturnedNone. Adds the import + decorator, mirroring stockQwen3MoeModel.forward. - Commit 2: the
attentionsentry namesK2HorizonAttention, but these checkpoints instantiateK2HorizonMoVAAttention, sooutput_attentions=Truereturned an empty tuple. Lists both classes (weights are produced under eager attention, as with stock models).
Verified on K2-Horizon-0.9B, transformers 5.17.0: as shipped → hidden_states=None; with this branch → 29 states for 28 layers ([0] == embeddings, [-1] == last_hidden_state), flag-off → None, greedy generation unchanged; attentions → 28 tensors with eager attention. The modeling file is byte-identical across all 12 full-model K2-Horizon repos, so the fix applies family-wide (tested here on the 0.9B).
Avicennasis changed discussion title from Fix `output_hidden_states` / `attentions` returning None (missing `@capture_outputs`) to [superseded by #8 - opened as a discussion by mistake] Fix output_hidden_states / attentions returning None