IBM Granite 4.1
Collection
now with high IQ • 22 items • Updated • 4
How to use nightmedia/granite-4.1-30b-mxfp4-mlx with MLX:
# Make sure mlx-lm is installed
# pip install --upgrade mlx-lm
# Generate text with mlx-lm
from mlx_lm import load, generate
model, tokenizer = load("nightmedia/granite-4.1-30b-mxfp4-mlx")
prompt = "Write a story about Einstein"
messages = [{"role": "user", "content": prompt}]
prompt = tokenizer.apply_chat_template(
messages, add_generation_prompt=True
)
text = generate(model, tokenizer, prompt=prompt, verbose=True)How to use nightmedia/granite-4.1-30b-mxfp4-mlx with Pi:
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "nightmedia/granite-4.1-30b-mxfp4-mlx"
# Install Pi:
npm install -g @mariozechner/pi-coding-agent
# Add to ~/.pi/agent/models.json:
{
"providers": {
"mlx-lm": {
"baseUrl": "http://localhost:8080/v1",
"api": "openai-completions",
"apiKey": "none",
"models": [
{
"id": "nightmedia/granite-4.1-30b-mxfp4-mlx"
}
]
}
}
}# Start Pi in your project directory: pi
How to use nightmedia/granite-4.1-30b-mxfp4-mlx with Hermes Agent:
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "nightmedia/granite-4.1-30b-mxfp4-mlx"
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default nightmedia/granite-4.1-30b-mxfp4-mlx
hermes
How to use nightmedia/granite-4.1-30b-mxfp4-mlx with MLX LM:
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "nightmedia/granite-4.1-30b-mxfp4-mlx"
# Install MLX LM
uv tool install mlx-lm
# Start the server
mlx_lm.server --model "nightmedia/granite-4.1-30b-mxfp4-mlx"
# Calling the OpenAI-compatible server with curl
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "nightmedia/granite-4.1-30b-mxfp4-mlx",
"messages": [
{"role": "user", "content": "Hello"}
]
}'# Install MLX LM
uv tool install mlx-lm# Start the server
mlx_lm.server --model "nightmedia/granite-4.1-30b-mxfp4-mlx"
# Calling the OpenAI-compatible server with curl
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "nightmedia/granite-4.1-30b-mxfp4-mlx",
"messages": [
{"role": "user", "content": "Hello"}
]
}'Brainwaves
arc arc/e boolq hswag obkqa piqa wino
mxfp8 0.456,0.572,0.897,0.621,0.444,0.757,0.616
mxfp4 0.453,0.565,0.892,0.624,0.442,0.759,0.585
qx86-hi 0.451,0.568,0.897,0.636,0.440,0.763,0.598
qx64-hi 0.462,0.582,0.896,0.642,0.448,0.769,0.600
Quant Perplexity Peak Memory Tokens/sec
mxfp8 10.150 ± 0.120 33.36 GB 188
mxfp4 10.353 ± 0.119 18.93 GB 164
qx86-hi 10.040 ± 0.121 32.24 GB 158
This model granite-4.1-30b-mxfp4-mlx was converted to MLX format from ibm-granite/granite-4.1-30b using mlx-lm version 0.31.3.
pip install mlx-lm
from mlx_lm import load, generate
model, tokenizer = load("granite-4.1-30b-mxfp4-mlx")
prompt = "hello"
if tokenizer.chat_template is not None:
messages = [{"role": "user", "content": prompt}]
prompt = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_dict=False,
)
response = generate(model, tokenizer, prompt=prompt, verbose=True)
4-bit
Base model
ibm-granite/granite-4.1-30b
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm# Interactive chat REPL mlx_lm.chat --model "nightmedia/granite-4.1-30b-mxfp4-mlx"