x-transformers 2.3.2__tar.gz → 2.3.4__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 (62) hide show
  1. {x_transformers-2.3.2 → x_transformers-2.3.4}/PKG-INFO +1 -1
  2. {x_transformers-2.3.2 → x_transformers-2.3.4}/pyproject.toml +1 -1
  3. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/continuous.py +26 -0
  4. {x_transformers-2.3.2 → x_transformers-2.3.4}/.github/FUNDING.yml +0 -0
  5. {x_transformers-2.3.2 → x_transformers-2.3.4}/.github/workflows/python-publish.yml +0 -0
  6. {x_transformers-2.3.2 → x_transformers-2.3.4}/.github/workflows/python-test.yaml +0 -0
  7. {x_transformers-2.3.2 → x_transformers-2.3.4}/.gitignore +0 -0
  8. {x_transformers-2.3.2 → x_transformers-2.3.4}/LICENSE +0 -0
  9. {x_transformers-2.3.2 → x_transformers-2.3.4}/README.md +0 -0
  10. {x_transformers-2.3.2 → x_transformers-2.3.4}/data/README.md +0 -0
  11. {x_transformers-2.3.2 → x_transformers-2.3.4}/data/enwik8.gz +0 -0
  12. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/all-attention.png +0 -0
  13. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/attention-on-attention.png +0 -0
  14. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/cosine-sim-attention.png +0 -0
  15. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/deepnorm.png +0 -0
  16. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/dynamic-pos-bias-linear.png +0 -0
  17. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/dynamic-pos-bias-log.png +0 -0
  18. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/dynamic-pos-bias-sinusoidal.png +0 -0
  19. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/dynamic-pos-bias.png +0 -0
  20. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/enhanced-recurrence.png +0 -0
  21. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/fcm.png +0 -0
  22. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/ffglu.png +0 -0
  23. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/flash-attention.png +0 -0
  24. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/gate_values.png +0 -0
  25. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/gating.png +0 -0
  26. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/length-extrapolation-scale.png +0 -0
  27. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/macaron-1.png +0 -0
  28. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/macaron-2.png +0 -0
  29. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/memory-transformer.png +0 -0
  30. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/normformer.png +0 -0
  31. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/pia.png +0 -0
  32. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/qknorm-analysis.png +0 -0
  33. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/resi_dual.png +0 -0
  34. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/residual_attn.png +0 -0
  35. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/rezero.png +0 -0
  36. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/rotary.png +0 -0
  37. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/sandwich-2.png +0 -0
  38. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/sandwich.png +0 -0
  39. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/sandwich_norm.png +0 -0
  40. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/scalenorm.png +0 -0
  41. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/talking-heads.png +0 -0
  42. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/topk-attention.png +0 -0
  43. {x_transformers-2.3.2 → x_transformers-2.3.4}/images/xval.png +0 -0
  44. {x_transformers-2.3.2 → x_transformers-2.3.4}/tests/test_x_transformers.py +0 -0
  45. {x_transformers-2.3.2 → x_transformers-2.3.4}/train_belief_state.py +0 -0
  46. {x_transformers-2.3.2 → x_transformers-2.3.4}/train_copy.py +0 -0
  47. {x_transformers-2.3.2 → x_transformers-2.3.4}/train_entropy_tokenizer.py +0 -0
  48. {x_transformers-2.3.2 → x_transformers-2.3.4}/train_enwik8.py +0 -0
  49. {x_transformers-2.3.2 → x_transformers-2.3.4}/train_length_extrapolate.py +0 -0
  50. {x_transformers-2.3.2 → x_transformers-2.3.4}/train_parity.py +0 -0
  51. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/__init__.py +0 -0
  52. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/attend.py +0 -0
  53. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/autoregressive_wrapper.py +0 -0
  54. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/belief_state_wrapper.py +0 -0
  55. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/dpo.py +0 -0
  56. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/entropy_based_tokenizer.py +0 -0
  57. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/multi_input.py +0 -0
  58. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/neo_mlp.py +0 -0
  59. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/nonautoregressive_wrapper.py +0 -0
  60. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/x_transformers.py +0 -0
  61. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/xl_autoregressive_wrapper.py +0 -0
  62. {x_transformers-2.3.2 → x_transformers-2.3.4}/x_transformers/xval.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: x-transformers
3
- Version: 2.3.2
3
+ Version: 2.3.4
4
4
  Summary: X-Transformers
5
5
  Project-URL: Homepage, https://pypi.org/project/x-transformers/
6
6
  Project-URL: Repository, https://github.com/lucidrains/x-transformers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "x-transformers"
3
- version = "2.3.2"
3
+ version = "2.3.4"
4
4
  description = "X-Transformers"
5
5
  authors = [
6
6
  { name = "Phil Wang", email = "lucidrains@gmail.com" }
@@ -123,6 +123,7 @@ class ContinuousTransformerWrapper(Module):
123
123
  return_intermediates = False,
124
124
  return_mems = False,
125
125
  mask = None,
126
+ lens = None,
126
127
  return_attn = False,
127
128
  mems = None,
128
129
  mem_masks = None,
@@ -133,6 +134,16 @@ class ContinuousTransformerWrapper(Module):
133
134
  ):
134
135
  batch, seq, orig_mask, device = *x.shape[:2], mask, x.device
135
136
 
137
+ # maybe seq lengths passed in
138
+
139
+ if exists(lens):
140
+ assert not exists(mask), 'either `mask` or `lens` passed in, but not both'
141
+ seq_arange = torch.arange(seq, device = device)
142
+
143
+ mask = einx.less('j, i -> i j', seq_arange, lens)
144
+
145
+ # project in + positional embedding
146
+
136
147
  x = self.project_in(x)
137
148
  x = x + self.pos_emb(x, pos = pos)
138
149
 
@@ -282,7 +293,22 @@ class ContinuousAutoregressiveWrapper(Module):
282
293
 
283
294
  assert 'prepend_embeds' not in kwargs
284
295
 
296
+ # lens
297
+
298
+ lens = kwargs.pop('lens', None)
299
+
300
+ if exists(lens):
301
+ assert 'mask' not in kwargs, 'either `mask` or `lens` passed in, but not both'
302
+ seq_len, device = inp.shape[1], inp.device
303
+ seq_arange = torch.arange(seq_len, device = device)
304
+ mask = einx.less('j, i -> i j', seq_arange, lens)
305
+
306
+ kwargs['mask'] = mask
307
+
308
+ # mask
309
+
285
310
  mask = kwargs.get('mask', None)
311
+
286
312
  if exists(mask) and mask.shape[1] == x.shape[1]:
287
313
  mask = mask[:, :-1]
288
314
  kwargs['mask'] = mask
File without changes
File without changes