Skip to content
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

KEP-2170: Create model and dataset initializers #2303

Merged

Conversation

andreyvelich
Copy link
Member

@andreyvelich andreyvelich commented Oct 23, 2024

Fixes: #2210

I created model and dataset initializers.
Initially, we will only support HF for the demo purposes.
I will create dedicated issue to support more providers.

/assign @kubeflow/wg-training-leads @varshaprasad96 @akshaychitneni @deepanker13 @helenxie-bit @Electronic-Waste @saileshd1402 @kannon92

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
@coveralls
Copy link

coveralls commented Oct 23, 2024

Pull Request Test Coverage Report for Build 11517758882

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 100.0%

Totals Coverage Status
Change from base Build 11507477280: 0.0%
Covered Lines: 77
Relevant Lines: 77

💛 - Coveralls

@kannon92
Copy link
Contributor

Should we consider unit or e2e tests for this?

.gitignore Outdated Show resolved Hide resolved
@andreyvelich
Copy link
Member Author

Should we consider unit or e2e tests for this?

Yeah, I will open dedicated issue for it.

Co-authored-by: Kevin Hannon <kehannon@redhat.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

# Get DataClass config from the environment variables.
# Env names must be equal to the DataClass parameters.
def get_config_from_env(config) -> Dict[str, str]:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you want some typing hints for config

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I wasn't able to find Python type that can represent DataClass, as described here: https://stackoverflow.com/questions/54668000/type-hint-for-an-instance-of-a-non-specific-dataclass#:~:text=Despite%20its%20name%2C%20dataclasses.dataclass%20doesn%27t%20expose%20a%20class%20interface..
Any ideas on how we can add the type hint for it @kannon92 ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I see. Then it’s fine to go without.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m not much of a Python dev these days so I don’t know about the typing for data classes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shall we use like this
config : Union[DataClassA, DataClassB]

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried this, it won't work. E.g. I can see this error from PyLance:

Argument of type "type[HuggingFaceDatasetConfig]" cannot be assigned to parameter "config" of type "HuggingFaceDatasetConfig" in function "get_config_from_env"
  "type[type]" is not assignable to "type[HuggingFaceDatasetConfig]"

Copy link
Contributor

@deepanker13 deepanker13 Oct 25, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

from dataclasses import fields
from typing import Dict
import os

@dataclass
class HuggingFaceModelInputConfig:
    storage_uri: str
    access_token: Optional[str] = None


def get_config_from_env(config: Union[HuggingFaceModelInputConfig]) -> Dict[str, str]:
    config_from_env = {}
    for field in fields(config):
        config_from_env[field.name] = os.getenv(field.name.upper())

    return config_from_env

cf1 = get_config_from_env(HuggingFaceModelInputConfig)
print(cf1)

This is working @andreyvelich

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@deepanker13 What type validator do you use in your IDE ?
My VSCode complains with the error that I added above.
I am using PyLance VSCode extension: https://github.com/microsoft/pylance-release

repo_id=model_uri,
local_dir=constants.VOLUME_PATH_MODEL,
allow_patterns=["*.json", "*.safetensors", "*.model"],
ignore_patterns=["*.msgpack", "*.h5", "*.bin"],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can consider ignoring ".pt" and ".pth" files as well

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@saileshd1402 Do we know what files have .pt and .pth extension ?

Copy link
Contributor

@saileshd1402 saileshd1402 Oct 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They store model weights similar to .safetensors and .bin but are outdated now. For example: In meta-llama/Llama-3.1-8B there is a folder called "/original" where consolidated.00.pth stores same data as ".safetensors" but is outdated. But would like to know if others think those files are important

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lizzzcai do you have any thoughts on whether we can exclude .pth and .pt files from model download ?
I noticed that you suggested to add the same ignore_patterns to KServe storage initializer: kserve/kserve#3584 (comment)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @andreyvelich, I don't see an issue to exclude .pth, .pt and .bin, as safetensors should be a preferred format and it has better security compared to others. Assuming that the model being downloaded provides safetensors format (most of the popular model should have).

If you want to support multiple formats, can check how vLLM support it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, thanks for the info!
I think, in the future we should follow the vLLM approach.

