Instructions to use GrootTeam/Groot-238B-A18B-261023 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use GrootTeam/Groot-238B-A18B-261023 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="GrootTeam/Groot-238B-A18B-261023") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("GrootTeam/Groot-238B-A18B-261023") model = AutoModelForMultimodalLM.from_pretrained("GrootTeam/Groot-238B-A18B-261023", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use GrootTeam/Groot-238B-A18B-261023 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "GrootTeam/Groot-238B-A18B-261023" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "GrootTeam/Groot-238B-A18B-261023", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/GrootTeam/Groot-238B-A18B-261023
- SGLang
How to use GrootTeam/Groot-238B-A18B-261023 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 "GrootTeam/Groot-238B-A18B-261023" \ --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": "GrootTeam/Groot-238B-A18B-261023", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'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 "GrootTeam/Groot-238B-A18B-261023" \ --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": "GrootTeam/Groot-238B-A18B-261023", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use GrootTeam/Groot-238B-A18B-261023 with Docker Model Runner:
docker model run hf.co/GrootTeam/Groot-238B-A18B-261023
Groot-238B-A18B-261023
Groot is a family of open-weight reasoning models for complex real-world tasks. The models are compact and easy to deploy, strong on reasoning and tool-using workloads, and efficient with token budgets.
Groot-238B-A18B-261023 has 238B total parameters and activates about 18B per token. It starts from GLM-5.3-Flash and is tuned for reasoning and tool-using workloads. It is smaller than GLM-5.3-Flash (320B) and DeepSeek-V4-Flash-0731 (284B), and it beats both on six agentic benchmarks.
Where it runs. We release FP8 and GGUF (UD-Q4_K_XL) weights. The device fits below are estimated from memory capacity. FP8 runs the full 1M context on 2x H200, 4x H100 80GB, or 4x 96GB cards (H20, RTX PRO 6000 Blackwell). Its weights are small and its KV cache is light, so after loading there is still room for several 1M-token requests at once. Compared with GLM-5.3-Flash: on 2x H200 Groot runs 1M while GLM-5.3-Flash does not load, and on 4x H100 Groot leaves about 87GB free while GLM-5.3-Flash leaves about 14GB, not enough for a 1M context.
Model size vs. capability
The chart compares total model parameters with the unweighted average across all 16 benchmarks. Smaller models appear farther left and higher average scores appear higher. Groot-238B-A18B uses 16.2% fewer total parameters than DeepSeek-V4-Flash-0731 and 25.6% fewer than GLM-5.3-Flash. It averages 57.89, which is 2.64 points above DeepSeek-V4-Flash-0731 and 0.89 points below GLM-5.3-Flash. At a smaller total size, it stays close to GLM-5.3-Flash's average and leads both on six agentic benchmarks listed below.
Benchmarks
Accuracy. Groot-238B-A18B-261023 beats both GLM-5.3-Flash and DeepSeek-V4-Flash-0731 on ALE (47.42 vs 44.45 / 16.53), Toolathlon Verified (71.60 vs 70.06 / 70.37), AutomationBench (47.67 vs 46.44 / 40.33), DeepSWE 1.1 (65.13 vs 63.40 / 40.71), NL2Repo-Bench (50.18 vs 48.57 / 39.20) and BFCL v4 (74.81 vs 74.17 / 73.11).
Cost. On DeepSWE 1.1 it sits in the top-left of the chart below: 65.1% pass@1 at about $0.14 per task, versus 63% at $0.24 for GLM-5.3-Flash and 53% at $0.46 for DeepSeek-V4-Flash. It is both more accurate and cheaper, because it is a smaller model.
* Each benchmark was evaluated in thinking mode at its default reasoning effort (max). Unless otherwise stated, sampling uses temperature=1.0, top_p=0.95, and a 1M-token context window.
* Terminal-Bench 2.1: Evaluated with the Claude Code agent; max_output_tokens=128K, max_turns=500, 12h timeout; temperature=1.0, top_p=0.95.
* ALE Agent: Evaluated with ale_claude on top of Claude Code 2.1.170; max_output_tokens=128K, 4h timeout (extended up to 8h for specific long-running tasks); temperature=1.0, top_p=0.95.
* Toolathlon Verified: Reported as pass@1, averaged over 3 independent runs; temperature=1.0, top_p=0.95.
* AutomationBench: Evaluated on AutomationBench v1.0.6; max_turns=50; temperature=1.0, top_p=0.95.
* JobBench: max_tokens=200K, 600s timeout; temperature=1.0, top_p=0.95.
* DeepSWE 1.1: Evaluated with the mini-SWE-agent scaffold; 11h timeout; temperature=1.0, top_p=0.95.
* SWE-bench Pro: Evaluated with the SWE-agent scaffold; temperature=1.0, top_p=0.95.
* NL2Repo-Bench: Evaluated with the Claude Code agent; max_turns=1000, 80K context window; temperature=1.0, top_p=0.95.
* HLE (with tools): Evaluated with gpt-5.5 as the judge model; max_iterations=1000, 6h timeout, 256K context window; temperature=1.0, top_p=0.95.
Model Overview
- Type: Natively multimodal Mixture-of-Experts causal language model
- Total Parameters: ~238B, plus a 5.6B MTP layer
- Activated Parameters: ~18B per token
- Layers: 45 (first 3 dense, 42 Mixture-of-Experts)
- Hidden Size: 4096
- Experts: 216 routed + 1 shared, 8 routed experts activated per token
- Context Length: 1M tokens
- Precision: FP8 (E4M3, dynamic, 128x128 block scales) for the experts and most linear layers; embeddings,
lm_head, routers, some attention projections and the vision tower stay in BF16; a GGUF release is also available - Multi-Token Prediction: 1 layer
Available editions:
| Edition | Precision | Size on disk |
|---|---|---|
Groot-238B-A18B-261023 |
FP8 (E4M3) | 250.4 GB |
Groot-238B-A18B-261023-GGUF |
UD-Q4_K_XL | 152.2 GB |
Quickstart
Groot-238B-A18B-261023 is a mixture-of-experts model with ~238B total parameters and ~18B activated parameters per token.
The model operates in thinking mode by default: thinking is emitted before the final answer. It supports a 1M-token context window and natively supports tool calling.
Notes
- The model supports controlling the thinking budget through the
reasoning_effortparameter, which accepts three levels:low,high, andmax. It defaults tomaxif not passed (or if set to any other value). To useloworhigh, pass them explicitly. For benchmark and leaderboard reproduction, keep the defaultmax. - In the chat template,
clear_thinkingdefaults tofalseif not passed. For chat scenarios, explicitly passclear_thinking=true.
Serving Groot-238B-A18B-261023
vLLM
Requires vLLM 0.29.0+. The following command serves the model with tensor parallel on 4 GPUs, an FP8 KV cache, and MTP speculative decoding:
vllm serve Groot/Groot-238B-A18B-261023 \
--served-model-name Groot-238B-A18B-261023 \
--tensor-parallel-size 4 \
--kv-cache-dtype fp8 \
--speculative-config '{"method":"mtp","num_speculative_tokens":5}' \
--tool-call-parser glm47 \
--reasoning-parser glm47 \
--enable-auto-tool-choice
SGLang
sglang serve \
--model-path Groot/Groot-238B-A18B-261023 \
--served-model-name Groot-238B-A18B-261023 \
--tp-size 4 \
--reasoning-parser auto \
--tool-call-parser auto
--reasoning-parser auto resolves to the model's thinking parser, so the OpenAI-compatible API places thinking in message.reasoning_content and the final answer in message.content; --tool-call-parser auto returns structured calls in message.tool_calls.
Using Groot-238B-A18B-261023 via the Chat Completions API
Before starting, make sure the SDK is installed and the API key and the API base URL are configured:
pip install -U openai
# Set the following accordingly
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"
Text Input
from openai import OpenAI
# Configured by environment variables
client = OpenAI()
messages = [
{"role": "user", "content": "Write a Python function to merge two sorted linked lists."},
]
chat_response = client.chat.completions.create(
model="Groot-238B-A18B-261023",
messages=messages,
temperature=1.0,
top_p=0.95,
extra_body={
"chat_template_kwargs": {
"clear_thinking": True, # pass true for chat scenarios
"reasoning_effort": "max", # "low" | "high" | "max"; defaults to "max"
},
},
)
message = chat_response.choices[0].message
# reasoning_content holds the thinking trace; content holds the final answer.
print("reasoning:", getattr(message, "reasoning_content", None))
print("answer:", message.content)
On follow-up turns, read both
reasoning_contentandcontent. A thinking model can use either field around tool execution.
Tool Calling
The model emits well-formed function calls that the server parses into the standard tool_calls field:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="Groot-238B-A18B-261023",
messages=[{"role": "user", "content": "What is the weather in Paris right now?"}],
tools=tools,
tool_choice="auto",
temperature=1.0,
top_p=0.95,
)
message = response.choices[0].message
print("reasoning:", getattr(message, "reasoning_content", None))
print("answer:", message.content)
tool_call = message.tool_calls[0]
print(tool_call.function.name, tool_call.function.arguments)
# -> get_weather {"city": "Paris"}
You can point any OpenAI-compatible SDK (Python, Node.js, etc.) or curl at the same /v1/chat/completions endpoint.
Hugging Face Transformers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Groot/Groot-238B-A18B-261023"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
dtype="auto",
device_map="auto",
)
messages = [{"role": "user", "content": "Give me a short introduction to large language models."}]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=8192,
temperature=1.0,
top_p=0.95,
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):]
print(tokenizer.decode(output_ids, skip_special_tokens=True))
Citation
If you use this model in your work, please cite it as:
@misc{groot2026,
title = {Scaling Down LLMs for Broader Deployment},
author = {The Groot Team},
year = {2026},
}
- Downloads last month
- 67