ob-metaflow-extensions 1.1.157__tar.gz → 1.1.159__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.
Potentially problematic release.
This version of ob-metaflow-extensions might be problematic. Click here for more details.
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/PKG-INFO +1 -1
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/__init__.py +1 -1
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/ollama/__init__.py +32 -13
- ob-metaflow-extensions-1.1.159/metaflow_extensions/outerbounds/plugins/ollama/constants.py +1 -0
- ob-metaflow-extensions-1.1.159/metaflow_extensions/outerbounds/plugins/ollama/exceptions.py +22 -0
- ob-metaflow-extensions-1.1.159/metaflow_extensions/outerbounds/plugins/ollama/ollama.py +813 -0
- ob-metaflow-extensions-1.1.159/metaflow_extensions/outerbounds/plugins/torchtune/__init__.py +159 -0
- ob-metaflow-extensions-1.1.159/metaflow_extensions/outerbounds/toplevel/plugins/torchtune/__init__.py +1 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/ob_metaflow_extensions.egg-info/PKG-INFO +1 -1
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/ob_metaflow_extensions.egg-info/SOURCES.txt +4 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/setup.py +1 -1
- ob-metaflow-extensions-1.1.157/metaflow_extensions/outerbounds/plugins/ollama/ollama.py +0 -328
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/README.md +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/config/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/apps/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/apps/app_utils.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/apps/consts.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/apps/deploy_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/apps/supervisord_utils.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/auth_server.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/card_utilities/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/card_utilities/async_cards.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/card_utilities/extra_components.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/card_utilities/injector.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/checkpoint_datastores/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/checkpoint_datastores/coreweave.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/checkpoint_datastores/nebius.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/fast_bakery/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/fast_bakery/docker_environment.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_cli.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/kubernetes/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/kubernetes/kubernetes_client.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nim/card.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nim/nim_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nim/nim_manager.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nim/utils.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/constants.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/exceptions.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/heartbeat_store.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf_cli.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvcf/utils.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/exceptions.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/nvct.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/nvct_cli.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/nvct_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/nvct_runner.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/nvct/utils.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/perimeters.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/profilers/deco_injector.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/profilers/gpu_profile_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/secrets/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/secrets/secrets.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowflake/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowflake/snowflake.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_cli.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_client.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_decorator.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_exceptions.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_job.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_service_spec.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/plugins/tensorboard/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/profilers/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/profilers/gpu.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/remote_config.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/global_aliases_for_metaflow_package.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/plugins/azure/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/plugins/gcp/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/plugins/kubernetes/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/plugins/ollama/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/metaflow_extensions/outerbounds/toplevel/plugins/snowflake/__init__.py +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/ob_metaflow_extensions.egg-info/dependency_links.txt +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/ob_metaflow_extensions.egg-info/requires.txt +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/ob_metaflow_extensions.egg-info/top_level.txt +0 -0
- {ob-metaflow-extensions-1.1.157 → ob-metaflow-extensions-1.1.159}/setup.cfg +0 -0
|
@@ -347,4 +347,4 @@ SECRETS_PROVIDERS_DESC = [
|
|
|
347
347
|
("outerbounds", ".secrets.secrets.OuterboundsSecretsProvider"),
|
|
348
348
|
]
|
|
349
349
|
# Adding an override here so the library can be imported at the metaflow.plugins level
|
|
350
|
-
__mf_promote_submodules__ = ["snowflake", "ollama"]
|
|
350
|
+
__mf_promote_submodules__ = ["snowflake", "ollama", "torchtune"]
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from metaflow.decorators import StepDecorator
|
|
2
2
|
from metaflow import current
|
|
3
3
|
import functools
|
|
4
|
+
import os
|
|
4
5
|
|
|
5
6
|
from .ollama import OllamaManager
|
|
6
7
|
from ..card_utilities.injector import CardDecoratorInjector
|
|
@@ -13,10 +14,10 @@ class OllamaDecorator(StepDecorator, CardDecoratorInjector):
|
|
|
13
14
|
This decorator is used to run Ollama APIs as Metaflow task sidecars.
|
|
14
15
|
|
|
15
16
|
User code call
|
|
16
|
-
|
|
17
|
+
--------------
|
|
17
18
|
@ollama(
|
|
18
|
-
models=[
|
|
19
|
-
|
|
19
|
+
models=[...],
|
|
20
|
+
...
|
|
20
21
|
)
|
|
21
22
|
|
|
22
23
|
Valid backend options
|
|
@@ -26,21 +27,39 @@ class OllamaDecorator(StepDecorator, CardDecoratorInjector):
|
|
|
26
27
|
- (TODO) 'remote': Spin up separate instance to serve Ollama models.
|
|
27
28
|
|
|
28
29
|
Valid model options
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- 'llama3.3'
|
|
32
|
-
- any model here https://ollama.com/search
|
|
30
|
+
-------------------
|
|
31
|
+
Any model here https://ollama.com/search, e.g. 'llama3.2', 'llama3.3'
|
|
33
32
|
|
|
34
33
|
Parameters
|
|
35
34
|
----------
|
|
36
|
-
models: list[
|
|
35
|
+
models: list[str]
|
|
37
36
|
List of Ollama containers running models in sidecars.
|
|
38
37
|
backend: str
|
|
39
38
|
Determines where and how to run the Ollama process.
|
|
39
|
+
force_pull: bool
|
|
40
|
+
Whether to run `ollama pull` no matter what, or first check the remote cache in Metaflow datastore for this model key.
|
|
41
|
+
skip_push_check: bool
|
|
42
|
+
Whether to skip the check that populates/overwrites remote cache on terminating an ollama model.
|
|
43
|
+
debug: bool
|
|
44
|
+
Whether to turn on verbose debugging logs.
|
|
40
45
|
"""
|
|
41
46
|
|
|
42
47
|
name = "ollama"
|
|
43
|
-
defaults = {
|
|
48
|
+
defaults = {
|
|
49
|
+
"models": [],
|
|
50
|
+
"backend": "local",
|
|
51
|
+
"force_pull": False,
|
|
52
|
+
"skip_push_check": False,
|
|
53
|
+
"debug": False,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
def step_init(
|
|
57
|
+
self, flow, graph, step_name, decorators, environment, flow_datastore, logger
|
|
58
|
+
):
|
|
59
|
+
super().step_init(
|
|
60
|
+
flow, graph, step_name, decorators, environment, flow_datastore, logger
|
|
61
|
+
)
|
|
62
|
+
self.flow_datastore_backend = flow_datastore._storage_impl
|
|
44
63
|
|
|
45
64
|
def task_decorate(
|
|
46
65
|
self, step_func, flow, graph, retry_count, max_user_code_retries, ubf_context
|
|
@@ -51,6 +70,9 @@ class OllamaDecorator(StepDecorator, CardDecoratorInjector):
|
|
|
51
70
|
self.ollama_manager = OllamaManager(
|
|
52
71
|
models=self.attributes["models"],
|
|
53
72
|
backend=self.attributes["backend"],
|
|
73
|
+
flow_datastore_backend=self.flow_datastore_backend,
|
|
74
|
+
force_pull=self.attributes["force_pull"],
|
|
75
|
+
skip_push_check=self.attributes["skip_push_check"],
|
|
54
76
|
debug=self.attributes["debug"],
|
|
55
77
|
)
|
|
56
78
|
except Exception as e:
|
|
@@ -59,10 +81,7 @@ class OllamaDecorator(StepDecorator, CardDecoratorInjector):
|
|
|
59
81
|
try:
|
|
60
82
|
step_func()
|
|
61
83
|
finally:
|
|
62
|
-
|
|
63
|
-
self.ollama_manager.terminate_models()
|
|
64
|
-
except Exception as term_e:
|
|
65
|
-
print(f"[@ollama] Error during sidecar termination: {term_e}")
|
|
84
|
+
self.ollama_manager.terminate_models()
|
|
66
85
|
if self.attributes["debug"]:
|
|
67
86
|
print(f"[@ollama] process statuses: {self.ollama_manager.processes}")
|
|
68
87
|
print(f"[@ollama] process runtime stats: {self.ollama_manager.stats}")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
OLLAMA_SUFFIX = "mf.ollama"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from metaflow.exception import MetaflowException
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class UnspecifiedRemoteStorageRootException(MetaflowException):
|
|
5
|
+
headline = "Storage root not specified."
|
|
6
|
+
|
|
7
|
+
def __init__(self, message):
|
|
8
|
+
super(UnspecifiedRemoteStorageRootException, self).__init__(message)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class EmptyOllamaManifestCacheException(MetaflowException):
|
|
12
|
+
headline = "Model not found."
|
|
13
|
+
|
|
14
|
+
def __init__(self, message):
|
|
15
|
+
super(EmptyOllamaManifestCacheException, self).__init__(message)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class EmptyOllamaBlobCacheException(MetaflowException):
|
|
19
|
+
headline = "Blob not found."
|
|
20
|
+
|
|
21
|
+
def __init__(self, message):
|
|
22
|
+
super(EmptyOllamaBlobCacheException, self).__init__(message)
|