in launcher/nemo/stages.py [0:0]
def _make_container_mounts_string(self) -> str:
"""
Make container mounting string based on hydra configurations
:return: container mounting string, e.g. "/path/to/A:/path/to/A,/path/to/B:/path/to/B,..."
:rtype: str
"""
def add_container_mounts(container_mounts):
mounts_str = ""
if container_mounts is not None:
assert isinstance(container_mounts, omegaconf.listconfig.ListConfig), "container_mounts must be a list."
for mount in container_mounts:
if mount is not None and isinstance(mount, str):
mounts_str += f",{mount}" if ":" in mount else f",{mount}:{mount}"
return mounts_str
cfg = self.cfg
base_results_dir = cfg.get("base_results_dir")
mounts_string = (
f"{self._launcher_scripts_path}:{self._launcher_scripts_path},{base_results_dir}:{base_results_dir}"
)
# mount volume only if inside a Hyperpod environment
hp_logs_dir = "/var/log/aws/clusters"
if Path(hp_logs_dir).is_dir():
mounts_string += f",{hp_logs_dir}:{hp_logs_dir}"
"""Start of SM change"""
container_mounts = cfg.cluster.get("container_mounts")
"""End of SM change"""
mounts_string += add_container_mounts(container_mounts)
# https://github.com/NVIDIA/NeMo-Framework-Launcher/blob/23.11/launcher_scripts/nemo_launcher/core/stages.py#L264
# We do not have data dir for custom launching
mounts_string = mounts_string.replace(",None:None", "")
if self._use_local_repo():
mounts_string += f",{self.cfg.git.repo_url_or_path}:{self.cfg.git.repo_url_or_path}"
return mounts_string