Instructions to use JamePeng2023/Step3-VL-10B-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 JamePeng2023/Step3-VL-10B-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 JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
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 JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
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 JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
Use Docker
docker model run hf.co/JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use JamePeng2023/Step3-VL-10B-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "JamePeng2023/Step3-VL-10B-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": "JamePeng2023/Step3-VL-10B-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/JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
- Ollama
How to use JamePeng2023/Step3-VL-10B-GGUF with Ollama:
ollama run hf.co/JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
- Unsloth Studio
How to use JamePeng2023/Step3-VL-10B-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 JamePeng2023/Step3-VL-10B-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 JamePeng2023/Step3-VL-10B-GGUF to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for JamePeng2023/Step3-VL-10B-GGUF to start chatting
- Pi
How to use JamePeng2023/Step3-VL-10B-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use JamePeng2023/Step3-VL-10B-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
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 "JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M" \ --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"
- Docker Model Runner
How to use JamePeng2023/Step3-VL-10B-GGUF with Docker Model Runner:
docker model run hf.co/JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
- Lemonade
How to use JamePeng2023/Step3-VL-10B-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.Step3-VL-10B-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use JamePeng2023/Step3-VL-10B-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 JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
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 JamePeng2023/Step3-VL-10B-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
The Step3-VL-10B is now supported in llama-cpp-python. This project provides a test GGUF file.
llama-cpp-python: https://github.com/JamePeng/llama-cpp-python
Code example:
from llama_cpp import Llama
from llama_cpp.llama_chat_format import Step3VLChatHandler
import base64
import os
# Model and multimodal projection paths
MODEL_PATH = r"path/to/Step3-VL-10B-Q8_0.gguf"
MMPROJ_PATH = r"path/to/mmproj-Step3-VL-10b-F16.gguf"
# Initialize the Llama model with vision support
llm = Llama(
model_path=MODEL_PATH,
chat_handler=Step3VLChatHandler(
clip_model_path=MMPROJ_PATH,
enable_thinking=True, # Set to True if you want forced chain-of-thought output
verbose=True,
),
n_gpu_layers=-1, # Use all available GPU layers
n_ctx=8192, # Context window size
verbose=True,
)
# Comprehensive MIME type mapping (updated as of 2025)
# Based on Pillow 10.x+ "Fully Supported" (Read & Write) formats
# Reference: IANA official media types + common real-world usage
# See: https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html
_IMAGE_MIME_TYPES = {
# Most common formats
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.gif': 'image/gif',
'.webp': 'image/webp',
# Next-generation formats
'.avif': 'image/avif',
'.jp2': 'image/jp2',
'.j2k': 'image/jp2',
'.jpx': 'image/jp2',
# Legacy / Windows formats
'.bmp': 'image/bmp',
'.ico': 'image/x-icon',
'.pcx': 'image/x-pcx',
'.tga': 'image/x-tga',
'.icns': 'image/icns',
# Professional / Scientific imaging
'.tif': 'image/tiff',
'.tiff': 'image/tiff',
'.eps': 'application/postscript',
'.dds': 'image/vnd-ms.dds',
'.dib': 'image/dib',
'.sgi': 'image/sgi',
# Portable Map formats (PPM/PGM/PBM)
'.pbm': 'image/x-portable-bitmap',
'.pgm': 'image/x-portable-graymap',
'.ppm': 'image/x-portable-pixmap',
# Miscellaneous / Older formats
'.xbm': 'image/x-xbitmap',
'.mpo': 'image/mpo',
'.msp': 'image/msp',
'.im': 'image/x-pillow-im',
'.qoi': 'image/qoi',
}
def image_to_base64_data_uri(
file_path: str,
*,
fallback_mime: str = "application/octet-stream"
) -> str:
"""
Convert a local image file to a base64-encoded data URI with the correct MIME type.
Supports 20+ image formats (PNG, JPEG, WebP, AVIF, HEIC, SVG, BMP, ICO, TIFF, etc.).
Args:
file_path: Path to the image file on disk.
fallback_mime: MIME type used when the file extension is unknown.
Returns:
A valid data URI string (e.g., data:image/webp;base64,...).
Raises:
FileNotFoundError: If the file does not exist.
OSError: If reading the file fails.
"""
if not os.path.isfile(file_path):
raise FileNotFoundError(f"Image file not found: {file_path}")
extension = os.path.splitext(file_path)[1].lower()
mime_type = _IMAGE_MIME_TYPES.get(extension, fallback_mime)
if mime_type == fallback_mime:
print(f"Warning: Unknown extension '{extension}' for '{file_path}'. "
f"Using fallback MIME type: {fallback_mime}")
try:
with open(file_path, "rb") as img_file:
encoded_data = base64.b64encode(img_file.read()).decode("utf-8")
except OSError as e:
raise OSError(f"Failed to read image file '{file_path}': {e}") from e
return f"data:{mime_type};base64,{encoded_data}"
# ========================
# Main image processing & inference section
# ========================
# 1. List of image paths you want to analyze (supports mixed formats)
image_paths = [
r"6.jpeg",
]
# 2. Container for message content (each image + final text prompt)
user_content = []
# 3. Convert every image to a properly formatted data URI message
for path in image_paths:
data_uri = image_to_base64_data_uri(path)
user_content.append({
"type": "image_url",
"image_url": {"url": data_uri}
})
# 4. Append the text instruction (appears after all images in the message)
user_content.append({
"type": "text",
"text": "Please describe this image." # You can change the prompt as needed
})
# 5. Perform chat completion with vision
response = llm.create_chat_completion(
messages=[
# {"role": "system", "content": "You are a highly accurate vision-language assistant. Provide detailed, precise, and well-structured image descriptions."},
{"role": "user", "content": user_content}
],
temperature=1.0,
top_p=0.95,
top_k=64,
max_tokens=8192,
)
# 6. Print the model's reply
print(response["choices"][0]["message"]["content"])
- Downloads last month
- 294
Hardware compatibility
Log In to add your hardware
3-bit
4-bit
6-bit
8-bit
16-bit