lalamo 0.2.7__py3-none-any.whl → 0.3.1__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.
- lalamo/__init__.py +1 -1
- lalamo/common.py +79 -29
- lalamo/language_model.py +106 -83
- lalamo/main.py +91 -18
- lalamo/message_processor.py +170 -0
- lalamo/model_import/common.py +159 -43
- lalamo/model_import/{configs → decoder_configs}/__init__.py +0 -1
- lalamo/model_import/{configs → decoder_configs}/common.py +11 -10
- lalamo/model_import/{configs → decoder_configs}/huggingface/common.py +9 -4
- lalamo/model_import/{configs → decoder_configs}/huggingface/gemma3.py +2 -2
- lalamo/model_import/{configs → decoder_configs}/huggingface/llama.py +2 -2
- lalamo/model_import/{configs → decoder_configs}/huggingface/mistral.py +1 -1
- lalamo/model_import/{configs → decoder_configs}/huggingface/qwen2.py +1 -1
- lalamo/model_import/{configs → decoder_configs}/huggingface/qwen3.py +1 -1
- lalamo/model_import/huggingface_generation_config.py +44 -0
- lalamo/model_import/huggingface_tokenizer_config.py +85 -0
- lalamo/model_import/loaders/common.py +2 -1
- lalamo/model_import/loaders/huggingface.py +12 -10
- lalamo/model_import/model_specs/__init__.py +3 -2
- lalamo/model_import/model_specs/common.py +31 -32
- lalamo/model_import/model_specs/deepseek.py +1 -10
- lalamo/model_import/model_specs/gemma.py +2 -25
- lalamo/model_import/model_specs/huggingface.py +2 -12
- lalamo/model_import/model_specs/llama.py +2 -58
- lalamo/model_import/model_specs/mistral.py +9 -19
- lalamo/model_import/model_specs/pleias.py +3 -13
- lalamo/model_import/model_specs/polaris.py +5 -7
- lalamo/model_import/model_specs/qwen.py +12 -111
- lalamo/model_import/model_specs/reka.py +4 -13
- lalamo/modules/__init__.py +2 -1
- lalamo/modules/attention.py +90 -10
- lalamo/modules/common.py +51 -4
- lalamo/modules/decoder.py +90 -8
- lalamo/modules/decoder_layer.py +85 -8
- lalamo/modules/embedding.py +95 -29
- lalamo/modules/kv_cache.py +3 -3
- lalamo/modules/linear.py +170 -130
- lalamo/modules/mlp.py +40 -7
- lalamo/modules/normalization.py +24 -6
- lalamo/modules/rope.py +24 -6
- lalamo/sampling.py +99 -0
- lalamo/utils.py +86 -1
- {lalamo-0.2.7.dist-info → lalamo-0.3.1.dist-info}/METADATA +6 -6
- lalamo-0.3.1.dist-info/RECORD +58 -0
- lalamo-0.2.7.dist-info/RECORD +0 -54
- /lalamo/model_import/{configs → decoder_configs}/executorch.py +0 -0
- /lalamo/model_import/{configs → decoder_configs}/huggingface/__init__.py +0 -0
- /lalamo/model_import/{configs → decoder_configs}/huggingface/gemma2.py +0 -0
- {lalamo-0.2.7.dist-info → lalamo-0.3.1.dist-info}/WHEEL +0 -0
- {lalamo-0.2.7.dist-info → lalamo-0.3.1.dist-info}/entry_points.txt +0 -0
- {lalamo-0.2.7.dist-info → lalamo-0.3.1.dist-info}/licenses/LICENSE +0 -0
- {lalamo-0.2.7.dist-info → lalamo-0.3.1.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__ = [
|
|
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.
|
|
3
|
+
Version: 0.3.1
|
|
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
|
|
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=BBoNVaSUlCj5z4W_8Mo-GYkDZHVno1CmcZ370nWxDHs,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=MwyQOe1QNxX5Cw-p1Emsrx6vckG3X4Xi56RACt2oOrg,3782
|
|
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.1.dist-info/licenses/LICENSE,sha256=diHRfjSEJHD1nnEeMIfMRCjR3UERf8bT3eseD6b1ayA,1072
|
|
54
|
+
lalamo-0.3.1.dist-info/METADATA,sha256=pkkxgoNYDIMLQuHsk4cqdaHDwBel5EQ9jWYMxF1jy40,2855
|
|
55
|
+
lalamo-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
56
|
+
lalamo-0.3.1.dist-info/entry_points.txt,sha256=qli7qTfnBk5WP10rOGXXEckHMtt-atJMDWd8jN89Uks,43
|
|
57
|
+
lalamo-0.3.1.dist-info/top_level.txt,sha256=VHvWL5JN5XRG36NsN_MieJ7EwRihEOrEjyDaTdFJ-aI,7
|
|
58
|
+
lalamo-0.3.1.dist-info/RECORD,,
|
lalamo-0.2.7.dist-info/RECORD
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
lalamo/__init__.py,sha256=pJx61SiYtLEREzNFL6L0V3TEa7F17hyj0jHuQMAZ7uw,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=oPKd6kKmmUBPQD5UV_yzSsNwq6R-l3ecqBKDXiDYx8c,3850
|
|
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.7.dist-info/licenses/LICENSE,sha256=diHRfjSEJHD1nnEeMIfMRCjR3UERf8bT3eseD6b1ayA,1072
|
|
50
|
-
lalamo-0.2.7.dist-info/METADATA,sha256=xO4NaahkCxodVGM71maSqxethUJsMTXLG-TVImtmEO4,2645
|
|
51
|
-
lalamo-0.2.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
52
|
-
lalamo-0.2.7.dist-info/entry_points.txt,sha256=qli7qTfnBk5WP10rOGXXEckHMtt-atJMDWd8jN89Uks,43
|
|
53
|
-
lalamo-0.2.7.dist-info/top_level.txt,sha256=VHvWL5JN5XRG36NsN_MieJ7EwRihEOrEjyDaTdFJ-aI,7
|
|
54
|
-
lalamo-0.2.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|