lalamo 0.2.6__py3-none-any.whl → 0.3.0__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 (52) hide show
  1. lalamo/__init__.py +1 -1
  2. lalamo/common.py +79 -29
  3. lalamo/language_model.py +106 -83
  4. lalamo/main.py +91 -18
  5. lalamo/message_processor.py +170 -0
  6. lalamo/model_import/common.py +159 -43
  7. lalamo/model_import/{configs → decoder_configs}/__init__.py +0 -1
  8. lalamo/model_import/{configs → decoder_configs}/common.py +11 -10
  9. lalamo/model_import/{configs → decoder_configs}/huggingface/common.py +9 -4
  10. lalamo/model_import/{configs → decoder_configs}/huggingface/gemma3.py +2 -2
  11. lalamo/model_import/{configs → decoder_configs}/huggingface/llama.py +2 -2
  12. lalamo/model_import/{configs → decoder_configs}/huggingface/mistral.py +1 -1
  13. lalamo/model_import/{configs → decoder_configs}/huggingface/qwen2.py +1 -1
  14. lalamo/model_import/{configs → decoder_configs}/huggingface/qwen3.py +1 -1
  15. lalamo/model_import/huggingface_generation_config.py +44 -0
  16. lalamo/model_import/huggingface_tokenizer_config.py +85 -0
  17. lalamo/model_import/loaders/common.py +2 -1
  18. lalamo/model_import/loaders/huggingface.py +12 -10
  19. lalamo/model_import/model_specs/__init__.py +3 -2
  20. lalamo/model_import/model_specs/common.py +32 -33
  21. lalamo/model_import/model_specs/deepseek.py +1 -10
  22. lalamo/model_import/model_specs/gemma.py +2 -25
  23. lalamo/model_import/model_specs/huggingface.py +2 -12
  24. lalamo/model_import/model_specs/llama.py +2 -58
  25. lalamo/model_import/model_specs/mistral.py +9 -19
  26. lalamo/model_import/model_specs/pleias.py +3 -13
  27. lalamo/model_import/model_specs/polaris.py +5 -7
  28. lalamo/model_import/model_specs/qwen.py +12 -111
  29. lalamo/model_import/model_specs/reka.py +4 -13
  30. lalamo/modules/__init__.py +2 -1
  31. lalamo/modules/attention.py +90 -10
  32. lalamo/modules/common.py +51 -4
  33. lalamo/modules/decoder.py +90 -8
  34. lalamo/modules/decoder_layer.py +85 -8
  35. lalamo/modules/embedding.py +95 -29
  36. lalamo/modules/kv_cache.py +3 -3
  37. lalamo/modules/linear.py +170 -130
  38. lalamo/modules/mlp.py +40 -7
  39. lalamo/modules/normalization.py +24 -6
  40. lalamo/modules/rope.py +24 -6
  41. lalamo/sampling.py +99 -0
  42. lalamo/utils.py +86 -1
  43. {lalamo-0.2.6.dist-info → lalamo-0.3.0.dist-info}/METADATA +6 -6
  44. lalamo-0.3.0.dist-info/RECORD +58 -0
  45. lalamo-0.2.6.dist-info/RECORD +0 -54
  46. /lalamo/model_import/{configs → decoder_configs}/executorch.py +0 -0
  47. /lalamo/model_import/{configs → decoder_configs}/huggingface/__init__.py +0 -0
  48. /lalamo/model_import/{configs → decoder_configs}/huggingface/gemma2.py +0 -0
  49. {lalamo-0.2.6.dist-info → lalamo-0.3.0.dist-info}/WHEEL +0 -0
  50. {lalamo-0.2.6.dist-info → lalamo-0.3.0.dist-info}/entry_points.txt +0 -0
  51. {lalamo-0.2.6.dist-info → lalamo-0.3.0.dist-info}/licenses/LICENSE +0 -0
  52. {lalamo-0.2.6.dist-info → lalamo-0.3.0.dist-info}/top_level.txt +0 -0
