-
Notifications
You must be signed in to change notification settings - Fork 97
/
Copy pathDockerfile
executable file
·161 lines (147 loc) · 5.07 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
##########################################################
# Core Mava image
FROM nvidia/cuda:11.5.1-cudnn8-devel-ubuntu20.04 as mava-core
# Flag to record agents
ARG record
# Ensure no installs try launch interactive screen
ARG DEBIAN_FRONTEND=noninteractive
# Update packages
RUN apt-get update --fix-missing -y && apt-get install -y python3-pip && apt-get install -y python3-venv
# Update python path
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10 &&\
rm -rf /root/.cache && apt-get clean
# Setup virtual env
RUN python -m venv mava
ENV VIRTUAL_ENV /mava
ENV PATH /mava/bin:$PATH
RUN pip install --upgrade pip setuptools wheel
# Location of mava folder
ARG folder=/home/app/mava
## working directory
WORKDIR ${folder}
## Copy code from current path.
COPY . /home/app/mava
# For box2d
RUN apt-get install swig -y
## Install core dependencies.
RUN pip install -e .[reverb,launchpad]
## Optional install for screen recording.
ENV DISPLAY=:0
RUN if [ "$record" = "true" ]; then \
./bash_scripts/install_record.sh; \
fi
EXPOSE 6006
##########################################################
##########################################################
# Core Mava-TF image
FROM mava-core as tf-core
# Tensorflow gpu config.
ENV TF_FORCE_GPU_ALLOW_GROWTH=true
ENV CUDA_DEVICE_ORDER=PCI_BUS_ID
ENV TF_CPP_MIN_LOG_LEVEL=3
## Install core tf dependencies.
RUN pip install -e .[tf]
##########################################################
##########################################################
# PZ image
FROM tf-core AS pz
RUN pip install -e .[pz]
# PettingZoo Atari envs
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
RUN apt-get install -y unrar-free
RUN pip install autorom
RUN AutoROM -v
##########################################################
##########################################################
# SMAC image
FROM tf-core AS sc2
## Install smac environment
RUN apt-get -y install git
RUN pip install .[sc2]
# We use the pz wrapper for smac
RUN pip install .[pz]
ENV SC2PATH /home/app/mava/3rdparty/StarCraftII
##########################################################
##########################################################
# Flatland Image
FROM tf-core AS flatland
RUN pip install -e .[flatland]
##########################################################
#########################################################
## Robocup Image
FROM tf-core AS robocup
RUN apt-get install sudo -y
RUN ./bash_scripts/install_robocup.sh
##########################################################
##########################################################
## OpenSpiel Image
FROM tf-core AS openspiel
RUN pip install .[open_spiel]
##########################################################
##########################################################
# MeltingPot Image
FROM tf-core AS meltingpot
# Install meltingpot
RUN apt-get install -y git
RUN ./bash_scripts/install_meltingpot.sh
# Add meltingpot to python path
ENV PYTHONPATH "${PYTHONPATH}:${folder}/../packages/meltingpot"
##########################################################
# New Jax Images
##########################################################
# Core Mava-Jax image
FROM mava-core as jax-core
# Jax gpu config.
ENV XLA_PYTHON_CLIENT_PREALLOCATE=false
## Install core jax dependencies.
# Install jax gpu
RUN pip install -e .[jax]
RUN pip install --upgrade "jax[cuda]" -f https://storage.googleapis.com/jax-releases/jax_releases.html
##########################################################
##########################################################
# PZ image
FROM jax-core AS pz-jax
RUN pip install -e .[pz]
# PettingZoo Atari envs
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
RUN apt-get install -y unrar-free
RUN pip install autorom
RUN AutoROM -v
##########################################################
##########################################################
# SMAC image
FROM jax-core AS sc2-jax
## Install smac environment
RUN apt-get -y install git
RUN pip install .[sc2]
# We use the pz wrapper for smac
RUN pip install .[pz]
ENV SC2PATH /home/app/mava/3rdparty/StarCraftII
##########################################################
##########################################################
# Flatland Image
FROM jax-core AS flatland-jax
RUN pip install -e .[flatland]
##########################################################
#########################################################
## Robocup Image
FROM jax-core AS robocup-jax
RUN apt-get install sudo -y
RUN ./bash_scripts/install_robocup.sh
##########################################################
##########################################################
## OpenSpiel Image
FROM jax-core AS openspiel-jax
RUN pip install .[open_spiel]
##########################################################
##########################################################
# MeltingPot Image
FROM jax-core AS meltingpot-jax
# Install meltingpot
RUN apt-get install -y git
RUN ./bash_scripts/install_meltingpot.sh
# Add meltingpot to python path
ENV PYTHONPATH "${PYTHONPATH}:${folder}/../packages/meltingpot"
##########################################################