Git Product home page Git Product logo

alfworld's Introduction

ALFWorld

Aligning Text and Embodied Environments for Interactive Learning Mohit Shridhar, Xingdi (Eric) Yuan, Marc-Alexandre Côté, Yonatan Bisk, Adam Trischler, Matthew Hausknecht ICLR 2021

ALFWorld contains interactive TextWorld environments (Côté et. al) that parallel embodied worlds in the ALFRED dataset (Shridhar et. al). The aligned environments allow agents to reason and learn high-level policies in an abstract space before solving embodied tasks through low-level actuation.

For the latest updates, see: alfworld.github.io

Quickstart

Install with pip (python3.9+):

pip install alfworld[full]

Download PDDL & Game files and pre-trained MaskRCNN detector:

export ALFWORLD_DATA=<storage_path>
alfworld-download

Use --extra to download pre-trained checkpoints and seq2seq data.

Play a Textworld game:

alfworld-play-tw

Play an Embodied-World (THOR) game:

alfworld-play-thor

Get started with a random agent:

import numpy as np
import alfworld.agents.environment as environment
import alfworld.agents.modules.generic as generic

# load config
config = generic.load_config()
env_type = config['env']['type'] # 'AlfredTWEnv' or 'AlfredThorEnv' or 'AlfredHybrid'

# setup environment
env = getattr(environment, env_type)(config, train_eval='train')
env = env.init_env(batch_size=1)

# interact
obs, info = env.reset()
while True:
    # get random actions from admissible 'valid' commands (not available for AlfredThorEnv)
    admissible_commands = list(info['admissible_commands']) # note: BUTLER generates commands word-by-word without using admissible_commands
    random_actions = [np.random.choice(admissible_commands[0])]

    # step
    obs, scores, dones, infos = env.step(random_actions)
    print("Action: {}, Obs: {}".format(random_actions[0], obs[0]))

Run python <script>.py configs/base_config.yaml

Install Source

Installing from source is recommended for development.

Clone repo:

git clone https://github.com/alfworld/alfworld.git alfworld
cd alfworld

Install requirements:

# Note: Requires python 3.9 or higher
virtualenv -p $(which python3.9) --system-site-packages alfworld_env # or whichever package manager you prefer
source alfworld_env/bin/activate

pip install -e .[full]

Download PDDL & Game Files and pre-trained MaskRCNN detector:

export ALFWORLD_DATA=<storage_path>
python scripts/alfworld-download

Use --extra to download pre-trained checkpoints and seq2seq data.

Train models:

python scripts/train_dagger.py configs/base_config.yaml

Play around with TextWorld and THOR demos.

More Info

  • Data: PDDL, Game Files, Pre-trained Agents. Generating PDDL states and detection training images.
  • Agents: Training and evaluating TextDAgger, TextDQN, VisionDAgger agents.
  • Explore: Play around with ALFWorld TextWorld and THOR environments.

Prerequisites

  • Python 3.9+
  • PyTorch 1.2.0 (later versions might be ok)
  • Torchvision 0.4.0 (later versions might be ok)
  • AI2THOR 2.1.0

See requirements.txt for the prerequisites to run ALFWorld. See requirements-full.txt for the prerequisites to run experiments.

Hardware

Tested on:

  • GPU - GTX 1080 Ti (12GB)
  • CPU - Intel Xeon (Quad Core)
  • RAM - 16GB
  • OS - Ubuntu 16.04

Docker Setup

Pull vzhong's image: https://hub.docker.com/r/vzhong/alfworld

OR

Install Docker and NVIDIA Docker.

Modify docker_build.py and docker_run.py to your needs.

Build

Build the image:

python docker/docker_build.py

Run (Local)

For local machines:

python docker/docker_run.py

source ~/alfworld_env/bin/activate
cd ~/alfworld

Run (Headless)

For headless VMs and Cloud-Instances:

python docker/docker_run.py --headless

# inside docker
tmux new -s startx  # start a new tmux session

# start nvidia-xconfig
sudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024

# start X server on DISPLAY 0
# single X server should be sufficient for multiple instances of THOR
sudo python ~/alfworld/docker/startx.py 0  # if this throws errors e.g "(EE) Server terminated with error (1)" or "(EE) already running ..." try a display > 0

# detach from tmux shell
# Ctrl+b then d

# source env
source ~/alfworld_env/bin/activate

# set DISPLAY variable to match X server
export DISPLAY=:0

# check THOR
python ~/alfworld/docker/check_thor.py

###############
## (300, 300, 3)
## Everything works!!!

You might have to modify X_DISPLAY in gen/constants.py depending on which display you use.

Cloud Instance

ALFWorld can be setup on headless machines like AWS or GoogleCloud instances. The main requirement is that you have access to a GPU machine that supports OpenGL rendering. Run startx.py in a tmux shell:

# start tmux session
tmux new -s startx

# start X server on DISPLAY 0
# single X server should be sufficient for multiple instances of THOR
sudo python ~/alfworld/scripts/startx.py 0  # if this throws errors e.g "(EE) Server terminated with error (1)" or "(EE) already running ..." try a display > 0

# detach from tmux shell
# Ctrl+b then d

# set DISPLAY variable to match X server
export DISPLAY=:0

# check THOR
python ~/alfworld/docker/check_thor.py

###############
## (300, 300, 3)
## Everything works!!!

You might have to modify X_DISPLAY in gen/constants.py depending on which display you use.

Also, checkout this guide: Setting up THOR on Google Cloud

Change Log

18/12/2020:

  • PIP package version available. The repo was refactored.

Citations

ALFWorld

@inproceedings{ALFWorld20,
  title ={{ALFWorld: Aligning Text and Embodied
           Environments for Interactive Learning}},
  author={Mohit Shridhar and Xingdi Yuan and
          Marc-Alexandre C\^ot\'e and Yonatan Bisk and
          Adam Trischler and Matthew Hausknecht},
  booktitle = {Proceedings of the International Conference on Learning Representations (ICLR)},
  year = {2021},
  url = {https://arxiv.org/abs/2010.03768}
}

ALFRED

@inproceedings{ALFRED20,
  title ={{ALFRED: A Benchmark for Interpreting Grounded
           Instructions for Everyday Tasks}},
  author={Mohit Shridhar and Jesse Thomason and Daniel Gordon and Yonatan Bisk and
          Winson Han and Roozbeh Mottaghi and Luke Zettlemoyer and Dieter Fox},
  booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  year = {2020},
  url  = {https://arxiv.org/abs/1912.01734}
}

TextWorld

@inproceedings{cote2018textworld,
  title={Textworld: A learning environment for text-based games},
  author={C{\^o}t{\'e}, Marc-Alexandre and K{\'a}d{\'a}r, {\'A}kos and Yuan, Xingdi and Kybartas, Ben and Barnes, Tavian and Fine, Emery and Moore, James and Hausknecht, Matthew and El Asri, Layla and Adada, Mahmoud and others},
  booktitle={Workshop on Computer Games},
  pages={41--75},
  year={2018},
  organization={Springer}
}

License

  • ALFWorld - MIT License
  • TextWorld - MIT License
  • Fast Downward - GNU General Public License (GPL) v3.0

Contact

Questions or issues? File an issue or contact Mohit Shridhar

alfworld's People

Contributors

marccote avatar mohitshridhar avatar xingdi-eric-yuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

alfworld's Issues

Inquiry about the pre-trained Mask R-CNN checkpoints

Hi,
Thanks for your interesting work and the release of the source codes!

I'm trying to use the pre-trained Mask R-CNN checkpoints you've published via Google Drive,
but based on what I've examined, it seems that the checkpoint mrcnn_alfred_receptacles_004.pth is associated with 73 classes like mrcnn_alfred_objects_sep13_004.pth, whereas constants.STATIC_RECEPTACLES contains 32 classes:

image

I'm getting an error if I call load_state_dict() of the Mask R-CNN model created with len(constants.STATIC_RECEPTACLES) + 1 as an argument.
Would there be any possibility that the checkpoint mrcnn_alfred_receptacles_004.pth is in fact for constants.OBJECTS_DETECTOR rather than constants.STATIC_RECEPTACLES?

I would really appreciate it if you could help me with this issue.
Thank you!

ERROR: Could not find a version that satisfies the requirement torch==1.2.0

ERROR: Could not find a version that satisfies the requirement torch==1.2.0 (from alfworld) (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2, 1.4.0, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.8.1)
ERROR: No matching distribution found for torch==1.2.0 (from alfworld)

Need to add -f https://download.pytorch.org/whl/torch_stable.html

Stuck at Get started with a random agent

Hi, thanks for this great work. I was trying to run the provided quick start script:

import numpy as np
import alfworld.agents.environment as environment
import alfworld.agents.modules.generic as generic

# load config
config = generic.load_config()
env_type = config['env']['type'] # 'AlfredTWEnv' or 'AlfredThorEnv' or 'AlfredHybrid'

# setup environment
env = getattr(environment, env_type)(config, train_eval='train')
env = env.init_env(batch_size=1)

# interact
obs, info = env.reset()
while True:
    # get random actions from admissible 'valid' commands (not available for AlfredThorEnv)
    admissible_commands = list(info['admissible_commands']) # note: BUTLER generates commands word-by-word without using admissible_commands
    random_actions = [np.random.choice(admissible_commands[0])]

    # step
    obs, scores, dones, infos = env.step(random_actions)
    print("Action: {}, Obs: {}".format(random_actions[0], obs[0]))

But was stuck at with the following output:

Initializing AlfredTWEnv...
Checking for solvable games...

Any idea why?

QAs

Thanks for this work again. I have a couple of questions when digesting the code and paper.

  1. What is CQAttention network (agents/modules/layers.py) that is used to aggregate input information? Can you point me to the paper?

  2. To replicate the BUTLER::BRAIN experiment results, should I just run python dagger/train_dagger.py config/base_config.yaml, i.e., using the default seq2seq action generator?

Thanks for your time.

How to visualize the game

Thanks for your great work!
I wonder if there are some methods to visualize the game and produce a video like your awesome demo in the project page. Thanks!

Stuck at Quickstart when “pip install -e .[full]"

Hi, thank you for your great work.
I was trying to install with pip using pip install -e .[full] when it was stuck.

Checking if build backend supports build_editable ... done
Building wheels for collected packages: textworld
    Building wheel for textworld (setup.py) ...  |

After several hours, the installation failed. The output is:

       31 22.1M   31 7078k    0     0   1951      0  3:18:50  1:01:53  2:16:57     0
       31 22.1M   31 7078k    0     0   1951      0  3:18:50  1:01:54  2:16:56     0
       31 22.1M   31 7078k    0     0   1950      0  3:18:56  1:01:55  2:17:01     0
       31 22.1M   31 7078k    0     0   1950      0  3:18:56  1:01:56  2:17:00     0
       31 22.1M   31 7078k    0     0   1949      0  3:19:02  1:01:57  2:17:05     0
      curl: (56) Recv failure: Connection timed out
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-req-build-kh7vysp_/setup.py", line 41, in <module>
          setup(
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/dist.py", line 989, in run_command
          super().run_command(command)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/wheel/bdist_wheel.py", line 364, in run
          self.run_command("build")
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/dist.py", line 989, in run_command
          super().run_command(command)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/command/build.py", line 131, in run
          self.run_command(cmd_name)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/dist.py", line 989, in run_command
          super().run_command(command)
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-req-build-kh7vysp_/setup.py", line 37, in run
          _pre_install(None)
        File "/tmp/pip-req-build-kh7vysp_/setup.py", line 18, in _pre_install
          check_call(['./setup.sh'], shell=True, cwd=os.getcwd())
        File "/media/hdd/sxl/miniconda3/envs/alfworld-py3.10/lib/python3.10/subprocess.py", line 369, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['./setup.sh']' returned non-zero exit status 56.
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for textworld
  Running setup.py clean for textworld
Failed to build textworld
ERROR: Could not build wheels for textworld, which is required to install pyproject.toml-based projects

Do you have any idea why?

render a topdown view in another window

Hi, I am wondering how I can open a popup window of topdown view in alfworld? I know a newer version of ai2thor(like 3.0) supported this feature. Since you keep version 2.1 for such a long time, do you have any plans to upgrade ai2thor? Thx.

Stack to "Resetting ThorEnv" when running quickstart with Random Agent for env type "AlfredThorEnv"

Hey! This is a great work, thanks so much for making it available!

I have successfully run the quickstart-with-random-agent code snippet:

import numpy as np
import alfworld.agents.environment as environment
import alfworld.agents.modules.generic as generic

# load config
config = generic.load_config()
env_type = config['env']['type'] # 'AlfredTWEnv' or 'AlfredThorEnv' or 'AlfredHybrid'

# setup environment
env = getattr(environment, env_type)(config, train_eval='train')
env = env.init_env(batch_size=1)

# interact
obs, info = env.reset()
while True:
    # get random actions from admissible 'valid' commands (not available for AlfredThorEnv)
    admissible_commands = list(info['admissible_commands']) # note: BUTLER generates commands word-by-word without using admissible_commands
    random_actions = [np.random.choice(admissible_commands[0])]

    # step
    obs, scores, dones, infos = env.step(random_actions)
    print("Action: {}, Obs: {}".format(random_actions[0], obs[0]))

for the AlfredTWEnv environment type option. When I'm attempting to do it for the AlfredThorEnv, the env is initialized propertly, the Unity engine begins and I can see a frame of the environment, but then it gets stuck at the obs, info = env.reset() line. I can see the "Resetting ThorEnv" message in the console, but then the script hangs there.

This is my console output:

Initialize AlfredThorEnv...
Overall we have 4639 games...
Training with 4639 games
Overall we have 4639 games...
Training with 4639 games
Found path: /home/ggtz/.ai2thor/releases/thor-201909061227-Linux64/thor-201909061227-Linux64
Mono path[0] = '/home/ggtz/.ai2thor/releases/thor-201909061227-Linux64/thor-201909061227-Linux64_Data/Managed'
Mono config path = '/home/ggtz/.ai2thor/releases/thor-201909061227-Linux64/thor-201909061227-Linux64_Data/Mono/etc'
Preloaded 'ScreenSelector.so'
Display 0 '0': 1920x1080 (primary device).
Logging to /home/ggtz/.config/unity3d/Allen Institute for Artificial Intelligence/AI2-Thor/Player.log
ThorEnv started.
Resetting ThorEnv

Do you maybe have any idea why?

Controller: dealing with multiple instances of the same object

Hi,

Another week another issue 😅

In the Alfworld environment, multiple instances of the same object are assigned different IDs. However, I'm wondering how we could do this identification in Alfred and have it be consistent with Alfworld?

It looks like this would be a necessary step if we were to train a Controller module mapping high-level actions in Alfworld to sequences of low-level actions in Alfred. If I'm not mistaken, Alfred currently uses metadata relative to the location of the target object but the discrete action does not specify which instance the agent should go to.

Do you have any recommendations or pointers to the codebase in order to solve this issue?

Can't reduce repo size with BFG cleaner

@MarcCote, I tried out reducing the repo size with BFG cleaner. But I couldn't push the changes:

To https://github.com/alfworld/alfworld.git
 ! [remote rejected] refs/pull/7/head -> refs/pull/7/head (deny updating a hidden ref)
 ! [remote rejected] refs/pull/7/merge -> refs/pull/7/merge (deny updating a hidden ref)

From this, it looks like there is no easy way to resolve this. Do you have any other suggestions? Or should we leave it as is.

How to use alfworld for later version of torchvision and python?

I can install alfworld in python3.6 and torchvision 0.4.0, but for most of the current projects, these versions are out of date.
When I use python3.9 and torch 0.14.0, it reports: "pkg_resources.DistributionNotFound: The 'torchvision==0.4.0' distribution was not found and is required by alfworld" .

Could you please help me how to fix it problem? Thanks.

Success Condition(s): done[0] is not equal to info["won"][0]

In running various evaluations, it happened that the agent would receive a done==True signal, however, info["won"][0]==False.

Looking at the traces the agent was not successful.

This raises the question of what and how to check for success conditions properly, as many works use done==True to check for success.

Please elaborate. Thank you @MarcCote @MohitShridhar


On a related note:
Our code does not seem to explicitly pass config parameters into the environment, however, done==True was returned after 50 steps, the "Alfworld" code indicates max_steps=2000, however.

Object classes of Pre-trained Mask R-CNN

Hi, thanks for your amazing work.
I have some questions about the pre-trained detector. In the supplementary material, the object categories is 105.

image

However, the pretrained mask r-cnn detector detect only 73 classes. I have checked the constants.py and guess the 73 classes belongs to OBJECTS_DETECTOR, the leaved 32 classes is STATIC_RECEPTACLES.

I am wondering would you provide the pre-trained detector with ALL 105 object classes ?
Thanks.

alfred2textworld

Hi ALFWorld authors,

Is this file used to convert an Alfred game to a textworld game? If so, how to use this script? Can you give a simple example?

Thank you so much!

ERROR: Packages installed from PyPI cannot depend on packages which are not also hosted on PyPI.

Hi, when I use the command pip install alfworld, it shows that:

 ERROR: Packages installed from PyPI cannot depend on packages which are not also hosted on PyPI. 
 alfworld depends on fast-downward@ https://github.com/MarcCote/downward/archive/faster_replan.zip

I have tried the following method:

First, I manually install fast-downward, and I check this by conda list and see that this has been installed (but the channel is pypi, may be this is the problem).

Second, I install alfworld by ignoring the installed dependency pip install alfworld --ignore-installed fast-downward.

But this still cannot install alfworld, and still gives the same error message.

Could you please give some comments on this?

[Installation Issues] - on arm-based Mac

A bit of Context:

There were installation issues for the underlying Textworld for the arm based Mac, however, these are now resolved. (microsoft/TextWorld#310) I.e. one can now install Textworld just using pip on mac.

Installing on an arm based Mac is still an issue for Alfworld, however, as the first two steps of the Readme "reinstall" textworld the "old" way (before the issue was fixed on Textworld):

$ pip install https://github.com/MarcCote/downward/archive/faster_replan.zip
$ pip install https://github.com/MarcCote/TextWorld/archive/handcoded_expert_integration.zip

Concretely, the installation of Textworld (using the old way that happens automatically when installing these zip files) fails during installation at the Inform7 step:

      + tar xf I7_6M62_Linux_all.tar.gz
      + echo 'Installing Inform7 CLI'
      + cd inform7-6M62/
      + ./install-inform7.sh --prefix /private/var/folders/y4/c4phbshn5739xq523fgf_cl40000gn/T/pip-req-build-5u1gl9ar/textworld/thirdparty/inform7-6M62
      You should have the executable compilers for the arm64 architecture.
      Giving up!

As it did for Textworld, because there is no arm-compatible version of Inform7 (at the installation source: http://emshort.com/inform-app-archive/6M62/I7-6M62-OSX-Interim.dmg


What could solve the problem:

  1. @MarcCote please tell us how we can compile faster_replan & handcoded_expert_integration from scratch (as it is not clear where these archives come from - or where the source of these is).
  2. Building new versions of faster_replan & handcorded_expert_integration that supports the arm based Mac (perhaps by releasing a new version that links to the latest textworld?)
  3. Open to other ideas...

@MarcCote let us know how we can help, thanks a lot in advance.

Super slow running speed of the environment

Hi ALFWorld authors,

I found that the running speed of ALFWorld environment is super slow. Specifically, I ran AlfredTWEnv with a script adapted from the example provided in README. I guess AlfredTWEnv should be the fastest one since it does not involve rendering. However, the fps I got is around 10~15, which is super slow. Is that normal?

I attached my test script below.

import time
import numpy as np
from alfworld.agents.environment import AlfredTWEnv

def load_basic_config():
    import yaml
    cfg_path = 'alfworld/configs/base_config.yaml'
    with open(cfg_path) as reader:
        config = yaml.safe_load(reader)
    return config


def test_fps():
    config = load_basic_config()

    # setup environment
    env = AlfredTWEnv(config, train_eval='train')
    env = env.init_env(batch_size=1)

    n = 300
    obs, info = env.reset()

    st = time.time()
    for _ in range(n):
        # get random actions from admissible 'valid' commands (not available for AlfredThorEnv)
        admissible_commands = list(info['admissible_commands']) # note: BUTLER generates commands word-by-word without using admissible_commands
        random_actions = [np.random.choice(admissible_commands[0])]

        # step
        obs, scores, dones, infos = env.step(random_actions)
        # print("Action: {}, Obs: {}".format(random_actions[0], obs[0]))
        if dones[0]:
            obs, info = env.reset()
            print('done')

    env.close()

    dur = time.time() - st
    print('Dur: {:.2f}'.format(dur))
    print('FPS: {:.2f}'.format(n / dur))

if __name__ == '__main__':
    test_fps()

KeyError: 'val1' in Atom when initializing (most) levels

Hi, thanks for the great work!

Getting an error (occurs most, but not all of the time; seems level-dependent) when setting up alfworld according to instructions and running alfworld-play-tw:

Playing '/home/muj/.cache/alfworld/json_2.1.1/train/pick_and_place_with_movable_recep-Pen-Mug-Shelf-303/trial_T20190908_141515_537433'.
Traceback (most recent call last):
  File "/data/muj/miniconda3/envs/alfworld/bin/alfworld-play-tw", line 7, in <module>
    exec(compile(f.read(), __file__, 'exec'))
  File "/data2/muj/alfworld/scripts/alfworld-play-tw", line 100, in <module>
    main(args)
  File "/data2/muj/alfworld/scripts/alfworld-play-tw", line 59, in main
    obs, infos = env.reset()
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/gym/envs/textworld.py", line 62, in reset
    obs, infos = super().reset()
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/gym/envs/textworld_batch.py", line 132, in reset
    self.batch_env.load(gamefiles)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/envs/batch/batch_env.py", line 209, in load
    env.load(game_file)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/core.py", line 317, in load
    return self._wrapped_env.load(path)
  File "/data2/muj/alfworld/scripts/alfworld-play-tw", line 25, in load
    super().load(*args, **kwargs)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/core.py", line 317, in load
    return self._wrapped_env.load(path)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/core.py", line 317, in load
    return self._wrapped_env.load(path)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/envs/wrappers/generic.py", line 22, in load
    self._wrap(textworld.start(gamefile, self.infos))
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/helpers.py", line 53, in start
    env.load(path)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/envs/pddl.py", line 54, in load
    self._state = State(self.downward_lib, data["pddl_problem"], self._logic)
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/logic/pddl_logic.py", line 234, in __init__
    facts = [atom.get_fact(self.name2type) for atom in atoms]
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/logic/pddl_logic.py", line 234, in <listcomp>
    facts = [atom.get_fact(self.name2type) for atom in atoms]
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/logic/pddl_logic.py", line 123, in get_fact
    arguments = [Variable(get_var_name(arg), name2type[arg]) for arg in args if arg]
  File "/data/muj/miniconda3/envs/alfworld/lib/python3.9/site-packages/textworld/logic/pddl_logic.py", line 123, in <listcomp>
    arguments = [Variable(get_var_name(arg), name2type[arg]) for arg in args if arg]
KeyError: 'val1'

it seems like in the Atom class, self.name is Atom dummy(val1), which is then parsed into args, and there is no val1 argument in the name2type dict.

Any idea what's going on here?

Runtime errors of testing scripts

Hi, thanks for this work.

When I ran scripts here https://github.com/alfworld/alfworld/tree/master/scripts, there were some errors.

For TextWorld, it said, TypeError: __init__() got an unexpected keyword argument 'wrappers'. I installed your customized TextWorld https://github.com/MohitShridhar/TextWorld, but it still reported this error.

image

For THOR, it reported Segmentation fault (core dumped). I have no clue how to fix this.

image

Could you give me some clues of them? Thanks for your time.

readme instructions not working

We are trying to use ALFWorld as one of the datasets in our experiments. When I follow your instructions in install source.

I did create a python 3.9 virtualenv.
When I run "pip install -r requirements-full.txt"
I get the following error:

Collecting scipy (from visdom->-r requirements-full.txt (line 11))
Downloading scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl.metadata (60 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.4/60.4 kB 2.3 MB/s eta 0:00:00
Collecting tornado (from visdom->-r requirements-full.txt (line 11))
Using cached tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl.metadata (2.5 kB)
Collecting six (from visdom->-r requirements-full.txt (line 11))
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting jsonpatch (from visdom->-r requirements-full.txt (line 11))
Using cached jsonpatch-1.33-py2.py3-none-any.whl.metadata (3.0 kB)
Collecting websocket-client (from visdom->-r requirements-full.txt (line 11))
Using cached websocket_client-1.7.0-py3-none-any.whl.metadata (7.9 kB)
Collecting fast-downward-textworld (from textworld[pddl]>=1.6.1->-r requirements-full.txt (line 6))
Using cached fast_downward_textworld-20.6.1.tar.gz (627 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [11 lines of output]
Building configuration library.
Executing command "cmake -G Unix Makefiles -DCMAKE_BUILD_TYPE=Library -DDISABLE_PLUGINS_BY_DEFAULT=YES -DPLUGIN_LIBRARY_ENABLED=YES ../../src" in directory "/private/var/folders/br/_vmrb7yx7f7g8s3f82pd78tm0000gp/T/pip-install-fhgbhiwg/fast-downward-textworld_7da6712a0f3d495db8f47f0c098373d7/builds/library".
Could not find 'cmake' on your PATH. For installation instructions, see http://www.fast-downward.org/ObtainingAndRunningFastDownward.
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/private/var/folders/br/_vmrb7yx7f7g8s3f82pd78tm0000gp/T/pip-install-fhgbhiwg/fast-

downward-textworld_7da6712a0f3d495db8f47f0c098373d7/setup.py", line 11, in
subprocess.check_call(['python', 'build.py', '--library'], cwd=BASEPATH)
File "/opt/homebrew/Cellar/[email protected]/3.9.18_2/Frameworks/Python.framework/Versions/3.9/lib/python3.9/subprocess.py", line 373, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['python', 'build.py', '--library']' returned non-zero exit status 1.
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Training Seq2Seq

Hello, I want to replicate the results of Table 2 on your paper - in particular the performances of the Seq2Seq and BUTLER agents. After I have trained the two agents, what scripts should I run to replicate your results?

Thanks in advance!

AssertionError: Invalid DISPLAY :0 - cannot find X server with xdpyinfo

When I run python scripts/alfworld-play-thor, the code reports the following error, what should I do to solve the problem.
Thanks!!!!!!

Playing './json_2.1.1/train/pick_two_obj_and_place-Mug-None-Cabinet-318/trial_T20190910_055356_172564'.
No protocol specified
xdpyinfo:  unable to open display ":0".
Traceback (most recent call last):
  File "scripts/alfworld-play-thor", line 109, in <module>
    main(args)
  File "scripts/alfworld-play-thor", line 43, in main
    env = ThorEnv()
  File "/home/hongbo.wang/miniconda3/envs/alfworld/lib/python3.6/site-packages/alfworld/env/thor_env.py", line 39, in __init__
    player_screen_width=player_screen_width)
  File "/home/hongbo.wang/miniconda3/envs/alfworld/lib/python3.6/site-packages/ai2thor/controller.py", line 855, in start
    self.check_x_display(env['DISPLAY'])
  File "/home/hongbo.wang/miniconda3/envs/alfworld/lib/python3.6/site-packages/ai2thor/controller.py", line 715, in check_x_display
    ("Invalid DISPLAY %s - cannot find X server with xdpyinfo" % x_display)
AssertionError: Invalid DISPLAY :0 - cannot find X server with xdpyinfo

Global image saving

Thanks for the valuable work. By running the script python scripts/run_eval.py config/eval_config.yaml, we can get the frame at different time stamps, while only partial objects can be presented in a certain frame. How can we also save a global view of the environment with all objects presented?

Location placeholder not replaced with its name

Since the first release ALFWorld, whenever the agent navigates to a particular location, the text template uses the location ID rather than its name. For instance,

alfworld-play-tw $ALFWORLD_DATA/json_2.1.1/train/pick_cool_then_place_in_recep-Lettuce-None-DiningTable-27/trial_T20190907_175011_194823

> go to diningtable 1
You arrive at loc 31. On the diningtable 1, you see a bread 1, a butterknife 3, a knife 2, a ladle 3, a lettuce 2, a mug 2....

loc 31 should have been diningtable 1.

I was on fence about fixing it for a while now. I doubt the fix would have any big impact on the existing work that uses ALFWorld as a benchmark but we never know. One motivation for finally fixing this issue is people are starting to come up with their own fix. I have seen people simply skipping that first sentence in their code and not really documenting it.

Another reason to re-releasing the dataset is #1. The games are changed on the fly when instantiating a AlfredTWEnv. This means two experiments could have different "games" depending on the settings used (eg. when goal_desc_human_anns_prob > 0). I think having a static set of environments as a canonical dataset would be better overall than the current implementation.

In any case, we should add versioning for the dataset and highlight the changes on the README.

install alfword[full] Error

hey Authors

i tried many ways to install alfword[full] but still doesn't work 😢

could you help please 👍

Collecting alfworld[full]
Using cached alfworld-0.3.3-py3-none-any.whl (354 kB)
Collecting ai2thor==2.1.0 (from alfworld[full])
Using cached ai2thor-2.1.0-py2.py3-none-any.whl (25 kB)
Collecting opencv-python (from alfworld[full])
Using cached opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl (38.6 MB)
Collecting pandas (from alfworld[full])
Using cached pandas-2.2.1-cp311-cp311-win_amd64.whl (11.6 MB)
Collecting textworld[pddl]>=1.6.1 (from alfworld[full])
Using cached textworld-1.6.1.tar.gz (708 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Collecting torch (from alfworld[full])
Using cached torch-2.2.1-cp311-cp311-win_amd64.whl (198.6 MB)
Collecting torchvision (from alfworld[full])
Using cached torchvision-0.17.1-cp311-cp311-win_amd64.whl (1.2 MB)
Requirement already satisfied: tqdm in c:\users\user\desktop\test-webshop\venv\lib\site-packages (from alfworld[full]) (4.66.2)
Collecting werkzeug==2.0.3 (from alfworld[full])
Using cached Werkzeug-2.0.3-py3-none-any.whl (289 kB)
Collecting h5py; extra == "full" (from alfworld[full])
Using cached h5py-3.10.0-cp311-cp311-win_amd64.whl (2.7 MB)
Collecting pycocotools; extra == "full" (from alfworld[full])
Using cached pycocotools-2.0.7-cp311-cp311-win_amd64.whl (85 kB)
Collecting transformers; extra == "full" (from alfworld[full])
Using cached transformers-4.38.2-py3-none-any.whl (8.5 MB)
Collecting visdom; extra == "full" (from alfworld[full])
Using cached visdom-0.2.4.tar.gz (1.4 MB)
Preparing metadata (setup.py) ... done
Collecting flask (from ai2thor==2.1.0->alfworld[full])
Using cached flask-3.0.2-py3-none-any.whl (101 kB)
Collecting numpy (from ai2thor==2.1.0->alfworld[full])
Using cached numpy-1.26.4-cp311-cp311-win_amd64.whl (15.8 MB)
Collecting pyyaml (from ai2thor==2.1.0->alfworld[full])
Using cached PyYAML-6.0.1-cp311-cp311-win_amd64.whl (144 kB)
Requirement already satisfied: requests in c:\users\user\desktop\test-webshop\venv\lib\site-packages (from ai2thor==2.1.0->alfworld[full]) (2.31.0)
Collecting progressbar2 (from ai2thor==2.1.0->alfworld[full])
Using cached progressbar2-4.4.2-py3-none-any.whl (56 kB)
Requirement already satisfied: python-dateutil>=2.8.2 in c:\users\user\desktop\test-webshop\venv\lib\site-packages (from pandas->alfworld[full]) (2.9.0.post0)
Collecting pytz>=2020.1 (from pandas->alfworld[full])
Using cached pytz-2024.1-py2.py3-none-any.whl (505 kB)
Collecting tzdata>=2022.7 (from pandas->alfworld[full])
Using cached tzdata-2024.1-py2.py3-none-any.whl (345 kB)
Collecting cffi>=1.0.0 (from textworld[pddl]>=1.6.1->alfworld[full])
Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl (181 kB)
Collecting networkx>=2 (from textworld[pddl]>=1.6.1->alfworld[full])
Using cached networkx-3.2.1-py3-none-any.whl (1.6 MB)
Collecting more-itertools (from textworld[pddl]>=1.6.1->alfworld[full])
Using cached more_itertools-10.2.0-py3-none-any.whl (57 kB)
Collecting tatsu>=5.8.3 (from textworld[pddl]>=1.6.1->alfworld[full])
Using cached TatSu-5.11.3-py3-none-any.whl (79 kB)
Collecting hashids>=1.2.0 (from textworld[pddl]>=1.6.1->alfworld[full])
Using cached hashids-1.3.1-py2.py3-none-any.whl (6.6 kB)
Collecting jericho>=3.0.3 (from textworld[pddl]>=1.6.1->alfworld[full])
Using cached jericho-3.1.2.tar.gz (1.3 MB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [12 lines of output]
rm -f src/.h src/.a
process_begin: CreateProcess(NULL, rm -f src/.h src/.a, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [Makefile:449: clean] Error 2
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "C:\Users\user\AppData\Local\Temp\pip-install-w1srbcah\jericho\setup.py", line 26, in
subprocess.check_call(['make', 'clean'], cwd=FROTZPATH)
File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', 'clean']' returned non-zero exit status 2.
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> jericho

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

[notice] A new release of pip is available: 23.2.1 -> 24.0
[notice] To update, run: python.exe -m pip install --upgrade pip

Permission denied in Docker Setup

Hi,
When I run

python docker/docker_build.py

I get this error

Step 14/32 : COPY ./docker/install_deps.sh /tmp/install_deps.sh
 ---> Using cache
 ---> 8e86891f19f0
Step 15/32 : RUN yes "Y" | /tmp/install_deps.sh
 ---> Running in 75a86a4cad1b
/bin/sh: 1: /tmp/install_deps.sh: Permission denied

I have added my user name to the docker group

Errors when running "pip install https://github.com/MarcCote/downward/archive/faster_replan.zip"

I am currently using Macbook Pro 2020. I have ran "pip install https://github.com/MarcCote/downward/archive/faster_replan.zip" with a newly created virtualenv with python version 3.9.1. I have the following packgaes listed after running "pip list":

Package    Version
---------- -------
pip        21.0.1
setuptools 53.0.0
wheel      0.36.2

I have gotten the following error message when running "pip install https://github.com/MarcCote/downward/archive/faster_replan.zip":

Collecting https://github.com/MarcCote/downward/archive/faster_replan.zip
  Using cached https://github.com/MarcCote/downward/archive/faster_replan.zip
    ERROR: Command errored out with exit status 1:
     command: /Users/donglinwang/alfworld/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-req-build-6bz035k3/setup.py'"'"'; __file__='"'"'/private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-req-build-6bz035k3/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-pip-egg-info-2a3tdo7_
         cwd: /private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-req-build-6bz035k3/
    Complete output (158 lines):
    -- The C compiler identification is AppleClang 12.0.0.12000032
    -- The CXX compiler identification is AppleClang 12.0.0.12000032
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /usr/bin/gcc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/g++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Building for 64-bit.
    -- Performing Test CXX11_FOUND
    -- Performing Test CXX11_FOUND - Success
    -- Enabling plugin causal_graph because plugin core_sources is enabled and depends on it.
    -- Enabling plugin int_hash_set because plugin core_sources is enabled and depends on it.
    -- Enabling plugin int_packer because plugin core_sources is enabled and depends on it.
    -- Enabling plugin ordered_set because plugin core_sources is enabled and depends on it.
    -- Enabling plugin segmented_vector because plugin core_sources is enabled and depends on it.
    -- Enabling plugin subscriber because plugin core_sources is enabled and depends on it.
    -- Enabling plugin successor_generator because plugin core_sources is enabled and depends on it.
    -- Enabling plugin task_properties because plugin core_sources is enabled and depends on it.
    -- Enabling plugin plugin_astar because plugin library is enabled and depends on it.
    -- Enabling plugin plugin_lazy_greedy because plugin library is enabled and depends on it.
    -- Enabling plugin eager_search because plugin plugin_astar is enabled and depends on it.
    -- Enabling plugin search_common because plugin plugin_astar is enabled and depends on it.
    -- Enabling plugin lazy_search because plugin plugin_lazy_greedy is enabled and depends on it.
    -- Enabling plugin null_pruning_method because plugin eager_search is enabled and depends on it.
    -- Enabling plugin alternation_open_list because plugin search_common is enabled and depends on it.
    -- Enabling plugin g_evaluator because plugin search_common is enabled and depends on it.
    -- Enabling plugin best_first_open_list because plugin search_common is enabled and depends on it.
    -- Enabling plugin sum_evaluator because plugin search_common is enabled and depends on it.
    -- Enabling plugin tiebreaking_open_list because plugin search_common is enabled and depends on it.
    -- Enabling plugin weighted_evaluator because plugin search_common is enabled and depends on it.
    -- Enabling plugin evaluators_plugin_group because plugin g_evaluator is enabled and depends on it.
    -- Enabling plugin combining_evaluator because plugin sum_evaluator is enabled and depends on it.
    -- Using plugin: core_sources
    -- Using plugin: library
    -- Using plugin: options
    -- Using plugin: utils
    -- Using plugin: alternation_open_list
    -- Using plugin: best_first_open_list
    -- Using plugin: tiebreaking_open_list
    -- Using plugin: int_hash_set
    -- Using plugin: int_packer
    -- Using plugin: ordered_set
    -- Using plugin: segmented_vector
    -- Using plugin: subscriber
    -- Using plugin: evaluators_plugin_group
    -- Using plugin: g_evaluator
    -- Using plugin: combining_evaluator
    -- Using plugin: weighted_evaluator
    -- Using plugin: sum_evaluator
    -- Using plugin: null_pruning_method
    -- Using plugin: search_common
    -- Using plugin: eager_search
    -- Using plugin: plugin_astar
    -- Using plugin: plugin_lazy_greedy
    -- Using plugin: lazy_search
    -- Using plugin: core_tasks
    -- Using plugin: causal_graph
    -- Using plugin: successor_generator
    -- Using plugin: task_properties
    -- Configuring done
    CMake Warning (dev):
      Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
      --help-policy CMP0042" for policy details.  Use the cmake_policy command to
      set the policy and suppress this warning.
    
      MACOSX_RPATH is not specified for the following targets:
    
       downward
    
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    -- Generating done
    -- Build files have been written to: /private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-req-build-6bz035k3/builds/library
    Scanning dependencies of target translate
    Copying translator module into output directory
    [  0%] Built target translate
    Scanning dependencies of target downward
    [  7%] Building CXX object search/CMakeFiles/downward.dir/task_utils/successor_generator.cc.o
    [  7%] Building CXX object search/CMakeFiles/downward.dir/task_utils/causal_graph.cc.o
    [  8%] Building CXX object search/CMakeFiles/downward.dir/task_utils/successor_generator_factory.cc.o
    [  8%] Building CXX object search/CMakeFiles/downward.dir/task_utils/task_properties.cc.o
    [  8%] Building CXX object search/CMakeFiles/downward.dir/task_utils/successor_generator_internals.cc.o
    [ 10%] Building CXX object search/CMakeFiles/downward.dir/tasks/delegating_task.cc.o
    [ 10%] Building CXX object search/CMakeFiles/downward.dir/tasks/root_task.cc.o
    [ 11%] Building CXX object search/CMakeFiles/downward.dir/tasks/cost_adapted_task.cc.o
    [ 12%] Building CXX object search/CMakeFiles/downward.dir/search_engines/lazy_search.cc.o
    [ 14%] Building CXX object search/CMakeFiles/downward.dir/search_engines/plugin_lazy_greedy.cc.o
    [ 15%] Building CXX object search/CMakeFiles/downward.dir/search_engines/plugin_astar.cc.o
    [ 17%] Building CXX object search/CMakeFiles/downward.dir/search_engines/eager_search.cc.o
    [ 18%] Building CXX object search/CMakeFiles/downward.dir/search_engines/search_common.cc.o
    [ 20%] Building CXX object search/CMakeFiles/downward.dir/pruning/null_pruning_method.cc.o
    [ 21%] Building CXX object search/CMakeFiles/downward.dir/evaluators/sum_evaluator.cc.o
    [ 22%] Building CXX object search/CMakeFiles/downward.dir/evaluators/weighted_evaluator.cc.o
    [ 24%] Building CXX object search/CMakeFiles/downward.dir/evaluators/combining_evaluator.cc.o
    [ 25%] Building CXX object search/CMakeFiles/downward.dir/evaluators/g_evaluator.cc.o
    [ 27%] Building CXX object search/CMakeFiles/downward.dir/evaluators/plugin_group.cc.o
    [ 28%] Building CXX object search/CMakeFiles/downward.dir/algorithms/int_packer.cc.o
    [ 30%] Building CXX object search/CMakeFiles/downward.dir/open_lists/tiebreaking_open_list.cc.o
    [ 31%] Building CXX object search/CMakeFiles/downward.dir/open_lists/best_first_open_list.cc.o
    [ 32%] Building CXX object search/CMakeFiles/downward.dir/open_lists/alternation_open_list.cc.o
    [ 34%] Building CXX object search/CMakeFiles/downward.dir/utils/timer.cc.o
    [ 35%] Building CXX object search/CMakeFiles/downward.dir/utils/system_windows.cc.o
    [ 37%] Building CXX object search/CMakeFiles/downward.dir/utils/system_unix.cc.o
    [ 38%] Building CXX object search/CMakeFiles/downward.dir/utils/system.cc.o
    [ 40%] Building CXX object search/CMakeFiles/downward.dir/utils/strings.cc.o
    [ 41%] Building CXX object search/CMakeFiles/downward.dir/utils/rng_options.cc.o
    [ 42%] Building CXX object search/CMakeFiles/downward.dir/utils/rng.cc.o
    [ 44%] Building CXX object search/CMakeFiles/downward.dir/utils/memory.cc.o
    [ 45%] Building CXX object search/CMakeFiles/downward.dir/utils/math.cc.o
    [ 47%] Building CXX object search/CMakeFiles/downward.dir/utils/markup.cc.o
    [ 48%] Building CXX object search/CMakeFiles/downward.dir/utils/logging.cc.o
    [ 50%] Building CXX object search/CMakeFiles/downward.dir/utils/countdown_timer.cc.o
    [ 51%] Building CXX object search/CMakeFiles/downward.dir/options/registries.cc.o
    [ 52%] Building CXX object search/CMakeFiles/downward.dir/options/raw_registry.cc.o
    [ 54%] Building CXX object search/CMakeFiles/downward.dir/options/plugin.cc.o
    [ 55%] Building CXX object search/CMakeFiles/downward.dir/options/options.cc.o
    [ 57%] Building CXX object search/CMakeFiles/downward.dir/options/option_parser.cc.o
    [ 58%] Building CXX object search/CMakeFiles/downward.dir/options/errors.cc.o
    [ 60%] Building CXX object search/CMakeFiles/downward.dir/options/doc_utils.cc.o
    [ 61%] Building CXX object search/CMakeFiles/downward.dir/options/doc_printer.cc.o
    [ 62%] Building CXX object search/CMakeFiles/downward.dir/options/bounds.cc.o
    [ 64%] Building CXX object search/CMakeFiles/downward.dir/interface.cc.o
    [ 65%] Building CXX object search/CMakeFiles/downward.dir/task_proxy.cc.o
    [ 67%] Building CXX object search/CMakeFiles/downward.dir/state_registry.cc.o
    [ 68%] Building CXX object search/CMakeFiles/downward.dir/state_id.cc.o
    [ 70%] Building CXX object search/CMakeFiles/downward.dir/search_statistics.cc.o
    [ 71%] Building CXX object search/CMakeFiles/downward.dir/search_space.cc.o
    [ 72%] Building CXX object search/CMakeFiles/downward.dir/search_progress.cc.o
    [ 74%] Building CXX object search/CMakeFiles/downward.dir/search_node_info.cc.o
    [ 75%] Building CXX object search/CMakeFiles/downward.dir/search_engine.cc.o
    [ 77%] Building CXX object search/CMakeFiles/downward.dir/pruning_method.cc.o
    [ 78%] Building CXX object search/CMakeFiles/downward.dir/plan_manager.cc.o
    [ 80%] Building CXX object search/CMakeFiles/downward.dir/per_state_bitset.cc.o
    [ 81%] Building CXX object search/CMakeFiles/downward.dir/operator_id.cc.o
    [ 82%] Building CXX object search/CMakeFiles/downward.dir/operator_cost.cc.o
    [ 84%] Building CXX object search/CMakeFiles/downward.dir/open_list_factory.cc.o
    [ 85%] Building CXX object search/CMakeFiles/downward.dir/heuristic.cc.o
    [ 87%] Building CXX object search/CMakeFiles/downward.dir/global_state.cc.o
    [ 88%] Building CXX object search/CMakeFiles/downward.dir/evaluator_cache.cc.o
    [ 90%] Building CXX object search/CMakeFiles/downward.dir/evaluator.cc.o
    [ 91%] Building CXX object search/CMakeFiles/downward.dir/evaluation_result.cc.o
    [ 92%] Building CXX object search/CMakeFiles/downward.dir/evaluation_context.cc.o
    [ 94%] Building CXX object search/CMakeFiles/downward.dir/command_line.cc.o
    [ 95%] Building CXX object search/CMakeFiles/downward.dir/axioms.cc.o
    [ 97%] Building CXX object search/CMakeFiles/downward.dir/abstract_task.cc.o
    [ 98%] Building CXX object search/CMakeFiles/downward.dir/planner.cc.o
    [100%] Linking CXX shared library libdownward.dylib
    [100%] Built target downward
    Building configuration library.
    Executing command "cmake -G Unix Makefiles -DCMAKE_BUILD_TYPE=Library -DDISABLE_PLUGINS_BY_DEFAULT=YES -DPLUGIN_LIBRARY_ENABLED=YES ../../src" in directory "/private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-req-build-6bz035k3/builds/library".
    Executing command "make -j8" in directory "/private/var/folders/dm/dx07xfz966q5fgvzlw2840z00000gn/T/pip-req-build-6bz035k3/builds/library".
    Built configuration library successfully.
    ERROR: Unable to find required library builds/library/search/libdownward.so.
    ----------------------------------------
WARNING: Discarding https://github.com/MarcCote/downward/archive/faster_replan.zip. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

I am sorry if I don't provide enough information for reproducibility. I am quite new to asking questions on GitHub issues.

Unable to install dependency

Hi just following the instructions for setup, I am stuck installing the faster_replan package. Using a new conda env with python=3.6, I get the following error:

image

Could you tell us the new checkpoint URLs?

Hi.
When I ran the python scripts/alfworld-download --extra, I faced the following 409 error.

Traceback (most recent call last):
  File "scripts/alfworld-download", line 165, in <module>
    main()
  File "scripts/alfworld-download", line 139, in main
    zipped_filename = download(CHECKPOINTS_URL, dst=args.data_dir,
  File "scripts/alfworld-download", line 64, in download
    r.raise_for_status()  # Bad request.
  File "/home/maguro/alfworld_env/lib/python3.8/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 409 Client Error: Public access is not permitted on this storage account. for url: https://textworld.blob.core.windows.net/$web/datasets/tw-alfred/pretrained_checkpoints.zip

So, could you provide the new checkpoint URLs (pre-trained and seq2seq checkpoints)?
Thanks!

Distinguish one object from another in action.txt

Hi, Thank you for your time!

After I run python scripts/run_eval.py configs/eval_config.yaml, I get the actions for the tasks in each sample. The actions are saved in the action.txt. The example action is like:

look
go to desk 1
take pillow 1 from desk 1
go to bed 1
use desk 1
go to garbagecan 1
use desklamp 1

It uses the format like desklamp 1 to describe one of the desklamps in the scene. However, how do I know which one is the desklamp 1?

In addition, many tasks need 30+ actions to complete, is that normal?

Input image size inconsistency of the Mask RCNN model

Hello,

Thanks for the open-sourced code and models!

I have a question regarding the pretrained mask RCNN model. As in "augment_trajectories.py", I see you set the image size to 400x400 for generating the object detection dataset to fine-tune the mask RCNN. While in the MaskRCNNAgent, the input of the model is the original ALFRED frames which are of size 300x300. I am wondering is there any risk of a detection performance loss with this inconsistency of input image sizes?

Thanks,
Yichi

BrokenPipeError when running a script

Hello,

I was trying to run python scripts/train_dagger.py configs/base_config.yaml, but then I would get this error:

Traceback (most recent call last):
File "scripts/train_dagger.py", line 448, in
train()
File "scripts/train_dagger.py", line 87, in train
if config["general"]["wandb"]:
KeyError: 'wandb'
Exception ignored in: <bound method Environment.del of <textworld.envs.batch.batch_env.AsyncBatchEnv object at 0x7fc5ba44d358>>
Traceback (most recent call last):
File "/Users/xxxx/opt/anaconda3/envs/yyyyyy/lib/python3.6/site-packages/textworld/core.py", line 260, in del
self.close()
File "/Users/xxxx/opt/anaconda3/envs/yyyyyy/lib/python3.6/site-packages/textworld/envs/batch/batch_env.py", line 184, in close
env.call("close")
File "/Users/xxxx/opt/anaconda3/envs/yyyyyy/lib/python3.6/site-packages/textworld/envs/batch/batch_env.py", line 61, in call
self._pipe.send(("call", method, args))
File "/Users/xxxx/opt/anaconda3/envs/yyyyyy/lib/python3.6/multiprocessing/connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "/Users/xxxx/opt/anaconda3/envs/yyyyyy/lib/python3.6/multiprocessing/connection.py", line 404, in _send_bytes
self._send(header + buf)
File "/Users/xxxx/opt/anaconda3/envs/yyyyyy/lib/python3.6/multiprocessing/connection.py", line 368, in _send
n = write(self._handle, buf)
BrokenPipeError: [Errno 32] Broken pipe

The last section after the "Exception ignored in..." repeats on. Do you have any suggestions on what I could do to resolve this issue? Thanks in advance!

Building from Dockerfile not working

nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 is currently missing and the alterantive I found (ogvalt/cuda:9.0-cudnn7.0-devel-ubuntu16.04) throws the following error:

 > [16/25] RUN apt-get install -y python3.6 python3.6-dev python3-pip python3.6-venv:
#0 0.275 Reading package lists...
#0 0.872 Building dependency tree...
#0 0.990 Reading state information...
#0 1.080 E: Unable to locate package python3.6
#0 1.080 E: Couldn't find any package by glob 'python3.6'
#0 1.080 E: Couldn't find any package by regex 'python3.6'
#0 1.080 E: Unable to locate package python3.6-dev
#0 1.080 E: Couldn't find any package by glob 'python3.6-dev'
#0 1.080 E: Couldn't find any package by regex 'python3.6-dev'
#0 1.080 E: Unable to locate package python3.6-venv
#0 1.080 E: Couldn't find any package by glob 'python3.6-venv'
#0 1.080 E: Couldn't find any package by regex 'python3.6-venv'
------
Dockerfile:33
--------------------
  31 |       add-apt-repository ppa:deadsnakes/ppa
  32 |     RUN apt-get update
  33 | >>> RUN apt-get install -y python3.6 python3.6-dev python3-pip python3.6-venv
  34 |     
  35 |     # setup python environment
--------------------
ERROR: failed to solve: process "/bin/sh -c apt-get install -y python3.6 python3.6-dev python3-pip python3.6-venv" did not complete successfully: exit code: 100

Making observations reproducible

Hi,

When running the following snippet twice with base_config.yaml I'm not getting the same initial observation:

config = generic.load_config()
np.random.seed(42)
torch.manual_seed(42)
torch.backends.cudnn.deterministic = True
torch.cuda.manual_seed(42)

env = getattr(environment, 'AlfredTWEnv')(config, train_eval='train')  
env = env.init_env(batch_size=1)
env.seed(42)

obs, info = env.reset()
print(obs[0])

For instance I get:

you see a drawer 8, a drawer 4, a toilet 1, a sinkbasin 1, a drawer 7, a handtowelholder 1, a countertop 1, a drawer 3, a drawer 5, a drawer 6, a drawer 2, a toiletpaperhanger 1, a garbagecan 1, a drawer 1, a towelholder 1, and a sinkbasin 2.

and

you see a drawer 2, a garbagecan 1, a sinkbasin 2, a drawer 5, a toilet 1, a sinkbasin 1, a drawer 1, a drawer 6, a handtowelholder 1, a countertop 1, a drawer 8, a drawer 7, a drawer 4, a drawer 3, a toiletpaperhanger 1, and a towelholder 1.

The task is the same but the ordering and numbering of objects is different.

Which step am I missing to ensure reproducibility?

[WSL2 Ubuntu 22.04.3 Cuda 12.3] stuck at “Resetting ThorEnv”

I am conducting experiments on Ubuntu 22.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64). When I run "alfworld-play-thor", the program gets stuck at "Resetting ThorEnv" as follows

(myenv) (base) sawyer@sawyer99pc:~$ alfworld-play-thor
Playing '/home/sawyer/.cache/alfworld/json_2.1.1/train/pick_heat_then_place_in_recep-TomatoSliced-None-Fridge-23/trial_T20190909_023439_405422'.
Found path: /home/sawyer/.ai2thor/releases/thor-201909061227-Linux64/thor-201909061227-Linux64
Mono path[0] = '/home/sawyer/.ai2thor/releases/thor-201909061227-Linux64/thor-201909061227-Linux64_Data/Managed'
Mono config path = '/home/sawyer/.ai2thor/releases/thor-201909061227-Linux64/thor-201909061227-Linux64_Data/Mono/etc'
Unable to preload the following plugins:
        ScreenSelector.so
Display 0 'XWAYLAND0': 2560x1440 (primary device).
Logging to /home/sawyer/.config/unity3d/Allen Institute for Artificial Intelligence/AI2-Thor/Player.log
ThorEnv started.
Resetting ThorEnv

GPU is installed, so the problem is different from #29

(myenv) (base) sawyer@sawyer99pc:~$ nvidia-smi
Thu Jan  4 11:37:37 2024       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.36                 Driver Version: 546.33       CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 4060 Ti     On  | 00000000:01:00.0  On |                  N/A |
|  0%   49C    P8               7W / 165W |   2149MiB / 16380MiB |      1%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

And the Player.log is as follows

Desktop is 2560 x 1440 @ 60 Hz
Initialize engine version: 2018.3.6f1 (a220877bc173)
GfxDevice: creating device client; threaded=1
Renderer: D3D12 (NVIDIA GeForce RTX 4060 Ti)
Vendor:   Microsoft Corporation
Version:  4.2 (Core Profile) Mesa 23.0.4-0ubuntu1~22.04.1
GLES:     0
 GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_gpu_shader_int64 GL_AMD_multi_draw_indirect GL_AMD_shader_trinary_minmax GL_AMD_texture_texture4 GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ARB_ES2_compatibility GL_ARB_ES3_1_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clip_control GL_ARB_compressed_texture_pixel_storage GL_ARB_compute_shader GL_ARB_compute_variable_group_size GL_ARB_conditional_render_inverted GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_shader GL_ARB_framebuffer_no_attachments GL
_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader_int64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_indirect_parameters GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multi_draw_indirect GL_ARB_occlusion_query2 GL_ARB_parallel_shader_compile GL_ARB_pixel_buffer_object GL_ARB_point_sprite GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counter_ops GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_draw_parameters GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_storage_buffer_object GL_
ARB_shader_subroutine GL_ARB_shader_texture_lod GL_ARB_shading_language_420pack GL_ARB_shading_language_include GL_ARB_shading_language_packing GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map_array GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer
_object GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ATI_blend_equation_separate GL_ATI_texture_float GL_EXT_EGL_image_storage GL_EXT_EGL_sync GL_EXT_abgr GL_EXT_blend_equation_separate GL_EXT_debug_label GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_memory_object GL_EXT_memory_object_fd GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_provoking_vertex GL_EXT_semaphore GL_EXT_semaphore_fd GL_EXT_shader_integer_mix GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_ve
rtex_array_bgra GL_EXT_vertex_attrib_64bit GL_IBM_multimode_draw_arrays GL_KHR_context_flush_control GL_KHR_debug GL_KHR_no_error GL_KHR_parallel_shader_compile GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_sliced_3d GL_MESA_pack_invert GL_MESA_shader_integer_functions GL_MESA_texture_signed_rgba GL_NV_conditional_render GL_NV_copy_image GL_NV_depth_clamp GL_NV_packed_depth_stencil GL_NV_vdpau_interop GL_OES_EGL_image GL_S3_s3tc
OPENGL LOG: Creating OpenGL 4.2 graphics device ; Context level  <OpenGL 4.2> ; Context handle 74846400
Begin MonoManager ReloadAssembly
- Completed reload, in  0.027 seconds
Default vsync count 0
requesting resize 300 x 300
resizing window to 300 x 300
Desktop is 2560 x 1440 @ 60 Hz
UnloadTime: 0.523000 ms
Setting stencil for QuadDecalSpawnPlane write for shader to 2
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (2) write for shader to 4
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (3) write for shader to 6
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (1) write for shader to 8
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (5) write for shader to 10
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (4) write for shader to 12
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Desktop is 2560 x 1440 @ 60 Hz
Graphics Tier: Tier3
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

CAMERA DEPTH TEXTURE SET TO: Depth
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

requesting resize 300 x 300
resizing window to 300 x 300
Desktop is 2560 x 1440 @ 60 Hz
Unloading 30 Unused Serialized files (Serialized files now loaded: 0)
UnloadTime: 8.270000 ms
Setting stencil for QuadDecalSpawnPlane (1) write for shader to 14
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (3) write for shader to 16
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane write for shader to 18
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Setting stencil for QuadDecalSpawnPlane (2) write for shader to 20
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)


Unloading 3603 unused Assets to reduce memory usage. Loaded Objects now: 7393.
Total: 3.882000 ms (FindLiveObjects: 0.420000 ms CreateObjectMapping: 0.165000 ms MarkObjects: 0.957000 ms  DeleteObjects: 2.340000 ms)

Graphics Tier: Tier3
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

CAMERA DEPTH TEXTURE SET TO: Depth
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Agent Collided with Mesh
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

Initialize: got total valid initial targets: 2
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

imageSynth encode time0.808383
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

imageSynth format time9.727478E-05
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

imageSynth encode time0.05309868
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

imageSynth format time8.010864E-05
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

imageSynth encode time0.002251148
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

imageSynth format time2.717972E-05
 
(Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

SocketException: The socket has been shut down
  at System.Net.Sockets.Socket.Send (System.Byte[] buf) [0x00000] in <filename unknown>:0 
  at AgentManager+<EmitFrame>c__Iterator3.MoveNext () [0x00000] in <filename unknown>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in <filename unknown>:0 
 
(Filename:  Line: -1)

There seems to be a socket error, but I don't know how to fix it.
Can anyone help me with this problem? Thanks.

FileNotFoundError: [Errno 2] No such file or directory: 'lspci'

Hi,
I met the same problem #51 opened in alfred, when I run this command in alworld.

sudo python ~/alfworld/docker/startx.py 0 

Actually, I run sudo python3 ~~/alfworld/docker/startx.py 0
It shows

Starting X on DISPLAY=:0
Traceback (most recent call last):
  File "/home/lyp/alfworld/docker/startx.py", line 97, in <module>
    startx(display)
  File "/home/lyp/alfworld/docker/startx.py", line 72, in startx
    for r in pci_records():
  File "/home/lyp/alfworld/docker/startx.py", line 15, in pci_records
    output = subprocess.check_output(command).decode()
  File "/usr/lib/python3.5/subprocess.py", line 626, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.5/subprocess.py", line 693, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'lspci'

Do I need the same change?

Stuck at resetting Thorenv

Sorry, I stuck at this step and no task display, can anyone help? thanks
Test on vmware virtual machine

螢幕擷取畫面 2023-04-28 135235

seq2seq data: observations and actions missing, observations and actions appearing in the wrong places

Hi,

First of all thanks for introducing Alfworld! I'm trying to recover the transcripts from the expert demonstrations but it looks like there are missing observations and actions.

For instance if we take the following game,

  {'g': 'pick_and_place_simple-Laptop-None-Desk-306/trial_T20190909_075009_810389',
   'g_id': 0,
   'steps': [{'action': 'look',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1.',
     'step_id': 0},
    {'action': 'go to desk 1',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look',
     'step_id': 1},
    {'action': 'go to bed 1',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 1. On the desk 1, you see a cellphone 3, a desklamp 1, and a keychain 1. [SEP] go to desk 1',
     'step_id': 2},
    {'action': 'take laptop 1 from bed 1',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 1. On the desk 1, you see a cellphone 3, a desklamp 1, and a keychain 1. [SEP] go to desk 1 [SEP] You arrive at loc 10. On the bed 1, you see a cellphone 1, a laptop 1, a laptop 2, a pillow 1, and a teddybear 1. [SEP] go to bed 1',
     'step_id': 3},
    {'action': 'go to desk 1',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 1. On the desk 1, you see a cellphone 3, a desklamp 1, and a keychain 1. [SEP] go to desk 1 [SEP] You arrive at loc 10. On the bed 1, you see a cellphone 1, a laptop 1, a laptop 2, a pillow 1, and a teddybear 1. [SEP] go to bed 1 [SEP] You pick up the laptop 1 from the bed 1. [SEP] take laptop 1 from bed 1',
     'step_id': 4},
    {'action': 'put laptop 1 in/on desk 1',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 1. On the desk 1, you see a cellphone 3, a desklamp 1, and a keychain 1. [SEP] go to desk 1 [SEP] You arrive at loc 10. On the bed 1, you see a cellphone 1, a laptop 1, a laptop 2, a pillow 1, and a teddybear 1. [SEP] go to bed 1 [SEP] You pick up the laptop 1 from the bed 1. [SEP] take laptop 1 from bed 1',
     'step_id': 5},
    {'action': 'go to bed 1',
     'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a bed 1, a desk 1, a drawer 1, a drawer 2, a drawer 3, a drawer 4, a drawer 5, a garbagecan 1, a laundryhamper 1, a shelf 1, and a sidetable 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 1. On the desk 1, you see a cellphone 3, a desklamp 1, and a keychain 1. [SEP] go to desk 1 [SEP] You arrive at loc 10. On the bed 1, you see a cellphone 1, a laptop 1, a laptop 2, a pillow 1, and a teddybear 1. [SEP] go to bed 1 [SEP] You pick up the laptop 1 from the bed 1. [SEP] take laptop 1 from bed 1 [SEP] You put the laptop 1 in/on the desk 1. [SEP] put laptop 1 in/on desk 1',
     'step_id': 6}],
   'task': 'put some laptop on desk.'},

we can see that the second 'go to desk 1' action and the observation that comes after it are missing from the subsequent observations. Indeed, the observation at step_id 5 is identical to the previous one.

However, if we take this game,

{'g': 'pick_cool_then_place_in_recep-Potato-None-DiningTable-27/trial_T20190908_204023_864421',
 'g_id': 0,
 'steps': [{'action': 'look',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1.',
   'step_id': 0},
  {'action': 'go to diningtable 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look',
   'step_id': 1},
  {'action': 'take potato 2 from diningtable 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1',
   'step_id': 2},
  {'action': 'go to fridge 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1',
   'step_id': 3},
  {'action': 'cool potato 2 with fridge 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1',
   'step_id': 4},
  {'action': 'go to diningtable 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1 [SEP] You cool the potato 2 using the fridge 1. [SEP] cool potato 2 with fridge 1',
   'step_id': 5},
  {'action': 'put potato 2 in/on diningtable 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1 [SEP] You cool the potato 2 using the fridge 1. [SEP] cool potato 2 with fridge 1 [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1',
   'step_id': 6},
  {'action': 'take potato 4 from diningtable 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1 [SEP] You cool the potato 2 using the fridge 1. [SEP] cool potato 2 with fridge 1 [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You put the potato 2 in/on the diningtable 1. [SEP] put potato 2 in/on diningtable 1',
   'step_id': 7}],
 'task': 'cool some potato and put it in diningtable.'}

we can see that the second 'go to diningtable 1' action and the observation that comes after it are included in subsequent observations.

Besides, in the second example, the last and penultimate observations introduce new (action, observation) pairs after the initial scene description that disappear on the next timestep:

   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You are in the middle of a room. Looking quickly around you, you see nothing. [SEP] look [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1 [SEP] You cool the potato 2 using the fridge 1. [SEP] cool potato 2 with fridge 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 2, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1 [SEP] You cool the potato 2 using the fridge 1. [SEP] cool potato 2 with fridge 1 [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1',
   'obs': '-= Welcome to TextWorld, ALFRED! =- You are in the middle of a room. Looking quickly around you, you see a cabinet 1, a cabinet 10, a cabinet 11, a cabinet 12, a cabinet 2, a cabinet 3, a cabinet 4, a cabinet 5, a cabinet 6, a cabinet 7, a cabinet 8, a cabinet 9, a coffeemachine 1, a countertop 1, a countertop 2, a diningtable 1, a drawer 1, a drawer 2, a drawer 3, a fridge 1, a garbagecan 1, a microwave 1, a sinkbasin 1, a stoveburner 1, a stoveburner 2, a stoveburner 3, a stoveburner 4, and a toaster 1. [SEP] You pick up the potato 2 from the diningtable 1. [SEP] take potato 2 from diningtable 1 [SEP] You arrive at loc 2. The fridge 1 is closed. [SEP] go to fridge 1 [SEP] You cool the potato 2 using the fridge 1. [SEP] cool potato 2 with fridge 1 [SEP] You arrive at loc 30. On the diningtable 1, you see a apple 3, a bread 1, a butterknife 3, a egg 2, a fork 1, a knife 1, a knife 2, a mug 1, a peppershaker 3, a plate 1, a potato 4, a saltshaker 2, a soapbottle 2, and a tomato 3. [SEP] go to diningtable 1 [SEP] You put the potato 2 in/on the diningtable 1. [SEP] put potato 2 in/on diningtable 1',

Thanks for your help.

alfred-download fails - URL not publicly accessible

The alfred-download fails with a 409 when it downloads the first file JSON_FILES_URL. Looks like an issue with the file no longer being publicly-accessible rather than an issue with the script:

> wget https://aka.ms/alfworld/json_2.1.1_json.zip
--2023-06-09 23:24:35--  https://aka.ms/alfworld/json_2.1.1_json.zip
Resolving aka.ms (aka.ms)... 184.50.176.68
Connecting to aka.ms (aka.ms)|184.50.176.68|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://textworld.blob.core.windows.net/$web/datasets/tw-alfred/json_2.1.1_json.zip [following]
--2023-06-09 23:24:36--  https://textworld.blob.core.windows.net/$web/datasets/tw-alfred/json_2.1.1_json.zip
Resolving textworld.blob.core.windows.net (textworld.blob.core.windows.net)... 52.239.172.164
Connecting to textworld.blob.core.windows.net (textworld.blob.core.windows.net)|52.239.172.164|:443... connected.
HTTP request sent, awaiting response... 409 Public access is not permitted on this storage account.
2023-06-09 23:24:36 ERROR 409: Public access is not permitted on this storage account..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.