lalamo/sampling.py ADDED
@@ -0,0 +1,99 @@
1
+ from abc import abstractmethod
2
+ from collections.abc import Iterable
3
+
4
+ import equinox as eqx
5
+ import jax
6
+ import jax.numpy as jnp
7
+ from jaxtyping import Array, Float, Int, PRNGKeyArray
8
+
9
+ __all__ = [
10
+ "BanTokensPolicy",
11
+ "CompositePolicy",
12
+ "GreedyPolicy",
13
+ "SamplingPolicy",
14
+ "TemperaturePolicy",
15
+ "TopKPolicy",
16
+ "TopPPolicy",
17
+ ]
18
+
19
+
20
+ class SamplingPolicy(eqx.Module):
21
+ @abstractmethod
22
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]: ...
23
+
24
+ def __call__(self, logits: Float[Array, " vocabulary"], *, key: PRNGKeyArray) -> Int[Array, ""]:
25
+ return jax.random.categorical(key, self.process_logits(logits))
26
+
27
+
28
+ class GreedyPolicy(SamplingPolicy):
29
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]:
30
+ max_logit_value = jnp.max(logits)
31
+ return jnp.where(logits == max_logit_value, 1.0, -jnp.inf)
32
+
33
+
34
+ class TemperaturePolicy(SamplingPolicy):
35
+ temperature: float = eqx.field(static=True)
36
+
37
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]:
38
+ return logits / self.temperature
39
+
40
+
41
+ class TopKPolicy(SamplingPolicy):
42
+ k: int = eqx.field(static=True)
43
+
44
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]:
45
+ top_k_logits, _ = jax.lax.top_k(logits, self.k)
46
+ min_logit_val = jnp.min(top_k_logits)
47
+ return jnp.where(logits >= min_logit_val, logits, -jnp.inf)
48
+
49
+
50
+ class TopPPolicy(SamplingPolicy):
51
+ p: float = eqx.field(static=True)
52
+
53
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]:
54
+ sorted_indices = jnp.argsort(logits, descending=True)
55
+ sorted_logits = logits[sorted_indices]
56
+ cumulative_probs = jnp.cumsum(jax.nn.softmax(sorted_logits))
57
+
58
+ to_remove_sorted = cumulative_probs > self.p
59
+ to_remove_sorted = jnp.roll(to_remove_sorted, 1)
60
+ to_remove_sorted = to_remove_sorted.at[0].set(False)
61
+
62
+ to_remove_unsorted = jnp.empty_like(to_remove_sorted).at[sorted_indices].set(to_remove_sorted)
63
+
64
+ return jnp.where(to_remove_unsorted, -jnp.inf, logits)
65
+
66
+
67
+ class BanTokensPolicy(SamplingPolicy):
68
+ banned_tokens: tuple[int, ...] = eqx.field(static=True)
69
+
70
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]:
71
+ banned_tokens_indices = jnp.asarray(self.banned_tokens, dtype=jnp.int32)
72
+ return logits.at[banned_tokens_indices].set(-jnp.inf)
73
+
74
+
75
+ class CompositePolicy(SamplingPolicy):
76
+ policies: tuple[SamplingPolicy, ...] = eqx.field(static=True)
77
+
78
+ def process_logits(self, logits: Float[Array, " vocabulary"]) -> Float[Array, " vocabulary"]:
79
+ for policy in self.policies:
80
+ logits = policy.process_logits(logits)
81
+ return logits
82
+
83
+
84
+ def make_policy(
85
+ temperature: float | None = None,
86
+ top_k: int | None = None,
87
+ top_p: float | None = None,
88
+ banned_tokens: Iterable[int] | None = None,
89
+ ) -> SamplingPolicy:
90
+ policies = []
91
+ if banned_tokens:
92
+ policies.append(BanTokensPolicy(tuple(banned_tokens)))
93
+ if temperature is not None:
94
+ policies.append(TemperaturePolicy(temperature))
95
+ if top_k is not None:
96
+ policies.append(TopKPolicy(top_k))
97
+ if top_p is not None:
98
+ policies.append(TopPPolicy(top_p))
99
+ return CompositePolicy(tuple(policies))
lalamo/utils.py CHANGED
@@ -1,8 +1,93 @@
1
+ from collections.abc import (
2
+ Callable,
3
+ Collection,
4
+ Iterable,
5
+ Iterator,
6
+ KeysView,
7
+ Mapping,
8
+ MappingView,
9
+ Sequence,
10
+ ValuesView,
11
+ )
12
+ from dataclasses import dataclass
13
+ from typing import overload
14
+
1
15
  import einops
