Skip to content

K8s/XCalibur Support - #579

Draft
sjayaram-nv wants to merge 1 commit into
NVIDIA-NeMo:mainfrom
sjayaram-nv:sjayaram/k8s-excalibur
Draft

K8s/XCalibur Support#579
sjayaram-nv wants to merge 1 commit into
NVIDIA-NeMo:mainfrom
sjayaram-nv:sjayaram/k8s-excalibur

Conversation

@sjayaram-nv

Copy link
Copy Markdown

This branch contains changes for adding the XCalibur executor backend to enable llm benchmarking runs in K8s.

# Megatron-Bridge's common_utils.py expects. Without this wrapper each
# replica starts as a lone python process (WORLD_SIZE=1) and fails the
# parallelism divisibility check.
if executor.use_torchrun and cmd and cmd[0] == "python":

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

How is nsys profiling handled? For the slurm variant nsys is prepended to the start of the command.

else:
logger.info("Cancelled WorkloadRun '%s'", name)

def post_run_cleanup(self, name: str) -> None:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Executor base class defines 'cleanup'. This function here doesn't appear to be called: https://github.com/NVIDIA-NeMo/Run/blob/main/nemo_run/core/execution/base.py#L189

msg="",
)

def log_iter(

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Does this return all the logs or just rank 0? Kubeflow plugin has a specific check to avoid anything that isn't rank0.

XCaliburPhase.IN_PROGRESS: AppState.RUNNING,
XCaliburPhase.SUCCEEDED: AppState.SUCCEEDED,
XCaliburPhase.FAILED: AppState.FAILED,
XCaliburPhase.UNKNOWN: AppState.PENDING,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Is unknown a transient state or could a job get stuck in this status?

launch_path = os.path.join(self.job_dir, "launch.sh")
with open(launch_path, "w") as f:
f.write(script)
os.chmod(launch_path, 0o755)
val = labels.get("excalibur.nvidia.com/job")
if val and val != workloadrun_name:
return val
except json.JSONDecodeError:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants