Add semantic SFT loss masks#743
Open
vivekkalyan wants to merge 4 commits into
Open
Conversation
* origin/main: feat: unify shared-prefix Megatron execution (#739) Add DeepSeek V4 Flash support for ART Megatron (#745) Add ART Megatron support for GPT OSS (#744) ci: bound GPU prewarm cleanup ci: prewarm GPU image on all GPU clusters ci: dispatch Caladan GPU image builds Fix Gemma4 MoE Triton flex stage config (#742) fix: split GPU image dependency warmup # Conflicts: # src/art/dev/model.py # src/art/serverless/backend.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds semantic SFT loss masks to ART trajectories and compiles them into the existing token-level label tensors during SFT preprocessing. This lets local/Megatron SFT train only selected assistant turns, such as the last GPT-4.1 continuation in a multi-turn production trace, while preserving the full prompt context.
Changes
Trajectory:all,none,last_assistant,message_mask, androles.-100.loss_maskthrough JSONL SFT input, trajectory logging, and migration paths.trajectory.loss_maskon serverless SFT for now, since this support is intended for local/Megatron SFT.<think>scaffolds are not trained as target content.Why
Production-trace SFT needs to keep full multi-turn context but apply loss only to verified GPT-4.1 assistant outputs. Message-index masks in the dataset are fragile; this keeps the dataset representation semantic and lets ART compile it at tokenization time.
Validation
uv run --no-sync pytest tests/unit/test_trajectory_parquet.py tests/unit/test_preprocessing_tokenize.py tests/unit/test_sft.py tests/unit/test_serverless_pipeline_trainer_compat.py -quv run --no-sync prek run --all-files