2
16
  import jax.numpy as jnp
3
17
  from jaxtyping import Array
4
18
 
5
- __all__ = ["jax_uint4_to_packed_uint8"]
19
+ __all__ = [
20
+ "MapDictValues",
21
+ "MapSequence",
22
+ "jax_uint4_to_packed_uint8",
23
+ ]
24
+
25
+
26
+ @dataclass(frozen=True)
27
+ class MapIterable[OldT, NewT](Iterable[NewT]):
28
+ map_func: Callable[[OldT], NewT]
29
+ collection: Iterable[OldT]
30
+
31
+ def __iter__(self) -> Iterator[NewT]:
32
+ return map(self.map_func, self.collection)
33
+
34
+
35
+ @dataclass(frozen=True)
36
+ class MapCollection[OldT, NewT](MapIterable[OldT, NewT], Collection[NewT]):
37
+ collection: Collection[OldT]
38
+
39
+ def __contains__(self, item: object) -> bool:
40
+ return any(self.map_func(elem) == item for elem in self.collection)
41
+
42
+ def __len__(self) -> int:
43
+ return len(self.collection)
44
+
45
+
46
+ @dataclass(frozen=True)
47
+ class MapSequence[OldT, NewT](MapCollection[OldT, NewT], Sequence[NewT]):
48
+ collection: Sequence[OldT]
49
+
50
+ @overload
51
+ def __getitem__(self, index: int) -> NewT: ...
52
+
53
+ @overload
54
+ def __getitem__(self, index: slice) -> list[NewT]: ...
55
+
56
+ def __getitem__(self, index):
57
+ if isinstance(index, slice):
58
+ return [self.map_func(item) for item in self.collection[index]]
59
+ return self.map_func(self.collection[index])
60
+
61
+
62
+ @dataclass(frozen=True)
63
+ class MapView[OldT, NewT](MapCollection[OldT, NewT], MappingView):
64
+ pass
65
+
66
+
67
+ @dataclass(frozen=True)
68
+ class MapValuesView[OldT, NewT](MapCollection[OldT, NewT], ValuesView):
69
+ pass
70
+
71
+
72
+ @dataclass(frozen=True)
73
+ class MapDictValues[K, OldV, NewV](Mapping[K, NewV]):
74
+ value_map: Callable[[OldV], NewV]
75
+ collection: Mapping[K, OldV]
76
+
77
+ def __getitem__(self, key: K) -> NewV:
78
+ return self.value_map(self.collection[key])
79
+
80
+ def __iter__(self) -> Iterator[K]:
81
+ return iter(self.collection)
82
+
83
+ def keys(self) -> KeysView[K]:
84
+ return self.collection.keys()
85
+
86
+ def values(self) -> MapValuesView[OldV, NewV]:
87
+ return MapValuesView(self.value_map, self.collection.values())
88
+
89
+ def __len__(self) -> int:
90
+ return len(self.collection)
6
91
 
7
92
 
8
93
  def jax_uint4_to_packed_uint8(array: Array) -> Array:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lalamo
3
- Version: 0.2.6
3
+ Version: 0.3.0
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
@@ -13,10 +13,12 @@ Requires-Dist: huggingface-hub[hf-transfer]>=0.27.1
13
13
  Requires-Dist: jax>=0.4.38; sys_platform == "darwin"
14
14
  Requires-Dist: jax[cuda]>=0.4.38; sys_platform == "linux"
15
15
  Requires-Dist: jaxtyping>=0.2.36
16
+ Requires-Dist: jinja2>=3.1.6
16
17
  Requires-Dist: ml-dtypes>=0.5.1
17
18
  Requires-Dist: optax>=0.2.4
18
19
  Requires-Dist: rich>=14.0.0
19
20
  Requires-Dist: thefuzz>=0.22.1
21
+ Requires-Dist: tokenizers>=0.21.2
20
22
  Requires-Dist: typer>=0.15.1
