dataeval-flow 0.2.0__tar.gz → 0.2.2__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.
- dataeval_flow-0.2.0/README.md → dataeval_flow-0.2.2/PKG-INFO +182 -44
- dataeval_flow-0.2.0/PKG-INFO → dataeval_flow-0.2.2/README.md +124 -96
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/pyproject.toml +36 -23
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/__main__.py +101 -1
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_version.py +2 -2
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_dataset.py +10 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/dataset.py +78 -15
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/runner.py +100 -36
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflow/__init__.py +35 -3
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflow/orchestrator.py +55 -16
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/.gitignore +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/LICENSE +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_coerce.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_discover.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_execution.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_introspect.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_item.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_registry.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_state.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_model/_undo.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_panes/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_panes/_config_pane.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_panes/_result_pane.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_panes/_task_pane.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_panes/_widgets.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_base.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_detail.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_model.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_pathpicker.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_section.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_screens/_settings.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_viewmodel/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_viewmodel/_builder_vm.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_viewmodel/_model_vm.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_viewmodel/_rendering.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_viewmodel/_result_vm.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/_viewmodel/_section_vm.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/app.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_app/cli.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_encoding_cli.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/_logging.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/binning.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/cache.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/_loader.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/_merge.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/_models.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/_paths.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_extractor.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_metadata.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_preprocessor.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_task.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_view.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/config/schemas/_workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/embeddings.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/metadata.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/policy.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/preprocessing.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/preprocessors.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/py.typed +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/view.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflow/_text_report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflow/base.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/_common.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/_ontology.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/analysis/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/analysis/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/analysis/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/analysis/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/cleaning/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/cleaning/_internal.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/cleaning/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/cleaning/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/cleaning/report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/cleaning/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/coverage/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/coverage/ontology.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/coverage/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/coverage/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/coverage/report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/coverage/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/drift/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/drift/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/drift/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/drift/report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/drift/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/ood/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/ood/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/ood/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/ood/report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/ood/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/parameter_sweep/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/parameter_sweep/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/parameter_sweep/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/parameter_sweep/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/prioritization/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/prioritization/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/prioritization/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/prioritization/report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/prioritization/workflow.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/splitting/__init__.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/splitting/outputs.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/splitting/params.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/splitting/report.py +0 -0
- {dataeval_flow-0.2.0 → dataeval_flow-0.2.2}/src/dataeval_flow/workflows/splitting/workflow.py +0 -0
|
@@ -1,3 +1,61 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: dataeval-flow
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: DataEval Workflows container for data evaluation
|
|
5
|
+
Project-URL: Homepage, https://github.com/aria-ml/dataeval-flow
|
|
6
|
+
Project-URL: Documentation, https://dataeval-flow.readthedocs.io/
|
|
7
|
+
Project-URL: Repository, https://github.com/aria-ml/dataeval-flow
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: <3.15,>=3.10
|
|
21
|
+
Requires-Dist: click>=8.0
|
|
22
|
+
Requires-Dist: dataeval>=1.1.0
|
|
23
|
+
Requires-Dist: datamaite[ic,od]==0.4.1
|
|
24
|
+
Requires-Dist: numpy>=1.24.2
|
|
25
|
+
Requires-Dist: pydantic>=2.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0
|
|
27
|
+
Provides-Extra: app
|
|
28
|
+
Requires-Dist: textual>=3.0; extra == 'app'
|
|
29
|
+
Provides-Extra: cpu
|
|
30
|
+
Requires-Dist: torch>=2.2.0; extra == 'cpu'
|
|
31
|
+
Requires-Dist: torchvision>=0.17.0; extra == 'cpu'
|
|
32
|
+
Provides-Extra: cu126
|
|
33
|
+
Requires-Dist: torch>=2.2.0; extra == 'cu126'
|
|
34
|
+
Requires-Dist: torchvision>=0.17.0; extra == 'cu126'
|
|
35
|
+
Provides-Extra: cu130
|
|
36
|
+
Requires-Dist: torch>=2.2.0; extra == 'cu130'
|
|
37
|
+
Requires-Dist: torchvision>=0.17.0; extra == 'cu130'
|
|
38
|
+
Provides-Extra: onnx
|
|
39
|
+
Requires-Dist: onnx>=1.15; extra == 'onnx'
|
|
40
|
+
Requires-Dist: onnxruntime<1.24,>=1.20; (python_version == '3.10') and extra == 'onnx'
|
|
41
|
+
Requires-Dist: onnxruntime>=1.20; (python_version >= '3.11') and extra == 'onnx'
|
|
42
|
+
Provides-Extra: onnx-cu126
|
|
43
|
+
Requires-Dist: onnx>=1.15; extra == 'onnx-cu126'
|
|
44
|
+
Requires-Dist: onnxruntime-gpu<1.24,>=1.20; (python_version == '3.10' and extra != 'onnx-cu130') and extra == 'onnx-cu126'
|
|
45
|
+
Requires-Dist: onnxruntime-gpu<1.27,>=1.20; (python_version >= '3.11' and extra != 'onnx-cu130') and extra == 'onnx-cu126'
|
|
46
|
+
Requires-Dist: onnxruntime-gpu<1.27,>=1.24; (python_version >= '3.14' and extra != 'onnx-cu130') and extra == 'onnx-cu126'
|
|
47
|
+
Provides-Extra: onnx-cu130
|
|
48
|
+
Requires-Dist: onnx>=1.15; extra == 'onnx-cu130'
|
|
49
|
+
Requires-Dist: onnxruntime-gpu>=1.27; (python_version >= '3.11' and extra != 'onnx-cu126') and extra == 'onnx-cu130'
|
|
50
|
+
Requires-Dist: onnxruntime>=1.20; (python_version == '3.10' and extra != 'onnx-cu126') and extra == 'onnx-cu130'
|
|
51
|
+
Provides-Extra: ontology
|
|
52
|
+
Requires-Dist: dataeval[ontology]==1.1.0; extra == 'ontology'
|
|
53
|
+
Provides-Extra: opencv
|
|
54
|
+
Requires-Dist: opencv-python-headless>=4.8.0; extra == 'opencv'
|
|
55
|
+
Provides-Extra: opencv-fips
|
|
56
|
+
Requires-Dist: opencv-python-headless<4.13.0,>=4.8.0; extra == 'opencv-fips'
|
|
57
|
+
Description-Content-Type: text/markdown
|
|
58
|
+
|
|
1
59
|
<!-- markdownlint-disable MD041 -->
|
|
2
60
|

