Spaces:
Sleeping
Sleeping
metadata
title: Training CPU
emoji: 🧠
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
🧠 CPU Fine-Tuning Interface
[EN] A complete web interface for fine-tuning language models on CPU using LoRA/PEFT, with dataset creation, training monitoring, model evaluation chat, and GGUF export.
[PT] Interface web completa para fine-tuning de modelos de linguagem em CPU com LoRA/PEFT, criação de datasets, monitorização do treino, chat de avaliação e exportação GGUF.
🇬🇧 English
Features
- Dynamic Configuration — displays hardware info and training parameters loaded from
app.py(read-only) - GGUF Converter — converts merged model to GGUF format (F16 original size or Q8_0 ~50% size)
- Dataset Creator — processes PDF, TXT, DOCX, MD, JSONL and MediaWiki XML files into training datasets
- Train AI — start, monitor and control fine-tuning with LoRA on CPU
- Training Logs — real-time log viewer with progress bar and ETA
- Model Chat — evaluate the trained model directly in the interface after merge
- Output Directory — browse and download all generated files
How to Use
- Configure — the left panel shows your current hardware and training parameters
- Create Dataset — upload a document and configure chunking, schema and cleaning options
- Train — enter the base model path and training files, set epochs and click Start Training
- Monitor — watch the progress bar, step counter, elapsed time and ETA in real time
- Merge — after training completes, click Merge to combine base model + LoRA adapter
- Chat — test the merged model directly in the chat panel
- Export GGUF — convert to GGUF for use with llama.cpp, Ollama or LM Studio
Supported Input Formats (Dataset)
| Format | Description |
|---|---|
.pdf |
PDF documents (text extraction + optional OCR) |
.txt |
Plain text files |
.docx |
Microsoft Word documents |
.md |
Markdown files |
.jsonl |
Existing JSONL datasets (passthrough + cleaning) |
.xml |
MediaWiki dumps (Wikipedia, government wikis) |
Dataset Schemas
| Schema | Description |
|---|---|
text |
Plain text only — simplest format |
lite |
Text + basic metadata (id, doc_id) |
full |
Everything including tables and extraction method |
prompt_completion |
Instruction/response format for directed fine-tuning |
GGUF Export
After merging, enter the merged model path and choose:
- F16 — original size, full precision, best quality
- Q8_0 — ~50% smaller, near-lossless quality, faster inference
Requires convert_hf_to_gguf.py and gguf-py/ folder in the Space root (from llama.cpp).
Technical Stack
- Backend: Flask + Python
- Training: HuggingFace Transformers + PEFT (LoRA)
- Dataset: Custom processor (PyMuPDF, python-docx, pandas)
- Frontend: Vanilla JS + Tailwind CSS
- Hardware: CPU-only (optimised for multi-core, dynamic RAM management)
Notes
- This Space is designed for testing and portfolio demonstration
- For serious training, use a GPU or a local machine with XPU/CUDA
- Training a 1B parameter model on CPU takes approximately 100–150 hours per epoch
- The dynamic accumulation system automatically adjusts gradient accumulation based on available RAM
🇵🇹 Português
Funcionalidades
- Configuração Dinâmica — mostra informação de hardware e parâmetros de treino carregados do
app.py(só leitura) - Conversor GGUF — converte modelo merged para formato GGUF (F16 tamanho original ou Q8_0 ~50% do tamanho)
- Criador de Datasets — processa ficheiros PDF, TXT, DOCX, MD, JSONL e XML MediaWiki em datasets de treino
- Treinar IA — iniciar, monitorizar e controlar o fine-tuning com LoRA em CPU
- Logs de Treino — visualizador de logs em tempo real com barra de progresso e ETA
- Chat do Modelo — avaliar o modelo treinado directamente na interface após merge
- Directório de Output — navegar e descarregar todos os ficheiros gerados
Como Usar
- Configurar — o painel esquerdo mostra o teu hardware actual e parâmetros de treino
- Criar Dataset — carrega um documento e configura chunking, schema e opções de limpeza
- Treinar — introduz o caminho do modelo base e ficheiros de treino, define as épocas e clica em Start Training
- Monitorizar — acompanha a barra de progresso, contador de passos, tempo decorrido e ETA em tempo real
- Merge — após o treino terminar, clica em Merge para combinar modelo base + adaptador LoRA
- Chat — testa o modelo merged directamente no painel de chat
- Exportar GGUF — converte para GGUF para uso com llama.cpp, Ollama ou LM Studio
Formatos de Entrada Suportados (Dataset)
| Formato | Descrição |
|---|---|
.pdf |
Documentos PDF (extracção de texto + OCR opcional) |
.txt |
Ficheiros de texto simples |
.docx |
Documentos Microsoft Word |
.md |
Ficheiros Markdown |
.jsonl |
Datasets JSONL existentes (passthrough + limpeza) |
.xml |
Dumps MediaWiki (Wikipedia, wikis governamentais) |
Schemas de Dataset
| Schema | Descrição |
|---|---|
text |
Só texto — formato mais simples |
lite |
Texto + metadados básicos (id, doc_id) |
full |
Tudo incluindo tabelas e método de extracção |
prompt_completion |
Formato instrução/resposta para fine-tuning dirigido |
Exportação GGUF
Após o merge, introduz o caminho do modelo merged e escolhe:
- F16 — tamanho original, precisão total, melhor qualidade
- Q8_0 — ~50% menor, qualidade quase sem perda, inferência mais rápida
Requer convert_hf_to_gguf.py e pasta gguf-py/ na raiz do Space (do repositório llama.cpp).
Stack Técnico
- Backend: Flask + Python
- Treino: HuggingFace Transformers + PEFT (LoRA)
- Dataset: Processador personalizado (PyMuPDF, python-docx, pandas)
- Frontend: Vanilla JS + Tailwind CSS
- Hardware: CPU apenas (optimizado para multi-core, gestão dinâmica de RAM)
Notas
- Este Space foi criado para testes e demonstração de portfolio
- Para treino sério, usa uma GPU ou máquina local com XPU/CUDA
- Treinar um modelo de 1B parâmetros em CPU demora aproximadamente 100–150 horas por época
- O sistema de acumulação dinâmica ajusta automaticamente o gradient accumulation com base na RAM disponível
📁 File Structure / Estrutura de Ficheiros
app.py # Main Flask application
config_manager.py # Dynamic configuration manager
pdf_txt_to_dataset.py # Dataset processor
dataset_endpoints.py # Dataset API endpoints
gguf_endpoints.py # GGUF conversion endpoints
convert_hf_to_gguf.py # llama.cpp conversion script
gguf-py/ # llama.cpp GGUF library
requirements.txt # Python dependencies
templates/
index.html # Web interface
📦 Dependencies / Dependências
torch (CPU)
transformers
peft
accelerate
datasets
flask
pymupdf
pandas
python-docx
gguf
sentencepiece
tensorboard
psutil
py-cpuinfo
Built with ❤️ for CPU fine-tuning experimentation