21
23
  Requires-Dist: safetensors>=0.6.2
22
24
  Dynamic: license-file
@@ -48,9 +50,11 @@ uv run lalamo list-models
48
50
  To convert a model, run:
49
51
 
50
52
  ```bash
51
- uv run lalamo convert MODEL_REPO --precision float16
53
+ uv run lalamo convert MODEL_REPO
52
54
  ```
53
55
 
56
+ Note: on some CPU platform you may be getting an error saying `The precision 'F16_F16_F32' is not supported by dot_general on CPU`. This is due to a bug in XLA, which causes matmuls inside `jax.jit` not work correctly on CPUs. The workaround is to set the environment variable `JAX_DISABLE_JIT=1` when running the conversion.
57
+
54
58
  After that, you can find the converted model in the `models` folder. For more options see `uv run lalamo convert --help`.
55
59
 
56
60
  ## Model Support
@@ -66,10 +70,6 @@ ModelSpec(
66
70
  quantization=None,
67
71
  repo="google/gemma-3-1b-it",
68
72
  config_type=HFGemma3TextConfig,
69
- config_file_name="config.json",
70
- weights_file_names=huggingface_weight_files(1),
71
73
  weights_type=WeightsType.SAFETENSORS,
72
- tokenizer_files=HUGGINGFACE_TOKENIZER_FILES,
73
- use_cases=tuple(),
74
74
  )
