kubeflow / kubeflow/sdk

[SDK] Snapshot users' workspace into distributed TrainJob workload

Open
#48 22 comments 6 reactions 0 assignees View on GitHub
help wanted kind/feature lifecycle/frozen
Dominant language
Python
Stars
148
Forks
262
Avg merge
1d 2h
Merged PRs (30d)
1

Description

### What you would like to be added?

As we discussed earlier, we want to design an approach to snapshot users' workspace into TrainJob (e.g. distributed ML workload): https://github.com/kubeflow/training-operator/pull/2324#discussion_r1862719941.
To achieve this, we plan to generate a unique TrainJob ID before submitting it to the Kubernetes control plane.

During the KubeCon 2024 demo, we demonstrated how workspace snapshotting might work: https://youtu.be/Lgy4ir1AhYw?t=458.
In this demo, we pushed Python code files into S3 and then loaded them into TrainJob using initContainers.

However, we can consider various approaches, for instance:
- Using distributed cache.
- Using `kubectl cp`.

### Why is this needed?

This should streamline Data Scientists user experience while working with Kubeflow Training Python SDK.

### Love this feature?

Give it a 👍 We prioritize the features with most 👍

Contributor guide

Open the contributing guide

Research direction

No source files or tests are named. Start by reading the linked training-operator PR discussion and the referenced KubeCon demo, then compare the proposed S3/initContainer flow with distributed cache and kubectl cp. Done means agreeing on an approach and defining how a uniquely identified workspace is snapshotted into a distributed TrainJob.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, kubernetes, python
Domain
distributed-systems, machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.