Skip to content

Remove old th06 universal training images - #978

Merged
ChughShilpa merged 1 commit into
opendatahub-io:mainfrom
ChughShilpa:remove
Aug 6, 2026
Merged

Remove old th06 universal training images#978
ChughShilpa merged 1 commit into
opendatahub-io:mainfrom
ChughShilpa:remove

Conversation

@ChughShilpa

@ChughShilpa ChughShilpa commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Removes the old versioned universal training image directories (th06-cpu-torch210-py312, th06-cuda130-torch210-py312, th06-rocm64-torch291-py312), which have been superseded by the new 3.5 GA images (th-torch-cpu-py312, th-torch-cuda-py312, th-torch-rocm-py312)
  • Updates README.md and ARCHITECTURE.md to reflect the new simplified directory naming convention

Test plan

  • Verify no downstream CI pipelines reference the old directory paths
  • Verify new images build and function correctly (already validated by prior PRs)
  • Confirm tests/trainer/utils/utils_runtimes.go runtime name mappings are updated separately when cluster-side runtimes are renamed

Made with Cursor

Summary by CodeRabbit

  • Documentation

    • Updated training image documentation to use stable CPU, CUDA, and ROCm image names.
    • Standardized references to Python 3.12 and simplified image directory naming examples.
  • Bug Fixes

    • Updated universal training image references to point to the generic image variants instead of version-specific directories.
  • Chores

    • Removed obsolete version-specific training image definitions and associated configuration files.

… images