75
75
  ```
@@ -0,0 +1,58 @@
1
+ lalamo/__init__.py,sha256=5ZLxT3qwA2jPRZ8jgjR0c3mgeDPe_VlgQXOIxYE6FgY,217
2
+ lalamo/common.py,sha256=5NUFD26yQgOnEEk3LaQnce8n-VwJxILkEpFesHZhtQU,3820
3
+ lalamo/language_model.py,sha256=wZGucNCPP9ReHn6fYO5TlFHTXun1QIMwaxniq9z7K5Q,10639
4
+ lalamo/main.py,sha256=Ta3ZW-Xw3uNPEVvb2YlBOH9UhhLDV7PZjRCg6giu0ao,12275
5
+ lalamo/message_processor.py,sha256=hxnc2ELd31VfP41sCU-WobCoW06wqZllEmIvCcyAvyo,5445
6
+ lalamo/quantization.py,sha256=8o6ryIZLzzDYQuvBTboPfaVVdfijAKGpTxOcg3GKVD8,2752
7
+ lalamo/sampling.py,sha256=g_dNiJyZrRqoQIiLid4cr6nRT9N5tSz3GtHr8Bt4n-E,3404
8
+ lalamo/utils.py,sha256=Jm54CKFc6lJSggXVwF_lgiUuKEtQ55c58U-ALU6oxuk,2922
9
+ lalamo/model_import/__init__.py,sha256=Z8pS9rbKKx1QgUy7KZtHxiNWlZhII3mdovT9d37vAxg,168
10
+ lalamo/model_import/common.py,sha256=vVCKRl9-zifMiut4lMjB5eVXOHQxw8yfD5Q7rDr153c,7649
11
+ lalamo/model_import/huggingface_generation_config.py,sha256=mot6VQ6ezCtEhN6VjhnvaU-nR5P5T2BuBUgpFNnWJxU,1495
12
+ lalamo/model_import/huggingface_tokenizer_config.py,sha256=kTdgH2lle1m7zRtClO3BhgonvfZsAjeDGjPMAd1EU8E,2607
13
+ lalamo/model_import/decoder_configs/__init__.py,sha256=Ru_lI1IjahyXZBSB5J0eWwVM6gn2ilRZW65m2sU2hMw,460
14
+ lalamo/model_import/decoder_configs/common.py,sha256=OiQaYdcF2aZyUhtF6I6Wci9oIa3pyPfYSVedmzVFCuk,1792
15
+ lalamo/model_import/decoder_configs/executorch.py,sha256=Kx_T-B5jumfWf9vj20We4FF0GkSkTmIYeWOss88-qYA,5266
16
+ lalamo/model_import/decoder_configs/huggingface/__init__.py,sha256=kWHUnZDwGQCbA3Ucm-FEDr8zZ2yZ3yviPVftlNgMk30,460
17
+ lalamo/model_import/decoder_configs/huggingface/common.py,sha256=0Q4Q4uklQkWhVBYFS_hCWmdZuEpw8Ch7jhycgbA2_NY,1899
18
+ lalamo/model_import/decoder_configs/huggingface/gemma2.py,sha256=oIefI_ad-7DtzXmisFczkKPuOQ-KkzMkKWTk9likaMs,4101
19
+ lalamo/model_import/decoder_configs/huggingface/gemma3.py,sha256=AUwkxMI90uaFhAthc_FtjnwJcLuHGSzF19BXKhTaWtM,6470
20
+ lalamo/model_import/decoder_configs/huggingface/llama.py,sha256=8CvuCy4V84plGSOdmzIQmAwmxpCjKTo5wViCud5_oLo,5480
21
+ lalamo/model_import/decoder_configs/huggingface/mistral.py,sha256=cxT8I8RFhYE47-gvaSIfaVOau5fQRjFj2XLqLUMZw6g,4166
22
+ lalamo/model_import/decoder_configs/huggingface/qwen2.py,sha256=-sDwpEYe1wwRx1NfXxAhySz061LoV4_WZ2eWbkDo_7k,4981
23
+ lalamo/model_import/decoder_configs/huggingface/qwen3.py,sha256=seSMPJyFCj4z-lf_vvrZj407oytieslxmKdlJSrXcqY,5047
24
+ lalamo/model_import/loaders/__init__.py,sha256=Olg7a79phusilNgEa7PTgx1JgQQJLgAVg18T8isp0mw,148
25
+ lalamo/model_import/loaders/common.py,sha256=kkugV-bMQlN1zvGHoj3uc7z0FbXKoMtXEBTvyu4KxK4,1844
26
+ lalamo/model_import/loaders/executorch.py,sha256=nSvpylK8QL3nBk78P3FabLoyA87E3kv5CCpMfvuZe6Q,8886
27
+ lalamo/model_import/loaders/huggingface.py,sha256=C0spTy9-DhQ8U7bDAyGA_i9dKgUoLR2Dv58t20KUvZs,10590
28
+ lalamo/model_import/model_specs/__init__.py,sha256=UsKmBzNzJHVQquZxWdjGgiznnORVklE-z9Nr9Ertfqc,964
29
+ lalamo/model_import/model_specs/common.py,sha256=69_SPs0sIDkxDJ84xXZ05tRsz7WgXb4W5KPxOutPbT8,3773
30
+ lalamo/model_import/model_specs/deepseek.py,sha256=Umef93_ZBuq93yYsejIRNwj3udoln1gHfrv3SK5jyMo,417
31
+ lalamo/model_import/model_specs/gemma.py,sha256=YGWM-J7jBEL16c_LZ9F_6dgeZnf4sEPLDKngl_3FbrE,1289
32
+ lalamo/model_import/model_specs/huggingface.py,sha256=TEkU8y95_hmUWyF-Q5hn0dE2SvXbApghAsQwhWRu4D0,431
33
+ lalamo/model_import/model_specs/llama.py,sha256=Ml-xvRGlXBT9NJhmEpwgNo6C84oBSMYgA1_PrCYGcAw,990
34
+ lalamo/model_import/model_specs/mistral.py,sha256=HAojorjOqsJn2DoMBzYRw8A70qCslhFEsE9AF5xumlg,1278
35
+ lalamo/model_import/model_specs/pleias.py,sha256=5sRpZGYwLdsav6bLiW-459y1Cs9iJKgKkBIuGsOxtsQ,368
36
+ lalamo/model_import/model_specs/polaris.py,sha256=Mw1-6bByjDmPIKlIUIV46CsmV5xUp_laI5Qquo5DmAQ,520
37
+ lalamo/model_import/model_specs/qwen.py,sha256=TA1ApqR0EUTmHheZYoqVMgGUXZrXEznABt6FYT2PoQo,5991
38
+ lalamo/model_import/model_specs/reka.py,sha256=dOUYbEMMvovQdzQuBO_DCsjGI39syhoKCvnxLkNEDCw,423
39
+ lalamo/modules/__init__.py,sha256=ipgm-hRI9uLKluW1scsUXH9z2WeZf6bWSLgIFT4roMQ,2198
40
+ lalamo/modules/activations.py,sha256=ZgUd3E4VTAVgCZaj9HhYkXiJuiKrWBzK6so5JGnucOc,532
41
+ lalamo/modules/attention.py,sha256=Rukpx4lSTYHUqsrWoRc8hIruVa5l4hEEt0v-z6ieKaM,14815
42
+ lalamo/modules/common.py,sha256=Fj0CWhw9ymCw5ulaPOc6ShYtqiB8UISXRWt-Cpftgdo,4512
43
+ lalamo/modules/decoder.py,sha256=V1z4jgxxPOU8W-Xow2nxw35tYnaQxScfEFB8ouMcSWE,12197
44
+ lalamo/modules/decoder_layer.py,sha256=rF8VOkNYmnWQxPbyNiVxJZsFaoygsZQtGo_HrfXwt40,12517
45
+ lalamo/modules/embedding.py,sha256=2VopGTsZs6DhmDzBeB2XCrio_BFjty9gtKa99NDKfX4,12567
46
+ lalamo/modules/kv_cache.py,sha256=yzCx6jKuzShu7-UV5ffpM0q21syA1l5YKzSOUHLALYM,7216
47
+ lalamo/modules/linear.py,sha256=AKvNuVmUVOb2-Y4_j0pL1dnC0G0O8UzfYtDvBdTtcOE,24498
48
+ lalamo/modules/mlp.py,sha256=xCxeOlKJLGTnbiGOBq2RkYOeKEqeIb62fdTQM63aM18,3769
49
+ lalamo/modules/normalization.py,sha256=YecmA0hnVVYd473FzVgxunHYA377NWMKZRfuQNB8DQo,2942
50
+ lalamo/modules/rope.py,sha256=IlL4Jz4fw6eTKXXMls1BXBAgbuB3GnP0aVB9GrF1nA8,10012
51
+ lalamo/modules/torch_interop.py,sha256=-mujd1zI4ec2w92Hd50RtDa0K3jl6ZSnPxc5r3Fp9nU,916
52
+ lalamo/modules/utils.py,sha256=5QTdi34kEI5jix7TfTdB0mOYZbzZUul_T1y8eWCA6lQ,262
53
+ lalamo-0.3.0.dist-info/licenses/LICENSE,sha256=diHRfjSEJHD1nnEeMIfMRCjR3UERf8bT3eseD6b1ayA,1072
54
+ lalamo-0.3.0.dist-info/METADATA,sha256=_7HPR4KvK7S-ig9CpKc1K2rSLg3f9hHc8_XdvHkDB10,2855
55
+ lalamo-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
+ lalamo-0.3.0.dist-info/entry_points.txt,sha256=qli7qTfnBk5WP10rOGXXEckHMtt-atJMDWd8jN89Uks,43
57
+ lalamo-0.3.0.dist-info/top_level.txt,sha256=VHvWL5JN5XRG36NsN_MieJ7EwRihEOrEjyDaTdFJ-aI,7
58
+ lalamo-0.3.0.dist-info/RECORD,,
@@ -1,54 +0,0 @@
1
- lalamo/__init__.py,sha256=VhtKkFHsGy_199K6ToPyIuepm2yVsi7knqRNCG5PiXk,217
2
- lalamo/common.py,sha256=uYLw68V4AF3zlENG3KAIKRpOFXVHv8xX_n0cc3qJnj4,1877
3
- lalamo/language_model.py,sha256=GiA_BDQuYCgVBFHljb_ltW_M7g3I1Siwm111M3Jc8MM,9286
4
- lalamo/main.py,sha256=K2RLyTcxvBCP0teSsminssj_oUkuQAQ5y9ixa1uOqas,9546
5
- lalamo/quantization.py,sha256=8o6ryIZLzzDYQuvBTboPfaVVdfijAKGpTxOcg3GKVD8,2752
6
- lalamo/utils.py,sha256=ihV9ojDMlAf2_Ja5kNZMIYLMQxpQXBlNOd9TIdMq0yM,815
7
- lalamo/model_import/__init__.py,sha256=Z8pS9rbKKx1QgUy7KZtHxiNWlZhII3mdovT9d37vAxg,168
8
- lalamo/model_import/common.py,sha256=sHXEGQUtVb6TRT5FOGtJG9pz1Ohy5v_LtunubVxZKqQ,3303
9
- lalamo/model_import/configs/__init__.py,sha256=JYXeco_kfzKZuWqEmG24qxeYWs-FuE1W1kNgoFNrBEw,461
10
- lalamo/model_import/configs/common.py,sha256=MKAinEL7WXkijS3IrfiTRgx2l6otpnIaJG_CajosMCU,1803
11
- lalamo/model_import/configs/executorch.py,sha256=Kx_T-B5jumfWf9vj20We4FF0GkSkTmIYeWOss88-qYA,5266
12
- lalamo/model_import/configs/huggingface/__init__.py,sha256=kWHUnZDwGQCbA3Ucm-FEDr8zZ2yZ3yviPVftlNgMk30,460
13
- lalamo/model_import/configs/huggingface/common.py,sha256=p6oEKIT2Ezh_d8eDXYzHaJaqjPriQrAzz2bkEq_HkgY,1698
14
- lalamo/model_import/configs/huggingface/gemma2.py,sha256=oIefI_ad-7DtzXmisFczkKPuOQ-KkzMkKWTk9likaMs,4101
15
- lalamo/model_import/configs/huggingface/gemma3.py,sha256=1tkkmEs4pF0t0XlDS2Z5mWzcPGrRWb7FcLgazrFDJy8,6434
16
- lalamo/model_import/configs/huggingface/llama.py,sha256=_vOalgc24uhMcPyCqyxWOZk80hXxqN-dhMHvBGtbIlc,5444
17
- lalamo/model_import/configs/huggingface/mistral.py,sha256=39qsX_Twml8C0xz0CayVZse2uaHJtKS9-54B8nQw_5k,4148
18
- lalamo/model_import/configs/huggingface/qwen2.py,sha256=GnO1_DKDewiB4AW8lJu_x30lL-GgB9GYc64rl6XqfYI,4963
19
- lalamo/model_import/configs/huggingface/qwen3.py,sha256=UJ-EP0geHmGXnT_Ioy7Z7V4vns_dKz2YpPe-GLPQg20,5029
20
- lalamo/model_import/loaders/__init__.py,sha256=Olg7a79phusilNgEa7PTgx1JgQQJLgAVg18T8isp0mw,148
21
- lalamo/model_import/loaders/common.py,sha256=2FigeDMUwlMPUebX8DAK2Yh9aLgVtsfTj0S431p7A0o,1782
22
- lalamo/model_import/loaders/executorch.py,sha256=nSvpylK8QL3nBk78P3FabLoyA87E3kv5CCpMfvuZe6Q,8886
23
- lalamo/model_import/loaders/huggingface.py,sha256=Ze_qB0fSxY8lH4ovH0t8jd5jiteasUWkS9HdgMZXCrs,10523
24
- lalamo/model_import/model_specs/__init__.py,sha256=_sJthAH1xXl5B9JPhRqMVP2t5KkhzqmKFHSRlOiFg8s,915
25
- lalamo/model_import/model_specs/common.py,sha256=H56uwiyDsm6GD-1uxCm-zGBLuxE_EN84ivHi80niL0g,3822
26
- lalamo/model_import/model_specs/deepseek.py,sha256=9l3pVyC-ZoIaFG4xWhPDCbKkD2TsND286o0KzO0uxKo,788
27
- lalamo/model_import/model_specs/gemma.py,sha256=y4aDeaGGl4JPIanAgPMOlyfD_cx3Q7rpTKgDgx5AsX0,2299
28
- lalamo/model_import/model_specs/huggingface.py,sha256=ktDJ_qZxSGmHREydrYQaWi71bXJZiHqzHDoZeORENno,784
29
- lalamo/model_import/model_specs/llama.py,sha256=7eXfMwj_VZpeHAuXmPk1jcA_X7iXsJ8AWf6pk_Qy7rg,3226
30
- lalamo/model_import/model_specs/mistral.py,sha256=xDX2SyTruGR7A8LI_Ypa6qAP5nVyYhxLffoxS2F6bmI,1649
31
- lalamo/model_import/model_specs/pleias.py,sha256=zLRjmT6PXFtykqSYpaRtVObP306urMjF2J6dTKdAbQM,747
32
- lalamo/model_import/model_specs/polaris.py,sha256=TiGlXI3j7HP9bs01jdcysBNFxvNKnxTF30wuv5Jg2mQ,768
33
- lalamo/model_import/model_specs/qwen.py,sha256=dsCo3uaSPtPPjGuWHerFUY27f5Pv_HFOao2lPjFFHJI,11302
34
- lalamo/model_import/model_specs/reka.py,sha256=YtAuM52ImgH24lVuICXDcS39mNNzG_b-ouoAy5uVYLk,766
35
- lalamo/modules/__init__.py,sha256=iNzQL_qIG10U157bWmblj9fZNewup0O0aB8IsMXuBPU,2164
36
- lalamo/modules/activations.py,sha256=ZgUd3E4VTAVgCZaj9HhYkXiJuiKrWBzK6so5JGnucOc,532
37
- lalamo/modules/attention.py,sha256=ZvhQPBpsgZc-RDM1EQZgG6a8CZGYvMthE7g3qDedUVM,12158
38
- lalamo/modules/common.py,sha256=6FOmvICxVJTxLll785WY7KVY7ixAvPuzaW_J1trYNj0,3171
39
- lalamo/modules/decoder.py,sha256=Erc8k_tjrCCZOMBJM1bL0b96zFjaKDGIuFmtEp-OJVk,9043
40
- lalamo/modules/decoder_layer.py,sha256=gVVE48hlkNTvWJIt5oKak7VhEIrYdCaErf7_6_A_9ys,9443
41
- lalamo/modules/embedding.py,sha256=6xnNFi_TrB0ymSAmCLwmwjAZW0pchgzjQDjDws22PPw,10684
42
- lalamo/modules/kv_cache.py,sha256=GLZ84VTl2QtJYdnADR3j0e4CUmnSAlSvnCb63E8AtIk,7225
43
- lalamo/modules/linear.py,sha256=loUGFu3wx-iGqDqGMphQorhqBm7b9lAqT4B0jAmoamk,24087
44
- lalamo/modules/mlp.py,sha256=bV8qJTjsQFGv-CA7d32UQFn6BX5zmCKWC5pgm29-W3U,2631
45
- lalamo/modules/normalization.py,sha256=BWCHv6ycFJ_qMGfxkusGfay9dWzUlbpuwmjbLy2rI68,2380
46
- lalamo/modules/rope.py,sha256=Vdt2J_W0MPDK52nHsroLVCfWMHyHW3AfrKZCZAE4VYs,9369
47
- lalamo/modules/torch_interop.py,sha256=-mujd1zI4ec2w92Hd50RtDa0K3jl6ZSnPxc5r3Fp9nU,916
48
- lalamo/modules/utils.py,sha256=5QTdi34kEI5jix7TfTdB0mOYZbzZUul_T1y8eWCA6lQ,262
49
- lalamo-0.2.6.dist-info/licenses/LICENSE,sha256=diHRfjSEJHD1nnEeMIfMRCjR3UERf8bT3eseD6b1ayA,1072
50
- lalamo-0.2.6.dist-info/METADATA,sha256=3IJMF8cNEPM2dmIZfDcNlpOT-SQkvJBkZnWPxjA3CWY,2645
51
- lalamo-0.2.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
- lalamo-0.2.6.dist-info/entry_points.txt,sha256=qli7qTfnBk5WP10rOGXXEckHMtt-atJMDWd8jN89Uks,43
53
- lalamo-0.2.6.dist-info/top_level.txt,sha256=VHvWL5JN5XRG36NsN_MieJ7EwRihEOrEjyDaTdFJ-aI,7
54
- lalamo-0.2.6.dist-info/RECORD,,
File without changes