Sequence Packing Algorithms

AReaL supports configurable sequence packing algorithms for micro-batch allocation during training. Sequence packing determines how variable-length sequences are grouped into micro-batches, directly impacting load balance across data-parallel (DP) ranks and overall training throughput.

Supported Algorithms

Algorithm Key Description Complexity Balance Quality
First Fit Decreasing (FFD) ffd Greedy bin-packing heuristic. Sorts sequences by length (descending) and assigns each to the first bin with remaining capacity. O(n log n) Good
Karmarkar-Karp (KK) kk Largest Differencing Method. Iteratively merges the two most imbalanced partial partitions using a max-heap, producing near-optimal balance. O(n log n · k) Excellent

Configuration

The packing algorithm is controlled by the packing_algorithm field in MicroBatchSpec, which can be set directly in YAML configuration files.

YAML Configuration

# In your experiment config (e.g., examples/countdown/train_config.yaml)

actor:
  mb_spec:
    max_tokens_per_mb: 8192
    n_mbs: 4
    n_mbs_divisor: 1
    packing_algorithm: kk    # Options: "ffd" (default), "kk"

Python API

You can also set the algorithm programmatically:

from areal.api.cli_args import MicroBatchSpec

# Using KK algorithm
mb_spec = MicroBatchSpec(
    max_tokens_per_mb=8192,
    n_mbs=4,
    packing_algorithm="kk",
)

# Or update an existing spec
mb_spec_kk = MicroBatchSpec.new(existing_spec, packing_algorithm="kk")

When to Use KK

Recommended scenarios for KK:

  • Large-scale RL training with highly variable sequence lengths (e.g., RLHF, PPO with open-ended generation). KK significantly reduces the spread between the most-loaded and least-loaded DP rank.
  • Bimodal sequence distributions where a mix of very short and very long sequences makes greedy packing suboptimal.
  • High DP parallelism (≥4 ranks), where even small load imbalances cause significant idle time due to synchronization barriers.

When FFD is sufficient:

  • Uniform or near-uniform sequence lengths.
  • Small-scale experiments where packing overhead matters more than balance.
  • Latency-sensitive inference pipelines (FFD is slightly faster).