WritingStudio / docs /HUGGINGFACE_SPACES.md
jmisak's picture
Upload 46 files
d7f7508 verified

A newer version of the Gradio SDK is available: 6.2.0

Upgrade

HuggingFace Spaces Deployment Guide

Overview

This guide explains how to deploy Writing Studio on HuggingFace Spaces for free, public access to your AI writing assistant.

Prerequisites

  • HuggingFace account (sign up free)
  • Basic familiarity with Git (optional for direct upload)

Quick Deploy

Method 1: Direct Upload (Easiest)

  1. Create a Space

    • Go to huggingface.co/new-space
    • Name your Space (e.g., "writing-studio")
    • Choose Gradio as SDK
    • Select visibility (Public or Private)
    • Click "Create Space"
  2. Upload Files

    • Click "Files" tab
    • Upload these essential files:
      • app.py
      • requirements.txt
      • src/ folder (entire directory)
      • .space_config.yml (optional)
      • README_HF_SPACES.md (rename to README.md)
  3. Wait for Build

    • HuggingFace automatically detects app.py and requirements.txt
    • First build takes 3-5 minutes (installing dependencies)
    • Your Space will be live at: https://huggingface.co/spaces/USERNAME/SPACE_NAME

Method 2: Git Clone (Recommended for Updates)

  1. Create a Space (as above)

  2. Clone Locally

    git clone https://huggingface.co/spaces/USERNAME/SPACE_NAME
    cd SPACE_NAME
    
  3. Copy Files

    # From your WritingStudio directory
    cp -r src/ app.py requirements.txt .space_config.yml /path/to/SPACE_NAME/
    cp README_HF_SPACES.md /path/to/SPACE_NAME/README.md
    
  4. Push to Space

    cd /path/to/SPACE_NAME
    git add .
    git commit -m "Initial deployment"
    git push
    
  5. Monitor Build

    • Go to your Space URL
    • Check "Logs" tab for build progress
    • App will be live when build completes

Method 3: Duplicate an Existing Space

If someone has already deployed Writing Studio:

  1. Go to their Space
  2. Click "⋯" menu → "Duplicate this Space"
  3. Choose your username and Space name
  4. Click "Duplicate Space"
  5. Done! Your own copy is live

Configuration

Default Settings

Works out-of-the-box with:

  • Model: distilgpt2 (fast, lightweight)
  • Log Level: INFO
  • Metrics: Disabled (not needed on HF Spaces)
  • Caching: Enabled
  • All rubric features: Enabled

Custom Configuration

Option A: Environment Variables

In your Space:

  1. Go to Settings
  2. Scroll to "Repository secrets"
  3. Add variables:
DEFAULT_MODEL=gpt2
LOG_LEVEL=DEBUG
MAX_TEXT_LENGTH=5000

Option B: Edit .space_config.yml

env:
  DEFAULT_MODEL: gpt2
  LOG_LEVEL: INFO
  ENABLE_CACHE: "true"
  MAX_TEXT_LENGTH: "5000"

Commit and push changes.

Hardware Selection

Free Tier (CPU Basic)

Best for:

  • Testing and demos
  • Small models (distilgpt2)
  • Light usage

Performance:

  • First load: ~30-60s
  • Subsequent: ~5-10s per analysis
  • Memory: 16GB RAM
  • Storage: Unlimited

Limitations:

  • Slower processing
  • May timeout on large models

CPU Upgrade (Paid)

Best for:

  • Production use
  • Medium models (gpt2)
  • Regular users

Performance:

  • First load: ~20-45s
  • Subsequent: ~3-8s
  • More CPU cores
  • Better throughput

Cost: ~$0.10/hour

T4 Small GPU (Paid)

Best for:

  • Best performance
  • Large models (gpt2-medium, gpt2-large)
  • High traffic

Performance:

  • First load: ~15-30s
  • Subsequent: ~1-3s
  • GPU acceleration
  • Fastest generation

Cost: ~$0.60/hour

Recommendation

Start with Free Tier + distilgpt2:

  • Works well for most use cases
  • Zero cost
  • Upgrade only if needed

Model Selection

distilgpt2 (Default)

  • Size: 82M parameters
  • Speed: Fast
  • Quality: Good
  • Free Tier: ✅ Works great
  • Recommended for: Most users

gpt2

  • Size: 124M parameters
  • Speed: Medium
  • Quality: Better
  • Free Tier: ✅ Works (slower)
  • Recommended for: CPU Upgrade tier

gpt2-medium

  • Size: 355M parameters
  • Speed: Slower
  • Quality: Great
  • Free Tier: ⚠️ May timeout
  • Recommended for: T4 GPU tier

gpt2-large

  • Size: 774M parameters
  • Speed: Slowest
  • Quality: Best
  • Free Tier: ❌ Not recommended
  • Recommended for: T4 GPU tier

Optimization Tips

1. Enable Caching (Default)

Results are cached automatically:

  • Same input = instant result
  • Reduces compute time
  • Saves hardware costs

2. Use Smaller Models

For free tier:

env:
  DEFAULT_MODEL: distilgpt2

3. Limit Text Length

Prevent timeouts:

env:
  MAX_TEXT_LENGTH: "3000"  # Shorter = faster

