-
Notifications
You must be signed in to change notification settings - Fork 19
feat(datasets): dataset profiler engine #658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
albcui
wants to merge
44
commits into
main
Choose a base branch
from
albcui/dataset-profile-engine
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+5,693
−133
Open
Changes from all commits
Commits
Show all changes
44 commits
Select commit
Hold shift + click to select a range
ee7c315
feat(datasets): scaffold nemo-datasets plugin
albcui 981bf9d
feat(datasets): add file-source seam and parquet/jsonl readers
albcui c2dbd92
feat(datasets): add profiling pipeline (partitions, splits, digest, e…
albcui 84d4bc6
feat(datasets): derive row schema (features) from parquet and jsonl
albcui 5b190b7
feat(datasets): compute per-column stats
albcui d1dd3df
feat(datasets): classify roles, format/prompt-form axes, and dataset …
albcui 1f194d0
feat(datasets): detect verifiability and implicit-prompt probes
albcui 261174a
fix: harden the profiler and wire up the profile CLI
albcui d99e2a9
fix(datasets): gate verifiability on a minimum coverage
albcui 3ff7bb0
Make `nemo datasets profile` a real command
albcui 1110c44
resync uv.lock
albcui 0ada117
fix(datasets): drop non-finite floats from numeric column stats
albcui 58a2b1a
fix(datasets): profile mixed-format directories as separate partitions
albcui 8faf743
feat(datasets): record per-file read errors in the profile contract
albcui d045d49
fix(datasets): keep reading a JSONL file past a corrupt line
albcui 96a4470
fix(datasets): measure chat rows and column cardinality correctly
albcui 8a0f8cc
fix(datasets): require rank to have something to rank, accept integer…
albcui 0a305e8
fix(datasets): correct partition, split and sampling structure
albcui 118b103
fix(datasets): measure content probes independently of role assignment
albcui 0893185
refactor(files): drop the profile content digest rather than repair it
albcui 8c78dde
refactor(datasets): make the directory a partition's identity, not it…
albcui 046ecb2
refactor(datasets): split coverage into the numbers it was collapsing
albcui 51375f8
fix(datasets): gate quoting a column's values on its role, not its ca…
albcui c292a8b
feat(datasets): report every dataset type the roles satisfy, and acce…
albcui 9b63e4e
perf(datasets): budget rows per partition instead of capping them per…
albcui 8f5f858
refactor(datasets): run the profiler as a job task, not a `nemo` CLI …
albcui 96cd5ca
docs(files): say why the profile contract lives in the shared package
albcui 4ff3bf2
refactor(datasets): identify a partition by one name, not a label plu…
albcui 61956c4
refactor(datasets): enumerate the files that failed, count the ones t…
albcui 377c2be
refactor(datasets): drop SamplingInfo.seed and FeatureSchema.fixed_le…
albcui db0df00
feat(datasets): report how much a dataset weighs
albcui fb2ca48
docs(datasets): correct the pipeline module docstring
albcui be6130f
feat(datasets): infer a glob that selects each split's files
albcui 37f3ab2
feat(datasets): count distinct values only while a column is a vocabu…
albcui 4036b5a
feat(datasets): bound and cheapen the per-character quality scan
albcui fff3fad
feat(datasets): isolate each column's measurement from its neighbours
albcui 7a5cded
refactor(datasets): measure each column with an accumulator
albcui f369b32
feat(datasets): read quantiles off counters instead of retained lengths
albcui 1c97875
refactor(datasets): take rows out of the measure stage
albcui a375d6d
feat(datasets): fold parquet partitions instead of materialising them
albcui 65acf68
fix(datasets): bound the two things row content could grow without limit
albcui 85bf215
feat(datasets): fold partitions that declare no schema
albcui 6b94f31
feat(datasets): read everything by default, and say what completeness…
albcui c195822
fix(datasets): sample quality in blocks, and count a partial read for…
albcui File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
353 changes: 281 additions & 72 deletions
353
packages/nemo_platform_plugin/src/nemo_platform_plugin/files/dataset_profile.py
Large diffs are not rendered by default.
Oops, something went wrong.
194 changes: 133 additions & 61 deletions
194
packages/nemo_platform_plugin/tests/files/test_dataset_profile.py
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| [project] | ||
| name = "nemo-datasets-plugin" | ||
| description = "Dataset profiler for NeMo Platform filesets." | ||
| requires-python = ">=3.11,<3.15" | ||
| dependencies = [ | ||
| "nemo-platform-plugin", | ||
| "nemo-platform-sdk", | ||
| "pyarrow>=19.0.1", | ||
| "pydantic>=2.10.3", | ||
| ] | ||
| version = "0.1.0" | ||
|
|
||
| [tool.uv.sources] | ||
| nemo-platform-plugin = { workspace = true } | ||
| nemo-platform-sdk = { workspace = true } | ||
|
|
||
| # Deliberately contributes no `nemo.cli` entry point. The profiler runs as a job task | ||
| # (`python -m nemo_datasets_plugin.tasks.profile`), which is invoked by the platform rather than | ||
| # typed by a user, so its inputs can keep moving while the feature is new. | ||
|
|
||
| [build-system] | ||
| requires = ["hatchling"] | ||
| build-backend = "hatchling.build" | ||
|
|
||
| [tool.hatch.build.targets.wheel] | ||
| packages = ["src/nemo_datasets_plugin"] | ||
|
|
||
| [tool.pytest.ini_options] | ||
| testpaths = ["tests"] | ||
| pythonpath = ["src"] | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
Expose the required CLI command.
Lines 17-19 explicitly omit the
nemo.clientry point. The PR objective requiresnemo datasets profile. The documented command cannot run. Add the CLI registration and an integration test.🤖 Prompt for AI Agents