Detoxify-Small πŸ€–

A highly compact (~100 MB) and efficient text detoxification model for removing toxicity while preserving meaning.

Model Size Architecture License Discord

Built by Minibase - Train and deploy small AI models from your browser. *Browse all of the models and datasets available on the Minibase Marketplace.

πŸ“‹ Model Summary

Minibase-Detoxify-Small is a compact language model fine-tuned specifically for text detoxification tasks. It takes toxic or inappropriate text as input and generates cleaned, non-toxic versions while preserving the original meaning and intent as much as possible.

Key Features

  • ⚑ Fast Inference: ~66ms average response time
  • 🎯 High Fluency: 91.9% well-formed output text
  • 🧹 Effective Detoxification: 3.2% average toxicity reduction
  • πŸ’Ύ Compact Size: Only 138MB (GGUF quantized)
  • πŸ”’ Privacy-First: Runs locally, no data sent to external servers

πŸš€ Quick Start

Local Inference (Recommended)

  1. Install llama.cpp (if not already installed):

    git clone https://github.com/ggerganov/llama.cpp
    cd llama.cpp && make
    
  2. Download and run the model:

    # Download model files
    wget https://huggingface.co/minibase/detoxify-small/resolve/main/model.gguf
    wget https://huggingface.co/minibase/detoxify-small/resolve/main/run_server.sh
    
    # Make executable and run
    chmod +x run_server.sh
    ./run_server.sh
    
  3. Make API calls:

    import requests
    
    # Detoxify text
    response = requests.post("http://127.0.0.1:8000/completion", json={
        "prompt": "Instruction: Rewrite the provided text to remove the toxicity.\n\nInput: This is fucking terrible!\n\nResponse: ",
        "max_tokens": 200,
        "temperature": 0.7
    })
    
    result = response.json()
    print(result["content"])  # "This is really terrible!"
    

Python Client

from detoxify_inference import DetoxifyClient

# Initialize client
client = DetoxifyClient()

# Detoxify text
toxic_text = "This product is fucking amazing, no bullshit!"
clean_text = client.detoxify_text(toxic_text)

print(clean_text)  # "This product is really amazing, no kidding!"

πŸ“Š Benchmarks & Performance

ParaDetox Dataset Results (1,008 samples)

Metric Score Description
β€’ Original Toxicity: 0.051 (5.1%)
β€’ Final Toxicity: 0.020 (2.0%)

| Toxicity Reduction | 0.051 (ParaDetox) --> 0.020 | Reduced toxicity scores by more than 50% | | Semantic to Expected | 0.471 (47.1%) | Similarity to human expert rewrites | | Semantic to Original | 0.625 (62.5%) | How much original meaning is preserved | | Fluency | 0.919 (91.9%) | Quality of generated text structure | | Latency | 66.4ms | Average response time | | Throughput | ~15 req/sec | Estimated requests per second |

Dataset Breakdown

General Toxic Content (1,000 samples)

  • Semantic Preservation: 62.7%
  • Fluency: 91.9%

Comparison with Baselines

Model Semantic Similarity Toxicity Reduction Fluency
Detoxify-Small 0.471 0.032 0.919
BART-base (ParaDetox) 0.750 ~0.15 ~0.85
Human Performance 0.850 ~0.25 ~0.95

πŸ—οΈ Technical Details

Model Architecture

  • Architecture: LlamaForCausalLM
  • Parameters: 49,152 (extremely compact)
  • Context Window: 1,024 tokens
  • Quantization: GGUF (4-bit quantization)
  • File Size: 138MB
  • Memory Requirements: 8GB RAM minimum, 16GB recommended

Training Details

  • Base Model: Custom-trained Llama architecture
  • Fine-tuning Dataset: Curated toxic-neutral parallel pairs
  • Training Objective: Instruction-following for detoxification
  • Optimization: Quantized for edge deployment

System Requirements

  • OS: Linux, macOS, Windows
  • RAM: 8GB minimum, 16GB recommended
  • Storage: 200MB free space
  • Dependencies: llama.cpp, Python 3.7+

