EmergentTwilight's picture
download
raw
2 kB
import os
from pathlib import Path
import subprocess
import sys
REPO_ROOT = Path(__file__).resolve().parents[1]
def test_paper_launcher_exports_repo_root_for_training_imports(tmp_path: Path) -> None:
"""torchrun must see top-level ``data`` and ``modeling`` packages."""
bin_dir = tmp_path / "bin"
bin_dir.mkdir()
torchrun = bin_dir / "torchrun"
torchrun.write_text(
f"#!{sys.executable}\n"
"import os\n"
"import sys\n"
"from pathlib import Path\n"
"source_root = Path(os.environ['EXPECTED_SOURCE_ROOT']).resolve()\n"
"assert source_root in [Path(item).resolve() for item in sys.path if item]\n"
"assert os.environ['PYTORCH_CUDA_ALLOC_CONF'] == "
"'expandable_segments:True'\n"
"prefetch_index = sys.argv.index('--backward_prefetch')\n"
"assert sys.argv[prefetch_index + 1] == "
"os.environ['EXPECTED_BACKWARD_PREFETCH']\n"
"assert Path(os.environ['WANDB_DIR']).resolve() == "
"Path(os.environ['OUTPUT_DIR'], 'logs').resolve()\n"
"assert Path(os.environ['WANDB_DIR']).is_dir()\n",
encoding="utf-8",
)
torchrun.chmod(0o755)
empty_pythonpath = tmp_path / "empty-pythonpath"
empty_pythonpath.mkdir()
env = os.environ.copy()
env.pop("PYTORCH_CUDA_ALLOC_CONF", None)
env.update(
{
"BACKWARD_PREFETCH": "BACKWARD_POST",
"EXPECTED_BACKWARD_PREFETCH": "BACKWARD_POST",
"OUTPUT_DIR": str(tmp_path / "output"),
"EXPECTED_SOURCE_ROOT": str(REPO_ROOT),
"PATH": f"{bin_dir}{os.pathsep}{env['PATH']}",
"PYTHONPATH": str(empty_pythonpath),
"STOP_AFTER_STEPS": "1",
}
)
result = subprocess.run(
["bash", str(REPO_ROOT / "scripts/train_thinkmorph_paper_4gpu.sh")],
cwd=tmp_path,
env=env,
capture_output=True,
text=True,
timeout=30,
)
assert result.returncode == 0, result.stderr

Xet Storage Details

Size:
2 kB
·
Xet hash:
43eebb9e957dcc293ddd3428f5a85b1e9cbc116c970788639b1138c18396762f

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