Spaces:
Sleeping
Sleeping
| # Limitacoes do Hugging Face Spaces | |
| Guia completo sobre limitacoes ao usar o RAG Template no Hugging Face Spaces. | |
| --- | |
| ## Hardware Spaces (Free Tier) | |
| ### CPU Basic | |
| **Recursos**: | |
| - 2 vCPU | |
| - 16 GB RAM | |
| - 50 GB disco | |
| **Limitacoes**: | |
| - Sem GPU (embeddings e inference via CPU) | |
| - Cold start: 30-60 segundos | |
| - Timeout: 60 segundos por request | |
| --- | |
| ## Limitacoes de Performance | |
| ### Embeddings | |
| **Modelo**: `sentence-transformers/all-MiniLM-L6-v2` | |
| **Performance**: | |
| - Geracao: ~100-200ms por documento (CPU) | |
| - Batch de 10 docs: ~1-2 segundos | |
| - Upload de 100 docs: ~10-20 segundos | |
| **Recomendacoes**: | |
| - Limite uploads a 50-100 documentos por vez | |
| - Use documentos menores (<10 paginas) | |
| - Evite PDFs muito grandes (>5MB) | |
| --- | |
| ### Busca Vetorial | |
| **Performance**: | |
| - Query simples: 50-150ms | |
| - Hybrid search: 100-300ms | |
| - Com reranking: 200-500ms | |
| **Recomendacoes**: | |
| - Limite top_k a 10 ou menos | |
| - Use reranking apenas quando necessario | |
| - Considere indices otimizados (IVFFLAT) | |
| --- | |
| ### Geracao de Respostas | |
| #### HuggingFace Inference API (Free) | |
| **Limites**: | |
| - ~30,000 tokens/hora | |
| - Queue em horarios de pico | |
| - Timeout de 60 segundos | |
| - Modelos limitados | |
| **Performance**: | |
| - Geracao: 2-10 segundos | |
| - Pode ter espera na queue | |
| - Tokens/segundo: variavel | |
| **Recomendacoes**: | |
| - Use modelos menores (7B parameters) | |
| - Limite max_tokens a 512 | |
| - Evite uso intensivo em pico | |
| #### OpenAI / Anthropic | |
| **Limites**: | |
| - Baseado em creditos da conta | |
| - Rate limits por tier | |
| - Custos por token | |
| **Performance**: | |
| - GPT-3.5: ~1-3 segundos | |
| - GPT-4: ~3-10 segundos | |
| - Claude: ~2-5 segundos | |
| --- | |
| ## Limitacoes de Database | |
| ### Espaco de Armazenamento | |
| O Space em si nao armazena dados persistentes. Voce precisa de banco externo: | |
| #### Supabase Free | |
| - **Storage**: 500MB | |
| - **Documentos**: ~300,000 chunks pequenos | |
| - **Embeddings (384d)**: ~1.5KB por documento | |
| - **Estimativa**: 500MB = ~330k documentos | |
| **Calculo**: | |
| ``` | |
| Documento medio: 1000 chars = 1 chunk | |
| Embedding: 384 floats * 4 bytes = 1536 bytes | |
| Metadata: ~100 bytes | |
| Total: ~1.6KB por documento | |
| 500MB / 1.6KB = ~312,500 documentos | |
| ``` | |
| #### Neon Free | |
| - **Storage**: 10GB | |
| - **Documentos**: ~6M chunks pequenos | |
| - **Compute**: 100 horas/mes | |
| --- | |
| ### Connection Limits | |
| #### Supabase Free | |
| - **Conexoes simultaneas**: ~50 | |
| - **Pooling**: Sim (pgBouncer) | |
| #### Neon Free | |
| - **Conexoes simultaneas**: 1000 | |
| - **Pooling**: Sim (integrado) | |
| **Recomendacao**: Configure connection pooling no app. | |
| --- | |
| ## Cold Start | |
| ### O que e Cold Start? | |
| Quando seu Space nao recebe requests por algum tempo, ele "dorme". No proximo acesso: | |
| 1. Container reinicia | |
| 2. Dependencias carregam | |
| 3. Modelos baixam | |
| 4. Banco conecta | |
| **Tempo total**: 30-60 segundos | |
| ### Como Mitigar | |
| 1. **Keep-alive simples**: | |
| ```bash | |
| # Ping a cada 10 minutos (externamente) | |
| curl https://seu-space.hf.space | |
| ``` | |
| 2. **Upgrade para persistente**: | |
| - Spaces Pro: Sem cold start | |
| - Custo: $5-20/mes | |
| --- | |
| ## Timeouts | |
| ### Request Timeout | |
| **Limite**: 60 segundos | |
| **Impacto**: | |
| - Uploads muito grandes podem falhar | |
| - Geracao longa pode timeout | |
| - Processos pesados podem ser interrompidos | |
| **Solucoes**: | |
| 1. Divida uploads grandes em batches | |
| 2. Limite max_tokens | |
| 3. Use modelos mais rapidos | |
| 4. Otimize queries | |
| --- | |
| ### Idle Timeout | |
| **Free Tier**: Space pausa apos ~15 minutos sem uso | |
| **Pro**: Sem pause | |
| --- | |
| ## Limites de Rede | |
| ### Bandwidth | |
| **Free Tier**: Ilimitado (com fair use) | |
| **Upload**: | |
| - Limite pratico: ~100MB por arquivo | |
| - Multiple uploads: OK | |
| **Download**: | |
| - Responses: Sem limite oficial | |
| - Fair use aplicado | |
| --- | |
| ## Limitacoes de Features | |
| ### Nao Disponivel no Spaces Free | |
| 1. **GPU**: Apenas CPU (ou upgrade) | |
| 2. **Persistencia de dados**: Precisa banco externo | |
| 3. **Scheduled jobs**: Nao suportado | |
| 4. **WebSockets persistentes**: Limitado | |
| 5. **Custom domains**: Apenas em Pro | |
| ### Disponivel | |
| 1. **Gradio interface**: Totalmente suportado | |
| 2. **PostgreSQL externo**: Supabase/Neon/Railway | |
| 3. **API calls**: OpenAI, Anthropic, HF | |
| 4. **File uploads**: Temporarios (perdidos no restart) | |
| 5. **Secrets management**: Sim | |
| --- | |
| ## Comparacao: Free vs Pro | |
| | Feature | Free | Pro ($5/mes) | | |
| |---------|------|--------------| | |
| | **CPU** | 2 vCPU | 4 vCPU | | |
| | **RAM** | 16 GB | 32 GB | | |
| | **Disco** | 50 GB | 100 GB | | |
| | **Cold start** | Sim | Nao | | |
| | **Timeout** | 60s | 120s | | |
| | **Priority queue** | Nao | Sim | | |
| | **Custom domain** | Nao | Sim | | |
| --- | |
| ## Recomendacoes de Uso | |
| ### Para Demo/Portfolio | |
| **Configuracao ideal**: | |
| - Supabase Free (500MB) | |
| - HuggingFace Inference API | |
| - ~100-1000 documentos | |
| - Top_k: 3-5 | |
| - Max_tokens: 256-512 | |
| **Usuarios simultaneos**: 5-10 | |
| --- | |
| ### Para Desenvolvimento | |
| **Configuracao ideal**: | |
| - Neon Free (10GB) | |
| - Qualquer LLM provider | |
| - ~1000-5000 documentos | |
| - Testes de features | |
| **Usuarios simultaneos**: 1-2 (voce) | |
| --- | |
| ### Para Producao | |
| **Nao recomendado Free Tier** | |
| **Upgrade necessario**: | |
| - Spaces Pro ($5-20/mes) | |
| - Supabase Pro ($25/mes) | |
| - LLM provider pago | |
| **Ou**: | |
| - Deploy proprio (Railway, Render, VPS) | |
| - Mais controle e recursos | |
| --- | |
| ## Otimizacoes Recomendadas | |
| ### 1. Cache Embeddings | |
| Ja implementado no template: | |
| ```python | |
| # Embeddings sao cacheados automaticamente | |
| # Evita reprocessar mesmos documentos | |
| ``` | |
| ### 2. Batch Processing | |
| ```python | |
| # Processe multiplos documentos de uma vez | |
| # Mais eficiente que um por um | |
| ``` | |
| ### 3. Lazy Loading | |
| ```python | |
| # Modelos carregam apenas quando necessario | |
| # Reduz cold start | |
| ``` | |
| ### 4. Connection Pooling | |
| ```python | |
| # Reusa conexoes de banco | |
| # Evita overhead de novas conexoes | |
| ``` | |
| --- | |
| ## Monitoramento | |
| ### Metricas Disponiveis | |
| 1. **Logs**: Via interface do Space | |
| 2. **Usage**: Dashboard do HF | |
| 3. **Database**: Dashboard do provider | |
| ### O que Monitorar | |
| - **Cold starts**: Frequencia | |
| - **Timeouts**: Quantas requests falham | |
| - **Database size**: Proximo do limite? | |
| - **API usage**: LLM provider credits | |
| --- | |
| ## Troubleshooting | |
| ### "Application startup timeout" | |
| **Causa**: Modelos muito grandes ou muitas dependencias | |
| **Solucao**: | |
| 1. Reduza dependencias | |
| 2. Use modelos menores | |
| 3. Upgrade para Pro | |
| --- | |
| ### "Request timeout" | |
| **Causa**: Operacao demora >60s | |
| **Solucao**: | |
| 1. Divida em batches menores | |
| 2. Reduza max_tokens | |
| 3. Use modelo mais rapido | |
| --- | |
| ### "Out of memory" | |
| **Causa**: Modelos ou dados muito grandes | |
| **Solucao**: | |
| 1. Use modelo de embedding menor (384d) | |
| 2. Limite batch size | |
| 3. Upgrade para Pro | |
| --- | |
| ### "Database connection failed" | |
| **Causa**: Banco pausado ou limites excedidos | |
| **Solucao**: | |
| 1. Verifique se banco esta ativo | |
| 2. Verifique connection string | |
| 3. Verifique limites de conexao | |
| --- | |
| ## Alternativas ao Spaces | |
| Se limitacoes sao problematicas: | |
| ### Railway | |
| - $5/mes credito | |
| - Mais controle | |
| - Deployment completo | |
| ### Render | |
| - Free tier generoso | |
| - 750h/mes compute | |
| - Hibernacao apos 15min | |
| ### VPS (DigitalOcean, Linode) | |
| - $5-10/mes | |
| - Controle total | |
| - Requer setup manual | |
| ### Local | |
| - Gratuito | |
| - Sem limitacoes | |
| - Apenas para voce | |
| --- | |
| ## Conclusao | |
| Hugging Face Spaces Free e excelente para: | |
| - Demos e portfolios | |
| - Prototipos e MVPs | |
| - Aprendizado e testes | |
| - Projetos pessoais pequenos | |
| **Nao recomendado para**: | |
| - Producao em escala | |
| - Aplicacoes criticas | |
| - Multiplos usuarios simultaneos | |
| - Processamento pesado continuo | |
| Para producao, considere upgrade ou deploy proprio. | |
| --- | |
| ## Recursos Adicionais | |
| - [Hugging Face Spaces Docs](https://huggingface.co/docs/hub/spaces) | |
| - [Spaces Hardware](https://huggingface.co/docs/hub/spaces-overview#hardware-specs) | |
| - [Deploy Alternatives](../DEPLOY.md) | |
| --- | |
| **Feito com muito cafe** | |