Skip to content

aioffgrid/OVForge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⬡ OVForge

OpenVINO Model Manager — desktop GUI for Intel Arc

Browse, download and convert LLMs and VLMs for OpenVINO / Optimum-Intel, without touching the terminal.

Python PyQt6 OpenVINO License


Why OVForge?

Intel ships powerful conversion tools (optimum-cli, openvino) but no GUI to use them. OVForge fills that gap: it wraps the entire workflow — catalog browsing, model download, conversion with quality presets, and output management — into a single desktop application.

Target user: anyone running LLMs on Intel Arc GPUs who wants a usable interface instead of long CLI commands.


Requirements

OS Ubuntu 22.04+ (tested), any Linux with X11 or Wayland
Python 3.10 or newer
GPU Intel Arc (A-series or B-series) with current drivers
Stack optimum-intel[openvino] + nncf in the Python environment

Note: OpenVINO driver and GPU setup are prerequisites that OVForge cannot install. If you can already run optimum-cli export openvino ... in your terminal, you are ready.


Setup

Option A — fresh virtualenv (recommended)

git clone https://github.com/YOUR_USERNAME/ovforge.git
cd ovforge

python3 -m venv .venv
source .venv/bin/activate

pip install PyQt6 PyQt6-WebEngine huggingface_hub markdown
pip install "optimum-intel[openvino]" nncf

./run.sh

Option B — existing environment

If you already have an OpenVINO environment:

source /path/to/your/openvino_env/bin/activate
./run.sh

run.sh auto-discovers the Python interpreter in this order:

  1. .venv/ in the project folder
  2. venv/ in the project folder
  3. $OVFORGE_PYTHON environment variable (explicit override)
  4. ../openvino_env/ relative to the project (default OVForge layout)
  5. python3 in $PATH

HuggingFace token

Open ⚙ Settings and paste your HF token to:

  • Access gated models (Llama, Gemma, etc.)
  • Increase API rate limits during catalog refresh

Features

Model catalog

  • IR OpenVINO — models already converted by Intel and the community (OpenVINO/ org on HF). Direct download with per-file byte progress and automatic resume.
  • Raw HuggingFace — any model on HF. OVForge detects the architecture, matches it to a conversion profile, and builds the optimum-cli command for you.

Conversion presets

Preset Weight format Notes
FP16 fp16 Full quality, largest file
INT8 int8 Good quality, ~2× smaller
INT4 Balanced int4 Default — best quality/size ratio
INT4 Quality int4 + AWQ Slowest, best accuracy (requires calibration dataset)

Advanced flags (ratio, group-size, dataset, sensitivity metric…) are available as toggleable chips — no manual CLI editing needed.

VLM support

For vision-language models, an optional "Text only" mode exports just the language model (~60% smaller output, suitable for text inference on Arc without the vision overhead).

Local cache manager

The 📁 Local Cache panel scans your output folder and classifies every model found:

State Meaning
✅ IR Complete Ready for inference
⚠ IR Partial Export interrupted — resume available
📦 RAW Complete Downloaded, ready to convert locally
🔄 RAW Partial Download interrupted — resume available

Output layout

OVForge organizes output automatically under a base folder you choose in Settings:

{base}/
├── ModelName/                    ← direct IR download
└── ModelName-int4-ov/            ← conversion output

Filters

Format · Category (LLM, VLM, Embedding, STT, Diffusion) · Parameter range · File size · Free text search


Architecture coverage

OVForge ships with conversion profiles for 38+ model families including: LLaMA · Qwen · Phi · Mistral · Gemma · Falcon · MPT · BLOOM · OPT · GPT-2 · GPT-NeoX · Baichuan · ChatGLM · Yi · DeepSeek · InternLM · Qwen-VL · LLaVA · InternVL · and more.

Unknown architectures fall back to a generic LLM profile. If a model converts successfully with the fallback, it works.


Known limitations

  • Conversion is not resumable. If interrupted, the output folder is cleaned up and the process must restart from scratch.
  • One conversion at a time. Arc VRAM is fully utilized during export — launching a second conversion is not prevented but will likely OOM.
  • Qwen3.5 (hybrid attention/delta-net architecture) requires transformers >= 5.13.dev and a patched optimum-intel. Upstream fix pending.
  • BNB-quantized models (suffix -bnb-4bit) cannot be converted — optimum-cli requires unquantized source weights.

Compatibility notes

OVForge wraps optimum-cli — conversion compatibility depends on the installed optimum-intel and transformers versions, not on OVForge itself.

Tested and working:

  • optimum-intel >= 2.0.0 + transformers >= 4.40
  • Architectures: LLaMA-3, Qwen2.5, Phi-3, Mistral, Gemma, and most mainstream families

If a conversion fails with an ImportError or AttributeError in model_patcher.py, the issue is almost always a version mismatch between optimum-intel and transformers. Try: pip install --upgrade optimum-intel transformers


Project structure

ovforge/
├── main.py                     # Entry point
├── run.sh                      # Launcher with env auto-discovery
├── profiles.json               # Architecture → optimum-cli flags mapping
├── data/
│   ├── cache.db                # SQLite: model catalog + settings + size cache
│   └── ovforge.log             # Rotating log (5 MB × 3)
├── hf_client.py                # HF Hub API + SQLite catalog cache
├── profile_resolver.py         # Architecture → conversion profile lookup
├── conversion_engine.py        # optimum-cli subprocess wrapper + HF downloader
├── cache_manager.py            # Local folder scanner: IR/RAW state + integrity
├── assets/
│   ├── ovforge.svg             # Application icon (source)
│   ├── ovforge_256.png         # Application icon 256×256
│   └── ovforge.desktop         # Linux .desktop entry
└── tests/
    └── test_core.py            # 55 unit tests (pytest)

Contributing

Issues and PRs are welcome. Before submitting a conversion bug, please include:

  • The model repo_id
  • The preset used
  • The full error from the conversion log dialog (📋 button)
  • Output of optimum-cli --version and python -c "import transformers; print(transformers.__version__)"

License

MIT — see LICENSE.


Built for Intel Arc · Not affiliated with Intel or HuggingFace

Packages

 
 
 

Contributors