The old versioned directories (th06-cpu-torch210-py312,
th06-cuda130-torch210-py312, th06-rocm64-torch291-py312) are superseded
by the new simplified naming convention (th-torch-cpu-py312,
th-torch-cuda-py312, th-torch-rocm-py312). Update README.md and
ARCHITECTURE.md to reflect the new directory structure.

Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci
openshift-ci Bot requested review from kapil27 and sutaakar July 31, 2026 10:40
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The change replaces version-specific universal training image directory references with generic CPU, CUDA, and ROCm names using Python 3.12. It updates the architecture and training documentation naming conventions. The previous CPU, CUDA, and ROCm image build files, dependency manifests, repository configurations, licenses, and entrypoint scripts are deleted.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 10
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the removal of the superseded th06 universal training image directories.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Contribution Quality And Spam Detection ✅ Passed The commit removes three superseded image trees and documents existing replacements; it contains no security fix, validation change, code-quality issue, or cross-repo evidence.
No Hardcoded Secrets ✅ Passed The commit adds only public image naming documentation and deletes old image files; focused scans found no credentials, private keys, embedded-auth URLs, or base64 secret candidates.
No Weak Cryptography ✅ Passed The commit adds only image naming documentation and deletes old image files; scans found no banned primitives, custom crypto, or secret comparisons in added or replacement image content.
No Injection Vectors ✅ Passed CWE-78, CWE-89, CWE-94, CWE-502, and CWE-79 patterns are absent from added lines; the patch adds only static documentation and deletes legacy image files.
No Privileged Containers ✅ Passed No CWE-250 issue is introduced: the diff adds no privileged, hostPID/hostNetwork/hostIPC, SYS_ADMIN, or escalation settings, and image runtime stages end at USER 1001.
No Sensitive Data In Logs ✅ Passed The PR adds only naming/documentation lines; it adds no logging statements or sensitive log payloads. Replacement Dockerfiles contain only static build-status echoes.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@images/universal/training/README.md`:
- Around line 166-168: Resolve the Scenario 2 image-directory naming collision
around the CUDA, ROCm, and CPU paths in the training image documentation by
including the relevant dependency version in each directory name, or explicitly
define the stable-directory update contract with immutable tags, digests, and
rollback rules. Update ARCHITECTURE.md and all downstream build references to
consistently use the selected naming and rollback contract.
- Around line 36-43: Update the runtime-to-image mappings in the relevant
definitions in utils_runtimes.go to use the renamed th-torch-cuda-py312,
th-torch-rocm-py312, and th-torch-cpu-py312 image references instead of the
deleted th06-* names, preserving the existing CUDA, ROCm, and CPU runtime
associations.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: eb0b88de-b3c1-45f3-93d2-52864caded3c

📥 Commits

Reviewing files that changed from the base of the PR and between 86a3c05 and 26dd8b7.

📒 Files selected for processing (21)
  • ARCHITECTURE.md
  • images/universal/training/README.md
  • images/universal/training/th06-cpu-torch210-py312/Dockerfile
  • images/universal/training/th06-cpu-torch210-py312/LICENSE.md
  • images/universal/training/th06-cpu-torch210-py312/entrypoint-universal.sh
  • images/universal/training/th06-cpu-torch210-py312/pyproject.toml
  • images/universal/training/th06-cpu-torch210-py312/requirements.txt
  • images/universal/training/th06-cuda130-torch210-py312/Dockerfile
  • images/universal/training/th06-cuda130-torch210-py312/LICENSE.md
  • images/universal/training/th06-cuda130-torch210-py312/cuda.repo
  • images/universal/training/th06-cuda130-torch210-py312/entrypoint-universal.sh
  • images/universal/training/th06-cuda130-torch210-py312/mellanox.repo
  • images/universal/training/th06-cuda130-torch210-py312/pyproject.toml
  • images/universal/training/th06-cuda130-torch210-py312/requirements.txt
  • images/universal/training/th06-rocm64-torch291-py312/Dockerfile
  • images/universal/training/th06-rocm64-torch291-py312/LICENSE.md
  • images/universal/training/th06-rocm64-torch291-py312/entrypoint-universal.sh
  • images/universal/training/th06-rocm64-torch291-py312/mellanox.repo
  • images/universal/training/th06-rocm64-torch291-py312/pyproject.toml
  • images/universal/training/th06-rocm64-torch291-py312/requirements.txt
  • images/universal/training/th06-rocm64-torch291-py312/rocm.repo
💤 Files with no reviewable changes (19)
  • images/universal/training/th06-rocm64-torch291-py312/mellanox.repo
  • images/universal/training/th06-cpu-torch210-py312/requirements.txt
  • images/universal/training/th06-cuda130-torch210-py312/mellanox.repo
  • images/universal/training/th06-cuda130-torch210-py312/requirements.txt
  • images/universal/training/th06-cpu-torch210-py312/entrypoint-universal.sh
  • images/universal/training/th06-cuda130-torch210-py312/cuda.repo
  • images/universal/training/th06-cpu-torch210-py312/pyproject.toml
  • images/universal/training/th06-cuda130-torch210-py312/pyproject.toml
  • images/universal/training/th06-cpu-torch210-py312/LICENSE.md
  • images/universal/training/th06-cuda130-torch210-py312/LICENSE.md
  • images/universal/training/th06-rocm64-torch291-py312/LICENSE.md
  • images/universal/training/th06-rocm64-torch291-py312/requirements.txt
  • images/universal/training/th06-rocm64-torch291-py312/rocm.repo
  • images/universal/training/th06-rocm64-torch291-py312/entrypoint-universal.sh
  • images/universal/training/th06-rocm64-torch291-py312/pyproject.toml
  • images/universal/training/th06-cuda130-torch210-py312/entrypoint-universal.sh
  • images/universal/training/th06-rocm64-torch291-py312/Dockerfile
  • images/universal/training/th06-cpu-torch210-py312/Dockerfile
  • images/universal/training/th06-cuda130-torch210-py312/Dockerfile

Comment on lines +36 to +43
| **CUDA** | `th-torch-cuda-py312/` | NVIDIA GPU training |
| **ROCm** | `th-torch-rocm-py312/` | AMD GPU training |
| **CPU** | `th-torch-cpu-py312/` | CPU-only training |

All flavors include:
- **Training Hub** with LoRA support
- **PyTorch <VERSION>**
- **Python <VERSION>**
- **PyTorch**
- **Python 3.12**

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

new_dirs=(
  images/universal/training/th-torch-cpu-py312
  images/universal/training/th-torch-cuda-py312
  images/universal/training/th-torch-rocm-py312
)

failed=0

for dir in "${new_dirs[@]}"; do
  if [[ ! -d "$dir" ]]; then
    echo "Missing new image directory: $dir" >&2
    failed=1
  fi
done

if rg -n --hidden --glob '!.git/**' \
  'th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)' .; then
  echo "Stale references to removed image directories found." >&2
  failed=1
fi

exit "$failed"

Repository: opendatahub-io/distributed-workloads

Length of output: 2165


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '--- new image directories ---\n'
for dir in images/universal/training/th-torch-cpu-py312 images/universal/training/th-torch-cuda-py312 images/universal/training/th-torch-rocm-py312; do
  if [[ -d "$dir" ]]; then
    echo "present: $dir"
  else
    echo "missing: $dir"
  fi
done

printf '\n--- all deleted th06 training directory references ---\n'
rg -n --hidden --glob '!.git/**' \
  'images/universal/training/(th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)|th-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312))' . || true

printf '\n--- all th06 runtime/image references ---\n'
rg -n --hidden --glob '!.git/**' \
  'training-hub-th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)|odh-th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)|"th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)"' . || true

Repository: opendatahub-io/distributed-workloads

Length of output: 265


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- new image directories ---'
for dir in images/universal/training/th-torch-cpu-py312 images/universal/training/th-torch-cuda-py312 images/universal/training/th-torch-rocm-py312; do
  if [[ -d "$dir" ]]; then
    echo "present: $dir"
  else
    echo "missing: $dir"
  fi
done

printf '%s\n' ''
printf '%s\n' '--- old image directory references ---'
rg -n --hidden --glob '!.git/**' \
  'images/universal/training/(th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)|th-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312))' . || true

printf '%s\n' ''
printf '%s\n' '--- th06 runtime/image references ---'
rg -n --hidden --glob '!.git/**' \
  'training-hub-th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)|odh-th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)|"th06-(cpu-torch210-py312|cuda130-torch210-py312|rocm64-torch291-py312)"' . || true

Repository: opendatahub-io/distributed-workloads

Length of output: 2385


Update the stale runtime image references in tests/trainer/utils/utils_runtimes.go.

The renamed th-torch-* image directories exist, but this file still maps runtimes to deleted th06-* image names. CWE-1104 (Cross-module Inconsistency).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@images/universal/training/README.md` around lines 36 - 43, Update the
runtime-to-image mappings in the relevant definitions in utils_runtimes.go to
use the renamed th-torch-cuda-py312, th-torch-rocm-py312, and th-torch-cpu-py312
image references instead of the deleted th06-* names, preserving the existing
CUDA, ROCm, and CPU runtime associations.

