Peter Pan and GitHub
15b0a9fc1d
feat: inject PET_* envs into init containers via envInjection config ( #3516 )
...
* feat: inject PET envs into init containers via envInjection config
- Add EnvInjection and EnvInjectionTarget types to TorchMLPolicySource
- Add FindContainerByPodSetName helper in runtime package
- Update torch plugin to inject PET envs into additional containers
- Update jobset plugin to sync init containers
- Add 5 comprehensive unit tests for envInjection scenarios
- Add Python API models for envInjection types
Signed-off-by: Peter Pan <[email protected] >
* fix: add missing +optional markers for kubeapilinter validation
Signed-off-by: Peter Pan <[email protected] >
* fix: change JobName to optional field for kubeapilinter
Change JobName from required to optional with omitempty tag to satisfy
kubeapilinter validation. Add default marker to CRD schema for listMapKey
requirement.
Signed-off-by: Peter Pan <[email protected] >
* fix test
Signed-off-by: Peter Pan <[email protected] >
* fix: address envInjection review feedback
Reject missing envInjection targets instead of silently skipping them, align the API schema with required fields, and harden init container propagation so misconfigured runtimes fail predictably.
Signed-off-by: Peter Pan <[email protected] >
* fix: sync envInjection generated files
Add the generated boilerplate and Python model updates expected by make generate so CI does not report stale generated assets.
Signed-off-by: Peter Pan <[email protected] >
* fix: satisfy kube API lint for envInjection fields
Keep the envInjection fields marked as required while preserving omitempty tags required by kubeapilinter.
Signed-off-by: Peter Pan <[email protected] >
* fix: update envInjection OpenAPI defaults
Sync generated OpenAPI and Python model output after restoring omitempty on required envInjection fields.
Signed-off-by: Peter Pan <[email protected] >
* fix: address latest review comments
Signed-off-by: Peter Pan <[email protected] >
* chore: remove test plan file per review feedback
The KEP README already has a Test Plan section; a separate file with
local environment details does not belong in the upstream PR.
Signed-off-by: Peter Pan <[email protected] >
---------
Signed-off-by: Peter Pan <[email protected] >
2026-06-16 12:52:46 +00:00
88a92a0483
feat: support for flux framework as hpc manager ( #3188 )
...
* feat: support for flux framework as hpc manager
Flux supports the majority of MPI flavors/variants, and can be used
to bootstrap MPI as a plugin. It adds other features for scheduling
and topology that can be used for simulations and ai/ml jobs.
This changeset adds the plugin implementation, including the
plugin module, tests, and an example with a small README to
serve as documentation for the time being.
Signed-off-by: vsoch <[email protected] >
* review: slim down use of annotations
We still need to put the original command in an annotation
to retieve later, but others can be re-derived from the
environment
Signed-off-by: vsoch <[email protected] >
* review: clean up tasks and remove extra FluxPolicySource
Signed-off-by: vsoch <[email protected] >
* review: ensure to unset trainer args
Signed-off-by: vsoch <[email protected] >
* review: better support for nproc per node and nodes
Signed-off-by: vsoch <[email protected] >
* review: add constants types for flux
Signed-off-by: vsoch <[email protected] >
* review: add gpu specification from resources
Signed-off-by: vsoch <[email protected] >
* Fix TrainJob NumProcPerNode
Signed-off-by: Andrey Velichkevich <[email protected] >
* Remove elasticPolicy from kubebuilder:validation
Signed-off-by: Andrey Velichkevich <[email protected] >
* chore: use go embed for long string templates flux plugin
Signed-off-by: vsoch <[email protected] >
* cleanup: removed un-used annotation
Signed-off-by: vsoch <[email protected] >
---------
Signed-off-by: vsoch <[email protected] >
Signed-off-by: Andrey Velichkevich <[email protected] >
Co-authored-by: vsoch <[email protected] >
Co-authored-by: Andrey Velichkevich <[email protected] >
2026-03-10 03:19:05 +00:00
Antonin Stefanutti and GitHub
0f9825e89e
chore(operator): Use SSA throughout runtime framework ( #2877 )
...
* chore(operator): Use SSA throughout runtime framework
Signed-off-by: Antonin Stefanutti <[email protected] >
* Fix lint error
Signed-off-by: Antonin Stefanutti <[email protected] >
* Update go.mod file
Signed-off-by: Antonin Stefanutti <[email protected] >
---------
Signed-off-by: Antonin Stefanutti <[email protected] >
2025-10-31 11:43:12 +00:00
576e0896b7
feat(runtimes): add support for launcher resource allocation in MPI jobs ( #2653 )
...
* feat(runtime): add support for launcher resource allocation in MPI jobs
Signed-off-by: Andrey Velichkevich <[email protected] >
* Add unit tests
Signed-off-by: Andrey Velichkevich <[email protected] >
* Set numProcPerNode for MPI plugin
Signed-off-by: Andrey Velichkevich <[email protected] >
* Move util func to runtime package
Signed-off-by: Andrey Velichkevich <[email protected] >
* Fix torchtune plugin
Signed-off-by: Andrey Velichkevich <[email protected] >
* Inline if for GPU check
Signed-off-by: Andrey Velichkevich <[email protected] >
* Assign container resources once
Signed-off-by: Andrey Velichkevich <[email protected] >
* Add todo for test wrappers
Signed-off-by: Andrey Velichkevich <[email protected] >
---------
Signed-off-by: Andrey Velichkevich <[email protected] >
Co-authored-by: Andrey Velichkevich <[email protected] >
2025-10-20 13:26:03 +00:00
9802f954ab
feat: KEP-2437 - PodGroup Creation for Volcano Scheduler ( #2729 )
...
* feat: api for volcano scheduling plugin
Signed-off-by: Xinmin Du <[email protected] >
* feat: init volcano-plugin
Signed-off-by: Xinmin Du <[email protected] >
* feat: init test file
Signed-off-by: Xinmin Du <[email protected] >
* feat: register volcano plugin
Signed-off-by: Xinmin Du <[email protected] >
* feat: deal with minTaskMember, minMember, NetworkTopo
Signed-off-by: Xinmin Du <[email protected] >
* fix: calculate of minResource
Signed-off-by: Xinmin Du <[email protected] >
* test: build PodGroup test
Signed-off-by: Xinmin Du <[email protected] >
* refactor: separate to 2 prs(build&handler)
Signed-off-by: Xinmin Du <[email protected] >
* test: add test for new&reconcile_builder
Signed-off-by: Xinmin Du <[email protected] >
* fix: typo
Signed-off-by: Xinmin Du <[email protected] >
* fix: trainer/v2 import
Signed-off-by: Xinmin Du <[email protected] >
* fix: networktopo type
Signed-off-by: Xinmin Du <[email protected] >
* fix: OpenAPI validation errors
Signed-off-by: Xinmin Du <[email protected] >
* fix: remove minTaskMembers
Signed-off-by: Xinmin Du <[email protected] >
* test: test coverage 100%
Signed-off-by: Xinmin Du <[email protected] >
* feat: update apis
Signed-off-by: Xinmin Du <[email protected] >
* feat: replace testify
Signed-off-by: Xinmin Du <[email protected] >
* fix: registry Volcano CRDs to the scheme
Signed-off-by: Xinmin Du <[email protected] >
* fix: add volcano to scheme
Signed-off-by: Xinmin Du <[email protected] >
* fix: fix networktopo schema
Signed-off-by: Xinmin Du <[email protected] >
* fix: add networktopo spec in trainer
Signed-off-by: Xinmin Du <[email protected] >
* fix: unit test
Signed-off-by: Xinmin Du <[email protected] >
* feat: import networkTopo directly
Signed-off-by: Xinmin Du <[email protected] >
* fix: make generate
Signed-off-by: Xinmin Du <[email protected] >
* fix: make generate
Signed-off-by: Xinmin Du <[email protected] >
* fix: golangci-lint
Signed-off-by: Xinmin Du <[email protected] >
* fix: golangci-lint
Signed-off-by: Xinmin Du <[email protected] >
* feat: add volcano installation in integration test
Signed-off-by: Xinmin Du <[email protected] >
* fix: filter volcano api
Signed-off-by: Xinmin Du <[email protected] >
* fix: get volcano.podgroup with local version
Signed-off-by: Xinmin Du <[email protected] >
* fix: init test env with volcano podgroup installed
Signed-off-by: Xinmin Du <[email protected] >
* fix: check plugin in enforcePodgroupPolicy
Signed-off-by: Xinmin Du <[email protected] >
* fix: group-name label in unit test
Signed-off-by: Xinmin Du <[email protected] >
* fix: ReconcilerBuilders
Signed-off-by: Xinmin Du <[email protected] >
* feat: add PodGroupHandler
Signed-off-by: Xinmin Du <[email protected] >
* feat: unit test for handlers
Signed-off-by: Xinmin Du <[email protected] >
* fix: group name annotation
Signed-off-by: Xinmin Du <[email protected] >
* Update hack/swagger/main.go
Co-authored-by: Andrey Velichkevich <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* fix: no need to delete RBAC
Signed-off-by: Xinmin Du <[email protected] >
* Update pkg/runtime/framework/plugins/volcano/indexer.go
Co-authored-by: Andrey Velichkevich <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* fix: nil checking for trainjob
Signed-off-by: Xinmin Du <[email protected] >
* Update pkg/runtime/framework/plugins/volcano/volcano.go
Co-authored-by: Andrey Velichkevich <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* fix: make generate
Signed-off-by: Xinmin Du <[email protected] >
* fix: index conflict
Signed-off-by: Xinmin Du <[email protected] >
* Update pkg/runtime/framework/plugins/coscheduling/coscheduling.go
Co-authored-by: Shao Wang <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* fix: update volcano to v1.12.2
Signed-off-by: Xinmin Du <[email protected] >
* feat: re-use indexer
Signed-off-by: Xinmin Du <[email protected] >
* feat: add validate
Signed-off-by: Xinmin Du <[email protected] >
* fix: no scheduler when coscheduling is nil
Signed-off-by: Xinmin Du <[email protected] >
* fix: put group-name in annotations
Signed-off-by: Xinmin Du <[email protected] >
* feat: validate if priorityClass installed
Signed-off-by: Xinmin Du <[email protected] >
* feat: propagate annotations to pod
Signed-off-by: Xinmin Du <[email protected] >
* feat: integration test for volcano
Signed-off-by: Xinmin Du <[email protected] >
* fix: golangci-lint check
Signed-off-by: Xinmin Du <[email protected] >
* feat: use shared indexer
Signed-off-by: Xinmin Du <[email protected] >
* feat: remove indexer to runtime/
Signed-off-by: Xinmin Du <[email protected] >
* Update hack/swagger/main.go
Co-authored-by: Yuki Iwai <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* Update hack/swagger/main.go
Co-authored-by: Yuki Iwai <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* fix: append owner reference & missing import
Signed-off-by: Xinmin Du <[email protected] >
* fix: rewrite volcano UT
Signed-off-by: Xinmin Du <[email protected] >
* feat: add copyright
Signed-off-by: Xinmin Du <[email protected] >
* fix: sync RBAC to Helm charts
Signed-off-by: Xinmin Du <[email protected] >
* fix: refactor UTs
Signed-off-by: Xinmin Du <[email protected] >
* fix: test validation separately
Signed-off-by: Xinmin Du <[email protected] >
* Update hack/swagger/main.go
Co-authored-by: Yuki Iwai <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
* fix: refactor TestVolcano
Signed-off-by: Xinmin Du <[email protected] >
* fix: refactor TestValidate
Signed-off-by: Xinmin Du <[email protected] >
* Update pkg/runtime/framework/plugins/volcano/volcano_test.go
Co-authored-by: Yuki Iwai <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
---------
Signed-off-by: Xinmin Du <[email protected] >
Signed-off-by: Du Xinmin <[email protected] >
Co-authored-by: Andrey Velichkevich <[email protected] >
Co-authored-by: Shao Wang <[email protected] >
Co-authored-by: Yuki Iwai <[email protected] >
2025-10-06 05:51:10 +00:00
Andrey Velichkevich and GitHub
8655798f02
fix(module): Change Go module name to v2 ( #2707 )
...
* fix(module): Change Go module name to v2
Signed-off-by: Andrey Velichkevich <[email protected] >
* Bump x/net to v0.38.0
Signed-off-by: Andrey Velichkevich <[email protected] >
---------
Signed-off-by: Andrey Velichkevich <[email protected] >
2025-07-03 17:46:20 +00:00
Shao Wang and GitHub
4493eb8770
KEP-2401: Complement torch plugin to support torchtune config mutation ( #2587 )
...
* chore(plugin): Add torchtune-related constants & update current torch plugin.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(plugin): Add EnforceMLPolicy for torchtune.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(plugin): Add UTs in torch plugin.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(test): fix error in torch plugin UTs.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(plugin): Choose recipe according to numNodes & numProcPerNode & Args.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(sdk): Add PretrainedModel enum type.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(plugin): Add torchtune config arg.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(test): add UT for single-device full fine-tuning with torchtune.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(test): Add test for multi-nodes full fine-tuning with torchtune.
Signed-off-by: Electronic-Waste <[email protected] >
* chore(test): Update torch validate UTs.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(lint): fix lint error.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(sdk): remove pretrained model enum type in sdk.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(plugin): retrieve model name from runtimeRef.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(lint): fix typo.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(plugin): make some adjustments according to the review.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(sdk): remove runtime in get_trainer_crd_from_builtin_trainer.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(plugin): pass PET_ env variables in torch plugin for torchtune.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(plugin): add env validation for torchtune.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(plugin): update comments.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(plugins): fix the implementation according to the review.
Signed-off-by: Electronic-Waste <[email protected] >
* test(plugins): fix UT error in torch plugin.
Signed-off-by: Electronic-Waste <[email protected] >
* fix: fix UT and e2e tests error.
Signed-off-by: Electronic-Waste <[email protected] >
* fix: remove debug info.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(test): add args in UTs related to torchtune.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(test): update torchtune related args.
Signed-off-by: Electronic-Waste <[email protected] >
* fix(test): Add a UT for multi-node mode check in torch plugin.
Signed-off-by: Electronic-Waste <[email protected] >
---------
Signed-off-by: Electronic-Waste <[email protected] >
2025-04-29 13:21:03 +00:00
Yuki Iwai and GitHub
50d6be8324
Construct Trainer based on trainer.kubeflow.org/trainjob-ancestor-step label ( #2548 )
...
Signed-off-by: Yuki Iwai <[email protected] >
2025-03-20 14:01:57 +00:00
Yuki Iwai and GitHub
64404f6565
Store the TrainingRuntime numNodes as runtime.Info.PodSet.Count ( #2539 )
...
Signed-off-by: Yuki Iwai <[email protected] >
2025-03-18 15:55:44 +00:00
Yuki Iwai and GitHub
38e16d718d
Migrate InfoOptions.podSpecReplias and info.Scheduler.TotalRequests to info.TemplateSpec.PodSet ( #2524 )
...
Signed-off-by: Yuki Iwai <[email protected] >
# Conflicts:
# pkg/runtime/core/trainingruntime.go
# pkg/runtime/runtime.go
2025-03-16 17:09:49 +00:00
a589903c24
KEP-2170: Adding validation webhook for v2 trainjob ( #2307 )
...
Signed-off-by: Akshay Chitneni <[email protected] >
Co-authored-by: Akshay Chitneni <[email protected] >
2025-03-16 03:41:51 +00:00
Yuki Iwai and GitHub
f1a0d6178e
Migrate Info.Trainer to Info.TemplateSpec.PodSet ( #2520 )
...
Signed-off-by: Yuki Iwai <[email protected] >
2025-03-15 03:34:11 +00:00
Yuki Iwai and GitHub
e8d6727da6
Implemenet MPI Plugin for OpenMPI ( #2493 )
...
* Implemenet MPI Plugin for OpenMPI
Signed-off-by: Yuki Iwai <[email protected] >
* Directory pass the JobSetApplyconfiguration to RuntimeInfo
Signed-off-by: Yuki Iwai <[email protected] >
* Make repeated string as constants
Signed-off-by: Yuki Iwai <[email protected] >
* Use numNodes=1 as default mpi_distributed ClusterTrainingRuntime
Signed-off-by: Yuki Iwai <[email protected] >
* Remove unused errors
Signed-off-by: Yuki Iwai <[email protected] >
* Rename runLauncherAsWorker with runLauncherAsNode
Signed-off-by: Yuki Iwai <[email protected] >
* Fix unintended constants usage for ModelMountPath
Signed-off-by: Yuki Iwai <[email protected] >
* Rename SecretDataComparer with MPISecretDataComparer
Signed-off-by: Yuki Iwai <[email protected] >
* Add TODO STAEEMENT to deprecated env wrappers.
Signed-off-by: Yuki Iwai <[email protected] >
---------
Signed-off-by: Yuki Iwai <[email protected] >
2025-03-13 05:00:56 +00:00
Yuki Iwai and GitHub
58a11000af
Replace Kueue PodRequests helper with core k/k one ( #2461 )
...
Signed-off-by: Yuki Iwai <[email protected] >
2025-02-28 21:28:52 +00:00
Antonin Stefanutti and GitHub
4ad02aca05
KEP-2170: Use SSA to reconcile TrainJob components ( #2431 )
...
* KEP-2170: Use SSA to reconcile TrainJob components
Signed-off-by: Antonin Stefanutti <[email protected] >
* Enable Unstructured caching in controller manager config
Signed-off-by: Antonin Stefanutti <[email protected] >
* Fix PodGroup apply configuration
Signed-off-by: Antonin Stefanutti <[email protected] >
* API to apply config conversion util functions
Signed-off-by: Antonin Stefanutti <[email protected] >
* Only add namespace to TrainingRuntime object key
Signed-off-by: Antonin Stefanutti <[email protected] >
* Fix EnvVar upsert
Signed-off-by: Antonin Stefanutti <[email protected] >
* Update unit tests
Signed-off-by: Antonin Stefanutti <[email protected] >
* Fix JobSet resource requirements
Signed-off-by: Antonin Stefanutti <[email protected] >
* Resolve build issues with launcher job
Signed-off-by: Antonin Stefanutti <[email protected] >
* Use apply config for MPI ConfigMap and Secret
Signed-off-by: Antonin Stefanutti <[email protected] >
* ComponentBuilderPlugin now returns an array
Signed-off-by: Antonin Stefanutti <[email protected] >
* Use plain apply configurations instead of unstructured
Signed-off-by: Antonin Stefanutti <[email protected] >
* Use apply config in EnforceMLPolicy plugins
Signed-off-by: Antonin Stefanutti <[email protected] >
* Do not update JobSets that are not suspended
Signed-off-by: Antonin Stefanutti <[email protected] >
* Address review feedback
Signed-off-by: Antonin Stefanutti <[email protected] >
* Do not update PodGroup if TrainJob is not suspended
Signed-off-by: Antonin Stefanutti <[email protected] >
* Remove obsolete TODO
Signed-off-by: Antonin Stefanutti <[email protected] >
---------
Signed-off-by: Antonin Stefanutti <[email protected] >
2025-02-26 08:39:09 +00:00
Andrey Velichkevich and GitHub
fa214522ce
KEP-2170: Implement MPI Plugin for Kubeflow Trainer ( #2394 )
...
* Implement MPI Plugin for Kubeflow Trainer
Signed-off-by: Andrey Velichkevich <[email protected] >
* Update RBAC
Signed-off-by: Andrey Velichkevich <[email protected] >
* Remove old manifests
Signed-off-by: Andrey Velichkevich <[email protected] >
* Fix unit test
Signed-off-by: Andrey Velichkevich <[email protected] >
* Fix comments
Signed-off-by: Andrey Velichkevich <[email protected] >
---------
Signed-off-by: Andrey Velichkevich <[email protected] >
2025-02-14 17:55:38 +00:00
Andrey Velichkevich and GitHub
1ff1d8ad28
Update the naming conventions for Kubeflow Trainer ( #2415 )
...
* Update the naming conventions for Kubeflow Trainer
Signed-off-by: Andrey Velichkevich <[email protected] >
* Fix webhooks
Signed-off-by: Andrey Velichkevich <[email protected] >
* Fix paths for webhooks
Signed-off-by: Andrey Velichkevich <[email protected] >
* Update go test cmd
Signed-off-by: Andrey Velichkevich <[email protected] >
* Rename kubeflowv1 to trainer pkg
Signed-off-by: Andrey Velichkevich <[email protected] >
---------
Signed-off-by: Andrey Velichkevich <[email protected] >
2025-02-06 13:48:30 +00:00