Instructions to use OpenDCAI/Omni-Edu-27B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use OpenDCAI/Omni-Edu-27B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="OpenDCAI/Omni-Edu-27B") 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)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("OpenDCAI/Omni-Edu-27B") model = AutoModelForMultimodalLM.from_pretrained("OpenDCAI/Omni-Edu-27B", 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=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use OpenDCAI/Omni-Edu-27B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "OpenDCAI/Omni-Edu-27B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OpenDCAI/Omni-Edu-27B", "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/OpenDCAI/Omni-Edu-27B
- SGLang
How to use OpenDCAI/Omni-Edu-27B 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 "OpenDCAI/Omni-Edu-27B" \ --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": "OpenDCAI/Omni-Edu-27B", "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 "OpenDCAI/Omni-Edu-27B" \ --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": "OpenDCAI/Omni-Edu-27B", "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 OpenDCAI/Omni-Edu-27B with Docker Model Runner:
docker model run hf.co/OpenDCAI/Omni-Edu-27B
OmniEdu-27B
OmniEdu-27B is part of OmniEdu, an open family of foundation models for K--12 learning and teaching, trained with a capability-oriented instruction-tuning corpus. It is a full-parameter fine-tune of Qwen/Qwen3.8-27B on the OmniEdu corpus.
The corpus combines more than 100 educational resources and general instruction sources and organizes supervision around four complementary capabilities: subject competence (solving K--12 problems and explaining answers), curriculum grounding (grade level, knowledge points, prerequisites, difficulty and curriculum localization), diagnostic reasoning (identifying errors, misconceptions and missing prerequisites from learner work) and pedagogical action and scaffolding (selecting and executing interventions such as questions, hints, prerequisite review or direct explanation). A multi-stage pipeline performs deterministic cleaning, semantic auditing and rewriting, task-specific quality scoring, token-budgeted diversity selection, and pedagogical instruction assignment, yielding 69,999 examples and 15.96M supervised response tokens, including 60,951 education-specific examples.
Training
Training uses Llama-Factory with a learning rate of 5e-6, a maximum sequence length of 32,768, and 3 epochs.
Usage
1. Run with Transformers
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText
model_id = "OmniEdu/Omni-Edu-27B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda")
messages = [
{
"role": "user",
"content": [{"type": "text", "text": "Your question here."}],
},
]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt",
).to(model.device)
out = model.generate(**inputs, max_new_tokens=512, do_sample=False)
print(processor.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
For image inputs, add an image entry to the same message.
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "path/or/url/to/image.jpg"},
{"type": "text", "text": "Your question here."},
],
},
]
2. Serve an OpenAI-compatible API with vLLM
Install a current vLLM release with Qwen3.5 support in a separate environment from the Transformers example, then launch the checkpoint:
pip install -U vllm
vllm serve OmniEdu/Omni-Edu-27B \
--served-model-name omniedu \
--dtype bfloat16 \
--tensor-parallel-size 2 \
--max-model-len 32768 \
--reasoning-parser qwen3 \
--default-chat-template-kwargs '{"enable_thinking": false}'
Set --tensor-parallel-size to the number of GPUs used for the model. Required GPU memory also depends on context length, concurrency, and vision inputs; reduce --max-model-len if needed.
Query the running server from another terminal:
curl http://localhost:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "omniedu",
"messages": [{"role": "user", "content": "Your question here."}],
"temperature": 0.0,
"max_tokens": 512,
"chat_template_kwargs": {"enable_thinking": false}
}'
Intended use and limitations
OmniEdu supports research, educational prototypes, and teacher-assistance tools. Benchmark performance does not establish classroom learning gains. Models can give incorrect answers or unsuitable guidance; educators should review outputs before consequential use. The paper discusses evaluation coverage, multimodal limitations, and deployment considerations in more detail.
Citation
@article{liang2026omniedu,
title={OmniEdu: Open Foundation Models for Learning and Teaching},
author={Liang, Hao and Lin, Qihan and Qiang, Meiyi and Sun, Linzhuang and Feng, Hengyi and Chen, Mingrui and Qiu, Sizhe and Zhang, Wentao},
journal={arXiv preprint arXiv:2609.23088},
year={2026}
}
- Downloads last month
- 28
Model tree for OpenDCAI/Omni-Edu-27B
Base model
Qwen/Qwen3.8-27B