Skip to content

Commit 431cfed

Browse files
[Fix] Habitat Refactor & Distributed VLNPE Refactor (#168)
* update vln yaml; fix import agent * update habitat, using evaluator and config; env and agent is WIP * add distributed_base evaluator * Habitat env applied, distributed evaluator applied; clean evaluator and agent created * fix observation issues * update new register name; tiny fix on style * latest tested * delete temp agent; rename default evaluator for habitat * update slurm bash * update readme * fix init dist print * fix eval config; fix local rank to rank * update init distributed mode if condition * update dist for dlc * fix bug in evaluator * update distributed vln multi, episode loader * cma tested * cma tested; episode loader; torchrun; local agent tested; TODO fix isaac sim gpu setting * add vlnpe distributed script * add grscene; add new result write and resumble load data feature based on lmdb path + rank; remove TODOs and unused files * fix bugs in evaluator and dataset for distributed; n1 and rdp tested * fix comm log concurrency issue, create file with exist true * fix progress log mkdir race condition * fix comments * polish existing configs and bash * update bash align with doc * fix CI test * rename habitat_extensions * fix comments * remove useless line * [file] Update 3D Printing Files for Camera of Unitree Go2 (#176) * [file] Update 3d printing files for camera of Unitree Go2. * [Doc] Update readme for 3d printing models. * fix visualize image size; fix unused comment code; fixed evaluator name * bump to version v0.0.2 * update vlnmulti to VLN; update habitatVln to HabitatVLN * :Revert "Merge branch 'main' into vlnpe_refactor" This reverts commit 7a23b72, reversing changes made to ea73075. --------- Co-authored-by: Yuqiang Yang <[email protected]>
1 parent 1f9fc7d commit 431cfed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2917
-3224
lines changed

internnav/agent/internvla_n1_agent.py

Lines changed: 130 additions & 91 deletions
Large diffs are not rendered by default.

internnav/configs/agent/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
class AgentCfg(BaseModel):
77
server_host: str = 'localhost'
8-
server_port: int = 5000
8+
server_port: int = 8087
99
model_name: str
10-
ckpt_path: str
10+
ckpt_path: str = None
1111
model_settings: Dict[str, Any]
1212

1313

internnav/configs/evaluator/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ class EvalCfg(BaseModel):
5959
eval_type: Optional[str] = None
6060
eval_settings: Optional[Dict[str, Any]] = {}
6161
agent: Optional[AgentCfg] = None
62-
env: EnvCfg
63-
task: TaskCfg
64-
dataset: EvalDatasetCfg
62+
env: EnvCfg = None
63+
task: TaskCfg = None
64+
dataset: EvalDatasetCfg = None
6565

6666

6767
__all__ = [

internnav/env/internutopia_env.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
import os
2+
import sys
13
from typing import Any, Dict, List
24

35
from internnav.configs.evaluator import EnvCfg, TaskCfg
46
from internnav.env import base
7+
from internnav.env.utils.episode_loader import (
8+
ResumablePathKeyEpisodeloader,
9+
generate_vln_episode,
10+
)
511

612

713
@base.Env.register('internutopia')
@@ -22,6 +28,23 @@ def __init__(self, env_config: EnvCfg, task_config: TaskCfg):
2228
super().__init__(env_config, task_config)
2329
env_settings = self.env_config.env_settings
2430
task_settings = self.task_config.task_settings
31+
32+
# generate episodes
33+
self.episode_loader = ResumablePathKeyEpisodeloader(
34+
env_settings['dataset'].dataset_type,
35+
**env_settings['dataset'].dataset_settings,
36+
rank=env_settings['rank'],
37+
world_size=env_settings['world_size']
38+
)
39+
self.episodes = generate_vln_episode(self.episode_loader, task_config)
40+
if len(self.episodes) == 0:
41+
print("No episodes found for the given configuration.")
42+
sys.exit(0)
43+
task_settings.update({'episodes': self.episodes})
44+
45+
# set visible device for isaac sim
46+
os.environ["CUDA_VISIBLE_DEVICES"] = str(env_settings.get('local_rank', 0))
47+
2548
config = Config(
2649
simulator=SimConfig(**env_settings),
2750
env_num=task_settings['env_num'],
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from .generate_episode import generate_vln_episode
2+
from .resumable import ResumablePathKeyEpisodeloader

internnav/projects/dataloader/base.py renamed to internnav/env/utils/episode_loader/base.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
from internnav.evaluator.utils.common import load_data
1+
from .dataset_utils import load_data, revise_one_data, skip_list
22

3-
from .data_reviser import revise_one_data, skip_list
43

5-
6-
class BasePathKeyDataloader:
4+
class BasePathKeyEpisodeloader:
75
def __init__(
86
self,
97
dataset_type,
@@ -13,7 +11,15 @@ def __init__(
1311
filter_same_trajectory,
1412
revise_data=True,
1513
filter_stairs=True,
14+
rank=0,
15+
world_size=1,
1616
):
17+
# current supported dataset types in InternUtopia
18+
# only kujiale has special scene path
19+
# others type should be considered the same as mp3d in loading
20+
allowed = ('R2RVLN', 'mp3d', 'kujiale', 'grscene')
21+
assert dataset_type in allowed, f"Unsupported dataset type: {dataset_type}. Allowed: {allowed}"
22+
1723
self.path_key_data = {}
1824
self.path_key_scan = {}
1925
self.path_key_split = {}
@@ -25,14 +31,19 @@ def __init__(
2531
filter_same_trajectory=filter_same_trajectory,
2632
filter_stairs=filter_stairs,
2733
dataset_type=dataset_type,
34+
rank=rank,
35+
world_size=world_size,
2836
)
2937
for scan, path_list in load_data_map.items():
3038
for path in path_list:
3139
trajectory_id = path['trajectory_id']
32-
if revise_data:
40+
41+
# tiny revision for R2R dataset in MP3D to fit vlnpe task
42+
if dataset_type == 'mp3d' and revise_data:
3343
if trajectory_id in skip_list:
3444
continue
3545
path = revise_one_data(path)
46+
3647
episode_id = path['episode_id']
3748
path_key = f'{trajectory_id}_{episode_id}'
3849
path['start_position'] += robot_offset

0 commit comments

Comments
 (0)