Repository navigation
DataFlex v1.1.0 Release Notes
🎉 Our paper has been accepted to the NeurIPS 2026 Evaluation & Dataset Track!
This release extends DataFlex to multimodal data selection, adds two reweighting algorithms and a cluster-accelerated LESS variant, moves to transformers v5, and ships the first preview of the v2 scheduling stack.
⚠️ Breaking Changes
- Python 3.10 is no longer supported (
requires-python >= 3.11); it cannot resolve LlamaFactory 0.9.4+ (d5fb774). - DeepSpeed is no longer a required dependency (a611a15). Configs under
examples/deepspeednow need the optional extrapip install "dataflex[deepspeed]", which is capped below 0.17 because 0.17+ fails to import on the pinned torch.
✨ New Algorithms
| Component | Method | Reference | Implementation |
|---|---|---|---|
| Selector | ICONS | Influence Consensus data selection for vision-language instruction tuning (arXiv:2501.00654) | icons · train/selector/icons_selector.py (#64) |
| Selector | COINCIDE | Concept-skill transferability-based coreset selection for visual instruction tuning, EMNLP 2024 (arXiv:2406.10995) | coincide · train/selector/coincide_selector.py (#65) |
| Selector | Cluster-LESS | Cluster-accelerated variant of LESS (arXiv:2402.04333) | cluster_less · train/selector/cluster_less_selector.py (#55) |
| Weighter | ADAPT | Rethinking Data Curation in LLM Training: Online Reweighting Offers Better Generalization, ICLR 2026 | adapt · train/weighter/adapt_weighter.py (#54) |
| Weighter | Joint-Update-Aware | In-house batch-aware method; no external paper | joint_update_aware · train/weighter/joint_update_aware_weighter.py (#58, #59) |
ICONS scores each training sample against K task validation sets by gradient influence, then aggregates the K per-task rankings by majority voting, so a sample is kept only when several tasks agree it helps.
COINCIDE is unsupervised: a small reference LVLM's internal activations group the data into concept-skill clusters, each cluster gets a sampling budget proportional to its transferability and inversely proportional to its density, and samples are drawn within a cluster by greedily minimising MMD² to the cluster distribution.
Cluster-LESS removes the per-example gradient cost of LESS: it clusters the training set on gradient-free embedding features, averages the projected gradients of a few representatives per cluster, and scores the whole cluster against the validation gradients.
ADAPT derives an absolute per-sample weight from the representation similarity between the sample and an anchor (validation) set, passed through a temperature-scaled sigmoid.
Joint-Update-Aware treats intra-batch redundancy as a proxy for joint update effects, maximising sᵀw − (β/2)·wᵀSw + τ·H(w) over the simplex, where S is the cosine Gram matrix of L2-normalised embeddings.
🧪 v2 Preview
The two modules below are the first components of the upcoming v2 scheduling stack, shipped early so that interested users can evaluate them and give feedback. Their configuration schema and component interfaces are still being finalised and may change in a later release without a deprecation cycle, so they are not recommended for production runs yet. Existing v1 trainers and algorithms are unaffected.
- Reorder module — static and dynamic reordering of the training stream (#60, configs in #61).
- Composable scheduling (lego) — compose selection, mixing, and reweighting into a single pipeline (d10cfa7).
🔧 Compatibility
- Support for transformers v5 (fc1281a); 4.55 through 5.6 all work, and Qwen3.5 / Gemma 4 need 5.5+.
- Support for LlamaFactory 0.9.4–0.9.6, fixing a bogus
train_dataseton 0.9.5+ (7643f53). - transformers 5.3+ is recommended for
train_from_scratchunder DeepSpeed ZeRO-3.
🚀 Improvements & Fixes
- Per-sample loss utility and score-sharing hooks, so selectors can reuse each other's scores instead of recomputing them (7404c73).
num_train_epochsnow works alongside dynamic-step training (#50).- Each domain is tokenized only once, and
tokenized_pathreuses the result (5a79518). - Fixed reorder pool invalidation (3a39640).
- Fixed
seed_workerunder transformers v5 and dropped the undefinedpatch_train_from_scratch_padcall (8f784a7). - Demo datasets realigned with upstream LlamaFactory (21b6121).
📦 Installation
pip install --index-url https://download.pytorch.org/whl/cu124 \
torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0
pip install dataflex==1.1.0
# DeepSpeed configs:
pip install "dataflex[deepspeed]"
# LESS / Cluster-LESS selectors (need TRAK):
pip install "dataflex[less]"Full changelog: v1.0.0...v1.1.0