rxnn 0.1.17__tar.gz → 0.1.19__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {rxnn-0.1.17 → rxnn-0.1.19}/PKG-INFO +1 -1
  2. {rxnn-0.1.17 → rxnn-0.1.19}/pyproject.toml +1 -1
  3. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/experimental/attention.py +2 -1
  4. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/moe.py +6 -2
  5. {rxnn-0.1.17 → rxnn-0.1.19}/LICENSE +0 -0
  6. {rxnn-0.1.17 → rxnn-0.1.19}/README.md +0 -0
  7. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/__init__.py +0 -0
  8. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/experimental/__init__.py +0 -0
  9. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/experimental/models.py +0 -0
  10. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/experimental/moe.py +0 -0
  11. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/memory/__init__.py +0 -0
  12. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/memory/norm.py +0 -0
  13. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/memory/stm.py +0 -0
  14. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/rxt/__init__.py +0 -0
  15. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/rxt/models.py +0 -0
  16. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/__init__.py +0 -0
  17. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/base.py +0 -0
  18. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/bml.py +0 -0
  19. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/callbacks.py +0 -0
  20. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/dataset.py +0 -0
  21. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/scheduler.py +0 -0
  22. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/training/tokenizer.py +0 -0
  23. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/__init__.py +0 -0
  24. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/attention.py +0 -0
  25. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/ff.py +0 -0
  26. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/layers.py +0 -0
  27. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/mask.py +0 -0
  28. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/models.py +0 -0
  29. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/positional.py +0 -0
  30. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/transformers/sampler.py +0 -0
  31. {rxnn-0.1.17 → rxnn-0.1.19}/src/rxnn/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rxnn
3
- Version: 0.1.17
3
+ Version: 0.1.19
4
4
  Summary: RxNN: Reactive Neural Networks Platform
5
5
  License: Apache-2.0
6
6
  Keywords: deep-learning,ai,machine-learning
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "rxnn"
7
- version = "0.1.17"
7
+ version = "0.1.19"
8
8
  description = "RxNN: Reactive Neural Networks Platform"
9
9
 
10
10
  license = "Apache-2.0"
@@ -100,7 +100,7 @@ class GroupedMoeAttention(GroupedQueryAttention):
100
100
 
101
101
  # Get positions where expert e is used in any group
102
102
  x_slice = x_flat[token_mask]
103
- proj = F.linear(x_slice, w[e], b[e] if b is not None else None)
103
+ proj = F.linear(x_slice, w[e].t(), b[e] if b is not None else None)
104
104
 
105
105
  # Find which groups use this expert for selected tokens
106
106
  group_mask = (indices_flat[token_mask] == e)
@@ -118,6 +118,7 @@ class GroupedMoeAttention(GroupedQueryAttention):
118
118
  # Key/Value processing
119
119
  B, S, D = key.shape
120
120
  key_flat = key.view(-1, D)
121
+ print('key_flat: ', key_flat.shape)
121
122
  weights_k_flat, indices_k_flat = self.router(key_flat)
122
123
  # Reshape back to original dimensions
123
124
  weights_k = weights_k_flat.view(B, S, -1)
@@ -16,22 +16,26 @@ class MoeRouter(nn.Module):
16
16
 
17
17
  def calculate_aux_loss(self, top_k_indices: torch.Tensor, probs: torch.Tensor) -> torch.Tensor:
18
18
  expert_mask = F.one_hot(top_k_indices, self.num_experts).float()
19
+ print('expert mask: ', expert_mask.shape)
19
20
  expert_usage = expert_mask.sum(dim=0).mean(dim=0)
21
+ print('expert usage: ', expert_usage.shape)
20
22
  mean_probs = probs.mean(dim=0)
23
+ print('mean probs: ', mean_probs.shape)
21
24
  return (expert_usage * mean_probs).sum() * self.num_experts
22
25
 
23
26
 
24
27
  def forward(self, x: torch.Tensor):
25
28
  # Input shape: [batch*seq_len, embed_dim]
26
29
  logits = self.gate(x)
30
+ print('router logits: ', logits.shape)
27
31
  probs = F.softmax(logits, dim=-1)
28
-
32
+ print('router probs: ', probs.shape)
29
33
  # Get top-k experts for each token
30
34
  top_k_weights, top_k_indices = probs.topk(self.top_k, dim=-1)
31
35
 
32
36
  # Normalize weights (sum to 1 for each token)
33
37
  top_k_weights = top_k_weights / (top_k_weights.sum(dim=-1, keepdim=True) + 1e-9)
34
-
38
+ print('top k: ', top_k_weights.shape, top_k_indices.shape)
35
39
  # Load Balance Loss
36
40
  self.aux_loss = self.calculate_aux_loss(top_k_indices, probs)
37
41
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes