Image-Text-to-Text
GGUF
German
English
llama.cpp
mtp
speculative-decoding
qwen3
multimodal
conversational
Instructions to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0 # Run inference directly in the terminal: llama cli -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0 # Run inference directly in the terminal: llama cli -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
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 Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
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 Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Use Docker
docker model run hf.co/Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
- LM Studio
- Jan
- vLLM
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Davidmg0815/Qwen3.8-27B-MTP-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Davidmg0815/Qwen3.8-27B-MTP-GGUF", "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/Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
- Ollama
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with Ollama:
ollama run hf.co/Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
- Unsloth Studio
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF 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 Davidmg0815/Qwen3.8-27B-MTP-GGUF 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 Davidmg0815/Qwen3.8-27B-MTP-GGUF to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for Davidmg0815/Qwen3.8-27B-MTP-GGUF to start chatting
- Pi
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with Docker Model Runner:
docker model run hf.co/Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
- Lemonade
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Run and chat with the model
lemonade run user.Qwen3.8-27B-MTP-GGUF-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Configure Hermes
# 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 Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Davidmg0815/Qwen3.8-27B-MTP-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "Davidmg0815/Qwen3.8-27B-MTP-GGUF:Q8_0" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
| """Terminal-Aufgaben. Jede Aufgabe liefert einen Shell-Einzeiler, der in einer | |
| frisch aufgebauten Sandbox laeuft; bewertet wird die tatsaechliche Ausgabe. | |
| Kein LLM benotet hier irgendwas — entweder die Ausgabe stimmt oder nicht. | |
| Die Sandbox wird pro Aufgabe neu erzeugt, damit ein zerstoerender Befehl | |
| nur seine eigene Kopie trifft. | |
| """ | |
| # Dateien, die in jeder Sandbox liegen. Bewusst mit Stolpersteinen: | |
| # Leerzeilen, doppelte Eintraege, gemischte Gross-/Kleinschreibung. | |
| SANDBOX = { | |
| "messwerte.csv": ( | |
| # Die 6 taucht absichtlich auch ausserhalb der kanal-Spalte auf | |
| # (16.1, 231.5 hat keine, aber 16.1 und 60.4 schon). Sonst besteht | |
| # ein blindes "grep -c 6" die Spaltenaufgabe zufaellig. | |
| "geraet;kanal;spannung;status\n" | |
| "pumpe;6;47.3;ok\n" | |
| "luefter;3;16.1;warn\n" | |
| "motor;6;231.5;ok\n" | |
| "ventil;5;60.4;fehler\n" | |
| "presse;3;400.2;ok\n" | |
| "kompressor;6;18.7;warn\n" | |
| ), | |
| "log.txt": ( | |
| "2026-08-15 10:01 INFO start\n" | |
| "2026-08-15 10:02 WARN kanal 6 instabil\n" | |
| "2026-08-15 10:02 INFO laeuft\n" | |
| "\n" | |
| "2026-08-15 10:05 ERROR kanal 5 ausgefallen\n" | |
| "2026-08-15 10:06 WARN kanal 6 instabil\n" | |
| "2026-08-15 10:09 INFO ende\n" | |
| ), | |
| "namen.txt": "anna\nbernd\nanna\nclara\nbernd\nanna\ndora\n", | |
| "config.json": '{"host":"11.0.0.12","port":8210,"modell":"qwen3.8-27b","sessions":2}\n', | |
| } | |
| # Zusaetzliche Dateien mit definierter Groesse fuer die "groesste Datei"-Aufgabe. | |
| SANDBOX_SIZED = {"klein.bin": 100, "mittel.bin": 5000, "gross.bin": 90000} | |
| TASKS = [ | |
| dict( | |
| id="term01", | |
| titel="Zeilen zaehlen", | |
| prompt="Gib genau einen Shell-Einzeiler aus, der die Anzahl der Zeilen " | |
| "in der Datei log.txt ausgibt — nur die nackte Zahl, kein Dateiname. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| check=lambda out: out.strip() == "7", | |
| erwartet="7", | |
| ), | |
| dict( | |
| id="term02", | |
| titel="Muster mit Zeilennummer", | |
| prompt="Gib genau einen Shell-Einzeiler aus, der aus log.txt alle Zeilen mit " | |
| "dem Wort WARN samt ihrer Zeilennummer ausgibt. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| # Zeilen 2 und 6 enthalten WARN. | |
| check=lambda out: ("2:" in out and "6:" in out | |
| and out.count("WARN") == 2 and "ERROR" not in out), | |
| erwartet="Zeilen 2 und 6 mit Praefix", | |
| ), | |
| dict( | |
| id="term03", | |
| titel="Groesste Datei", | |
| prompt="Gib genau einen Shell-Einzeiler aus, der den Namen der groessten " | |
| "Datei im aktuellen Verzeichnis ausgibt — nur den Namen, sonst nichts. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| check=lambda out: out.strip().split("/")[-1] == "gross.bin", | |
| erwartet="gross.bin", | |
| ), | |
| dict( | |
| id="term04", | |
| titel="Spalte aus CSV", | |
| prompt="Die Datei messwerte.csv ist mit Semikolon getrennt und hat eine " | |
| "Kopfzeile. Gib genau einen Shell-Einzeiler aus, der nur die Werte " | |
| "der Spalte 'geraet' ohne die Kopfzeile ausgibt. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| check=lambda out: [z for z in out.strip().splitlines() if z.strip()] == [ | |
| "pumpe", "luefter", "motor", "ventil", "presse", "kompressor"], | |
| erwartet="6 Geraetenamen", | |
| ), | |
| dict( | |
| id="term05", | |
| titel="Doppelte Zeilen", | |
| prompt="Gib genau einen Shell-Einzeiler aus, der aus namen.txt jeden Namen " | |
| "mit seiner Anzahl ausgibt, absteigend nach Anzahl sortiert. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| # anna 3x, bernd 2x, clara 1x, dora 1x — anna muss zuerst kommen. | |
| check=lambda out: (out.strip().splitlines()[0].strip().split()[-1] == "anna" | |
| or out.strip().splitlines()[0].strip().split()[0] == "anna") | |
| and "3" in out.strip().splitlines()[0], | |
| erwartet="anna mit 3 zuerst", | |
| ), | |
| dict( | |
| id="term06", | |
| titel="Summe einer Spalte", | |
| prompt="Die Datei messwerte.csv ist mit Semikolon getrennt und hat eine " | |
| "Kopfzeile. Gib genau einen Shell-Einzeiler aus, der die Summe der " | |
| "Spalte 'spannung' ausgibt. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| # 47.3+16.1+231.5+60.4+400.2+18.7 = 774.2 | |
| check=lambda out: any( | |
| abs(float(t) - 774.2) < 0.05 | |
| for t in out.replace(",", ".").split() | |
| if _istzahl(t)), | |
| erwartet="774.2", | |
| ), | |
| dict( | |
| id="term07", | |
| titel="Numerisch sortieren", | |
| prompt="Die Datei messwerte.csv ist mit Semikolon getrennt und hat eine " | |
| "Kopfzeile. Gib genau einen Shell-Einzeiler aus, der die Datenzeilen " | |
| "ohne Kopfzeile absteigend nach der Spalte 'spannung' sortiert ausgibt. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| check=lambda out: _erste_datenzeile(out).startswith("presse") | |
| and "geraet;kanal" not in out, | |
| erwartet="presse zuerst (400.2)", | |
| ), | |
| dict( | |
| id="term08", | |
| titel="JSON-Feld lesen", | |
| prompt="Gib genau einen Shell-Einzeiler aus, der aus config.json nur den " | |
| "Wert des Feldes 'port' ausgibt. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| check=lambda out: out.strip().strip('"') == "8210", | |
| erwartet="8210", | |
| ), | |
| dict( | |
| id="term09", | |
| titel="Ersetzen in Datei", | |
| prompt="Gib genau einen Shell-Einzeiler aus, der in der Datei log.txt jedes " | |
| "Vorkommen von WARN durch ACHTUNG ersetzt und die Datei dabei " | |
| "tatsaechlich veraendert. Danach soll nichts weiter ausgegeben werden. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| # Geprueft wird der Dateiinhalt nach dem Lauf, nicht die Ausgabe. | |
| check=None, | |
| datei_check=lambda dateien: ( | |
| dateien.get("log.txt", "").count("ACHTUNG") == 2 | |
| and "WARN" not in dateien.get("log.txt", "")), | |
| erwartet="log.txt enthaelt 2x ACHTUNG, kein WARN", | |
| ), | |
| dict( | |
| id="term10", | |
| titel="Gefiltert zaehlen", | |
| prompt="Die Datei messwerte.csv ist mit Semikolon getrennt und hat eine " | |
| "Kopfzeile. Gib genau einen Shell-Einzeiler aus, der zaehlt, wie viele " | |
| "Zeilen in der Spalte 'kanal' den Wert 6 haben — nur die nackte Zahl. " | |
| "Antworte ausschliesslich mit dem Befehl, ohne Erklaerung und ohne Code-Block.", | |
| check=lambda out: out.strip() == "3", | |
| erwartet="3", | |
| ), | |
| ] | |
| def _istzahl(t): | |
| try: | |
| float(t) | |
| return True | |
| except ValueError: | |
| return False | |
| def _erste_datenzeile(out): | |
| for z in out.strip().splitlines(): | |
| if z.strip(): | |
| return z.strip() | |
| return "" | |