mostlyai-engine 1.4.6__tar.gz → 1.4.8__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.
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/PKG-INFO +1 -1
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/__init__.py +1 -1
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/character.py +1 -1
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/common.py +24 -6
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/generation.py +0 -3
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/training.py +0 -5
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/generation.py +1 -9
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/pyproject.toml +1 -1
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/.gitignore +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/LICENSE +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/README.md +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_common.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_dtypes.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/__init__.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/__init__.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/categorical.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/datetime.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/numeric.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/text.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/__init__.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/categorical.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/datetime.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/itt.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/lat_long.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/numeric.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/__init__.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/encoding.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/__init__.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/base.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/hf_engine.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/vllm_engine.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/lstm.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/tokenizer_utils.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/xgrammar_utils.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_memory.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/__init__.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/argn.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/common.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/encoding.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/fairness.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_tabular/training.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_training_utils.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_workspace.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/analysis.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/domain.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/encoding.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/generation.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/logging.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/random_state.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/splitting.py +0 -0
- {mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/training.py +0 -0
|
@@ -22,7 +22,7 @@ from mostlyai.engine.splitting import split
|
|
|
22
22
|
from mostlyai.engine.training import train
|
|
23
23
|
|
|
24
24
|
__all__ = ["split", "analyze", "encode", "train", "generate", "init_logging", "set_random_state"]
|
|
25
|
-
__version__ = "1.4.
|
|
25
|
+
__version__ = "1.4.8"
|
|
26
26
|
|
|
27
27
|
# suppress specific warning related to os.fork() in multi-threaded processes
|
|
28
28
|
warnings.filterwarnings("ignore", category=DeprecationWarning, message=".*multi-threaded.*fork.*")
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/character.py
RENAMED
|
@@ -155,7 +155,7 @@ def decode_character(df_encoded: pd.DataFrame, stats: dict) -> pd.Series:
|
|
|
155
155
|
values = values.apply(lambda item: item.replace(UNKNOWN_TOKEN, "")).str.rstrip()
|
|
156
156
|
else:
|
|
157
157
|
# handle de-generate case, where no tokens were stored
|
|
158
|
-
values = pd.Series(pd.NA
|
|
158
|
+
values = pd.Series(pd.NA, index=range(df_encoded.shape[0]))
|
|
159
159
|
if stats["has_nan"]:
|
|
160
160
|
values[df_encoded["nan"] == 1] = pd.NA
|
|
161
161
|
return values
|
|
@@ -18,7 +18,15 @@ from pathlib import Path
|
|
|
18
18
|
|
|
19
19
|
import torch
|
|
20
20
|
from peft import PeftConfig, prepare_model_for_kbit_training
|
|
21
|
-
from transformers import
|
|
21
|
+
from transformers import (
|
|
22
|
+
AutoConfig,
|
|
23
|
+
AutoModel,
|
|
24
|
+
AutoModelForCausalLM,
|
|
25
|
+
AutoModelForImageTextToText,
|
|
26
|
+
BitsAndBytesConfig,
|
|
27
|
+
PretrainedConfig,
|
|
28
|
+
PreTrainedModel,
|
|
29
|
+
)
|
|
22
30
|
|
|
23
31
|
from mostlyai.engine._language.lstm import LSTMFromScratchConfig
|
|
24
32
|
|
|
@@ -35,7 +43,7 @@ def is_bf16_supported(device: torch.device) -> bool:
|
|
|
35
43
|
|
|
36
44
|
|
|
37
45
|
def get_attention_implementation(config: PretrainedConfig) -> str | None:
|
|
38
|
-
model_cls =
|
|
46
|
+
model_cls = AutoModel._model_mapping[type(config)]
|
|
39
47
|
attn_implementation = None
|
|
40
48
|
if getattr(model_cls, "_supports_sdpa", False):
|
|
41
49
|
attn_implementation = "sdpa"
|
|
@@ -91,13 +99,23 @@ def load_base_model_and_config(
|
|
|
91
99
|
else:
|
|
92
100
|
device_map = "auto"
|
|
93
101
|
|
|
94
|
-
|
|
102
|
+
if hasattr(config, "text_config") and hasattr(config, "vision_config"):
|
|
103
|
+
config.text_config.use_cache = use_cache
|
|
104
|
+
config.text_config.attn_implementation = attn_implementation
|
|
105
|
+
auto_model_cls = AutoModelForImageTextToText
|
|
106
|
+
elif hasattr(config, "use_cache"):
|
|
107
|
+
config.use_cache = use_cache
|
|
108
|
+
config.attn_implementation = attn_implementation
|
|
109
|
+
auto_model_cls = AutoModelForCausalLM
|
|
110
|
+
else:
|
|
111
|
+
raise ValueError("Unsupported model")
|
|
112
|
+
|
|
113
|
+
model = auto_model_cls.from_pretrained(
|
|
95
114
|
model_id_or_path,
|
|
96
|
-
|
|
97
|
-
attn_implementation=attn_implementation,
|
|
98
|
-
use_cache=use_cache,
|
|
115
|
+
config=config,
|
|
99
116
|
device_map=device_map,
|
|
100
117
|
quantization_config=quantization_config,
|
|
118
|
+
torch_dtype=torch_dtype,
|
|
101
119
|
)
|
|
102
120
|
if quantization_config:
|
|
103
121
|
# convert all non-kbit layers to float32
|
|
@@ -256,9 +256,6 @@ def generate(
|
|
|
256
256
|
_LOG.info(f"{max_new_tokens=}")
|
|
257
257
|
|
|
258
258
|
t0 = time.time()
|
|
259
|
-
# use MOSTLY_HUGGING_FACE_TOKEN if available, otherwise HF_TOKEN should be unset or with a pre-set value as is
|
|
260
|
-
if os.getenv("MOSTLY_HUGGING_FACE_TOKEN"):
|
|
261
|
-
os.environ["HF_TOKEN"] = os.environ["MOSTLY_HUGGING_FACE_TOKEN"]
|
|
262
259
|
|
|
263
260
|
is_peft_adapter = (workspace.model_path / "adapter_config.json").exists()
|
|
264
261
|
is_vllm_available = importlib.util.find_spec("vllm") is not None
|
|
@@ -16,7 +16,6 @@ import gc
|
|
|
16
16
|
import json
|
|
17
17
|
import logging
|
|
18
18
|
import math
|
|
19
|
-
import os
|
|
20
19
|
import time
|
|
21
20
|
import warnings
|
|
22
21
|
from collections.abc import Callable
|
|
@@ -465,10 +464,6 @@ def train(
|
|
|
465
464
|
model_config = LSTMFromScratchConfig(vocab_size=len(tokenizer), with_dp=with_dp)
|
|
466
465
|
model = LSTMFromScratchLMHeadModel(model_config).to(device)
|
|
467
466
|
else:
|
|
468
|
-
# use MOSTLY_HUGGING_FACE_TOKEN if available
|
|
469
|
-
if os.getenv("MOSTLY_HUGGING_FACE_TOKEN"):
|
|
470
|
-
os.environ["HF_TOKEN"] = os.environ["MOSTLY_HUGGING_FACE_TOKEN"]
|
|
471
|
-
|
|
472
467
|
model, model_config = load_base_model_and_config(
|
|
473
468
|
model_id_or_path,
|
|
474
469
|
device=device,
|
|
@@ -758,15 +758,7 @@ def generate(
|
|
|
758
758
|
_LOG.info(f"{gen_column_order=}")
|
|
759
759
|
if not enable_flexible_generation:
|
|
760
760
|
# check if resolved column order is the same as the one from training
|
|
761
|
-
trn_column_order =
|
|
762
|
-
trn_column_order += [
|
|
763
|
-
get_argn_name(
|
|
764
|
-
argn_processor=tgt_stats["columns"][col][ARGN_PROCESSOR],
|
|
765
|
-
argn_table=tgt_stats["columns"][col][ARGN_TABLE],
|
|
766
|
-
argn_column=tgt_stats["columns"][col][ARGN_COLUMN],
|
|
767
|
-
)
|
|
768
|
-
for col in tgt_stats["columns"].keys()
|
|
769
|
-
]
|
|
761
|
+
trn_column_order = get_columns_from_cardinalities(tgt_cardinalities)
|
|
770
762
|
_LOG.info(f"{trn_column_order=}")
|
|
771
763
|
if gen_column_order != trn_column_order:
|
|
772
764
|
raise ValueError(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/datetime.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/numeric.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/language/text.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/datetime.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/itt.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/lat_long.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_encoding_types/tabular/numeric.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/hf_engine.py
RENAMED
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/engine/vllm_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyai_engine-1.4.6 → mostlyai_engine-1.4.8}/mostlyai/engine/_language/tokenizer_utils.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|