Upload hpo_train_shim.py with huggingface_hub
Browse files- hpo_train_shim.py +6 -4
hpo_train_shim.py
CHANGED
|
@@ -45,12 +45,14 @@ from lerobot.datasets import EpisodeAwareSampler as _RealSampler
|
|
| 45 |
# -> random segfaults mid-training. This is NOT a resource problem; more RAM or
|
| 46 |
# a bigger GPU does not help.
|
| 47 |
#
|
| 48 |
-
#
|
| 49 |
-
#
|
| 50 |
-
#
|
|
|
|
|
|
|
| 51 |
# ---------------------------------------------------------------------------
|
| 52 |
|
| 53 |
-
_MP_CONTEXT = os.environ.get("HPO_MP_CONTEXT", "
|
| 54 |
|
| 55 |
_RealDataLoader = torch.utils.data.DataLoader
|
| 56 |
|
|
|
|
| 45 |
# -> random segfaults mid-training. This is NOT a resource problem; more RAM or
|
| 46 |
# a bigger GPU does not help.
|
| 47 |
#
|
| 48 |
+
# `spawn` starts each worker as a fresh interpreter that inherits nothing, so the
|
| 49 |
+
# threaded PyAV state never reaches it. (`forkserver` is NOT enough: its server
|
| 50 |
+
# process is itself forked from the parent, so if PyAV/FFmpeg is already loaded
|
| 51 |
+
# by then the server inherits the broken state and every worker forked from it
|
| 52 |
+
# does too.) Override with HPO_MP_CONTEXT=forkserver|fork.
|
| 53 |
# ---------------------------------------------------------------------------
|
| 54 |
|
| 55 |
+
_MP_CONTEXT = os.environ.get("HPO_MP_CONTEXT", "spawn")
|
| 56 |
|
| 57 |
_RealDataLoader = torch.utils.data.DataLoader
|
| 58 |
|