diff --git a/docker/Dockerfile b/docker/Dockerfile index 9857df7..f8e4949 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM continuumio/anaconda3:2019.03 +FROM continuumio/miniconda3:latest RUN apt-get update && apt-get upgrade -y \ && apt-get install -y \ @@ -6,32 +6,13 @@ RUN apt-get update && apt-get upgrade -y \ build-essential \ git \ sudo \ - cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev libboost-all-dev libsdl2-dev swig \ + cmake zlib1g-dev libjpeg-dev xvfb ffmpeg xorg-dev libboost-all-dev libsdl2-dev swig \ unzip zip \ && rm -rf /var/lib/apt/lists/* RUN conda update -n base conda -RUN conda install -y \ - joblib \ - PyYAML==3.13 -RUN conda install -y -c conda-forge \ - pyopengl \ - xgboost \ - nbdime -RUN pip install "urlextract" -RUN pip install "gym[atari,box2d,classic_control]" -RUN pip install "tensorflow-hub" -RUN pip install "tensorflow-serving-api" -RUN pip install "tfx" -#RUN pip install "tensorflow-addons" -RUN pip install "tf-agents-nightly" -RUN pip install "tfds-nightly" -RUN pip install "tfp-nightly" -RUN pip uninstall -y tensorflow -RUN pip uninstall -y tensorboard -RUN pip install "tf-nightly-2.0-preview" -RUN pip install "tb-nightly" - +COPY docker/environment.yml /tmp/ +RUN conda env create -f /tmp/environment.yml ARG username ARG userid diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..8060612 --- /dev/null +++ b/environment.yml @@ -0,0 +1,227 @@ +name: tf2 +channels: + - conda-forge + - defaults +dependencies: + - _py-xgboost-mutex=2.0=cpu_0 + - appnope=0.1.0=py37_0 + - asn1crypto=1.0.1=py37_0 + - attrs=19.2.0=py_0 + - backcall=0.1.0=py37_0 + - blas=1.0=mkl + - bleach=3.1.0=py37_0 + - ca-certificates=2019.9.11=hecc5488_0 + - cairo=1.14.12=hc4e6be7_4 + - certifi=2019.9.11=py37_0 + - cffi=1.12.3=py37hb5b8e2f_0 + - chardet=3.0.4=py37_1003 + - cloudpickle=1.2.2=py_0 + - colorama=0.4.1=py_0 + - cryptography=2.7=py37ha12b0ac_0 + - cycler=0.10.0=py37_0 + - cytoolz=0.10.0=py37h1de35cc_0 + - dask-core=2.5.2=py_0 + - dbus=1.13.6=h90a0687_0 + - decorator=4.4.0=py37_1 + - defusedxml=0.6.0=py_0 + - dill=0.3.0=py37_0 + - entrypoints=0.3=py37_0 + - expat=2.2.6=h0a44026_0 + - fontconfig=2.13.0=h5d5b041_1 + - freetype=2.9.1=hb4e5f40_0 + - fribidi=1.0.5=h1de35cc_0 + - gettext=0.19.8.1=h15daf44_3 + - gitdb2=2.0.6=py_0 + - gitpython=3.0.3=py_0 + - glib=2.56.2=hd9629dc_0 + - graphite2=1.3.13=h2098e52_0 + - graphviz=2.40.1=hefbbd9a_2 + - harfbuzz=1.8.8=hb8d4a28_0 + - httplib2=0.12.0=py37_1000 + - icu=58.2=h4b95b61_1 + - idna=2.8=py37_0 + - imageio=2.6.0=py37_0 + - intel-openmp=2019.4=233 + - ipykernel=5.1.2=py37h39e3cac_0 + - ipython=7.8.0=py37h39e3cac_0 + - ipython_genutils=0.2.0=py37_0 + - ipywidgets=7.5.1=py_0 + - jedi=0.15.1=py37_0 + - jinja2=2.10.3=py_0 + - joblib=0.13.2=py37_0 + - jpeg=9b=he5867d9_2 + - jsonschema=3.0.2=py37_0 + - jupyter=1.0.0=py37_7 + - jupyter_client=5.3.3=py37_1 + - jupyter_console=6.0.0=py37_0 + - jupyter_core=4.5.0=py_0 + - kiwisolver=1.1.0=py37h0a44026_0 + - libcxx=4.0.1=hcfea43d_1 + - libcxxabi=4.0.1=hcfea43d_1 + - libedit=3.1.20181209=hb402a30_0 + - libffi=3.2.1=h475c297_4 + - libgfortran=3.0.1=h93005f0_2 + - libiconv=1.15=hdd342a3_7 + - libpng=1.6.37=ha441bb4_0 + - libsodium=1.0.16=h3efe00b_0 + - libtiff=4.0.10=hcb84e12_2 + - libxgboost=0.90=h6de7cb9_2 + - libxml2=2.9.9=hf6e021a_1 + - llvm-openmp=9.0.0=h40edb58_0 + - markupsafe=1.1.1=py37h1de35cc_0 + - matplotlib=3.1.1=py37h54f8f79_0 + - mistune=0.8.4=py37h1de35cc_0 + - mkl=2019.4=233 + - mkl-service=2.3.0=py37hfbe908c_0 + - mkl_fft=1.0.14=py37h5e564d8_0 + - mkl_random=1.1.0=py37ha771720_0 + - nbconvert=5.6.0=py37_1 + - nbdime=1.1.0=py37_0 + - nbformat=4.4.0=py37_0 + - ncurses=6.1=h0a44026_1 + - networkx=2.3=py_0 + - nltk=3.4.5=py37_0 + - notebook=6.0.1=py37_0 + - numexpr=2.7.0=py37h7413580_0 + - numpy=1.17.2=py37h99e6662_0 + - numpy-base=1.17.2=py37h6575580_0 + - olefile=0.46=py37_0 + - openssl=1.1.1c=h01d97ff_0 + - pandas=0.25.1=py37h0a44026_0 + - pandoc=2.2.3.2=0 + - pandocfilters=1.4.2=py37_1 + - pango=1.42.4=h060686c_0 + - parso=0.5.1=py_0 + - pcre=8.43=h0a44026_0 + - pexpect=4.7.0=py37_0 + - pickleshare=0.7.5=py37_0 + - pillow=6.2.0=py37hb68e598_0 + - pip=19.2.3=py37_0 + - pixman=0.38.0=h1de35cc_0 + - prometheus_client=0.7.1=py_0 + - prompt_toolkit=2.0.10=py_0 + - ptyprocess=0.6.0=py37_0 + - py-xgboost=0.90=py37h6de7cb9_2 + - pycparser=2.19=py37_0 + - pydot=1.4.1=py37_0 + - pygments=2.4.2=py_0 + - pyopengl=3.1.1a1=py37_0 + - pyopenssl=19.0.0=py37_0 + - pyparsing=2.4.2=py_0 + - pyqt=5.9.2=py37h655552a_2 + - pyrsistent=0.15.4=py37h1de35cc_0 + - pysocks=1.7.1=py37_0 + - python=3.7.4=h359304d_1 + - python-dateutil=2.8.0=py37_0 + - python-graphviz=0.10.1=py_0 + - pytz=2019.3=py_0 + - pywavelets=1.0.3=py37h1d22016_1 + - pyzmq=18.1.0=py37h0a44026_0 + - qt=5.9.7=h468cd18_1 + - qtconsole=4.5.5=py_0 + - readline=7.0=h1de35cc_5 + - requests=2.22.0=py37_0 + - scikit-image=0.15.0=py37h0a44026_0 + - scikit-learn=0.20.3=py37h27c97d8_0 + - scipy=1.1.0=py37h1410ff5_2 + - send2trash=1.5.0=py37_0 + - setuptools=41.4.0=py37_0 + - sip=4.19.8=py37h0a44026_0 + - six=1.12.0=py37_0 + - smmap2=2.0.5=py_0 + - sqlite=3.30.0=ha441bb4_0 + - terminado=0.8.2=py37_0 + - testpath=0.4.2=py37_0 + - tk=8.6.8=ha441bb4_0 + - toolz=0.10.0=py_0 + - tornado=6.0.3=py37h1de35cc_0 + - tqdm=4.36.1=py_0 + - traitlets=4.3.3=py37_0 + - urllib3=1.24.2=py37_0 + - wcwidth=0.1.7=py37_0 + - webencodings=0.5.1=py37_1 + - wheel=0.33.6=py37_0 + - widgetsnbextension=3.5.1=py37_0 + - xgboost=0.90=py37h6de7cb9_2 + - xz=5.2.4=h1de35cc_4 + - zeromq=4.3.1=h0a44026_3 + - zlib=1.2.11=h1de35cc_3 + - zstd=1.3.7=h5bba6e5_0 + - pip: + - absl-py==0.8.1 + - apache-beam==2.16.0 + - appdirs==1.4.3 + - astor==0.8.0 + - atari-py==0.2.6 + - avro-python3==1.9.1 + - cachetools==3.1.1 + - click==7.0 + - crcmod==1.7 + - docopt==0.6.2 + - easyprocess==0.2.7 + - fastavro==0.21.24 + - fasteners==0.15 + - future==0.18.0 + - gast==0.2.2 + - gin-config==0.1.3 + - google-api-core==1.14.3 + - google-api-python-client==1.7.11 + - google-apitools==0.5.28 + - google-auth==1.6.3 + - google-auth-httplib2==0.0.3 + - google-cloud-bigquery==1.17.1 + - google-cloud-bigtable==1.0.0 + - google-cloud-core==1.0.3 + - google-cloud-datastore==1.7.4 + - google-cloud-pubsub==1.0.2 + - google-pasta==0.1.7 + - google-resumable-media==0.4.1 + - googleapis-common-protos==1.6.0 + - grpc-google-iam-v1==0.12.3 + - grpcio==1.24.1 + - gym==0.15.3 + - h5py==2.10.0 + - hdfs==2.5.8 + - keras-applications==1.0.8 + - keras-preprocessing==1.1.0 + - markdown==3.1.1 + - ml-metadata==0.14.0 + - mock==2.0.0 + - monotonic==1.5 + - oauth2client==3.0.0 + - opencv-python==4.1.1.26 + - opt-einsum==3.1.0 + - pbr==5.4.3 + - promise==2.2.1 + - protobuf==3.10.0 + - psutil==5.6.3 + - pyarrow==0.14.1 + - pyasn1==0.4.7 + - pyasn1-modules==0.2.7 + - pyglet==1.3.2 + - pymongo==3.9.0 + - pyvirtualdisplay==0.2.4 + - pyyaml==3.13 + - rsa==4.0 + - tensorboard==2.0.0 + - tensorflow==2.0.0 + - tensorflow-addons==0.6.0 + - tensorflow-data-validation==0.14.1 + - tensorflow-datasets==1.2.0 + - tensorflow-estimator==2.0.0 + - tensorflow-hub==0.6.0 + - tensorflow-metadata==0.14.0 + - tensorflow-model-analysis==0.14.0 + - tensorflow-serving-api==1.14.0 + - tensorflow-transform==0.14.0 + - termcolor==1.1.0 + - tf-agents-nightly==0.2.0.dev20191012 + - tfp-nightly==0.9.0.dev20191013 + - tfx==0.14.0 + - uritemplate==3.0.0 + - uritools==2.2.0 + - urlextract==0.13.0 + - werkzeug==0.16.0 + - wrapt==1.11.2 +prefix: /Users/ageron/miniconda3/envs/tf2 + diff --git a/requirements.txt b/requirements.txt index 193351e..6218c93 100644 --- a/requirements.txt +++ b/requirements.txt @@ -71,16 +71,13 @@ imageio==2.6.0 Pillow==6.2.0 scikit-image==0.15.0 graphviz==0.10.1 -pygraphviz==1.3 -pydot==1.4.1 - ##### Reinforcement Learning library # OpenAI gym is only needed in chapter 18. # There are a few dependencies you need to install first, check out: # https://github.com/openai/gym#installing-everything -gym[atari]==0.15.3 +gym[atari,box2d,classic_control]==0.15.3 ##### Additional utilities