@@ -30,6 +30,14 @@ jobs:
dockerfile: cmd/training-operator.v2alpha1/Dockerfile
platforms: linux/amd64,linux/arm64,linux/ppc64le
tag-prefix: v2alpha1
- component-name: model-initiailizer-v2
Copy link
Contributor

@deepanker13 deepanker13 Oct 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a typo at multiple places

initializer

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great catch! Let me fix that.

huggingface_hub.snapshot_download(
repo_id=dataset_uri,
repo_type="dataset",
local_dir=constants.VOLUME_PATH_DATASET,
Copy link
Contributor

@deepanker13 deepanker13 Oct 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To speed up things should we set max_workers equal to number of files getting downloaded, currently it downloads 8 files parallely?

Copy link
Member Author

@andreyvelich andreyvelich Oct 25, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have any benchmarks that show that setting of max_workers to number of files speedup download time ?
What if we don't have enough CPUs for all concurrent threads ?

WORKDIR /workspace

# Copy the required Python modules.
COPY cmd/initiailizer_v2/model/requirements.txt .
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is the folder named as cmd? It is containing docker files and requirements.txt

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want to be consistent across all Training Operator components, like we do in Katib: https://github.com/kubeflow/katib/tree/master/cmd
E.g.
cmd - contains binaries/dockerfiles for execution.
pkg - contains the actual backend.

logging.info(f"Config for HuggingFace dataset initiailizer: {config_dict}")
self.config = HuggingFaceDatasetConfig(**config_dict)

def download_dataset(self):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have unit tests for these, or would it be taken care in e2e? Downloading models from HF was having issues previously, it would be helpful to have it tested.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nvmd, just realised we have: #2305

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
@andreyvelich andreyvelich force-pushed the issue-2210-storage-initializer branch from fa77453 to 5c39812 Compare October 25, 2024 02:03
huggingface_hub.snapshot_download(
repo_id=model_uri,
local_dir=constants.VOLUME_PATH_MODEL,
allow_patterns=["*.json", "*.safetensors", "*.model"],

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For "*.safetensors" and "*.model" in the allow_patterns, I would say it works in most of the cases.
However, for model like mistralai/Mistral-7B-Instruct-v0.3, it has consolidated.safetensors and tokenizer.model.v3 (so called v3 format in Mistral, check their download example here).

snapshot_download(repo_id="mistralai/Mistral-7B-Instruct-v0.3", allow_patterns=["params.json", "consolidated.safetensors", "tokenizer.model.v3"], local_dir=mistral_models_path)

In this case, downloading the above mistral model with the current allow_patterns, the downloaded size will be 29 GB (double from the actual size 14.5 GB). Probably you need some logic to handle the Mistral model.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for sharing! Let me add it to the TODO list.

Copy link
Member

@Electronic-Waste Electronic-Waste left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we can add some comment somewhere to let users know we only support downloading models/datasets from HuggingFace now?

It might be more user-friendly :)

@andreyvelich
Copy link
Member Author

I wonder if we can add some comment somewhere to let users know we only support downloading models/datasets from HuggingFace now?

Yes, we are planning to add supported dataset and model providers to the website.
Additionally, I will create tracking issue to support more providers (S3, GCS, etc.)

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
@andreyvelich andreyvelich force-pushed the issue-2210-storage-initializer branch from 2cf2c5e to 2e8a518 Compare October 25, 2024 11:58
@andreyvelich
Copy link
Member Author

Are there any other comments before we can move forward with this initial PR ?
/assign @kannon92 @Electronic-Waste @deepanker13 @varshaprasad96 @saileshd1402

Copy link

@andreyvelich: GitHub didn't allow me to assign the following users: varshaprasad96, saileshd1402.

Note that only kubeflow members with read permissions, repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time.
For more information please see the contributor guide

In response to this:

Are there any other comments before we can move forward with this initial PR ?
/assign @kannon92 @Electronic-Waste @deepanker13 @varshaprasad96 @saileshd1402

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Copy link
Member

@tenzen-y tenzen-y left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's address other issues in a follow up.
/lgtm
/approve

@@ -0,0 +1,13 @@
FROM python:3.11-alpine
Copy link
Member

@tenzen-y tenzen-y Oct 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
FROM python:3.11-alpine
FROM python:3.11-slim-bookworm

@andreyvelich Could you use the Debian image since the Alpine has a performance penalty due to with musl libc?
Python still depends on the C codes.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let me create an issue

Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: tenzen-y

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@google-oss-prow google-oss-prow bot merged commit 3f7ec16 into kubeflow:master Oct 27, 2024
43 checks passed
@andreyvelich andreyvelich deleted the issue-2210-storage-initializer branch October 28, 2024 01:43
saileshd1402 pushed a commit to saileshd1402/training-operator that referenced this pull request Dec 2, 2024
* KEP-2170: Create model and dataset initializers

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add abstract classes

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add storage URI to config

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update .gitignore

Co-authored-by: Kevin Hannon <kehannon@redhat.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix the misspelling for initializer

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add .pt and .pth to ignore_patterns

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Co-authored-by: Kevin Hannon <kehannon@redhat.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>
google-oss-prow bot pushed a commit that referenced this pull request Dec 9, 2024
* Added test for create-pytorchjob.ipynb

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* fix yaml syntax

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Fix uses path

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add actions/checkout

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add bash to action.yaml

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Install pip dependencies step

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add quotes for args

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add jupyter

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add nbformat_minor: 5 to fix invalid format error

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Fix job name

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* test papermill-args-yaml

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* testing multi line args

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* testing multi line args1

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* testing multi line args2

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* testing multi line args3

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Parameterize sdk install

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Remove unnecessary output

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* nbformat normailze

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* [SDK] Training Client Conditions related unit tests (#2253)

* test: add unit test for get_job_conditions function of training client

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

* test: add unit test for is_job_created function of training client

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

* test: add unit test for is_job_running function of training client

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

* test: add unit test for is_job_restarting function of training client

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

* test: add unit test for is_job_failed function of training client

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

* test: add unit test for is_job_succeded function of training client

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

* test: improve job condition unit tests efficiency

Signed-off-by: Bobbins228 <mcampbel@redhat.com>

---------

Signed-off-by: Bobbins228 <mcampbel@redhat.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* [SDK] test: add unit test for list_jobs method of the training_client (#2267)

Signed-off-by: wei-chenglai <qazwsx0939059006@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Generate clientset, openapi spec for the V2 APIs (#2273)

Generate clientset, informers, listers and open api spec
for v2alpha1 APIs.

Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* [SDK] Use torchrun to create PyTorchJob from function (#2276)

* [SDK] Use torchrun to create PyTorchJob from function

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update PyTorchJob SDK example

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add consts for entrypoint

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add check for num procs per worker

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* [SDK] test: add unit test for get_job_logs method of the training_client (#2275)

Signed-off-by: wei-chenglai <qazwsx0939059006@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* [v2alpha] Move GV related codebase (#2281)

Move GV related codebase in v2alpha

Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Implement runtime framework (#2248)

* KEP-2170: Implement runtime framework interfaces

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Remove grep dependency

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* KEP-2170: Implement ValidateObjects interface to the runtime framework

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* KEP-2170: Expose the TrainingRuntime and ClusterTrainingRuntime Kind

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* KEP-2170: Remove unneeded scheme field from the internal TrainingRuntime

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Rephrase the error message

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Distinguish TrainingRuntime and ClusterTrainingRuntime when creating indexes for the TrainJobs

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Propagate the TrainJob labels and annotations to the JobSet

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Remove PodAnnotations from the runtime info

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Implement TrainingRuntime ReplicatedJob validation

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Add TODO comments

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Replace queueSuspendedTrainJob with queueSuspendedTrainJobs

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

---------

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add DeepSpeed Example with Pytorch Operator (#2235)

Signed-off-by: Syulin7 <735122171@qq.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Rename TrainingRuntimeRef to RuntimeRef API (#2283)

* KEP-2170: Rename TrainingRuntimeRef to RuntimeRef API

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Rename RuntimeRef in runtime framework

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Adding CEL validations on v2 TrainJob CRD (#2260)

Signed-off-by: Akshay Chitneni <achitneni@apple.com>
Co-authored-by: Akshay Chitneni <achitneni@apple.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Upgrade Deepspeed demo dependencies (#2294)

Signed-off-by: Syulin7 <735122171@qq.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Add manifests for Kubeflow Training V2 (#2289)

* KEP-2170: Add manifests for Kubeflow Training V2

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix invalid name for webhook config in cert

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix integration tests

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Move kubebuilder markers to runtime framework

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Use Kubernetes recommended labels

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* FSDP Example for T5 Fine-Tuning and PyTorchJob (#2286)

* FSDP Example with PyTorchJob and T5 Fine-Tuning

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Modify text

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Implement TrainJob Reconciler to manage objects (#2295)

* KEP-2170: Implement TrainJob Reconciler to manage objects

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Mode dep-crds to manifests/external-crds

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Rename run with runtime

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

---------

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Remove Prometheus Monitoring doc (#2301)

Signed-off-by: Sophie <sophy010017@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Decouple JobSet from TrainJob (#2296)

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Strictly verify the CRD marker validation and defaulting in the integration testings (#2304)

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Initialize runtimes before the manager starts (#2306)

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Generate Python SDK for Kubeflow Training V2 (#2310)

* Generate SDK models for the Training V2 APIs

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Create pyproject.toml config

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove comments

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix pre-commit

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Create model and dataset initializers (#2303)

* KEP-2170: Create model and dataset initializers

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add abstract classes

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add storage URI to config

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update .gitignore

Co-authored-by: Kevin Hannon <kehannon@redhat.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix the misspelling for initializer

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add .pt and .pth to ignore_patterns

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Co-authored-by: Kevin Hannon <kehannon@redhat.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Implement JobSet, PlainML, and Torch Plugins (#2308)

* KEP-2170: Implement JobSet and PlainML Plugins

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix nil pointer exception for Trainer

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix unit tests in runtime package

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix unit tests

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix integration tests

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix lint

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Implement Torch Plugin

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Use list for the Info envs

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix golang ci

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Fix Torch plugin

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Use K8s sets
Update error return
Use ptr.Deref() for nil values

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Use client.Object for Build() call

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove DeepCopy

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove MLPolicy and PodGroupPolicy from the Info object

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Inline error

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove SDK jar file

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add integration test for Torch plugin

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add TODO to calculate PodGroup values in unit tests

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Revert the change to add original Runtime Policies to Info

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Create const for the DefaultJobReplicas

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Check if PodLabels is empty

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Implement Initializer builders in the JobSet plugin  (#2316)

* KEP-2170: Implement Initializer builder in the JobSet plugin

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update the SDK models

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove Info from Initializer builder

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update manifests

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Update pkg/constants/constants.go

Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Use var for envs

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Remove check manifests from GitHub actions

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Move consts to JobSet plugin

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Add the TrainJob state transition design (#2298)

* KEP-2170: Add the TrainJob state transition design

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Replace actual jobs with TrainJob

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Remove the JobSet conditions propagation and Add expanding runtime framework interfaces for each plugin

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Expand the Creation Failed reasons

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Rename Completed to Complete

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

---------

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Update tf job examples to tf v2 (#2270)

* mnist with summaries updaetd to TF v2

Signed-off-by: yelias <yossi.elias@nokia.com>

* tf_sample updaetd to TF v2

Signed-off-by: yelias <yossi.elias@nokia.com>

* Add mnist_utils and update dist-mnist

Signed-off-by: yelias <yossi.elias@nokia.com>

* Add mnist_utils and update dist-mnist

Signed-off-by: yelias <yossi.elias@nokia.com>

* Remove old example - estimator-API, this example has been replaced by distribution_strategy

Signed-off-by: yelias <yossi.elias@nokia.com>

* Small fix

Signed-off-by: yelias <yossi.elias@nokia.com>

* Remove unsupported powerPC dockerfiles

Signed-off-by: yelias <yossi.elias@nokia.com>

* Fix typo in copyright

Signed-off-by: yelias <yossi.elias@nokia.com>

---------

Signed-off-by: yelias <yossi.elias@nokia.com>
Co-authored-by: yelias <yossi.elias@nokia.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Add TrainJob conditions (#2322)

* KEP-2170: Implement TrainJob conditions

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Fix API comments

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Make condition message constants

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

* Stop connecting condition type and reason in JobSet plugin

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>

---------

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Pin Gloo repository in JAX Dockerfile to a specific commit (#2329)

This commit pins the Gloo repository to a specific commit (43b7acbf) in
the JAX Dockerfile to prevent build failures caused by a recent bug
introduced in the Gloo codebase. By locking the version of Gloo to
a known working commit, we ensure that the JAX build remains stable and
functional until the issue is resolved upstream.

The build failure occurs when compiling the gloo/transport/tcp/buffer.cc
file due to an undefined __NR_gettid constant, which was introduced
after the pinned commit. By using this commit, we bypass the issue and
allow the build to complete successfully.

Signed-off-by: Sandipan Panda <samparksandipan@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* [fix] Resolve v2alpha API exceptions (#2317)

Resolve v2alpha API exceptions by adding necessary listType validations.

Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Upgrade Kubernetes to v1.30.7 (#2332)

* Upgrade Kubernetes to v1.30.7

Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>

* Use typed event handlers and predicates in job controllers

Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>

* Re-organize pkg/common/util/reconciler.go

Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>

* Update installation instructions in README

Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>

---------

Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Ignore cache exporting errors in the image building workflows (#2336)

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* KEP-2170: Add Torch Distributed Runtime (#2328)

* KEP-2170: Add Torch Distributed Runtime

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

* Add pip list

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

---------

Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Refine the server-side apply installation args (#2337)

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add openapi-generator CLI option to skip SDK v2 test generation (#2338)

Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Upgrade kustomization files to Kustomize v5 (#2326)

Signed-off-by: oksanabaza <obazylie@redhat.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Pin accelerate package version in trainer (#2340)

* Pin accelerate package version in trainer

Signed-off-by: Gavrish Prabhu <gavrish.prabhu@nutanix.com>

* include new line to pass pre-commit hook

Signed-off-by: Gavrish Prabhu <gavrish.prabhu@nutanix.com>

---------

Signed-off-by: Gavrish Prabhu <gavrish.prabhu@nutanix.com>
Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Replace papermill command with bash script

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Typo fix

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Move Checkout step outside action.yaml file

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Add newline EOF in script

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Pass python dependencies as args and pin versions

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Update Usage

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Install dependencies in yaml

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* fix ipynb

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* set bash flags

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* Update script args and add more kubernetes versions for tests

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* add gang-scheduler-name to  template

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* move go setup to template

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

* remove -p parameter from script

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>

---------

Signed-off-by: sailesh duddupudi <saileshradar@gmail.com>
Signed-off-by: Bobbins228 <mcampbel@redhat.com>
Signed-off-by: wei-chenglai <qazwsx0939059006@gmail.com>
Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com>
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Signed-off-by: Syulin7 <735122171@qq.com>
Signed-off-by: Akshay Chitneni <achitneni@apple.com>
Signed-off-by: Sophie <sophy010017@gmail.com>
Signed-off-by: yelias <yossi.elias@nokia.com>
Signed-off-by: Sandipan Panda <samparksandipan@gmail.com>
Signed-off-by: Antonin Stefanutti <antonin@stefanutti.fr>
Signed-off-by: oksanabaza <obazylie@redhat.com>
Signed-off-by: Gavrish Prabhu <gavrish.prabhu@nutanix.com>
Co-authored-by: Mark Campbell <mcampbel@redhat.com>
Co-authored-by: Wei-Cheng Lai <qazwsx0939059006@gmail.com>
Co-authored-by: Varsha <varshaprasad96@gmail.com>
Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
Co-authored-by: yu lin <735122171@qq.com>
Co-authored-by: Akshay Chitneni <akshayadatta@gmail.com>
Co-authored-by: Akshay Chitneni <achitneni@apple.com>
Co-authored-by: Sophie Hsu <112261858+sophie0730@users.noreply.github.com>
Co-authored-by: Kevin Hannon <kehannon@redhat.com>
Co-authored-by: YosiElias <73485442+YosiElias@users.noreply.github.com>
Co-authored-by: yelias <yossi.elias@nokia.com>
Co-authored-by: Sandipan Panda <87253083+sandipanpanda@users.noreply.github.com>
Co-authored-by: Antonin Stefanutti <astefanutti@users.noreply.github.com>
Co-authored-by: Oksana Bazylieva <61097730+oksanabaza@users.noreply.github.com>
Co-authored-by: Gavrish Prabhu <gavrish.prabhu@nutanix.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

KEP-2170: Create dataset and model initializers
9 participants