πŸ“– Usage Examples

Basic Detoxification

# Input: "This is fucking awesome!"
# Output: "This is really awesome!"

# Input: "You stupid idiot, get out of my way!"
# Output: "You silly person, please move aside!"

API Integration

import requests

def detoxify_text(text: str) -> str:
    """Detoxify text using Detoxify-Small API"""
    prompt = f"Instruction: Rewrite the provided text to remove the toxicity.\n\nInput: {text}\n\nResponse: "

    response = requests.post("http://127.0.0.1:8000/completion", json={
        "prompt": prompt,
        "max_tokens": 200,
        "temperature": 0.7
    })

    return response.json()["content"]

# Usage
toxic_comment = "This product sucks donkey balls!"
clean_comment = detoxify_text(toxic_comment)
print(clean_comment)  # "This product is not very good!"

Batch Processing

import asyncio
import aiohttp

async def detoxify_batch(texts: list) -> list:
    """Process multiple texts concurrently"""
    async with aiohttp.ClientSession() as session:
        tasks = []
        for text in texts:
            prompt = f"Instruction: Rewrite the provided text to remove the toxicity.\n\nInput: {text}\n\nResponse: "
            payload = {
                "prompt": prompt,
                "max_tokens": 200,
                "temperature": 0.7
            }
            tasks.append(session.post("http://127.0.0.1:8000/completion", json=payload))

        responses = await asyncio.gather(*tasks)
        return [await resp.json() for resp in responses]

# Process multiple comments
comments = [
    "This is fucking brilliant!",
    "You stupid moron!",
    "What the hell is wrong with you?"
]

clean_comments = await detoxify_batch(comments)

πŸ”§ Advanced Configuration

Server Configuration

# GPU acceleration (macOS with Metal)
llama-server \
  -m model.gguf \
  --host 127.0.0.1 \
  --port 8000 \
  --n-gpu-layers 35 \
  --metal

# CPU-only (lower memory usage)
llama-server \
  -m model.gguf \
  --host 127.0.0.1 \
  --port 8000 \
  --n-gpu-layers 0 \
  --threads 8

# Custom context window
llama-server \
  -m model.gguf \
  --ctx-size 2048 \
  --host 127.0.0.1 \
  --port 8000

Temperature Settings

  • Low (0.1-0.3): Conservative detoxification, minimal changes
  • Medium (0.4-0.7): Balanced approach (recommended)
  • High (0.8-1.0): Creative detoxification, more aggressive changes

πŸ“š Limitations & Biases

Current Limitations

  • Vocabulary Scope: Trained primarily on English toxic content
  • Context Awareness: May not detect sarcasm or cultural context
  • Length Constraints: Limited to 1024 token context window
  • Domain Specificity: Optimized for general web content

Potential Biases

  • Cultural Context: May not handle culture-specific expressions
  • Dialect Variations: Limited exposure to regional dialects
  • Emerging Slang: May not recognize newest internet slang

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/minibase-ai/detoxify-small
cd detoxify-small

# Install dependencies
pip install -r requirements.txt

# Run tests
python -m pytest tests/

πŸ“œ Citation

If you use Detoxify-Small in your research, please cite:

@misc{detoxify-small-2025,
  title={Detoxify-Small: A Compact Text Detoxification Model},
  author={Minibase AI Team},
  year={2025},
  publisher={Hugging Face},
  url={https://huggingface.co/minibase/detoxify-small}
}

πŸ“ž Contact & Community

Support

πŸ“‹ License

This model is released under the Apache License 2.0).

πŸ™ Acknowledgments

  • ParaDetox Dataset: Used for benchmarking and evaluation
  • llama.cpp: For efficient local inference
  • Hugging Face: For model hosting and community
  • Our amazing community: For feedback and contributions

Built with ❀️ by the Minibase team

Making AI more accessible for everyone

πŸ“– Minibase Help Center β€’ πŸ’¬ Join our Discord

Downloads last month
269
GGUF
Model size
135M params
Architecture
llama
Hardware compatibility
Log In to view the estimation

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Evaluation results