lalamo 0.5.2__py3-none-any.whl → 0.5.4__py3-none-any.whl

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 (54) hide show
  1. lalamo/__init__.py +15 -2
  2. lalamo/data/__init__.py +0 -1
  3. lalamo/data/huggingface_message.py +1 -0
  4. lalamo/main.py +167 -18
  5. lalamo/message_processor.py +2 -3
  6. lalamo/model_import/common.py +120 -27
  7. lalamo/model_import/decoder_configs/__init__.py +4 -2
  8. lalamo/model_import/decoder_configs/common.py +62 -21
  9. lalamo/model_import/decoder_configs/executorch.py +14 -9
  10. lalamo/model_import/decoder_configs/huggingface/__init__.py +4 -2
  11. lalamo/model_import/decoder_configs/huggingface/common.py +38 -12
  12. lalamo/model_import/decoder_configs/huggingface/gemma2.py +15 -10
  13. lalamo/model_import/decoder_configs/huggingface/gemma3.py +19 -16
  14. lalamo/model_import/decoder_configs/huggingface/gpt_oss.py +16 -10
  15. lalamo/model_import/decoder_configs/huggingface/llama.py +16 -11
  16. lalamo/model_import/decoder_configs/huggingface/llamba.py +23 -14
  17. lalamo/model_import/decoder_configs/huggingface/mistral.py +16 -11
  18. lalamo/model_import/decoder_configs/huggingface/modern_bert.py +241 -0
  19. lalamo/model_import/decoder_configs/huggingface/qwen2.py +17 -10
  20. lalamo/model_import/decoder_configs/huggingface/qwen3.py +15 -10
  21. lalamo/model_import/loaders/__init__.py +3 -2
  22. lalamo/model_import/loaders/executorch.py +24 -12
  23. lalamo/model_import/loaders/huggingface.py +258 -30
  24. lalamo/model_import/model_specs/__init__.py +4 -2
  25. lalamo/model_import/model_specs/common.py +8 -2
  26. lalamo/model_import/model_specs/gemma.py +5 -1
  27. lalamo/model_import/model_specs/huggingface.py +1 -1
  28. lalamo/model_import/model_specs/mirai.py +20 -0
  29. lalamo/models/__init__.py +10 -0
  30. lalamo/models/common.py +81 -0
  31. lalamo/{language_model.py → models/language_model.py} +32 -49
  32. lalamo/models/router.py +59 -0
  33. lalamo/modules/__init__.py +33 -16
  34. lalamo/modules/classifier.py +339 -0
  35. lalamo/modules/common.py +6 -3
  36. lalamo/modules/decoder.py +52 -180
  37. lalamo/modules/mlp.py +28 -5
  38. lalamo/modules/normalization.py +13 -8
  39. lalamo/modules/token_mixers/attention.py +10 -6
  40. lalamo/modules/token_mixers/state/kv_cache.py +14 -4
  41. lalamo/modules/transformer.py +273 -0
  42. lalamo/modules/{decoder_layer.py → transformer_layer.py} +62 -45
  43. lalamo/speculator/__init__.py +6 -2
  44. lalamo/speculator/estimator.py +91 -0
  45. lalamo/speculator/inference.py +28 -9
  46. lalamo/speculator/ngram.py +7 -3
  47. lalamo/speculator/utils.py +4 -2
  48. {lalamo-0.5.2.dist-info → lalamo-0.5.4.dist-info}/METADATA +1 -1
  49. lalamo-0.5.4.dist-info/RECORD +88 -0
  50. lalamo-0.5.2.dist-info/RECORD +0 -80
  51. {lalamo-0.5.2.dist-info → lalamo-0.5.4.dist-info}/WHEEL +0 -0
  52. {lalamo-0.5.2.dist-info → lalamo-0.5.4.dist-info}/entry_points.txt +0 -0
  53. {lalamo-0.5.2.dist-info → lalamo-0.5.4.dist-info}/licenses/LICENSE +0 -0
  54. {lalamo-0.5.2.dist-info → lalamo-0.5.4.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,15 @@
1
+ import functools
1
2
  from collections.abc import Callable, Iterable
2
3
  from itertools import batched, chain
3
4
  from typing import NamedTuple
4
5
 
6
+ import jax
5
7
  import jax.numpy as jnp
6
8
 
7
9
  from lalamo.data.lalamo_completions import LalamoCompletion
8
10
  from lalamo.data.utils import get_prefixes_ending_in_user_message
9
- from lalamo.language_model import LanguageModel
10
11
  from lalamo.message_processor import Message
12
+ from lalamo.models import LanguageModel
11
13
 
12
14
 
13
15
  class CollectTracesEvent(NamedTuple):
@@ -25,6 +27,21 @@ def inference_collect_traces(
25
27
  tokens_to_generate: int | None = None,
26
28
  progress_callback: Callable[[CollectTracesEvent], None] | None = None,
27
29
  ) -> Iterable[LalamoCompletion]:
30
+ generate_tokens_compiled = (
31
+ jax.jit(
32
+ functools.partial(
33
+ model.generate_tokens,
34
+ max_output_length=max_output_length,
35
+ num_top_logits_to_return=num_top_logits_to_collect,
36
+ ),
37
+ )
38
+ .lower(
39
+ prompt_token_ids=jax.ShapeDtypeStruct((batch_size, max_input_length), jnp.int32),
40
+ prompt_lengths_without_padding=jax.ShapeDtypeStruct((batch_size,), jnp.int32),
41
+ )
42
+ .compile()
43
+ )
44
+
28
45
  prefixes = chain.from_iterable(map(get_prefixes_ending_in_user_message, conversations))
29
46
 
30
47
  tokenized_prefixes = map(model.message_processor.tokenize_request, prefixes)
@@ -32,22 +49,24 @@ def inference_collect_traces(
32
49
 
33
50
  tokens_generated, sequences_processed = 0, 0
34
51
 
35
- for batch in batched(filtered_prefixes, n=batch_size):
52
+ for real_batch in batched(filtered_prefixes, n=batch_size):
53
+ batch_padding = batch_size - len(real_batch)
54
+ batch = (*real_batch, *(([0],) * batch_padding))
55
+
36
56
  length_without_padding = jnp.array(list(map(len, batch)))
37
- max_len = max(map(len, batch))
38
57
 
39
58
  padded = jnp.array(
40
- [jnp.pad(jnp.array(tokens), (0, max_len - len(tokens)), constant_values=0) for tokens in batch],
59
+ [jnp.pad(jnp.array(tokens), (0, max_input_length - len(tokens)), constant_values=0) for tokens in batch],
41
60
  )
42
61
 
43
- generated = model.generate_tokens(
44
- padded,
62
+ generated = generate_tokens_compiled(
63
+ prompt_token_ids=padded,
45
64
  prompt_lengths_without_padding=length_without_padding,
46
- max_output_length=max_output_length,
47
- num_top_logits_to_return=num_top_logits_to_collect,
48
65
  )
66
+
49
67
  assert generated.top_k_token_ids is not None and generated.top_k_token_logits is not None
50
- for conv_idx in range(batch_size):
68
+
69
+ for conv_idx in range(len(real_batch)):
51
70
  token_ids = generated.token_ids[conv_idx].tolist()
52
71
  seqlen = next((i + 1 for i, t in enumerate(token_ids) if t in model.stop_token_ids), len(token_ids))
53
72
  if tokens_to_generate is not None:
@@ -23,12 +23,14 @@ def seqhash(tokens: Iterable[int], size: int) -> int:
23
23
 
24
24
  return xxhash.xxh3_64_intdigest(packed) % size
25
25
 
26
- def padded_sliding_window(seq: Iterable[int], size:int, pad:int) -> Iterable[tuple[int, ...]]:
26
+
27
+ def padded_sliding_window(seq: Iterable[int], size: int, pad: int) -> Iterable[tuple[int, ...]]:
27
28
  seqs = tee(seq, size)
28
29
  pads = tuple(repeat(pad, size - i) for i in range(size))
29
30
  padded_seqs = tuple(chain(pad, seq) for pad, seq in zip(pads, seqs, strict=True))
30
31
  return zip(*padded_seqs, strict=False)
31
32
 
33
+
32
34
  def softmax(logits: Iterable[float]) -> list[float]:
33
35
  logits = list(logits)
34
36
  log_max = max(logits)
@@ -36,9 +38,11 @@ def softmax(logits: Iterable[float]) -> list[float]:
36
38
  exp_log_sum = sum(exp_logs)
37
39
  return [exp_log / exp_log_sum for exp_log in exp_logs]
38
40
 
41
+
39
42
  def online_mean(old_mean: float, sample: float, new_count: int) -> float:
40
43
  return old_mean + (sample - old_mean) / new_count
41
44
 
45
+
42
46
  def update_probs(old_mean: dict[int, float], sample: dict[int, float], new_count: int, top_k: int) -> dict[int, float]:
43
47
  all_keys = set(old_mean.keys()).union(sample.keys())
44
48
 
@@ -115,7 +119,7 @@ class NGramSpeculator(Speculator):
115
119
  seq = list(seq)
116
120
  ngram_ctx = self.ngram_n - 1
117
121
  if ngram_ctx > 0:
118
- padded_seq = [*repeat(self.ngram_pad, max(ngram_ctx - len(seq), 0)), *seq[-ngram_ctx :]]
122
+ padded_seq = [*repeat(self.ngram_pad, max(ngram_ctx - len(seq), 0)), *seq[-ngram_ctx:]]
119
123
  else:
120
124
  padded_seq = []
121
125
 
@@ -125,7 +129,7 @@ class NGramSpeculator(Speculator):
125
129
 
126
130
  return (
127
131
  memoryview(self.ngram_keys)[idx_start:idx_end],
128
- memoryview(self.ngram_values)[idx_start:idx_end], # type: ignore (typechecker bug)
132
+ memoryview(self.ngram_values)[idx_start:idx_end], # type: ignore (typechecker bug)
129
133
  memoryview(self.ngram_counts)[seq_hash : (seq_hash + 1)],
130
134
  )
131
135
 
@@ -19,7 +19,7 @@ def train_speculator(
19
19
  ) -> None:
20
20
  trained_tokens = 0
21
21
 
22
- for trained_sequences,trace in enumerate(traces, start=1):
22
+ for trained_sequences, trace in enumerate(traces, start=1):
23
23
  if tokens_to_train is not None and trained_tokens + len(trace.completion_token_ids) > tokens_to_train:
24
24
  end = tokens_to_train - trained_tokens
25
25
  else:
@@ -39,7 +39,9 @@ def train_speculator(
39
39
 
40
40
 
41
41
  def test_speculator(
42
- speculator: Speculator, sequence: Iterable[int] = [], max_completion_length: int = 32,
42
+ speculator: Speculator,
43
+ sequence: Iterable[int] = [],
44
+ max_completion_length: int = 32,
43
45
  ) -> list[int]:
44
46
  sequence = list(sequence)
45
47
  for _ in range(max_completion_length):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lalamo
3
- Version: 0.5.2
3
+ Version: 0.5.4
4
4
  Summary: JAX library for optimization and export of models for use with the UZU inference engine.
5
5
  Requires-Python: <4,>=3.12
6
6
  Description-Content-Type: text/markdown
@@ -0,0 +1,88 @@
1
+ lalamo/__init__.py,sha256=oyZn_-LJWGgHZqFzHw210uI-wgVJ5gjqg4yMagRXsHw,827
2
+ lalamo/common.py,sha256=5NUFD26yQgOnEEk3LaQnce8n-VwJxILkEpFesHZhtQU,3820
3
+ lalamo/main.py,sha256=Lqv-lU6hRSqbJeVOheZoKllK1LaPHTuR_8jNTPC7UZg,23956
4
+ lalamo/message_processor.py,sha256=bSUAQg7CemLTnBV4LtPxJBicAalruDCA-JXjkTYPZ8U,5797
5
+ lalamo/quantization.py,sha256=8o6ryIZLzzDYQuvBTboPfaVVdfijAKGpTxOcg3GKVD8,2752
6
+ lalamo/registry_abc.py,sha256=ENjXiD_wEH100fNjG-W5Em1L_EQ0Lf0pdRhRGvf3qZk,2197
7
+ lalamo/sampling.py,sha256=g_dNiJyZrRqoQIiLid4cr6nRT9N5tSz3GtHr8Bt4n-E,3404
8
+ lalamo/utils.py,sha256=9kg5P19eaqGrSyAiNSbdfOwrv4s1PJZTHYdiNctlBSY,4368
9
+ lalamo/data/__init__.py,sha256=exfhBLxHrg7BWutM0tAln5QuIWlNQmOhaG2noFYxfPI,189
10
+ lalamo/data/huggingface_message.py,sha256=-7lN9eIcETQzt1Pnx3d4d8p3_I7WYMNf4mp1P91N7fI,1115
11
+ lalamo/data/lalamo_completions.py,sha256=U_m3UNSJASUFz3rJq_taZOtL_U4B8Oj-ndkTF-JH-v4,1509
12
+ lalamo/data/utils.py,sha256=B96gLaULyStKYuR8wjFdTpFc6YIDC8EEvGh1eiMe_Ec,338
13
+ lalamo/model_import/__init__.py,sha256=Z8pS9rbKKx1QgUy7KZtHxiNWlZhII3mdovT9d37vAxg,168
14
+ lalamo/model_import/common.py,sha256=dS8HbDCSReaffJ0WWdVpYjk-VGv_Ga8C3GN7z6bdxlY,11992
15
+ lalamo/model_import/huggingface_generation_config.py,sha256=mot6VQ6ezCtEhN6VjhnvaU-nR5P5T2BuBUgpFNnWJxU,1495
16
+ lalamo/model_import/huggingface_tokenizer_config.py,sha256=xvwdmio7b9nhn2H3uMBVligiYj58JaCFCvHY3-8dBvM,2502
17
+ lalamo/model_import/decoder_configs/__init__.py,sha256=1ZqMcEHvCJjMIZ9iNyY31XMXOaFxB-NbqIU01BtmcEk,641
18
+ lalamo/model_import/decoder_configs/common.py,sha256=L8PCgF5fIt3RqPlmLiJpBzDguKk9iTjk4XSItxwVG4c,3260
19
+ lalamo/model_import/decoder_configs/executorch.py,sha256=fTEG_j-7d8riR3Fu_H5tHDjOTrWevfyw7QbWF1mUdOQ,5924
20
+ lalamo/model_import/decoder_configs/huggingface/__init__.py,sha256=3H7GPTFNNahEvI8D1SGg2mGBgPhsIdZ213MglwbGDlE,645
21
+ lalamo/model_import/decoder_configs/huggingface/common.py,sha256=YYIDEQy8x7lqL2qtxUHrNqfjZEiizBZ_26sTqOzjRtQ,3792
22
+ lalamo/model_import/decoder_configs/huggingface/gemma2.py,sha256=g8LH_GlSNyL04WWi596zI0rWsD3ahnfNjDk-9zZNcDE,4759
23
+ lalamo/model_import/decoder_configs/huggingface/gemma3.py,sha256=KlhL7y6lW_cUgsT2JjvlQbsuKZggI8DG5wazZZBk0zM,7415
24
+ lalamo/model_import/decoder_configs/huggingface/gpt_oss.py,sha256=MBCoPbuWyzbJiBRtHOtpaPHJjQ1UVCAYcVrfIejTnlQ,7446
25
+ lalamo/model_import/decoder_configs/huggingface/llama.py,sha256=UPeQiz2Dix8YaZYRxn9z44OZJ6c4xBQmcUZcM0Ymvh4,6934
26
+ lalamo/model_import/decoder_configs/huggingface/llamba.py,sha256=ANB-vQK8U-zVFubZSTDXXt2S70T5SVOGzf7eOVvPzIQ,5773
27
+ lalamo/model_import/decoder_configs/huggingface/mistral.py,sha256=MDGC0ivzJuUpOC11n8vFdcVzqccUyaRw_hkL74mVlAg,4599
28
+ lalamo/model_import/decoder_configs/huggingface/modern_bert.py,sha256=A8nNIMhPVumvPWIFR3RexRc6XkFyUd_3mmNpmvyPEGE,8816
29
+ lalamo/model_import/decoder_configs/huggingface/qwen2.py,sha256=n3qIANMPbtQsTtk5QEWWFZ6R85eDxR_kaZd0NDlJ3T4,5786
30
+ lalamo/model_import/decoder_configs/huggingface/qwen3.py,sha256=lySVO-TvusAYUjDnMz-EshZHNrlNl08Xr-XqErt7K5E,6966
31
+ lalamo/model_import/loaders/__init__.py,sha256=3THc1wQ4EPBzQkL_4EaKCa7Ev5Z7oczcvc4AHy9v5EI,228
32
+ lalamo/model_import/loaders/common.py,sha256=kkugV-bMQlN1zvGHoj3uc7z0FbXKoMtXEBTvyu4KxK4,1844
33
+ lalamo/model_import/loaders/executorch.py,sha256=t2Ey_mBMNC8bTSTdYWjuGXdPTRoohFlYrqtWyNkBU_8,9219
34
+ lalamo/model_import/loaders/huggingface.py,sha256=ITA0Y_kCDFL4Tanuvd1NWUvV77WEn0VEzkcX5Whlwys,29835
35
+ lalamo/model_import/loaders/utils.py,sha256=eiX3WKFRrAfBY-dugodscNInl5o5w3KmVcgma4atpGY,2456
36
+ lalamo/model_import/model_specs/__init__.py,sha256=STy1Au_mwJYcl_zSei6FEp8mmGZg-Fia1tpUVAO9x9Y,1167
37
+ lalamo/model_import/model_specs/common.py,sha256=2E6mtpUS613jsp_SDiROOvvWFB6T5U2tDkbIBXVWjmI,5780
38
+ lalamo/model_import/model_specs/deepseek.py,sha256=Umef93_ZBuq93yYsejIRNwj3udoln1gHfrv3SK5jyMo,417
39
+ lalamo/model_import/model_specs/gemma.py,sha256=irWgylL-pc7y3Gn5DK3fjKoCT9kJWH3B7mTa-1Gmxqc,1306
40
+ lalamo/model_import/model_specs/gpt_oss.py,sha256=PLo0QGrXKdX61ReTRdyOaP_EH3Dmj5lp3fpJjZRwRVA,542
41
+ lalamo/model_import/model_specs/huggingface.py,sha256=eF8ItF5reFrFkjYxwiAJcFwUAlN6CpXfM-aQ8a92ItM,430
42
+ lalamo/model_import/model_specs/llama.py,sha256=Ml-xvRGlXBT9NJhmEpwgNo6C84oBSMYgA1_PrCYGcAw,990
43
+ lalamo/model_import/model_specs/llamba.py,sha256=Ic3sWTv34FLJ4fG6OR_Mc5goGJQR6fa5b2WbVXbn9FA,1471
44
+ lalamo/model_import/model_specs/mirai.py,sha256=20sLTZZQ_kn8ULfID71xdnVhjW7OjcJDf96BvVnCBUQ,605
45
+ lalamo/model_import/model_specs/mistral.py,sha256=HAojorjOqsJn2DoMBzYRw8A70qCslhFEsE9AF5xumlg,1278
46
+ lalamo/model_import/model_specs/pleias.py,sha256=5sRpZGYwLdsav6bLiW-459y1Cs9iJKgKkBIuGsOxtsQ,368
47
+ lalamo/model_import/model_specs/polaris.py,sha256=Mw1-6bByjDmPIKlIUIV46CsmV5xUp_laI5Qquo5DmAQ,520
48
+ lalamo/model_import/model_specs/qwen.py,sha256=qzLmTveATmnwNFQSFJlffcXw7syFnrCmKf9ggkkkw1Y,7050
49
+ lalamo/model_import/model_specs/reka.py,sha256=dOUYbEMMvovQdzQuBO_DCsjGI39syhoKCvnxLkNEDCw,423
50
+ lalamo/models/__init__.py,sha256=HfAYc4mteKu7BMyIP8aTFliLKGWJzLk1kPcdKurb8eo,243
51
+ lalamo/models/common.py,sha256=b2woUDgHhCUEowo6tEjQb4J7iRVQvrptyRQTYMKrLis,2952
52
+ lalamo/models/language_model.py,sha256=QPeVEyhutSze7fSNhvOvwSoYt24QMk-dtTJkos38amY,13465
53
+ lalamo/models/router.py,sha256=7KZqHVhr2TA7Qh76KfwrvyfztfZnV-P-Ss11O8dzbRg,2013
54
+ lalamo/modules/__init__.py,sha256=xWJ4OPAF4gKd0evYwXIK5kTnbH6nI55oLAePcoDDHQ0,3730
55
+ lalamo/modules/activations.py,sha256=U3qTQtZawPAUcoqbkIJnmTYcaNiQuSPMLcBeJ398GhI,1022
56
+ lalamo/modules/classifier.py,sha256=_jtJ3INEq1dJP5HpUmcDk9YYzpRYlQ04zvFGaWBV6Lg,12101
57
+ lalamo/modules/common.py,sha256=dqDEOi-C3H4U9iWUisU32RA-wRDCGuaUNGbObRBhyQM,3315
58
+ lalamo/modules/decoder.py,sha256=Opd3QIq1mpGr9P7sLH-Fryitlfp6ESTpcX71vgm89t0,7129
59
+ lalamo/modules/embedding.py,sha256=yhVZLg-yb1RwEXoq8pZx-08MPHLEOraPv73gH8shQ_o,21782
60
+ lalamo/modules/linear.py,sha256=XfIYhmpk-bwNHIzIgsL48ZUTclHD2KB4uXHMw9NTE-8,42991
61
+ lalamo/modules/mlp.py,sha256=bL3sQ46vCNt1MBRwlzmXZx9nQfRe4axpGe5UOFVanBI,17959
62
+ lalamo/modules/mlx_interop.py,sha256=FdfU_1iES-HQ9r4K0SkYwJTyvE0f-_T5ursNCjPLZKY,467
63
+ lalamo/modules/normalization.py,sha256=cBdOq6OmJssunVeEwFRJD0BDhgFAN7J8gOKwzIUAY8I,3005
64
+ lalamo/modules/rope.py,sha256=rCik7vBNqRXYg3LGbmc1mezPRNbIYMg5cydTFpQy-eU,10157
65
+ lalamo/modules/torch_interop.py,sha256=-mujd1zI4ec2w92Hd50RtDa0K3jl6ZSnPxc5r3Fp9nU,916
66
+ lalamo/modules/transformer.py,sha256=67-WZX2eE314abiQOhRNSooTHeJh4q9mlZQIxQ-oASU,10162
67
+ lalamo/modules/transformer_layer.py,sha256=CfkYIn8a3pR4PPsI9hmAXpyiTbjXo-Gzl2OU9lAQlkI,12724
68
+ lalamo/modules/utils.py,sha256=t_TayWT6g5LtYKhJaod-u_COWaI_VbNd3eYek9Nj0lc,441
69
+ lalamo/modules/token_mixers/__init__.py,sha256=_t4T25C4WBVJQ1SqkQPGrrAc7bPKhDO3K2btgefVh5s,909
70
+ lalamo/modules/token_mixers/attention.py,sha256=gkGMFah2OHB_tyJpkshM1KhMnzG6U7Xt273MkBvDk58,16584
71
+ lalamo/modules/token_mixers/common.py,sha256=-ej1pIrrp845ztavJ3oh82U3HEsV_rEHxMZOEDp7iK8,1979
72
+ lalamo/modules/token_mixers/mamba.py,sha256=MIIMZAlVVE4YwyT0PsxA0OWXa13ondoJchRxQbhq678,18797
73
+ lalamo/modules/token_mixers/state/__init__.py,sha256=iQaX7njz3XtwGugI5_PUOIp1wdCzd5h08UkgF6yW3zo,307
74
+ lalamo/modules/token_mixers/state/common.py,sha256=dcwBevAdeJpBjf7_YRk7TKrJHsCnpljhfzZy-3h9898,661
75
+ lalamo/modules/token_mixers/state/kv_cache.py,sha256=QfnS3XgSmyDI9MBUbeLI4ABHLxiMcXDbZsqe0fd3KQo,8788
76
+ lalamo/modules/token_mixers/state/mamba_state.py,sha256=LHzJvNE6MkB7nrsZSNto6pxbnMJCl--JOoe9Fkcc9Mg,1642
77
+ lalamo/speculator/__init__.py,sha256=9-tmZcbCom_lIGpJYn6xLlnEahFLFidpqmgkafmu--k,456
78
+ lalamo/speculator/common.py,sha256=PudF_gkpe5_nQ-57sAC-foE1xCy_H2Axh5KwRoA86lo,587
79
+ lalamo/speculator/estimator.py,sha256=SFF24TtxGVbb3hEziZ40A7aNdBd6_ZZJSX-CqmPhvA8,2503
80
+ lalamo/speculator/inference.py,sha256=EzNLmdP-AOtIN8C39-fq-3ZnKX_yxOOwMufDEmi54zM,3624
81
+ lalamo/speculator/ngram.py,sha256=95mdfAWhx4d5XOnOwhyhElnvcy6nlUjYhcbJzqDs414,5875
82
+ lalamo/speculator/utils.py,sha256=0wZoMMIzzk0Q-3zq5H5f-JBplePNHxywndkrNtOJOyo,1697
83
+ lalamo-0.5.4.dist-info/licenses/LICENSE,sha256=diHRfjSEJHD1nnEeMIfMRCjR3UERf8bT3eseD6b1ayA,1072
84
+ lalamo-0.5.4.dist-info/METADATA,sha256=-OqjgnggM7Q7RMOcH7Dsin68vVxbJGfwW2LxUslz-ro,3146
85
+ lalamo-0.5.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
86
+ lalamo-0.5.4.dist-info/entry_points.txt,sha256=qli7qTfnBk5WP10rOGXXEckHMtt-atJMDWd8jN89Uks,43
87
+ lalamo-0.5.4.dist-info/top_level.txt,sha256=VHvWL5JN5XRG36NsN_MieJ7EwRihEOrEjyDaTdFJ-aI,7
88
+ lalamo-0.5.4.dist-info/RECORD,,
@@ -1,80 +0,0 @@
1
- lalamo/__init__.py,sha256=3P0i5yWyx-A6xFJNXobXqcLYXbgpLKPr4tL-x3OAJto,487
2
- lalamo/common.py,sha256=5NUFD26yQgOnEEk3LaQnce8n-VwJxILkEpFesHZhtQU,3820
3
- lalamo/language_model.py,sha256=ZnNwqxT8yCfIE0TSaF8Vhva8GRHzDzEoUb95VjAfOtM,14510
4
- lalamo/main.py,sha256=YNO7s0H04Jg5OYmKEGmdIJLzW1W_-uJj0TxJY_Tsc0M,19028
5
- lalamo/message_processor.py,sha256=eDKqOGRTAc4rbwzye0FAGwTnG_nIlerdlLEcn8QlT0Q,5817
6
- lalamo/quantization.py,sha256=8o6ryIZLzzDYQuvBTboPfaVVdfijAKGpTxOcg3GKVD8,2752
7
- lalamo/registry_abc.py,sha256=ENjXiD_wEH100fNjG-W5Em1L_EQ0Lf0pdRhRGvf3qZk,2197
8
- lalamo/sampling.py,sha256=g_dNiJyZrRqoQIiLid4cr6nRT9N5tSz3GtHr8Bt4n-E,3404
9
- lalamo/utils.py,sha256=9kg5P19eaqGrSyAiNSbdfOwrv4s1PJZTHYdiNctlBSY,4368
10
- lalamo/data/__init__.py,sha256=9-lii4yjDZkZFkSNJA0Wd5ZOcxnhs5390IWO4JrMMWI,190
11
- lalamo/data/huggingface_message.py,sha256=AJi4t1DIJ0AtFPQW8rBxNwjnve8RLl5WuZH9DFVxRqU,1114
12
- lalamo/data/lalamo_completions.py,sha256=U_m3UNSJASUFz3rJq_taZOtL_U4B8Oj-ndkTF-JH-v4,1509
13
- lalamo/data/utils.py,sha256=B96gLaULyStKYuR8wjFdTpFc6YIDC8EEvGh1eiMe_Ec,338
14
- lalamo/model_import/__init__.py,sha256=Z8pS9rbKKx1QgUy7KZtHxiNWlZhII3mdovT9d37vAxg,168
15
- lalamo/model_import/common.py,sha256=EW3JwXGfjoUj98DEmoNAUJn1lHRJ8yXpF_D38efrxv8,8782
16
- lalamo/model_import/huggingface_generation_config.py,sha256=mot6VQ6ezCtEhN6VjhnvaU-nR5P5T2BuBUgpFNnWJxU,1495
17
- lalamo/model_import/huggingface_tokenizer_config.py,sha256=xvwdmio7b9nhn2H3uMBVligiYj58JaCFCvHY3-8dBvM,2502
18
- lalamo/model_import/decoder_configs/__init__.py,sha256=lv00ejNtoUtMVQjpjbNiL8yZCIalyutYPfIOKyg5kfU,545
19
- lalamo/model_import/decoder_configs/common.py,sha256=9dW704HdLan_E3JBT9wQftuU5TC-shGC0q6SGr6iljY,1851
20
- lalamo/model_import/decoder_configs/executorch.py,sha256=tyJ-oP8wezOHBGL7Y9Iy3nplHprUHSo7pkzrvEPk_7k,5725
21
- lalamo/model_import/decoder_configs/huggingface/__init__.py,sha256=m17Pz3pw7lHXrcw3FGE15TNUu-Qk7m9CYQSXfS3CWD0,575
22
- lalamo/model_import/decoder_configs/huggingface/common.py,sha256=BJekEs9iStsygVa9QcPItok5AQIq8PvMZf7xAmykl-w,3043
23
- lalamo/model_import/decoder_configs/huggingface/gemma2.py,sha256=0pO4IinzqB7hLoEUMlVnJfN3ncerTgZKIrMZPs3soR8,4562
24
- lalamo/model_import/decoder_configs/huggingface/gemma3.py,sha256=r8Nfy-9EPXhIkhJkvx0P-7NFLMaku_LJIEhx3HziShk,7217
25
- lalamo/model_import/decoder_configs/huggingface/gpt_oss.py,sha256=8TWptvJzVJtEtyWrkKaJA6LLORSKLolxv3gwLtDC0uA,7248
26
- lalamo/model_import/decoder_configs/huggingface/llama.py,sha256=amMhyN_QEscFmOvjmghcBg9VXBDqE-mpp0Y5Gj0tSp0,6735
27
- lalamo/model_import/decoder_configs/huggingface/llamba.py,sha256=dJVD_84suhF5sQLRvlsfMDmrrTNhIR6AdMGOm54rC6U,5482
28
- lalamo/model_import/decoder_configs/huggingface/mistral.py,sha256=EjDIoGhxyIjugoRFlEIM8QZkxbGiaIeyTTQx8WZEkWw,4460
29
- lalamo/model_import/decoder_configs/huggingface/qwen2.py,sha256=mV_5IkdYEMJQnrTpfXTc_sJzWx0dSXKawuK5boWnYJE,5587
30
- lalamo/model_import/decoder_configs/huggingface/qwen3.py,sha256=S4LIypTvfmZ6d862MAK2gZ3kWDCCpQoJ8tLrIhbXbPo,6769
31
- lalamo/model_import/loaders/__init__.py,sha256=Olg7a79phusilNgEa7PTgx1JgQQJLgAVg18T8isp0mw,148
32
- lalamo/model_import/loaders/common.py,sha256=kkugV-bMQlN1zvGHoj3uc7z0FbXKoMtXEBTvyu4KxK4,1844
33
- lalamo/model_import/loaders/executorch.py,sha256=NmwuB4MvTO_n3iNCd6jNobRuFOf57d1uMiUEkEaihM8,9002
34
- lalamo/model_import/loaders/huggingface.py,sha256=IGWlVErAoEyIhS8qcoiPP8TTJmHmyO2enFOhthzSByg,22779
35
- lalamo/model_import/loaders/utils.py,sha256=eiX3WKFRrAfBY-dugodscNInl5o5w3KmVcgma4atpGY,2456
36
- lalamo/model_import/model_specs/__init__.py,sha256=gdWPNkjvs2jZ9WwGs81tjLNx1WIOW3E5XuWEOHkI0f4,1076
37
- lalamo/model_import/model_specs/common.py,sha256=ZNK46wgmotI9XdoEe04D_hq-ElijJLm2QhVSBbE24lg,5602
38
- lalamo/model_import/model_specs/deepseek.py,sha256=Umef93_ZBuq93yYsejIRNwj3udoln1gHfrv3SK5jyMo,417
39
- lalamo/model_import/model_specs/gemma.py,sha256=YGWM-J7jBEL16c_LZ9F_6dgeZnf4sEPLDKngl_3FbrE,1289
40
- lalamo/model_import/model_specs/gpt_oss.py,sha256=PLo0QGrXKdX61ReTRdyOaP_EH3Dmj5lp3fpJjZRwRVA,542
41
- lalamo/model_import/model_specs/huggingface.py,sha256=TEkU8y95_hmUWyF-Q5hn0dE2SvXbApghAsQwhWRu4D0,431
42
- lalamo/model_import/model_specs/llama.py,sha256=Ml-xvRGlXBT9NJhmEpwgNo6C84oBSMYgA1_PrCYGcAw,990
43
- lalamo/model_import/model_specs/llamba.py,sha256=Ic3sWTv34FLJ4fG6OR_Mc5goGJQR6fa5b2WbVXbn9FA,1471
44
- lalamo/model_import/model_specs/mistral.py,sha256=HAojorjOqsJn2DoMBzYRw8A70qCslhFEsE9AF5xumlg,1278
45
- lalamo/model_import/model_specs/pleias.py,sha256=5sRpZGYwLdsav6bLiW-459y1Cs9iJKgKkBIuGsOxtsQ,368
46
- lalamo/model_import/model_specs/polaris.py,sha256=Mw1-6bByjDmPIKlIUIV46CsmV5xUp_laI5Qquo5DmAQ,520
47
- lalamo/model_import/model_specs/qwen.py,sha256=qzLmTveATmnwNFQSFJlffcXw7syFnrCmKf9ggkkkw1Y,7050
48
- lalamo/model_import/model_specs/reka.py,sha256=dOUYbEMMvovQdzQuBO_DCsjGI39syhoKCvnxLkNEDCw,423
49
- lalamo/modules/__init__.py,sha256=dok0jZSDknlZ5uDVUckMLFGtFkLtgfm1Msy7aLNFx1Y,3421
50
- lalamo/modules/activations.py,sha256=U3qTQtZawPAUcoqbkIJnmTYcaNiQuSPMLcBeJ398GhI,1022
51
- lalamo/modules/common.py,sha256=f7gRmnEP4NMjoTuoqwaBaSs7pf3LFAYEE5oojbM1mKI,3214
52
- lalamo/modules/decoder.py,sha256=IdTRmD47uSSK1pPYBhd4l_cOZQNzPLichHytUxVloEw,12274
53
- lalamo/modules/decoder_layer.py,sha256=oHBzWR7m0-aP4SMgjwF7cJPdaJInNzFY_kWiAl1yGE8,11991
54
- lalamo/modules/embedding.py,sha256=yhVZLg-yb1RwEXoq8pZx-08MPHLEOraPv73gH8shQ_o,21782
55
- lalamo/modules/linear.py,sha256=XfIYhmpk-bwNHIzIgsL48ZUTclHD2KB4uXHMw9NTE-8,42991
56
- lalamo/modules/mlp.py,sha256=9_4OpUw4hDFT9X2jbakf8lm5ZvHhQVwHThArH02AySw,17704
57
- lalamo/modules/mlx_interop.py,sha256=FdfU_1iES-HQ9r4K0SkYwJTyvE0f-_T5ursNCjPLZKY,467
58
- lalamo/modules/normalization.py,sha256=gdmv4tWLk8CwvIfoS0rY3QTVRXhjHQNNF6YGYjyez1c,2790
59
- lalamo/modules/rope.py,sha256=rCik7vBNqRXYg3LGbmc1mezPRNbIYMg5cydTFpQy-eU,10157
60
- lalamo/modules/torch_interop.py,sha256=-mujd1zI4ec2w92Hd50RtDa0K3jl6ZSnPxc5r3Fp9nU,916
61
- lalamo/modules/utils.py,sha256=t_TayWT6g5LtYKhJaod-u_COWaI_VbNd3eYek9Nj0lc,441
62
- lalamo/modules/token_mixers/__init__.py,sha256=_t4T25C4WBVJQ1SqkQPGrrAc7bPKhDO3K2btgefVh5s,909
63
- lalamo/modules/token_mixers/attention.py,sha256=2NtruCEMdTuk2H-cD9uEhF18pwWmQyJa0mOz0RnoSi4,16501
64
- lalamo/modules/token_mixers/common.py,sha256=-ej1pIrrp845ztavJ3oh82U3HEsV_rEHxMZOEDp7iK8,1979
65
- lalamo/modules/token_mixers/mamba.py,sha256=MIIMZAlVVE4YwyT0PsxA0OWXa13ondoJchRxQbhq678,18797
66
- lalamo/modules/token_mixers/state/__init__.py,sha256=iQaX7njz3XtwGugI5_PUOIp1wdCzd5h08UkgF6yW3zo,307
67
- lalamo/modules/token_mixers/state/common.py,sha256=dcwBevAdeJpBjf7_YRk7TKrJHsCnpljhfzZy-3h9898,661
68
- lalamo/modules/token_mixers/state/kv_cache.py,sha256=KgMwZC_RmBn_Cw-85gILtEjUVP7sNpXPkwyWz37RWak,8536
69
- lalamo/modules/token_mixers/state/mamba_state.py,sha256=LHzJvNE6MkB7nrsZSNto6pxbnMJCl--JOoe9Fkcc9Mg,1642
70
- lalamo/speculator/__init__.py,sha256=pLGwZiXZZeH2SaMsIGiqHzXs5AJtbxWweXaKc4fPFHc,262
71
- lalamo/speculator/common.py,sha256=PudF_gkpe5_nQ-57sAC-foE1xCy_H2Axh5KwRoA86lo,587
72
- lalamo/speculator/inference.py,sha256=4E7_8jwLwg1bvUUH59cLxjD73-IJ9xv58yCwYMFa1r4,3101
73
- lalamo/speculator/ngram.py,sha256=3O9akE2IGN_7Mp6l_zwhUpdNvjZB0rAlQm51EuX_-rY,5869
74
- lalamo/speculator/utils.py,sha256=K5qDGEdWYD47C1xLJQ3bamIHAG3-VEuANf-821VeanE,1688
75
- lalamo-0.5.2.dist-info/licenses/LICENSE,sha256=diHRfjSEJHD1nnEeMIfMRCjR3UERf8bT3eseD6b1ayA,1072
76
- lalamo-0.5.2.dist-info/METADATA,sha256=bEhxBxyO5vmbF5KyrEMRSATIzJ55M9HfunCkllcC-VY,3146
77
- lalamo-0.5.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
78
- lalamo-0.5.2.dist-info/entry_points.txt,sha256=qli7qTfnBk5WP10rOGXXEckHMtt-atJMDWd8jN89Uks,43
79
- lalamo-0.5.2.dist-info/top_level.txt,sha256=VHvWL5JN5XRG36NsN_MieJ7EwRihEOrEjyDaTdFJ-aI,7
80
- lalamo-0.5.2.dist-info/RECORD,,
File without changes