vla / tests /test_distributed_generation.py
anhtld's picture
Initial commit: DoVLA-CIL codebase (h=16 breakthrough) (part 2)
20c251e verified
Raw
History Blame Contribute Delete
2.03 kB
from __future__ import annotations
import importlib.util
from pathlib import Path
import pytest
from dovla_cil.generation.distributed import (
DistributedCILConfig,
plan_generation_jobs,
require_ray,
run_distributed_cil_generation,
)
from dovla_cil.tasks.library import built_in_toy_tasks
def test_ray_absent_gives_clear_error() -> None:
if importlib.util.find_spec("ray") is not None:
pytest.skip("Ray is installed in this environment")
with pytest.raises(ImportError) as exc_info:
require_ray()
assert "Ray is optional" in str(exc_info.value)
assert "pip install ray" in str(exc_info.value)
def test_deterministic_group_ids_under_seed() -> None:
tasks = built_in_toy_tasks()[:2]
first = plan_generation_jobs(tasks, backend="toy", num_states_per_task=2, seed=7)
second = plan_generation_jobs(tasks, backend="toy", num_states_per_task=2, seed=7)
skipped = plan_generation_jobs(
tasks,
backend="toy",
num_states_per_task=2,
seed=7,
completed_group_ids={first[0].group_id},
)
assert [job.group_id for job in first] == [job.group_id for job in second]
assert len(first) == 4
assert len(skipped) == 3
assert first[0].group_id not in {job.group_id for job in skipped}
def test_tiny_distributed_generation_if_ray_present(tmp_path: Path) -> None:
ray = pytest.importorskip("ray")
tasks = built_in_toy_tasks()[:1]
config = DistributedCILConfig(
backend="toy",
output_dir=tmp_path,
num_workers=1,
num_states_per_task=1,
k=2,
seed=3,
shard_size=10,
)
try:
summary = run_distributed_cil_generation(config, tasks)
finally:
if ray.is_initialized():
ray.shutdown()
assert summary.num_groups == 1
assert summary.num_records == 2
assert (tmp_path / "manifest.json").exists()
assert (tmp_path / "distributed_manifest.json").exists()
assert (tmp_path / "group_index.jsonl").exists()