Setup Workshop Nemoclaw
brevdev/workshop-build-an-agent
Set up the NVIDIA "Build an Agent" DevX workshop as a working JupyterLab environment from INSIDE a locked-down OpenShell/NemoClaw sandbox, and hand the user the token URL + access commands.
Agent skill
by Red-Hat-AI-Innovation-Team in Red-Hat-AI-Innovation-Team/training_hub
Guides users through LLM post-training with Training Hub, including installation, algorithm selection (SFT, OSFT, LoRA), hyperparameter tuning, troubleshooting OOM errors, interpreting loss curves…
$ npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Red-Hat-AI-Innovation-Team/training_hub training-hub-guide --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/training-hub-guide .claude/skills/training-hub-guide && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "training-hub-guide" agent skill from https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guide into .claude/skills/training-hub-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-hub-guide", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guideType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Red-Hat-AI-Innovation-Team/training_hub training-hub-guide --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/training-hub-guide .agents/skills/training-hub-guide && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "training-hub-guide" agent skill from https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guide into .agents/skills/training-hub-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-hub-guide", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Red-Hat-AI-Innovation-Team/training_hub training-hub-guide --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/training-hub-guide .cursor/skills/training-hub-guide && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "training-hub-guide" agent skill from https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guide into .cursor/skills/training-hub-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-hub-guide", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git --path .claude/skills/training-hub-guide--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Red-Hat-AI-Innovation-Team/training_hub training-hub-guide --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/training-hub-guide .gemini/skills/training-hub-guide && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "training-hub-guide" agent skill from https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guide into .gemini/skills/training-hub-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-hub-guide", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Red-Hat-AI-Innovation-Team/training_hub training-hub-guideInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/training-hub-guide .github/skills/training-hub-guide && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "training-hub-guide" agent skill from https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guide into .github/skills/training-hub-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-hub-guide", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Red-Hat-AI-Innovation-Team/training_hub training-hub-guide --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Red-Hat-AI-Innovation-Team/training_hub.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/training-hub-guide .opencode/skills/training-hub-guide && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "training-hub-guide" agent skill from https://github.com/Red-Hat-AI-Innovation-Team/training_hub/tree/main/.claude/skills/training-hub-guide into .opencode/skills/training-hub-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-hub-guide", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
training-hub-guideGuides users through LLM post-training with Training Hub, including installation, algorithm selection (SFT, OSFT, LoRA), hyperparameter tuning, troubleshooting OOM errors, interpreting loss curves…
Training Hub Guide is an agent skill from Red-Hat-AI-Innovation-Team/training_hub. Guides users through LLM post-training with Training Hub, including installation, algorithm selection (SFT, OSFT, LoRA), hyperparameter tuning, troubleshooting OOM errors, interpreting loss curves, and leveraging backend-specific features. Use when the user is working with traininghub, fine-tuning language models, asking about SFT/OSFT/LoRA training, or debugging GPU/CUDA training issues.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `backend-kwargs.md`, `hyperparameter-guide.md` and `installation-troubleshooting.md`).
It sits in AI & LLM Engineering, covering Fine-tuning. It works with CUDA. The repository describes itself as: An algorithm-focused interface for common llm training, continual learning, and reinforcement learning techniques. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 511a905. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
ai-innovation.teamFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Training Hub Guide loads about 2.8k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 1,100 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Red-Hat-AI-Innovation-Team/training_hub at commit 511a905, republished under its Apache-2.0 licence (© Red-Hat-AI-Innovation-Team). 1,100 words, ~2,780 tokens.
.claude/skills/training-hub-guide/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Training Hub is an abstraction layer for LLM post-training algorithms. It packages SFT, OSFT, and LoRA behind a unified interface so users do not need to learn multiple backend APIs. Backends are wired together internally; users interact with a single API surface.
For API reference and conceptual overviews, consult the live documentation at https://ai-innovation.team/training_hub/#/ and the docs/ directory in the repo root. This skill covers practical knowledge, decision frameworks, and troubleshooting that supplements the official docs.
# Minimal (no backends, no GPU training)
uv pip install training_hub
# SFT + OSFT (high-scale distributed fine-tuning via CUDA backends)
# IMPORTANT: base install MUST come first, then [cuda] with --no-build-isolation
uv pip install training_hub && uv pip install training_hub[cuda] --no-build-isolation
# LoRA (budget-friendly, single/few-GPU via Unsloth — does NOT require [cuda])
uv pip install training_hub[lora]The [cuda] extra is only needed for SFT and OSFT algorithms. LoRA uses the Unsloth backend which handles its own CUDA dependencies through [lora].
The two-step install for [cuda] is required because flash-attn and other CUDA packages need torch and packaging to already be present at build time.
Loggers are not bundled. Install separately as needed:
uv pip install wandb # Weights & Biases
uv pip install mlflow # MLflow
uv pip install tensorboard # TensorBoardWhen users encounter errors like cannot import from flash_attn: unknown symbol or similar issues with optimized kernels (flash attention, liger, causal-conv1d, mamba-ssm), the root cause is usually stale cached builds. Fix with:
uv cache clean~/.cache/ (torch, triton, flash_attn, vllm, and similar)~/.triton/ if it exists (triton kernel cache)See installation-troubleshooting.md for the full cleanup procedure.
Read the algorithm guides at https://ai-innovation.team/training_hub/#/algorithms/sft, https://ai-innovation.team/training_hub/#/algorithms/osft, and https://ai-innovation.team/training_hub/#/algorithms/lora for conceptual overviews. The decision framework:
| Need | Algorithm | Why |
|---|---|---|
| Compute-constrained or simple task fine-tuning | LoRA | Low VRAM, fast iteration, but lower capacity and higher forgetting |
| Maximum capacity, forgetting is acceptable | SFT | Full-parameter training, distributed multi-node support |
| New knowledge while preserving existing capabilities | OSFT | Orthogonal subspace prevents catastrophic forgetting |
Always try multiple algorithms and pick the one that performs best on your evaluation. See the example notebooks in examples/notebooks/ that compare SFT vs OSFT for continual learning scenarios.
The three hyperparameters that matter most for any algorithm are learning rate, effective batch size, and number of epochs. Detailed guidance including dataset-size-dependent recommendations lives in hyperparameter-guide.md.
SFT / OSFT:
LoRA:
lora_r): start at 16, increase if underfittinglora_alpha): typically 2x rankOSFT-specific:
unfreeze_rank_ratio: recommended default 0.5. Rarely need above 0.5 for models around 8B parameters. Larger models generally need less; smaller models may need more (see hyperparameter-guide.md for why).target_patterns: optionally restrict OSFT to specific modules (e.g., only MLPs or only attention)effective_batch_size: Taken as the exact minibatch size on any backend. The algorithm translates this into whatever gradient accumulation is needed internally.max_seq_len: Samples exceeding this length are dropped. Important for long-context data and affects training speed and memory.unmask_messages (OSFT) / unmask field (SFT): Unmasks all messages except the system message for loss computation. When training on knowledge data where documents are embedded in user messages (e.g., from sdg_hub), this significantly boosts knowledge ingestion.is_pretraining: Enables pretraining mode for document-style data. Uses block_size to pack documents into fixed-length sample blocks. Start with block_size=2048, or 512 for short/numerous documents.accelerate_full_state_at_epoch (SFT only): Saves FP32 full-state checkpoints at every epoch. Very expensive (an 8B model checkpoint is ~108GB).SFT and OSFT train in FP32 + mixed precision. Memory requirement to load a model: 16 bytes per parameter (4 bytes x 4 copies: parameter, gradient, 2x AdamW optimizer states).
When you hit OOM, these are the available knobs:
nproc_per_node: Use all available GPUs to distribute the workloadmax_seq_len: Reduce if sequences are longer than what fits in a single forward/backward passmax_tokens_per_gpu: Reduce to fit fewer tokens per GPU per stepuse_liger=True to reduce memory via fused kernelsunfreeze_rank_ratio to reduce SVD memory overheadIf all knobs are exhausted, choose a smaller model or a node with more GPU memory.
Use from training_hub import estimate for upfront memory estimation. See examples/notebooks/memory_estimator_example.ipynb.
All three algorithms (sft(), osft(), lora_sft()) expose logging configuration as first-class parameters. Loggers are auto-detected: they are automatically enabled when their configuration parameters are set.
All algorithms accept the same logging parameters:
| Parameter | Logger | Description |
|---|---|---|
wandb_project | W&B | Project name (enables W&B logging) |
wandb_entity | W&B | Team or user entity |
wandb_run_name | W&B | Run display name |
mlflow_tracking_uri | MLflow | Tracking server URI (enables MLflow logging) |
mlflow_experiment_name | MLflow | Experiment name |
mlflow_run_name | MLflow | Run name |
tensorboard_log_dir | TensorBoard | Log directory (enables TensorBoard logging) |
from training_hub import sft
sft(
model_path="my-model",
data_path="data.jsonl",
ckpt_output_dir="./checkpoints",
# W&B logging — enabled automatically because wandb_project is set
wandb_project="my-finetune",
wandb_entity="my-team",
wandb_run_name="sft-run-1",
# MLflow — also enabled, multiple loggers can run simultaneously
mlflow_tracking_uri="http://localhost:5000",
mlflow_experiment_name="sft-experiment",
)If logging parameters are not passed explicitly, backends will check these environment variables as fallback:
| Parameter | Environment variable |
|---|---|
wandb_project | WANDB_PROJECT |
wandb_entity | WANDB_ENTITY |
wandb_run_name | WANDB_RUN_NAME |
mlflow_tracking_uri | MLFLOW_TRACKING_URI |
mlflow_experiment_name | MLFLOW_EXPERIMENT_NAME |
mlflow_run_name | MLFLOW_RUN_NAME |
Explicit kwargs always take precedence over environment variables.
| Logger | SFT | OSFT | LoRA |
|---|---|---|---|
| W&B | Yes | Yes | Yes |
| MLflow | Yes | Yes | Yes |
| TensorBoard | Yes | Limited | Yes |
Each backend emits loss in a different format. plot_loss() auto-detects all of them:
from training_hub import plot_loss
plot_loss(["./run1", "./run2"], labels=["baseline", "tuned"], ema=True)| Backend | Format | File | Loss key |
|---|---|---|---|
| SFT (instructlab-training) | JSONL | training_log.jsonl | avg_loss |
| OSFT (mini-trainer) | JSONL | training_log.jsonl | loss |
| LoRA (Unsloth/TRL) | JSON | checkpoint-*/trainer_state.json | loss |
validation_split and validation_frequency kwargs. OSFT also supports save_best_val_loss. See backend-kwargs.md and the Validation Loss Guide.Every algorithm exposes a curated parameter set, but backends support many more options. Any parameter not directly exposed can be passed as a kwarg to the algorithm function, and it will be forwarded to the backend.
This is covered in detail in backend-kwargs.md, including links to each backend's full parameter definitions and practical examples like running plain SFT through the OSFT backend with osft=False.
Validation loss is a useful proxy but not always sufficient. Ideally, evaluate the model on a downstream benchmark or task-specific eval harness both before and after training to measure the actual impact. Evaluation itself is outside Training Hub's scope.
examples/notebooks/ has comprehensive tutorials for each algorithmexamples/scripts/ has ready-to-run training scripts for various models© Red-Hat-AI-Innovation-Team, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files in .claude/skills/training-hub-guide of Red-Hat-AI-Innovation-Team/training_hub.
Open the folder on GitHubat commit 511a905
Training Hub Guide next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Training Hub Guide this skillRed-Hat-AI-Innovation-Team/training_hub | 100 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Setup Workshop Nemoclawbrevdev/workshop-build-an-agent | 146 | — | ~5.2k | Automated safety check: Pass | Apache-2.0 | |
| ML Generative Mattergenlearningmatter-mit/AtomisticSkills | 176 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Cosmos3 Post TrainingNVIDIA/cosmos-framework | 560 | — | ~2.7k | Automated safety check: Pass | Custom licence | |
| Spark Environment Setupwshobson/agents | 40k | — | ~2k | Automated safety check: Pass | MIT | |
| Kermt FinetuneNVIDIA/skills | 3.6k | 1 repos | ~4.1k | Automated safety check: Pass | Apache-2.0 |
brevdev/workshop-build-an-agent
Set up the NVIDIA "Build an Agent" DevX workshop as a working JupyterLab environment from INSIDE a locked-down OpenShell/NemoClaw sandbox, and hand the user the token URL + access commands.
learningmatter-mit/AtomisticSkills
Generate inorganic material structures using MatterGen, a diffusion-based generative model.
NVIDIA/cosmos-framework
Guide users through Cosmos3 supervised fine-tuning (SFT) post-training: preparing the example dataset and Wan2.2 VAE, converting the base checkpoint to DCP, launching distributed training (paired…
wshobson/agents
Set up a working ML training/inference environment on NVIDIA DGX Spark (GB10, aarch64, CUDA 13).
NVIDIA/skills
Finetune a pretrained KERMT encoder on a labeled CSV. An agent skill from NVIDIA/skills.
NVIDIA/skills
NV-Tesseract AD Diffusion — diffusion-based anomaly detection and fine-tuning for multivariate time series.
Red-Hat-AI-Innovation-Team/training_hub
A skill your agent uses when the user wants to set up LLM training for the first time, or when traininghub is not yet installed/configured in the current environment.
Red-Hat-AI-Innovation-Team/training_hub
A skill your agent uses when the user wants to estimate GPU memory (VRAM) requirements for a training configuration, check if a model will fit on their GPUs, or plan GPU allocation for training.
Red-Hat-AI-Innovation-Team/training_hub
A skill your agent uses when the user wants to run a training job using a saved configuration.
Works with
Categories
Guides users through LLM post-training with Training Hub, including installation, algorithm selection (SFT, OSFT, LoRA), hyperparameter tuning, troubleshooting OOM errors, interpreting loss curves…. Training Hub Guide is an agent skill from Red-Hat-AI-Innovation-Team/training_hub. Guides users through LLM post-training with Training Hub, including installation, algorithm selection (SFT, OSFT, LoRA), hyperparameter tuning, troubleshooting OOM errors, interpreting loss curves, and leveraging backend-specific features.
Training Hub Guide fits situations like: the user is working with traininghub; fine-tuning language models; asking about SFT/OSFT/LoRA training; debugging GPU/CUDA training issues.
Run `npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a claude-code`. Or copy the skill folder (.claude/skills/training-hub-guide in Red-Hat-AI-Innovation-Team/training_hub) into .claude/skills/training-hub-guide in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a codex`. Or copy the skill folder (.claude/skills/training-hub-guide in Red-Hat-AI-Innovation-Team/training_hub) into .agents/skills/training-hub-guide in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Red-Hat-AI-Innovation-Team/training_hub --skill training-hub-guide -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/training-hub-guide, .gemini/skills/training-hub-guide, .github/skills/training-hub-guide and .opencode/skills/training-hub-guide in your project.
Going by SKILL.md and its folder, Training Hub Guide needs the command-line tools its instructions call (uv). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: ai-innovation.team. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Training Hub Guide is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Training Hub Guide: Setup Workshop Nemoclaw (brevdev/workshop-build-an-agent, 146 stars), ML Generative Mattergen (learningmatter-mit/AtomisticSkills, 176 stars), Cosmos3 Post Training (NVIDIA/cosmos-framework, 560 stars) and Spark Environment Setup (wshobson/agents, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Red-Hat-AI-Innovation-Team (a GitHub organization) maintains it in Red-Hat-AI-Innovation-Team/training_hub, which has 100 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.
Source: Red-Hat-AI-Innovation-Team/training_hub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.