File size: 11,937 Bytes
49b8205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
"""
CNN-BiGRU — Modelo Multimodal Cooperativo Autoaprendível (v3.0)

Implementação completa de um LLM multimodal com arquitetura CNN-BiGRU cooperativa:
  - Núcleo dual-stream CNN-BiGRU com 3 níveis de pontes (cross-attention, gated cells, fusão)
  - Encoders multimodais (imagem + áudio) com fusão gated
  - Gerador + Verificador + Camada anti-alucinação (lógica fuzzy de Łukasiewicz)
  - Auto-aprendizado: ajuste dinâmico de LR, spectral norm, orthogonal init
  - Hipóteses ativadas por punições (Gumbel-Softmax diferenciável)
  - Synergy search (N tentativas de combinação de hiperparâmetros)
  - Múltiplas funções de perda: L_G, L_V, L_AH, L_reg, L_EWC

v2.0:
  - EWC (Elastic Weight Consolidation) para aprendizado contínuo
  - Context Window com cache KV (sliding window + sink)
  - RoPE (Rotary Position Embeddings)
  - TransformerBlock (CausalSelfAttention + FFN)
  - Self-attention final layer verdadeira (CLS-token + multi-head)
  - Weight tying opcional
  - Inferência autoregressiva REAL via GeneratorCNNBiGRU

NOVO v3.0:
  - Cyclic Reasoning (Raciocínio Cíclico) com convergência antecipada
  - NLG (Natural Language Generation) com Transformer Decoder + Medusa MTP
  - NLP (Natural Language Processing) com 4 tarefas: SeqCls, TokCls, Span, Embed
  - W8A8 Quantization via SmoothQuant (alpha=0.5, per-channel)
  - VQ-VAE-2 Hierárquico (top + bottom codebooks, EMA update)
  - Multi-Token Prediction (MTP) com Medusa Heads
  - Multimodal Multi-Head Attention (cross-modal + modality gate)
  - Long Context Window (1M tokens) via chunked / ring attention
  - Monitor completo (treino, inferência, evolução, sistema)
"""
from __future__ import annotations

__version__ = "3.0.0"
__author__ = "CNN-BiGRU Project"

# Versão e metadados
__all__ = [
    "__version__",
    "__author__",
    # Tokenizer
    "BBPETokenizer",
    # Utils
    "MemoryOptimizer",
    "SemanticEmbedder",
    "EWCConfig",
    "EWCState",
    "W8A8Config",
    "SmoothQuantizer",
    "quantize_model_w8a8",
    "estimate_memory_savings",
    "VQVAE2Config",
    "VQVAE2",
    "Monitor",
    "get_monitor",
    # Runtime
    "optimize_xeon_environment",
    "get_runtime_info",
    # Data
    "MultimodalStreamingDataset",
    "collate_multimodal",
    # Models
    "CooperativeCNNBiGRU",
    "MultimodalCNNBiGRU",
    "ImageEncoder",
    "AudioEncoder",
    "MultimodalFusion",
    "GeneratorCNNBiGRU",
    "VerifierCNNBiGRU",
    "AntiHallucinationLayer",
    "RotaryPositionEmbedding",
    "CausalSelfAttention",
    "TransformerBlock",
    "TransformerDecoderStack",
    "KVCache",
    "ContextWindowManager",
    "ContextWindowConfig",
    "LongContextConfig",
    "LongContextManager",
    "make_long_context_window",
    "CyclicReasoningConfig",
    "CyclicReasoning",
    "MedusaConfig",
    "MedusaMTP",
    "MedusaHead",
    "medusa_tree_decode",
    "NLGConfig",
    "NLGModule",
    "NLPConfig",
    "NLPModule",
    "SequenceClassificationHead",
    "TokenClassificationHead",
    "SpanDetectionHead",
    "EmbeddingHead",
    "MultimodalAttentionConfig",
    "MultimodalMultiHeadAttention",
    "CrossModalAttention",
    "ModalityGate",
    # Losses
    "LossConfig",
    "MultiLoss",
    # Training
    "TrainerConfig",
    "CooperativeTrainer",
    "AutoLearnConfig",
    "AutoLearner",
    "HypothesisConfig",
    "HypothesisController",
    "SynergySearcher",
    # Inference
    "generate_with_sampling",
    "evaluate_perplexity",
]


