Loading
Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more

NIPS 2017: Learning to Run

Reinforcement learning environments with musculoskeletal models


Completed
2154
Submissions
616
Participants
83627
Views

Important Announcement : Round 2 : Submission

Posted by spMohanty about 1 year ago

The submissions for Round-2 will be in the form of docker containers, which we will locally validate with N simulations. Every eligible participant will be allowed to make a total of 3 submissions.

More details about the submission method, and a template container for a random action submission can be accessed at : https://hub.docker.com/r/spmohanty/crowdai-nips-learning-to-run-challenge/

We will be updating this thread soon with more details about Round-2.
Cheers,
Mohanty

UPDATE : A template container with python3.6 and anaconda3 is now available at : https://hub.docker.com/r/spmohanty/crowdai-nips-learning-to-run-challenge-python3/

3

Posted by pg  about 1 year ago |  Quote

In the description, “these instructions expect that opensim-rl conda environment is already setup as described in : https://github.com/stanfordnmbl/osim-rl/”. While in my previous experiments and submissions, I was using a custom-build opensim with and the solution is written in Python 3, but the conda environment is only avialable in Python 2. May I know if there is a way to support Python 3 in the submission environment?

1

Posted by Anan_Tenth  about 1 year ago |  Quote

I second @pg. I also use Python 3. Apart from that, could you reveal N?

Posted by spMohanty  about 1 year ago |  Quote

Hi @pg,

The submissions are now based on neatly packaged docker containers. Hence you are free to setup your own environment inside the docker container that you submit. The only condition is that, we should be able to run your submission by executing : docker run -p $SERVICE_PORT:6379 -it $IMAGE_ID_OF_YOUR_SUBMISSION /home/submit.sh Where /home/submit.sh is the script which instantiates the redis-server inside the container, setups up env variables, and then finally calls your submission script. The submission script is almost exactly the same as the submission script for the previous osim-rl-grader approah. Link : https://github.com/stanfordnmbl/osim-rl/blob/master/scripts/round2_submit.py In any case, we would be happy to release a template submission container for python3, but in your case, you will anyway have to modify the container to include the custom build of opensim that you use.

So there should be minimal changes to your actual submission script as long as you manage to setup your required environment inside the docker container.

In any case, if required, we would be happy to have a community call, where we can help you prepare your submissions and answer all questions about the submission mechanism on a realtime video call.

@Anan tenth: N can be any arbitrary positive integer. Many of the current top submissions have scores which are very close to each other, and it is difficult to ascertain if a model is better than the other or just it was lucky with the set of seeds we used to grade. Hence, in the case that many of the top submissions have very close scores, we will increase the value of N to a larger number to ensure that only the most generalizable model actually wins. To start with, the value of N will be in the range of 3 to 10.

Cheers,
Mohanty

1

Posted by mattias_ljungstrom  about 1 year ago |  Quote

Running this on Windows I get the following error:

python service.py –port=10009

Attempting to connect to redis server at 127.0.0.1:10009/0 Listening for commands at : osim-rl::osim_rl_redis_service_id::commands Self.Reward : 0 Current Simulation : 0 Current SEED : 11 Error : the JSON object must be str, not ‘bytes’ Evaluation Failed : the JSON object must be str, not ‘bytes’

Posted by mattias_ljungstrom  about 1 year ago |  Quote

To get the script service.py to work correctly under Win10 with the test docker image, I changed the following on line 59: #command = json.loads(command) command = json.loads(command.decode('utf-8'))