Source: Path instructions

Comment on lines +166 to +168
- CUDA: `th-torch-cuda-py<PYTHON_VERSION>/`
- ROCm: `th-torch-rocm-py<PYTHON_VERSION>/`
- CPU: `th-torch-cpu-py<PYTHON_VERSION>/`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Resolve the major-update naming conflict.

Scenario 2 requires a new directory for major CUDA, ROCm, PyTorch, or Training Hub updates. These names vary only by Python version. A major dependency update with Python 3.12 would reuse th-torch-*-py312/, so the workflow cannot preserve the previous GA image or support deterministic rollback.

Either add the relevant dependency version to the directory name, or change Scenario 2 to update the existing stable directory and define immutable image tags, digests, and rollback rules. Update ARCHITECTURE.md and downstream build references with the selected contract.

As per path instructions, architectural issues and bug-prone patterns are review priorities.

Possible documentation fix for stable directories
-**New folder required:**
+**Existing flavor directory update:**
...
-4. Create new directory following naming convention:
+4. Update the existing `th-torch-<flavor>-py<PYTHON_VERSION>/` directory in place.
+   Publish an immutable image tag or digest for each major dependency update.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@images/universal/training/README.md` around lines 166 - 168, Resolve the
Scenario 2 image-directory naming collision around the CUDA, ROCm, and CPU paths
in the training image documentation by including the relevant dependency version
in each directory name, or explicitly define the stable-directory update
contract with immutable tags, digests, and rollback rules. Update
ARCHITECTURE.md and all downstream build references to consistently use the
selected naming and rollback contract.

Source: Path instructions

@ChughShilpa

Copy link
Copy Markdown
Contributor Author

/on-hold

Will merge when new universal images are onboarded in Konflux

@openshift-ci

openshift-ci Bot commented Aug 5, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: efazal, sutaakar

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

The pull request process is described here

Details 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

@ChughShilpa
ChughShilpa merged commit 4c138d2 into opendatahub-io:main Aug 6, 2026
7 of 8 checks passed
@ChughShilpa
ChughShilpa deleted the remove branch August 6, 2026 06:52
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.

3 participants