# Lazy imports — apenas quando acessado
def __getattr__(name: str):
    if name in ("BBPETokenizer",):
        from .tokenizer.bbpe_tokenizer import BBPETokenizer
        return BBPETokenizer
    if name in ("MemoryOptimizer",):
        from .utils.memory_optimizer import MemoryOptimizer
        return MemoryOptimizer
    if name in ("SemanticEmbedder",):
        from .utils.semantic_embeddings import SemanticEmbedder
        return SemanticEmbedder
    if name in ("EWCConfig", "EWCState"):
        from .utils.ewc import EWCConfig, EWCState
        if name == "EWCConfig":
            return EWCConfig
        return EWCState
    # W8A8 Quantization
    if name in ("W8A8Config", "SmoothQuantizer"):
        from .utils.quantization import W8A8Config, SmoothQuantizer
        if name == "W8A8Config":
            return W8A8Config
        return SmoothQuantizer
    if name == "quantize_model_w8a8":
        from .utils.quantization import quantize_model_w8a8
        return quantize_model_w8a8
    if name == "estimate_memory_savings":
        from .utils.quantization import estimate_memory_savings
        return estimate_memory_savings
    # VQ-VAE-2
    if name in ("VQVAE2Config", "VQVAE2"):
        from .utils.vqvae2 import VQVAE2Config, VQVAE2
        if name == "VQVAE2Config":
            return VQVAE2Config
        return VQVAE2
    # Monitor
    if name in ("Monitor", "get_monitor"):
        from .utils.monitoring import Monitor, get_monitor
        if name == "Monitor":
            return Monitor
        return get_monitor
    # Runtime
    if name in ("optimize_xeon_environment", "get_runtime_info"):
        from .utils import xeon_runtime
        if name == "optimize_xeon_environment":
            return xeon_runtime.optimize_xeon_environment
        return xeon_runtime.get_runtime_info
    # Data
    if name in ("MultimodalStreamingDataset", "collate_multimodal"):
        from .data.streaming_dataset import MultimodalStreamingDataset, collate_multimodal
        if name == "MultimodalStreamingDataset":
            return MultimodalStreamingDataset
        return collate_multimodal
    # Models
    if name == "CooperativeCNNBiGRU":
        from .models.cooperative_bigru import CooperativeCNNBiGRU
        return CooperativeCNNBiGRU
    if name == "MultimodalCNNBiGRU":
        from .models.multimodal_model import MultimodalCNNBiGRU
        return MultimodalCNNBiGRU
    if name in ("ImageEncoder", "AudioEncoder", "MultimodalFusion"):
        from .models.multimodal_encoders import ImageEncoder, AudioEncoder, MultimodalFusion
        if name == "ImageEncoder":
            return ImageEncoder
        if name == "AudioEncoder":
            return AudioEncoder
        return MultimodalFusion
    if name in ("GeneratorCNNBiGRU", "VerifierCNNBiGRU", "AntiHallucinationLayer"):
        from .models.generator_verifier import (
            GeneratorCNNBiGRU,
            VerifierCNNBiGRU,
            AntiHallucinationLayer,
        )
        if name == "GeneratorCNNBiGRU":
            return GeneratorCNNBiGRU
        if name == "VerifierCNNBiGRU":
            return VerifierCNNBiGRU
        return AntiHallucinationLayer
    if name == "RotaryPositionEmbedding":
        from .models.rope import RotaryPositionEmbedding
        return RotaryPositionEmbedding
    if name in ("CausalSelfAttention", "TransformerBlock", "TransformerDecoderStack"):
        from .models.transformer_block import (
            CausalSelfAttention,
            TransformerBlock,
            TransformerDecoderStack,
        )
        if name == "CausalSelfAttention":
            return CausalSelfAttention
        if name == "TransformerBlock":
            return TransformerBlock
        return TransformerDecoderStack
    # Context window (incl. 1M tokens)
    if name in ("KVCache", "ContextWindowManager", "ContextWindowConfig"):
        from .models.context_window import KVCache, ContextWindowManager, ContextWindowConfig
        if name == "KVCache":
            return KVCache
        if name == "ContextWindowManager":
            return ContextWindowManager
        return ContextWindowConfig
    if name in ("LongContextConfig", "LongContextManager", "make_long_context_window"):
        from .models.context_window import (
            LongContextConfig,
            LongContextManager,
            make_long_context_window,
        )
        if name == "LongContextConfig":
            return LongContextConfig
        if name == "LongContextManager":
            return LongContextManager
        return make_long_context_window
    # Cyclic Reasoning
    if name in ("CyclicReasoningConfig", "CyclicReasoning"):
        from .models.cyclic_reasoning import CyclicReasoningConfig, CyclicReasoning
        if name == "CyclicReasoningConfig":
            return CyclicReasoningConfig
        return CyclicReasoning
    # Medusa MTP
    if name in ("MedusaConfig", "MedusaMTP", "MedusaHead", "medusa_tree_decode"):
        from .models.medusa_heads import (
            MedusaConfig,
            MedusaMTP,
            MedusaHead,
            medusa_tree_decode,
        )
        if name == "MedusaConfig":
            return MedusaConfig
        if name == "MedusaMTP":
            return MedusaMTP
        if name == "MedusaHead":
            return MedusaHead
        return medusa_tree_decode
    # NLG
    if name in ("NLGConfig", "NLGModule"):
        from .models.nlg import NLGConfig, NLGModule
        if name == "NLGConfig":
            return NLGConfig
        return NLGModule
    # NLP
    if name in ("NLPConfig", "NLPModule",
                "SequenceClassificationHead", "TokenClassificationHead",
                "SpanDetectionHead", "EmbeddingHead"):
        from .models.nlp import (
            NLPConfig,
            NLPModule,
            SequenceClassificationHead,
            TokenClassificationHead,
            SpanDetectionHead,
            EmbeddingHead,
        )
        if name == "NLPConfig":
            return NLPConfig
        if name == "NLPModule":
            return NLPModule
        if name == "SequenceClassificationHead":
            return SequenceClassificationHead
        if name == "TokenClassificationHead":
            return TokenClassificationHead
        if name == "SpanDetectionHead":
            return SpanDetectionHead
        return EmbeddingHead
    # Multimodal Attention
    if name in ("MultimodalAttentionConfig", "MultimodalMultiHeadAttention",
                "CrossModalAttention", "ModalityGate"):
        from .models.multimodal_attention import (
            MultimodalAttentionConfig,
            MultimodalMultiHeadAttention,
            CrossModalAttention,
            ModalityGate,
        )
        if name == "MultimodalAttentionConfig":
            return MultimodalAttentionConfig
        if name == "MultimodalMultiHeadAttention":
            return MultimodalMultiHeadAttention
        if name == "CrossModalAttention":
            return CrossModalAttention
        return ModalityGate
    # Losses
    if name in ("LossConfig", "MultiLoss"):
        from .losses.losses import LossConfig, MultiLoss
        if name == "LossConfig":
            return LossConfig
        return MultiLoss
    # Training
    if name in ("TrainerConfig", "CooperativeTrainer"):
        from .training.trainer import TrainerConfig, CooperativeTrainer
        if name == "TrainerConfig":
            return TrainerConfig
        return CooperativeTrainer
    if name in ("AutoLearnConfig", "AutoLearner"):
        from .training.auto_learner import AutoLearnConfig, AutoLearner
        if name == "AutoLearnConfig":
            return AutoLearnConfig
        return AutoLearner
    if name in ("HypothesisConfig", "HypothesisController", "SynergySearcher"):
        from .training.hypothesis_controller import (
            HypothesisConfig,
            HypothesisController,
            SynergySearcher,
        )
        if name == "HypothesisConfig":
            return HypothesisConfig
        if name == "HypothesisController":
            return HypothesisController
        return SynergySearcher
    # Inference
    if name in ("generate_with_sampling", "evaluate_perplexity"):
        from .inference.inference import generate_with_sampling, evaluate_perplexity
        if name == "generate_with_sampling":
            return generate_with_sampling
        return evaluate_perplexity
    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")