Instructions to use tzervas/phi-4-bitnet-1.58b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use tzervas/phi-4-bitnet-1.58b with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="tzervas/phi-4-bitnet-1.58b", filename="phi4-tq2.gguf", )
llm.create_chat_completion( messages = [ { "role": "user", "content": "What is the capital of France?" } ] ) - Notebooks
- Google Colab
- Kaggle
- Local Apps
- llama.cpp
How to use tzervas/phi-4-bitnet-1.58b with llama.cpp:
Install from brew
brew install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama-server -hf tzervas/phi-4-bitnet-1.58b # Run inference directly in the terminal: llama-cli -hf tzervas/phi-4-bitnet-1.58b
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama-server -hf tzervas/phi-4-bitnet-1.58b # Run inference directly in the terminal: llama-cli -hf tzervas/phi-4-bitnet-1.58b
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf tzervas/phi-4-bitnet-1.58b # Run inference directly in the terminal: ./llama-cli -hf tzervas/phi-4-bitnet-1.58b
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf tzervas/phi-4-bitnet-1.58b # Run inference directly in the terminal: ./build/bin/llama-cli -hf tzervas/phi-4-bitnet-1.58b
Use Docker
docker model run hf.co/tzervas/phi-4-bitnet-1.58b
- LM Studio
- Jan
- vLLM
How to use tzervas/phi-4-bitnet-1.58b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "tzervas/phi-4-bitnet-1.58b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tzervas/phi-4-bitnet-1.58b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/tzervas/phi-4-bitnet-1.58b
- Ollama
How to use tzervas/phi-4-bitnet-1.58b with Ollama:
ollama run hf.co/tzervas/phi-4-bitnet-1.58b
- Unsloth Studio new
How to use tzervas/phi-4-bitnet-1.58b with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for tzervas/phi-4-bitnet-1.58b to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for tzervas/phi-4-bitnet-1.58b to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for tzervas/phi-4-bitnet-1.58b to start chatting
- Docker Model Runner
How to use tzervas/phi-4-bitnet-1.58b with Docker Model Runner:
docker model run hf.co/tzervas/phi-4-bitnet-1.58b
- Lemonade
How to use tzervas/phi-4-bitnet-1.58b with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull tzervas/phi-4-bitnet-1.58b
Run and chat with the model
lemonade run user.phi-4-bitnet-1.58b-{{QUANT_TAG}}List all available models
lemonade list
Install from WinGet (Windows)
winget install llama.cpp
# Start a local OpenAI-compatible server with a web UI:
llama-server -hf tzervas/phi-4-bitnet-1.58b# Run inference directly in the terminal:
llama-cli -hf tzervas/phi-4-bitnet-1.58bUse pre-built binary
# Download pre-built binary from:
# https://github.com/ggerganov/llama.cpp/releases# Start a local OpenAI-compatible server with a web UI:
./llama-server -hf tzervas/phi-4-bitnet-1.58b# Run inference directly in the terminal:
./llama-cli -hf tzervas/phi-4-bitnet-1.58bBuild from source code
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build -j --target llama-server llama-cli# Start a local OpenAI-compatible server with a web UI:
./build/bin/llama-server -hf tzervas/phi-4-bitnet-1.58b# Run inference directly in the terminal:
./build/bin/llama-cli -hf tzervas/phi-4-bitnet-1.58bUse Docker
docker model run hf.co/tzervas/phi-4-bitnet-1.58bPhi-4-BitNet-1.58b
Architecture: 14.7 Billion Parameters | BitNet 1.58-bit Ternary Quantization
IMPORTANT: Parameter Count Display
HuggingFace displays a reduced parameter count because it counts packed bytes, not actual parameters. This model has the full 14.7B parameter Phi-4 architecture. The weights are stored as ternary values ({-1, 0, +1}) packed 4 per byte, which reduces storage to 4.6 GB but preserves all 14.7 billion parameters.
Overview
This is an experimental BitNet 1.58-bit quantization of Microsoft's Phi-4 model using absmean scaling with group-wise quantization. The model stores weights as ternary values ({-1, 0, +1}) packed 4 values per byte.
This is research/experimental work. Quality and performance have not been formally benchmarked.
Specifications
| Property | Value |
|---|---|
| Base Model | microsoft/phi-4 |
| Architecture | Phi-3 (Phi3ForCausalLM) |
| Parameters | 14B |
| Quantization | BitNet 1.58-bit ternary |
| Bits per Weight | ~1.58 |
| Group Size | 64 |
| Original Size | 29.32 GB (BF16) |
| Quantized Size | 4.58 GB (SafeTensors) |
| GGUF Size | 5.57 GB (TQ2_0) |
| Compression | ~6.4x |
Formats
| Format | File | Description |
|---|---|---|
| SafeTensors | model-*.safetensors |
Sharded quantized weights + scales |
| GGUF | phi4-tq2.gguf |
llama.cpp compatible |
Quantization Method
Algorithm
- Reshape weights into groups of 64
- Compute per-group scale:
scale = mean(|weights|) - Normalize and round to nearest ternary:
q = round(w / scale)clamped to {-1, 0, +1} - Map to unsigned: {-1, 0, +1} → {0, 1, 2}
- Pack 4 values per byte:
v0 + v1*3 + v2*9 + v3*27
Tooling
Hardware Used
- GPU: NVIDIA RTX 5080 (16GB VRAM)
- Quantization time: ~100 seconds
- Memory: Streaming mode with CPU fallback for large tensors
Usage
With Ollama/llama.cpp
# llama.cpp
./llama-cli -m phi4-tq2.gguf -p "Your prompt here"
Unpacking Weights (Python)
def unpack_ternary(packed_byte):
"""Unpack 4 ternary values from byte."""
values = []
val = packed_byte
for _ in range(4):
values.append((val % 3) - 1) # {0,1,2} → {-1,0,+1}
val //= 3
return values
Limitations
- Quality not benchmarked - May have significant degradation vs original
- Requires custom runtime - Standard transformers doesn't support ternary weights
- Experimental - Not intended for production use without evaluation
- GGUF keeps embeddings/lm_head at F16, hence larger than SafeTensors
License
MIT License (inherited from microsoft/phi-4)
Citation
@misc{phi4-bitnet-2025,
title={Phi-4-BitNet-1.58b: Experimental BitNet Quantization of Phi-4},
author={Tzervas},
year={2025},
url={https://huggingface.co/tzervas/phi-4-bitnet-1.58b}
}
- Downloads last month
- 521
Model tree for tzervas/phi-4-bitnet-1.58b
Base model
microsoft/phi-4
Install from brew
# Start a local OpenAI-compatible server with a web UI: llama-server -hf tzervas/phi-4-bitnet-1.58b# Run inference directly in the terminal: llama-cli -hf tzervas/phi-4-bitnet-1.58b