Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion nemo_rl/distributed/worker_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@
)
from nemo_rl.distributed.virtual_cluster import RayVirtualCluster
from nemo_rl.distributed.worker_group_utils import recursive_merge_options
from nemo_rl.utils.venvs import create_local_venv_on_each_node
from nemo_rl.utils.venvs import (
create_local_venv_on_each_node,
patch_transformers_module_dir,
)


@dataclass
Expand Down Expand Up @@ -529,6 +532,7 @@ def _create_workers_from_bundle_indices(
}
runtime_env["env_vars"]["VIRTUAL_ENV"] = py_executable
runtime_env["env_vars"]["UV_PROJECT_ENVIRONMENT"] = py_executable
patch_transformers_module_dir(runtime_env["env_vars"])

Comment thread
terrykong marked this conversation as resolved.
extra_options = {"runtime_env": runtime_env, "name": name}

Expand Down
15 changes: 15 additions & 0 deletions nemo_rl/utils/venvs.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,3 +187,18 @@ def create_local_venv_on_each_node(py_executable: str, venv_name: str):
ray.util.remove_placement_group(pg)
# Return mapping from node IP to venv python path
return paths[0]


# Need to set PYTHONPATH to include transformers downloaded modules.
# Assuming the cache directory is the same cross venvs.
def patch_transformers_module_dir(env_vars: dict[str, str]):
Comment thread
joyang-nv marked this conversation as resolved.
from transformers.utils.hub import TRANSFORMERS_CACHE

module_dir = os.path.join(TRANSFORMERS_CACHE, "..", "modules")
assert module_dir is not None, "TRANSFORMERS_CACHE should exist."
if "PYTHONPATH" not in env_vars:
env_vars["PYTHONPATH"] = module_dir
else:
env_vars["PYTHONPATH"] = f"{module_dir}:{env_vars['PYTHONPATH']}"

return env_vars