|
|
3
61
|
|
|
@@ -66,8 +124,8 @@ The guidance below applies to both the container and the Python-library forms.
|
|
|
66
124
|
|
|
67
125
|
DataEval Flow is developed and tested on Linux (Ubuntu 22.04 and 24.04, including
|
|
68
126
|
WSL2). The Python package supports **Python 3.10–3.14**; the CI test matrix runs
|
|
69
|
-
all five. The container images are built on Ubuntu
|
|
70
|
-
|
|
127
|
+
all five. The container images are all built on Ubuntu 24.04 (cpu, cu126, cu130).
|
|
128
|
+
macOS and Windows are supported only through Docker or
|
|
71
129
|
WSL2 and are not part of the CI test matrix — if you hit an issue on those hosts,
|
|
72
130
|
the OS/hardware may be the root cause.
|
|
73
131
|
|
|
@@ -106,17 +164,17 @@ at least the minimum CPU/memory above; size memory to your largest dataset.
|
|
|
106
164
|
## Quick Start
|
|
107
165
|
|
|
108
166
|
```bash
|
|
109
|
-
# 1. Build CUDA
|
|
110
|
-
docker build -f docker/Dockerfile.
|
|
167
|
+
# 1. Build CUDA 12.6 container
|
|
168
|
+
docker build -f docker/Dockerfile.cu126 -t dataeval:cu126 .
|
|
111
169
|
|
|
112
170
|
# 2. Show help
|
|
113
|
-
docker run dataeval:
|
|
171
|
+
docker run dataeval:cu126
|
|
114
172
|
|
|
115
173
|
# 3. Run with data and output
|
|
116
174
|
docker run --gpus all \
|
|
117
175
|
--mount type=bind,source=/path/to/data,target=/dataeval,readonly \
|
|
118
176
|
--mount type=bind,source=/path/to/output,target=/output \
|
|
119
|
-
dataeval:
|
|
177
|
+
dataeval:cu126
|
|
120
178
|
```
|
|
121
179
|
|
|
122
180
|
## Pulling pre-built images
|
|
@@ -128,13 +186,13 @@ if you don't need to modify the code.
|
|
|
128
186
|
**Rolling channel** — tracks the latest commit on `main`. The tag is overwritten on every merge.
|
|
129
187
|
|
|
130
188
|
```bash
|
|
131
|
-
docker pull harbor.jatic.net/aria/dataeval:
|
|
189
|
+
docker pull harbor.jatic.net/aria/dataeval:cu126 # cpu / cu126 / cu130
|
|
132
190
|
```
|
|
133
191
|
|
|
134
192
|
**Pinned release channel** — immutable, version-tagged images cut from `v*` git tags. Use these for reproducible workloads.
|
|
135
193
|
|
|
136
194
|
```bash
|
|
137
|
-
docker pull harbor.jatic.net/aria/dataeval:0.1
|
|
195
|
+
docker pull harbor.jatic.net/aria/dataeval:0.2.1-cu126
|
|
138
196
|
```
|
|
139
197
|
|
|
140
198
|
**Verifying the signature** — every published image is signed with
|
|
@@ -142,11 +200,11 @@ docker pull harbor.jatic.net/aria/dataeval:0.1.0-cu118
|
|
|
142
200
|
[docker/cosign.pub](docker/cosign.pub).
|
|
143
201
|
|
|
144
202
|
```bash
|
|
145
|
-
cosign verify --key docker/cosign.pub harbor.jatic.net/aria/dataeval:
|
|
203
|
+
cosign verify --key docker/cosign.pub harbor.jatic.net/aria/dataeval:cu126
|
|
146
204
|
```
|
|
147
205
|
|
|
148
|
-
Then drop the `dataeval:
|
|
149
|
-
commands above with the fully-qualified `harbor.jatic.net/aria/dataeval:
|
|
206
|
+
Then drop the `dataeval:cu126` reference in the Quick Start `docker run`
|
|
207
|
+
commands above with the fully-qualified `harbor.jatic.net/aria/dataeval:cu126`
|
|
150
208
|
(or pinned version) and skip step 1.
|
|
151
209
|
|
|
152
210
|
> **Note on feature branches.** Containers are only built and published from
|
|
@@ -157,17 +215,23 @@ commands above with the fully-qualified `harbor.jatic.net/aria/dataeval:cu118`
|
|
|
157
215
|
|
|
158
216
|
## Requirements
|
|
159
217
|
|
|
160
|
-
| Requirement | Version
|
|
161
|
-
| ------------- |
|
|
162
|
-
| Docker | >= 20.10
|
|
163
|
-
| NVIDIA GPU | Any (for GPU mode)
|
|
164
|
-
| NVIDIA Driver | >=
|
|
165
|
-
| CUDA |
|
|
218
|
+
| Requirement | Version |
|
|
219
|
+
| ------------- | -------------------------------------------------------------- |
|
|
220
|
+
| Docker | >= 20.10 |
|
|
221
|
+
| NVIDIA GPU | Any (for GPU mode) |
|
|
222
|
+
| NVIDIA Driver | >= 525 for the `cu126` image; >= 580 for `cu130` (GPU mode) |
|
|
223
|
+
| CUDA | 12.6 (`cu126`) or 13.0 (`cu130`) — bundled in the image |
|
|
224
|
+
|
|
225
|
+
The CUDA runtime libraries ship inside the image via PyTorch and `onnxruntime-gpu`, so
|
|
226
|
+
the host needs only the NVIDIA driver and the NVIDIA Container Toolkit — no host CUDA
|
|
227
|
+
install. The driver floors above are the CUDA major versions' minimums: any driver from
|
|
228
|
+
the 525 series up runs a CUDA 12.x image under minor-version compatibility, and CUDA 13.0
|
|
229
|
+
requires a 580-series or newer driver.
|
|
166
230
|
|
|
167
231
|
### Verify GPU Access
|
|
168
232
|
|
|
169
233
|
```bash
|
|
170
|
-
docker run --rm --gpus all nvidia/cuda:
|
|
234
|
+
docker run --rm --gpus all nvidia/cuda:12.6.3-base-ubuntu24.04 nvidia-smi
|
|
171
235
|
```
|
|
172
236
|
|
|
173
237
|
## Volume Mounts
|
|
@@ -193,7 +257,7 @@ docker run --gpus all \
|
|
|
193
257
|
--user "$(id -u):$(id -g)" \
|
|
194
258
|
--mount type=bind,source=/path/to/data,target=/dataeval,readonly \
|
|
195
259
|
--mount type=bind,source=/path/to/output,target=/output \
|
|
196
|
-
dataeval:
|
|
260
|
+
dataeval:cu126
|
|
197
261
|
```
|
|
198
262
|
|
|
199
263
|
#### Option 2: Open directory permissions
|
|
@@ -215,7 +279,7 @@ docker run --gpus all \
|
|
|
215
279
|
-e DATAEVAL_DATA=/data \
|
|
216
280
|
--mount type=bind,source=/path/to/data,target=/data,readonly \
|
|
217
281
|
--mount type=bind,source=/path/to/output,target=/output \
|
|
218
|
-
dataeval:
|
|
282
|
+
dataeval:cu126
|
|
219
283
|
```
|
|
220
284
|
|
|
221
285
|
## Environment Variables
|
|
@@ -231,7 +295,10 @@ precedence over them (see [Input Precedence](#input-precedence) below).
|
|
|
231
295
|
|
|
232
296
|
No secret mounts or credentials are required — DataEval Flow uses no API keys,
|
|
233
297
|
tokens, or passwords. (`DATAEVAL_FLOW_VERSION` and `DATAEVAL_NOX_UV_EXTRAS_OVERRIDE`
|
|
234
|
-
are build-time only and are not read at run time.
|
|
298
|
+
are build-time only and are not read at run time. `UV_EXTRAS_OVERRIDE` and
|
|
299
|
+
`CONTAINER_MODE` are baked into the image by the build and read at run time by the
|
|
300
|
+
entrypoint, purely to label the help text and decide whether to run the GPU check —
|
|
301
|
+
neither is meant to be set by the caller.)
|
|
235
302
|
|
|
236
303
|
## Input Precedence
|
|
237
304
|
|
|
@@ -253,7 +320,7 @@ options, precedence, and examples — via its help command, which is also the
|
|
|
253
320
|
default when the container runs with no pipeline arguments:
|
|
254
321
|
|
|
255
322
|
```bash
|
|
256
|
-
docker run dataeval:
|
|
323
|
+
docker run dataeval:cu126 --help
|
|
257
324
|
```
|
|
258
325
|
|
|
259
326
|
The library form exposes the same options via `python -m dataeval_flow --help`.
|
|
@@ -273,25 +340,33 @@ To specify a config path explicitly:
|
|
|
273
340
|
docker run --gpus all \
|
|
274
341
|
--mount type=bind,source=/path/to/data,target=/dataeval,readonly \
|
|
275
342
|
--mount type=bind,source=/path/to/output,target=/output \
|
|
276
|
-
dataeval:
|
|
343
|
+
dataeval:cu126 --config config/
|
|
277
344
|
|
|
278
345
|
# Single config file
|
|
279
346
|
docker run --gpus all \
|
|
280
347
|
--mount type=bind,source=/path/to/data,target=/dataeval,readonly \
|
|
281
348
|
--mount type=bind,source=/path/to/output,target=/output \
|
|
282
|
-
dataeval:
|
|
349
|
+
dataeval:cu126 --config params.yaml
|
|
283
350
|
```
|
|
284
351
|
|
|
285
352
|
Dataset and model paths in config files are resolved relative to the data root (`/dataeval` by default).
|
|
286
353
|
|
|
287
354
|
## Dataset Formats
|
|
288
355
|
|
|
289
|
-
|
|
356
|
+
A `datasets` entry selects its loader with `format`:
|
|
290
357
|
|
|
291
|
-
|
|
|
292
|
-
|
|
|
293
|
-
|
|
|
294
|
-
|
|
|
358
|
+
| `format` | Structure | Split selection |
|
|
359
|
+
| -------------- | ------------------------------------------------------------- | ---------------------------------- |
|
|
360
|
+
| `huggingface` | HuggingFace arrow dataset or dataset dict | `split:` (omit for a single split) |
|
|
361
|
+
| `image_folder` | Directory of images, optionally one subdirectory per class | n/a |
|
|
362
|
+
| `coco` | COCO images plus a JSON annotation file | `annotations_file:` + `images_dir:` |
|
|
363
|
+
| `yolo` | Ultralytics root — `data.yaml` plus image/label trees | `split:` (omit to load every split) |
|
|
364
|
+
|
|
365
|
+
Both single-split datasets and multi-split dataset dicts are supported. In-memory MAITE
|
|
366
|
+
and TorchVision datasets are also accepted programmatically via `DatasetProtocolConfig`,
|
|
367
|
+
which is not serializable and so cannot be named in a config file. See the
|
|
368
|
+
[Run workflows in containers](https://dataeval-flow.readthedocs.io/en/latest/how_to/containerized_workflows.html)
|
|
369
|
+
guide for the full field list of each format.
|
|
295
370
|
|
|
296
371
|
## CPU Fallback
|
|
297
372
|
|
|
@@ -308,13 +383,53 @@ docker run \
|
|
|
308
383
|
|
|
309
384
|
## CLI Modes
|
|
310
385
|
|
|
311
|
-
DataEval Flow has
|
|
386
|
+
DataEval Flow has four modes:
|
|
387
|
+
|
|
388
|
+
| Command | Purpose |
|
|
389
|
+
| ------------------------- | ------------------------------------------------------------------- |
|
|
390
|
+
| `dataeval-flow [opts]` | Headless execution — for automation and CI/CD pipelines |
|
|
391
|
+
| `dataeval-flow app` | Interactive TUI dashboard — configure, execute, and view results |
|
|
392
|
+
| `dataeval-flow config` | Simple CLI config builder — create/edit configs without the TUI |
|
|
393
|
+
| `dataeval-flow encoding` | Write the metadata encoding descriptor a result was computed under |
|
|
394
|
+
| `dataeval-flow workflows` | List the available workflow types, or print one's parameter schema |
|
|
395
|
+
|
|
396
|
+
`dataeval-flow --version` reports the installed build — useful for pinning down
|
|
397
|
+
which image produced a result.
|
|
398
|
+
|
|
399
|
+
### Headless execution
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# Every enabled task in the config
|
|
403
|
+
dataeval-flow --config params.yaml --data . --output ./results
|
|
404
|
+
|
|
405
|
+
# One task by name, whether or not the config marks it enabled
|
|
406
|
+
dataeval-flow --config params.yaml --task clean_my_data
|
|
407
|
+
|
|
408
|
+
# Several, in the order given
|
|
409
|
+
dataeval-flow --config params.yaml --task clean_my_data --task analyze_my_data
|
|
410
|
+
|
|
411
|
+
# Stop the pipeline when a finding breaches its health threshold
|
|
412
|
+
dataeval-flow --config params.yaml --output ./results --fail-on-warning
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
**Exit codes:** `0` when every task succeeded, `1` when any task failed. Health
|
|
416
|
+
warnings are reported but are not fatal unless you pass `--fail-on-warning`, which
|
|
417
|
+
turns them into an exit code of `1` as well. Every run's `result.json` carries a
|
|
418
|
+
`health` block per task (`status`, `warnings`, `findings`) so a pipeline can gate
|
|
419
|
+
on findings without parsing the text report.
|
|
312
420
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
421
|
+
### Workflow Discovery (`workflows`)
|
|
422
|
+
|
|
423
|
+
For images that ship without the TUI extra:
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# What can this build run?
|
|
427
|
+
dataeval-flow workflows
|
|
428
|
+
dataeval-flow workflows --json
|
|
429
|
+
|
|
430
|
+
# What does a given workflow type accept?
|
|
431
|
+
dataeval-flow workflows data-cleaning
|
|
432
|
+
```
|
|
318
433
|
|
|
319
434
|
### Interactive TUI (`app`)
|
|
320
435
|
|
|
@@ -350,12 +465,35 @@ python -m dataeval_flow config --config /path/to/params.yaml
|
|
|
350
465
|
|
|
351
466
|
Configs can be saved as YAML or JSON.
|
|
352
467
|
|
|
468
|
+
### Encoding Descriptor (`encoding`)
|
|
469
|
+
|
|
470
|
+
Extract the metadata encoding descriptor from an archived `result.json` and write it
|
|
471
|
+
where it can be reviewed and committed, so a later dataset is cut the same way:
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
python -m dataeval_flow encoding output/results/result.json -o policy/factor_bins.json
|
|
475
|
+
python -m dataeval_flow encoding output/results/result.json --task clean_my_data
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
Reference the committed descriptor from a metadata policy's `encoding` field. A run with
|
|
479
|
+
`-o` already writes `results/encoding.json` beside its results; this command recovers one
|
|
480
|
+
from a result archived earlier. See
|
|
481
|
+
[Configure metadata binning](https://dataeval-flow.readthedocs.io/en/latest/how_to/configure_metadata_binning.html).
|
|
482
|
+
|
|
353
483
|
## Dependencies
|
|
354
484
|
|
|
485
|
+
Declared runtime dependencies:
|
|
486
|
+
|
|
355
487
|
- `dataeval` - Core evaluation library
|
|
356
|
-
- `datamaite` - MAITE protocol dataset loaders
|
|
357
|
-
- `maite` - MAITE protocol library
|
|
488
|
+
- `datamaite` - MAITE protocol dataset loaders (which brings in `maite` itself)
|
|
358
489
|
- `pydantic` - Structural typing and schema validation
|
|
490
|
+
- `click` - Interactive prompts for the simple CLI config builder
|
|
491
|
+
- `pyyaml` - YAML config parsing
|
|
492
|
+
- `numpy` - Array handling
|
|
493
|
+
|
|
494
|
+
PyTorch arrives transitively through `dataeval`. Optional extras (`onnx`, `opencv`,
|
|
495
|
+
`app`, `ontology`, and the CUDA variants) are listed under
|
|
496
|
+
[Running Without Container](#running-without-container).
|
|
359
497
|
|
|
360
498
|
## Troubleshooting
|
|
361
499
|
|
|
@@ -392,8 +530,8 @@ DataEval Flow — it accepts the build already present (omit step 1 and you'll g
|
|
|
392
530
|
CUDA-bundled manylinux build of torch from PyPI, which is much larger):
|
|
393
531
|
|
|
394
532
|
```bash
|
|
395
|
-
# 1. Pick your PyTorch build (cpu /
|
|
396
|
-
pip install torch torchvision --index-url https://download.pytorch.org/whl/
|
|
533
|
+
# 1. Pick your PyTorch build (cpu / cu126 / cu130)
|
|
534
|
+
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130
|
|
397
535
|
|
|
398
536
|
# 2. Install DataEval Flow
|
|
399
537
|
pip install dataeval-flow
|
|
@@ -411,14 +549,14 @@ pip install dataeval-flow
|
|
|
411
549
|
`torchvision` is not installed by default — it is imported lazily and is only needed
|
|
412
550
|
for preprocessing pipelines, the torchvision dataset adapter, and the TUI's transform
|
|
413
551
|
discovery. Install it together with `torch` in step 1 so both come from the same index.
|
|
414
|
-
Feature extras (`onnx`, `onnx-
|
|
552
|
+
Feature extras (`onnx`, `onnx-cu126`, `onnx-cu130`, `opencv`, `opencv-fips`, `app`, `ontology`) work normally under
|
|
415
553
|
pip and are independent of the PyTorch variant:
|
|
416
554
|
|
|
417
555
|
```bash
|
|
418
556
|
pip install "dataeval-flow[onnx,opencv,app]"
|
|
419
557
|
```
|
|
420
558
|
|
|
421
|
-
> **The `cpu` / `
|
|
559
|
+
> **The `cpu` / `cu126` / `cu130` extras do not select a PyTorch variant under pip.**
|
|
422
560
|
> All three declare the same requirements (`torch`, `torchvision`); what distinguishes
|
|
423
561
|
> them is `[tool.uv.sources]`, which routes those packages to the right wheel index.
|
|
424
562
|
> That is project metadata applied by uv when resolving **from source** — it is not
|
|
@@ -429,7 +567,7 @@ pip install "dataeval-flow[onnx,opencv,app]"
|
|
|
429
567
|
`uv` from PyPI:
|
|
430
568
|
|
|
431
569
|
```bash
|
|
432
|
-
uv pip install dataeval-flow --torch-backend cpu # or
|
|
570
|
+
uv pip install dataeval-flow --torch-backend cpu # or cu126 / cu130 / auto
|
|
433
571
|
```
|
|
434
572
|
|
|
435
573
|
`uv` from source (default toolchain; uses committed `uv.lock`) — extras apply here:
|
|
@@ -437,7 +575,7 @@ uv pip install dataeval-flow --torch-backend cpu # or cu118 / cu128 / auto
|
|
|
437
575
|
```bash
|
|
438
576
|
git clone https://github.com/aria-ml/dataeval-flow.git
|
|
439
577
|
cd dataeval-flow
|
|
440
|
-
uv sync --extra cpu # or
|
|
578
|
+
uv sync --extra cpu # or cu126 / cu130; add --extra onnx --extra opencv --extra app as needed
|
|
441
579
|
```
|
|
442
580
|
|
|
443
581
|
`poetry` (source checkout; uses committed `poetry.lock`):
|
|
@@ -462,7 +600,7 @@ Notes:
|
|
|
462
600
|
|
|
463
601
|
- PyTorch is installed from PyPI/`download.pytorch.org` in every path
|
|
464
602
|
(it is no longer maintained on conda-forge).
|
|
465
|
-
- GPU variants (`
|
|
603
|
+
- GPU variants (`cu126`, `cu130`) are only wired through `uv` and
|
|
466
604
|
`pip` today; the Poetry/conda paths install the CPU build of PyTorch.
|
|
467
605
|
|
|
468
606
|
**CLI Usage:**
|