LLMasterLL's picture
|
download
raw
4.38 kB
# LLaVA-Video-83K
An 83,000-sample subset of [`lmms-lab/LLaVA-Video-178K`](https://huggingface.co/datasets/lmms-lab/LLaVA-Video-178K),
selected by stratified density-flattened sampling rather than uniformly at random,
and shipped **with its media** so it is usable straight out of the bucket.
| | |
|---|---|
| Records | **83,000** (5.0% of the 1,650,547 upstream records) |
| QA pairs | 279,679 |
| Distinct media | 71,224 (59,428 mp4 + 11,796 llava_hound frame scenes) |
| Media size | 428.9 GiB |
| Tasks | Caption 10.97% · Open-ended VQA 75.84% · Multiple-choice VQA 13.19% |
Media for the `llava_hound` split comes from
[`ShareGPTVideo/train_video_and_instruction`](https://huggingface.co/datasets/ShareGPTVideo/train_video_and_instruction)
(`train_300k`), which covers all 179,318 referenced scenes.
## Layout
```
LLaVA-Video-83K/
├── annotations/
│ ├── all_sampled.json # 83,000 records, upstream schema unchanged
│ └── by_source/*.json # 39 files, split as upstream
├── metadata/
│ ├── manifest.parquet # record -> media, task, duration bucket, source
│ ├── shard_index.parquet # member -> (shard, offset, nbytes) ← random access
│ ├── scene_index.parquet # llava_hound scene -> frame count
│ └── SAMPLING_REPORT.md # how the subset was drawn, and its verification
├── embeddings/ # MiniLM-L6 vector per record, for re-drawing subsets
├── shards/
│ ├── video/video-NNNNN.tar # uncompressed, ~2 GiB each
│ └── frame/frame-NNNNN.tar # uncompressed, ~2 GiB each
└── videos_large/ # the 188 mp4s above 64 MiB, stored loose
```
A record's `video` field is unchanged from upstream and is exactly the member
name inside the shards, so nothing in the annotations needs rewriting.
## Why tar shards
Media is stored as **uncompressed** tar plus a byte-offset index, not as loose
files. A member therefore occupies a contiguous byte range and is one `pread`
away — `decord` decodes it from `BytesIO` byte-identically to reading the file
from disk, seeks included (verified on files up to 707 MiB).
The reason is I/O, not a Hub limit: 377k loose objects make transfer, listing
and Lustre metadata operations painfully slow, while ~220 shards of 2 GiB read
at full bandwidth. Videos above 64 MiB are the exception — they stay loose so a
dataloader never has to buffer a 700 MiB file in RAM.
## Usage
```python
from lvdu_reader import ShardReader
r = ShardReader("/path/to/LLaVA-Video-83K")
vr = r.video_reader("academic_source/youcook2/203/Qh_rtJaCpXs/split_6.mp4") # decord VideoReader
frames = r.scene_frames("shareVideoGPTV/frames/all_frames/v_XXX-Scene-001")
```
`ShardReader` is safe under DataLoader workers: shard handles are opened lazily
per process and never shared across a fork.
## How the subset was drawn
Uniform random sampling inherits the upstream corpus's pathologies. This subset
instead:
- keeps the **task / duration / source mix** of the parent pool (task shares match to 0.01%);
- gives small sources (activitynetqa, nextqa, perceptiontest — 41k records between them) a floor so they survive the cut;
- drops records whose answers are entirely boilerplate, cutting ultra-short open-ended answers from 5.65% (random) to **2.39%**;
- **flattens density** inside each stratum: cluster the MiniLM vectors, then allocate per cluster ∝ size^0.5, so dense topic clusters stop dominating;
- constrains the multiple-choice **length shortcut**: a blind "pick the longest option" guesser scores 51.23% on the full set, and **49.79%** here.
Measured effect of the flattening, against an equally-sized random draw: cluster
*hit rate* is unchanged (the metric saturates at 5% sampling), but concentration
drops — max samples per cluster 287 → **161** globally and 52 → **45** inside the
largest stratum; Gini 0.712 → 0.697 and 0.394 → **0.341**.
Full numbers, including the verification of every claim above, are in
`metadata/SAMPLING_REPORT.md`.
## Provenance and licence
This is a derived subset. The videos and annotations remain under the terms of
the upstream releases — see `lmms-lab/LLaVA-Video-178K` and
`ShareGPTVideo/train_video_and_instruction`. Cite those datasets, not this
repackaging, for the underlying data.

Xet Storage Details

Size:
4.38 kB
·
Xet hash:
20364fb0e24e6449fe56756c7465658856d62aea5467fe88d19e807087fc71a7

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.