|
Download cnn_bigru/README.md from PowerMachine/CNN-BiGRU: direct link, hf CLI and curl.
- Browser
- Download file 12.3 kB
-
https://huggingface.co/PowerMachine/CNN-BiGRU/resolve/main/cnn_bigru/README.md
- Command line
-
hf download hf://PowerMachine/CNN-BiGRU/cnn_bigru/README.md
-
curl -L -o README.md https://huggingface.co/PowerMachine/CNN-BiGRU/resolve/main/cnn_bigru/README.md
12.3 kB
CNN-BiGRU — Modelo Multimodal Cooperativo Autoaprendível (v2.0)
Implementação completa de um LLM multimodal com arquitetura CNN-BiGRU cooperativa, inspirada nos projetos de referência:
PowerMachine/gru-ring-v13-9-2/xavante_work/PowerMachine/BiGRU_T_version/src/bigru_t/dados.txt(pseudocódigo matemático completo)
O projeto é diferente dos anteriores: agrupa todos os componentes multimodais (texto + imagem + áudio) num único pipeline cooperativo, com divisão por competências.
Novidades v2.0
Esta versão adiciona os módulos faltantes identificados na análise matemática
(docs/MATH_ANALYSIS.md):
Novos Módulos
| Módulo | Função | Arquivo |
|---|---|---|
| EWC (Elastic Weight Consolidation) | Aprendizado contínuo sem catastrophic forgetting via matriz de Fisher | utils/ewc.py |
| Context Window | Janela deslizante com cache KV para sequências longas (Sink+Sliding / StreamingLLM) | models/context_window.py |
| RoPE (Rotary Position Embeddings) | Codificação posicional rotacional (atenção relativa) | models/rope.py |
| TransformerBlock | CausalSelfAttention + FFN com Pre-LN (decoder-only, estilo GPT) | models/transformer_block.py |
Bug Fixes Críticos
cooperative_bigru.py:SelfAttentionSummaryagora é uma self-attention TRUE (CLS-token + multi-head + learned Q/K/V), não mais mean-pool.hypothesis_controller.py: gate logic corrigido —x_projagora é uma projeção LINEAR REAL do input (não maiscombined, o que tornava o gate inefetivo).generator_verifier.py:enc_outagora usa a sequência temporal REAL do encoder (não maisfused.unsqueeze(1).expand(...)que repetia o mesmo vetor).trainer.py: verificador REALMENTE chamado (não proxy); saída da hipótese REALMENTE usada (não só flag); EWC integrado à perda total.losses.py: todos ostorch.tensor(0.0)agora usamdevice=correto.auto_learner.py:_spec_uregistrado como buffer (migra com.to(device));l2_regadicionado aoAutoLearnConfig;estimate_curvatureagora usatry/finally.inference.py: geração autoregressiva REAL via GeneratorCNNBiGRU (não single-step).streaming_dataset.py: synthetic fallback agora é ALCANÇÁVEL quando HF falha silenciosamente; token HF é limpo após uso.multimodal_model.py:attn_mask_a/attn_mask_bagora são usados; weight tying opcional.
Características Principais
1. Arquitetura Cooperativa de 3 Níveis (do dados.txt)
| Nível | Mecanismo | Descrição |
|---|---|---|
| 1 | Cross-Attention Global | Ponte de cooperação pós-CNN entre redes A e B, com máscaras de padding |
| 2 | Célula GRU Cooperativa Passo-a-Passo | CellStepCooperativaComAtenuacao com porta Gated (alfa ∈ [0,1]) |
| 3 | Self-Attention Final + Fusão | Self-attention TRUE (CLS-token) + concatenação (128+128=256) |
2. Multimodal (Texto + Imagem + Áudio)
- Texto: Dual-stream CNN-BiGRU cooperativo (streams A e B)
- Imagem:
ImageEncoder(CNN 2D → flatten → projeção) - Áudio:
AudioEncoder(CNN 1D sobre espectrograma) - Fusão:
MultimodalFusioncom gated fusion por modalidade
3. Autoaprendizado (parâmetros matematicamente ajustados)
Conforme dados.txt seções 9-10:
- Ajuste Dinâmico de LR:
fator_G = exp(-κ * ||grad_G||) * (1 + v_media) / 2fator_V = exp(-κ * ||grad_V||) / (1 + L_V_media)
- Controle de Gradiente: clipping L2 + spectral normalization (power iteration, buffer registrado)
- Inicialização Ortogonal: matrizes recorrentes e convolucionais (com log de fallback)
- Estimativa de Curvatura: aproximação por diferenças finas (com try/finally)
4. EWC (Elastic Weight Consolidation) — NOVO v2.0
- Cálculo da diagonal da Matriz de Fisher (empirical Fisher)
- Online EWC: $F^{\text{agg}} = \gamma F^{\text{prev}} + (1-\gamma) F^{\text{new}}$
- Penalidade diferenciável: $L_{\text{EWC}} = \sum_i \frac{\lambda}{2} F_i (\theta_i - \theta_i^*)^2$
- Integração à perda total: $L_{\text{total}} = \alpha L_G + \beta L_V + \gamma L_{AH} + \delta L_{\text{reg}} + L_{\text{EWC}}$
5. Context Window — NOVO v2.0
- Cache KV para CausalSelfAttention (speedup ~T× em inferência)
- Sliding Window + Sink (StreamingLLM): mantém $k$ tokens iniciais + últimos $L_{\max}-k$
- Estratégias:
sliding,sink_sliding(default),recompute - Integração com inferência:
generate_with_sampling(context_window=cw)
6. RoPE (Rotary Position Embeddings) — NOVO v2.0
- Codificação posicional rotacional: $\theta_i = 10000^{-2i/d}$
- Propriedade relacional: $\langle \text{RoPE}(q, m), \text{RoPE}(k, n) \rangle = \langle \text{RoPE}(q, m-n), k \rangle$
- Cache de frequências como buffer (migra com
.to(device)) - Extensão dinâmica para sequências longas
7. TransformerBlock (Decoder-Only) — NOVO v2.0
CausalSelfAttention: multi-head, máscara triangular inferior, QKV unificadaTransformerBlock: Pre-LN + residual + FFN (Linear → GELU → Linear)TransformerDecoderStack: N camadas + LayerNorm final + LM head- Weight tying opcional (compartilha embedding ↔ lm_head)
- Suporte a cache KV multicamada para geração autoregressiva
8. Mecanismo de Hipóteses (ativado em punições)
Quando o verificador pune um passo (v < threshold), ativa:
- N hipóteses paralelas com transforms lineares diferentes
- Seleção via Gumbel-Softmax (diferenciável)
- Porta de ativação baseada em v — CORRIGIDA v2.0: agora a saída das hipóteses é
REALMENTE usada (interpolação
gate * combined + (1-gate) * x_proj)
9. Synergy Search (N tentativas de acerto)
No início de cada época, busca N combinações de hiperparâmetros (pesos das perdas) e seleciona a configuração de menor perda.
10. Múltiplas Funções de Perda
Conforme dados.txt seção 8:
L_total = α * L_G_total + β * L_V + γ * L_AH + δ * L_reg + L_EWC
L_G_total = L_G + λ * L_penal_linear + μ * L_penal_exp
L_penal_linear = Σ (1 - v_t) (todos os passos)
L_penal_exp = Σ_{v_t < threshold} exp(γ * (1 - v_t)) (apenas graves)
L_V = BCE(v_t, rotulo_real)
L_AH = Σ (1 - τ_t) (anti-alucinação fuzzy)
L_reg = L2 + curvatura
L_EWC = Σ (λ/2) * F * (θ - θ*)² [NOVO v2.0]
11. Camada Anti-Alucinação (Lógica Fuzzy de Łukasiewicz)
NOT(x) = 1 - sigmoid(x)
AND(x,y) = relu(sigmoid(x) + sigmoid(y) - 1)
OR(x,y) = min(1, sigmoid(x) + sigmoid(y))
IMP(x,y) = min(1, 1 - sigmoid(x) + sigmoid(y))
12. Inferência Avançada
- Temperatura, Top-K, Top-P (Nucleus Sampling)
- Presence Penalty, Frequency Penalty
- Geração autoregressiva REAL via GeneratorCNNBiGRU (v2.0)
- Cache KV opcional via ContextWindowManager (v2.0)
- Avaliação de Perplexidade (PPL) com generator real
Estrutura por Competências
cnn_bigru/
├── tokenizer/ # Competência: tokenização
│ └── bbpe_tokenizer.py # BBPE byte-level tokenizer
├── utils/ # Competência: utilitários
│ ├── xeon_runtime.py # Ativação Intel Xeon (AVX512+AMX+IPEX)
│ ├── memory_optimizer.py # Otimização de memória (AMP, GC, offload)
│ ├── semantic_embeddings.py # Embeddings semânticos (Sinkhorn OT + IB)
│ └── ewc.py # NOVO v2.0: Elastic Weight Consolidation
├── data/ # Competência: carregamento de dados
│ └── streaming_dataset.py # Dataset streaming multimodal (com fallback)
├── models/ # Competência: modelos neurais
│ ├── cooperative_bigru.py # Núcleo CNN-BiGRU cooperativo (self-attn TRUE)
│ ├── multimodal_encoders.py # Encoders de imagem/áudio + fusão
│ ├── multimodal_model.py # Modelo multimodal completo (weight tying opc.)
│ ├── generator_verifier.py # Gerador + Verificador + Anti-alucinação
│ ├── rope.py # NOVO v2.0: Rotary Position Embeddings
│ ├── transformer_block.py # NOVO v2.0: CausalSelfAttention + TransformerBlock
│ └── context_window.py # NOVO v2.0: Sliding window + KV cache
├── losses/ # Competência: funções de perda
│ └── losses.py # Multi-loss + EWC penalty (device-safe)
├── training/ # Competência: treinamento
│ ├── auto_learner.py # Ajuste dinâmico LR + spectral norm (buffer)
│ ├── hypothesis_controller.py # Hipóteses + synergy search (gate fix)
│ └── trainer.py # Loop cooperativo + EWC + verificador real
├── inference/ # Competência: inferência
│ └── inference.py # Sampling + PPL + generator real + context window
├── tests/ # Competência: testes
│ └── test_50_samples.py # Teste de 50 amostras (com novos módulos v2.0)
├── scripts/ # Competência: scripts auxiliares
│ └── push_to_hf.py # Upload ao HF (upload_folder + retry)
├── docs/ # Competência: documentação
│ └── MATH_ANALYSIS.md # NOVO v2.0: análise matemática de EWC + Context Window
└── requirements.txt
Como Executar
Requisitos
pip install torch tokenizers huggingface_hub datasets psutil tqdm numpy
Teste de 50 Amostras (com novos módulos v2.0)
python -m cnn_bigru.tests.test_50_samples
O teste executa:
- Ativação do runtime Xeon
- Treino do BBPE tokenizer
- Criação do dataset streaming (50 amostras)
- Instanciação dos modelos
- Teste isolado dos novos módulos v2.0:
- EWC (Fisher, consolidate, penalty)
- Context Window (cache KV, eviction)
- RoPE (preservação de norma)
- TransformerBlock (forward, cache, weight tying) 5'. Treinamento cooperativo com EWC + synergy + hipóteses + auto-learn
- Inferência com generator + context window
- Avaliação de perplexidade com generator
- Relatório de erros lógicos ou falhas
Resultado Esperado
✓ NENHUM ERRO CRÍTICO encontrado
Amostras processadas: 50
Synergy attempts: 3
Hypothesis activations: variável
EWC active: True
Context Window active: True
Used generator for inference: True
STATUS: SUCESSO
Análise Matemática
A inclusão de EWC e Context Window foi analisada matematicamente em
docs/MATH_ANALYSIS.md, cobrendo:
- EWC: formulação da Fisher Information, integração na perda, garantia de Laplace
- Context Window: complexidade computacional, políticas de evicção (sliding, sink+sliding, recompute)
- Demais elementos faltantes: RoPE, CausalSelfAttention, Self-Attention final, etc.
Referências
dados.txt(arquivo de entrada com pseudocódigo completo)huggingface.co/PowerMachine/gru-ring-v13-9-2/tree/main/xavante_work/huggingface.co/PowerMachine/BiGRU_T_version/blob/main/src/bigru_t/tokenizer/bbpe_tokenizer.pyhuggingface.co/PowerMachine/gru-ring-v13-9-2/blob/main/xavante_work/xavante/utils/semantic_embeddings.pyhuggingface.co/PowerMachine/gru-ring-v13-9-2/blob/main/xavante_work/xavante/utils/memory_optimizer.pyhuggingface.co/PowerMachine/gru-ring-v13-9-2/tree/main/xavante_work/xavante/traininghuggingface.co/PowerMachine/BiGRU_T_version/blob/main/src/bigru_t/utils/xeon_runtime.pyhuggingface.co/PowerMachine/gru-ring-v13-9-2/blob/main/xavante_work/flexnet/streaming_datasets_v13_9.py
Notas de Segurança
- HF_TOKEN: usado apenas para push inicial ao repositório. Após o push, o token é removido do ambiente e dos scripts. Os scripts publicados não contêm nenhum token embutido.
- Exceções: todos os módulos usam
try/exceptcom logging adequado para garantir robustez. O treinamento continua mesmo se alguns batches falharem. - Curvatura:
estimate_curvatureagora usatry/finallypara garantir restauração dos parâmetros mesmo em caso de exceção.
Licença
MIT