4. Adjust Generation Length

Faster processing:

env:
  DEFAULT_MAX_LENGTH: "200"  # Instead of 300

Monitoring

Check Logs

  1. Go to your Space
  2. Click "Logs" tab
  3. View real-time logs

Look for:

  • INFO - Normal operations
  • WARNING - Potential issues
  • ERROR - Problems to fix

Usage Stats

HuggingFace provides:

  • View count
  • Unique visitors
  • Uptime status

Available in Space settings.

Troubleshooting

Build Fails

Problem: Space doesn't build

Solutions:

  1. Check requirements.txt syntax
  2. Ensure app.py exists
  3. Check Logs tab for errors
  4. Verify file structure:
    SPACE_NAME/
    ├── app.py
    ├── requirements.txt
    ├── src/
    │   └── writing_studio/
    │       ├── core/
    │       ├── services/
    │       └── utils/
    

Out of Memory

Problem: "CUDA out of memory" or crashes

Solutions:

  1. Use smaller model:
    DEFAULT_MODEL=distilgpt2
    
  2. Reduce cache size:
    CACHE_MAX_SIZE=50
    
  3. Upgrade to larger hardware tier

Slow Performance

Problem: Analysis takes too long

Solutions:

  1. First load is always slow (model download)
  2. Use distilgpt2 for faster results
  3. Upgrade hardware tier
  4. Reduce text length
  5. Check cache is enabled

Model Not Found

Problem: "Model ... not found"

Solutions:

  1. Check model name spelling
  2. Verify model exists on HuggingFace Hub
  3. Try default: distilgpt2
  4. Check internet connectivity

Import Errors

Problem: "ModuleNotFoundError"

Solutions:

  1. Ensure all files uploaded
  2. Check src/ directory structure
  3. Verify requirements.txt has all dependencies
  4. Rebuild Space (Settings → Factory reboot)

Best Practices

1. Use README_HF_SPACES.md

Rename to README.md in your Space:

cp README_HF_SPACES.md README.md

This provides users with:

  • Usage instructions
  • Model selection guide
  • Troubleshooting help

2. Add Examples

In your Space README, add example texts:

## Example Usage

Try analyzing this text:

```
The quick brown fox jumps over the lazy dog. This sentence
demonstrates pangram characteristics while maintaining
grammatical coherence.
```

3. Set Visibility

Public Spaces:

  • Visible to everyone
  • Searchable
  • Can be featured
  • Free community tier

Private Spaces:

  • Only visible to you
  • Not searchable
  • Requires paid tier

4. Monitor Costs

If using paid tiers:

  1. Go to Settings → Billing
  2. Set spending limits
  3. Monitor usage
  4. Downgrade when not in use

5. Update Regularly

Keep your Space updated:

git pull origin main  # From main repo
git push              # To your Space

Advanced Configuration

Custom Domain

Point your domain to your Space:

  1. Go to Settings
  2. Under "Custom domain"
  3. Enter your domain
  4. Follow DNS instructions

Gradio Auth

Add simple authentication:

Edit app.py:

demo.launch(
    auth=("username", "password"),
    server_name="0.0.0.0",
)

Analytics

Track usage with Gradio analytics:

demo.launch(
    server_name="0.0.0.0",
    analytics_enabled=True,  # HF Spaces analytics
)

Sleep Mode

Free Spaces sleep after 48h inactivity:

  • First request wakes it up (~30s)
  • Paid tiers can disable sleep

Comparison: HF Spaces vs Self-Hosted

Feature HF Spaces Self-Hosted
Cost Free tier available Server costs
Setup 5 minutes 30-60 minutes
Maintenance Automatic Manual
Scaling Auto-scales Manual
SSL/HTTPS Included Configure yourself
Domain *.hf.space Your domain
GPU Access Paid tiers Need GPU server
Monitoring Built-in Setup required
Uptime 99.9% Depends

FAQ

Is HF Spaces free?

Yes, free tier with:

  • CPU Basic hardware
  • Unlimited builds
  • Unlimited users
  • Auto-sleep after 48h inactivity

Can I use private models?

Yes, with HuggingFace Pro:

  • Private Spaces
  • Private model access
  • Gated model support

How do I update my Space?

git pull  # Get latest changes
git push  # Deploy to Space

Or upload files via web interface.

Can I monetize my Space?

Yes, with HF Pro:

  • Set usage fees
  • Subscription model
  • Pay-per-use

What about data privacy?

  • Data processed in-memory
  • Not stored permanently
  • See HF privacy policy
  • Use private Spaces for sensitive data

Resources

Support

Need help?

Success Stories

After deploying:

  1. Share your Space on social media
  2. Add to HuggingFace Papers
  3. List in model cards
  4. Submit to community showcase

Next Steps

After successful deployment:

  1. Test Thoroughly

    • Try all prompt packs
    • Test different models
    • Check error handling
  2. Customize

    • Update README
    • Add examples
    • Configure settings
  3. Share

    • Post on social media
    • Add to your website
    • Share with students/colleagues
  4. Monitor

    • Check logs regularly
    • Monitor usage
    • Gather feedback
  5. Iterate

    • Fix issues
    • Add features
    • Improve performance

Happy deploying! 🚀