Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Docker image to v4 #5323

Closed
3 of 4 tasks
michaelosthege opened this issue Jan 7, 2022 · 46 comments
Closed
3 of 4 tasks

Update Docker image to v4 #5323

michaelosthege opened this issue Jan 7, 2022 · 46 comments
Assignees
Labels
help wanted installation issues about dependencies or installation maintenance
Milestone

Comments

@michaelosthege
Copy link
Member

michaelosthege commented Jan 7, 2022

As discussed in the meeting earlier today, it is now time to update the Docker image: https://hub.docker.com/u/pymc

Short-term goals

with pymc.Model() as pmodel:
    pymc.Normal()
fp = pathlib.Path("model.pdf")
graph = pymc.model_to_graphviz(pmodel)
graph.render(format="pdf", filename=str(fp))
assert fp.exists()

Simplifications/Constraints

  • Python minor versions don't matter much these days, shall we build it for just 3.9 for now?
  • We'll want a "latest" build and one per release? For 4.0.0b1 that'll be a manually built one, but for upcoming ones we can automate it?

Tagging @canyon289 @AustinRochford @bwengals who have relevant insight.

I can also contribute a (stripped-down) environment.yml to start from 👇

Known limitations:

  • Suffers from NumPy C-API warning
  • Graphviz/pydot install to the degree that pm.model_to_graphviz() doesn't raise, but rendering to fixes crashes.
channels:
- defaults
- conda-forge
dependencies:
- conda-build
- libblas
- mkl-service
- numpy>=1.15.0
- pip
# To fix pydot/graphviz (?)
- pango
- pydot
# Limit graphviz upper version because of https://stackoverflow.com/a/69997168/4473230
- python-graphviz<=0.18
- scipy>=1.2.0
# To be discussed:
- jupyterlab
- statsmodels
- watermark
- pip:
  - matplotlib>=3.*
  - pandas>=1.*
  # PyMC installs more reliably with pip
  # as long as important dependencies are installed with conda already
  - git+https://github.com/pymc-devs/pymc@9d4691c4ceaa18dd50081db32f38fd1310359d48
  # To be discussed:
  - scikit-learn
  - openpyxl

When this issue is dealt with we can also close #3160 + #4386 as fixed and wontfix respectively.

@ricardoV94
Copy link
Member

The second issue looks wrong

@michaelosthege
Copy link
Member Author

The second issue looks wrong

A typo. Thanks.

Also forgot to mention why this issue is high-priority: We want to re-run a ton of pymc-examples notebooks and doing it in Docker is the easiest to automate.

@canyon289
Copy link
Member

Using @bwengals docker image the model graph to png saving is work. Its not minimal but at least shows it can work!

FROM jupyter/minimal-notebook:python-3.9.5

USER root
RUN apt update && apt upgrade -y \
  && apt -y install --no-install-recommends -qq \
     curl ca-certificates make g++ git vim-tiny openssh-client \
     unzip tzdata htop \
  && apt clean && rm -rf /var/lib/apt/lists/*

USER ${NB_UID}
RUN mamba install -c conda-forge -y \
        compilers \
        filelock \
        cython \
        numpy \
        scipy \
        sympy \
        pypolyagamma \
        mkl \
        mkl-service \
        "libblas=*=*mkl" \
        numba \
        numba-scipy \
        "arviz>=0.11.2" \
        "cachetools>=4.2.1" \
        cloudpickle \
        "fastprogress>=0.2.0" \
        "h5py>=2.7" \
        "ipython>=7.16" \
        "libblas=*=*mkl" \
        mkl-service \
        myst-nb \
        "nbsphinx>=0.4" \
        "numpy>=1.15.0" \
        "numpydoc>=0.9" \
        "pandas>=0.24.0" \
        "pre-commit>=2.8.0" \
        pydata-sphinx-theme \
        "pytest-cov>=2.5" \
        "pytest>=3.0" \
        python-graphviz \
        "recommonmark>=0.4" \
        "scipy>1.4.1" \
        "sphinx-autobuild>=0.7" \
        sphinx-panels \
        "sphinx>=1.5" \
        "typing-extensions>=3.7.4" \
        watermark \
        voila \
    && conda clean --all -f -y \
    && fix-permissions "${CONDA_DIR}" \
    && fix-permissions "/home/${NB_USER}"

RUN mamba install -c conda-forge -y \
        scikit-learn linearmodels \
        matplotlib plotly bokeh ipywidgets pre-commit \
        xarray psycopg2 \
        fastapi toml \
    && conda clean --all -f -y \
    && fix-permissions "${CONDA_DIR}" \
    && fix-permissions "/home/${NB_USER}"

RUN mamba install -c conda-forge pymc3 -y \
    && conda clean --all -f -y \
    && fix-permissions "${CONDA_DIR}" \
    && fix-permissions "/home/${NB_USER}"


## other environment variables
ENV JUPYTER_ENABLE_LAB=1
WORKDIR /home/$NB_USER
USER ${NB_UID}

COPY ./model_test.py .

RUN python model_test.py
RUN ls

model.py

import pymc3 as pm

with pm.Model() as model:
    a = pm.Uniform("a", 1, 2)
    b = pm.Normal("b", 1 ,a)

model_diagram = pm.model_to_graphviz(model)
model_diagram.render("model_graph", format="png", cleanup=True)
print("Finished")

@michaelosthege michaelosthege changed the title Update Docker image to 4.0.0b1 Update Docker image to 4.0.0b2 Jan 14, 2022
@michaelosthege
Copy link
Member Author

@canyon289 do you want to add this Dockerfile alongside a Github action? (https://github.com/marketplace/actions/build-and-push-docker-images#usage)

Should we include the extra dependencies from pymc-examples? That would make it easier to re-run notebooks.

@canyon289
Copy link
Member

I wont be able to do this anytime soon, my current focus is on time series.

@nvasilevv
Copy link

Hey guys, I would be glad to take over. I have some experience with pymc, docker and github actions. Let me know if you are ok with that.

@michaelosthege
Copy link
Member Author

Hey guys, I would be glad to take over. I have some experience with pymc, docker and github actions. Let me know if you are ok with that.

Sure, go ahead!

@nvasilevv
Copy link

Hi all, I tried building the above docker image. It failed for me with mamba not being able to find mkl and mkl-services among other things. The errors made sense, because I ran this on my Mac (m1 chip). Will try to resolve those before continuing. Having said that, I am not sure what of a delay this might introduce.

Even if I was to drop the mkl packages, I still cannot conda-install pymc.

@bwengals
Copy link
Contributor

Sorry I didn't respond sooner! @nvasilevv what sort of errors are you getting? I can build the image alright on my machine, also osx (but no M1 chip). Are you using the jupyter/minimal-notebook base image (FROM jupyter/minimal-notebook:python-3.9.7) at the top of your Dockerfile?

@nvasilevv
Copy link

Hi @bwengals, indeed I am using the Dockerfile shared above. When installing the dependencies mamba cannot find the right package for mkl and mkl-services. Even if I were to remove those, the installation of pymc3 fails again because mamba cannot find appropriate package in conda-forge. It makes sense, because mkl is a library specifically created for intel processors. Will share more details later today.

P.S.: I am configuring a windows setup so that I do not face this issue. Will be able to work on the issue once the setup is in place. Should be ready tomorrow.

@michaelosthege michaelosthege changed the title Update Docker image to 4.0.0b2 Update Docker image to v4 Mar 19, 2022
@petecog
Copy link

petecog commented Mar 30, 2022

how's progress on this one? I had some luck: see https://github.com/alephinsights/docker-pymc-gpu

I was hoping to get GPU acceleration working for both JAX/Aesara. Jax seems to work, but still having issues with Aesara.

@michaelosthege
Copy link
Member Author

how's progress on this one? I had some luck: see https://github.com/alephinsights/docker-pymc-gpu

I was hoping to get GPU acceleration working for both JAX/Aesara. Jax seems to work, but still having issues with Aesara.

AFAIK there's currently nobody working on it. Any contributions are welcome!
FYI: We're releasing 4.0.0b6 within the next few hours.

@petecog
Copy link

petecog commented Mar 30, 2022

AFAIK there's currently nobody working on it. Any contributions are welcome!

I'll tidy this up and PR idc

FYI: We're releasing 4.0.0b6 within the next few hours.

Exciting!

@ricardoV94 ricardoV94 added this to the v4.0.0 milestone Apr 20, 2022
@ricardoV94
Copy link
Member

Anyone wants to work on this one?

@twiecki
Copy link
Member

twiecki commented Apr 20, 2022

Maybe @5hv5hvnk?

@5hv5hvnk
Copy link
Member

Sure! let me get started on this

@5hv5hvnk
Copy link
Member

5hv5hvnk commented Apr 27, 2022

While using the above Dockerfile do we still have to download all the dependencies in requirements-dev.txt after docker opens jupyter lab?

@twiecki
Copy link
Member

twiecki commented Apr 27, 2022

@5hv5hvnk I don't think we do.

@michaelosthege michaelosthege removed this from the v4.0.0 milestone May 6, 2022
@twiecki twiecki added this to the v4.0.0 milestone May 30, 2022
@danhphan
Copy link
Member

Hi, let me try to build the docker image for PyMC v4 this week :)

@5hv5hvnk
Copy link
Member

Currently we are getting an error while downloading the dependencies while creating the conda environment (on execution of start_container.sh

ERROR [ 5/10] RUN conda env create -f environment.yml     && conda clean --all -f -y     && fix-permissions "/opt/conda"     && fix-permis  526.2s
------                                                                                                                                                 
 > [ 5/10] RUN conda env create -f environment.yml     && conda clean --all -f -y     && fix-permissions "/opt/conda"     && fix-permissions "/home/jovyan":
#10 4.846 Collecting package metadata (repodata.json): ...working... done
#10 332.5 Solving environment: ...working... /bin/bash: line 1:     8 Killed                  conda env create -f environment.yml
------
executor failed running [/bin/bash -o pipefail -c conda env create -f environment.yml     && conda clean --all -f -y     && fix-permissions "${CONDA_DIR}"     && fix-permissions "/home/${NB_USER}"]: exit code: 137
BUILD END

And here is the Dockerfile we are using

FROM jupyter/minimal-notebook:python-3.9.5

USER root
RUN apt update && apt upgrade -y \
  && apt -y install --no-install-recommends -q \
     curl ca-certificates make g++ git vim-tiny openssh-client \
     unzip tzdata htop \
  && apt clean && rm -rf /var/lib/apt/lists/*

COPY environment.yml /home/jovyan/environment.yml

USER ${NB_UID}

RUN conda update -n base conda

RUN conda env create -f environment.yml \
    && conda clean --all -f -y \
    && fix-permissions "${CONDA_DIR}" \
    && fix-permissions "/home/${NB_USER}"


# Activate the environment, and make sure it's activated:
# RUN conda activate myenv

## other environment variables
ENV JUPYTER_ENABLE_LAB=1
WORKDIR /home/$NB_USER
USER ${NB_UID}

COPY ./model_test.py .

RUN python model_test.py
RUN ls

@danhphan
Copy link
Member

Hi. Can you also share the model_test.py file. Thanks

@bwengals
Copy link
Contributor

@5hv5hvnk Try going into your docker preferences and let it use more RAM. I think that error code is OOM

@5hv5hvnk
Copy link
Member

@danhphan It is the same file quoted above but with name model_test.py

import pymc3 as pm

with pm.Model() as model:
    a = pm.Uniform("a", 1, 2)
    b = pm.Normal("b", 1 ,a)

model_diagram = pm.model_to_graphviz(model)
model_diagram.render("model_graph", format="png", cleanup=True)
print("Finished")

@5hv5hvnk
Copy link
Member

@bwengals Increasing allocated memory of docker did help, now the Dockerfile runs smoothly but it still has the same issue I was facing earlier the interactive terminal of the docker container can execute the same file without errors however in the jupyter lab launched by docker itself (while using an .ipynb) the dependencies aren't installed and we have to usepip to install requirements-dev.txt again on jupyter lab

@danhphan
Copy link
Member

danhphan commented Jun 1, 2022

Hi @5hv5hvnk

I have pushed a docker image on dockerhub https://hub.docker.com/r/danhphan/pymc/tags . Can you check if it work on your side.

I put the dockerfile here: https://github.com/danhphan/pymc-docker

You can either pull the docker image from dockerhub, or build it from dockerfile.

1. Install docker image

1.1. Pull image from docker hub

docker pull danhphan/pymc:v4.0.0b6

1.2. Build from dockerfile

clone [email protected]:danhphan/pymc-docker.git
cd pymc-docker
docker build -t pymc:v4.0.0b6 .

2. How to run

Note, if you pull from dockerhub, the image name will need to be changed from pymc:v4.0.0b6 into danhphan/pymc:v4.0.0b6

2.1. Run with Jupyter notebook

cd to_your_working_folder
docker run -it -p 8888:8888 -v "$(pwd)":/home/jovyan --rm  pymc:v4.0.0b6

2.2 Run with command lines

cd to_your_working_folder
docker run -it -v "$(pwd)":/home/jovyan --rm pymc:v4.0.0b6 bash

Currently it only works with CPU. For the GPU support, I may need to do it later.

@danhphan
Copy link
Member

danhphan commented Jun 1, 2022

A note that I build the docker image using pip (without using conda). If it work, we can then integrate it into PyMC dockerfile.

@5hv5hvnk
Copy link
Member

5hv5hvnk commented Jun 1, 2022

On executing the model_test.py on the interactive shell as well as on jupyter notebook I got this error

ImportError                               Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 import pymc as pm
      3 with pm.Model() as model:
      4     a = pm.Uniform("a", 1, 2)
.
.
.
.
ImportError: cannot import name 'SimplexTransform' from 'aeppl.transforms' (/opt/conda/lib/python3.10/site-packages/aeppl/transforms.py)

@ricardoV94
Copy link
Member

On executing the model_test.py on the interactive shell as well as on jupyter notebook I got this error

ImportError                               Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 import pymc as pm
      3 with pm.Model() as model:
      4     a = pm.Uniform("a", 1, 2)
.
.
.
.
ImportError: cannot import name 'SimplexTransform' from 'aeppl.transforms' (/opt/conda/lib/python3.10/site-packages/aeppl/transforms.py)

You have the wrong aeppl version installed. Make sure it's the same version as in the requirements.txt.

@5hv5hvnk
Copy link
Member

5hv5hvnk commented Jun 1, 2022

Yes, but when I am executing the code on the docker container there shouldn't be any disparity because of difference in versions between host kernel and the docker container?

@danhphan
Copy link
Member

danhphan commented Jun 1, 2022

Hi, I have updated the latest dependency versions (including aeppl) in pymc's requirements.txt, and also installed pymc from git repos. Also, the graphviz is added in the docker image on https://hub.docker.com/r/danhphan/pymc/tags

Could you pls to pull the updated docker image and check again? The dockerfile is also updated in the github repos. Thanks.

I run this demo notebook, it seems alright. Besides, the result when running the docker container using command lines as follow:

danh@danh-ubuntu:~/WORK/codes/myprojects/pymc-docker$ docker run -it -v "$(pwd)":/home/jovyan --rm danhphan/pymc:v4.0.0b6 bash
jovyan@8495e8b3ab8b:~$ 
jovyan@8495e8b3ab8b:~$ ipython
Python 3.10.4 | packaged by conda-forge | (main, Mar 24 2022, 17:38:57) [GCC 10.3.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import pymc as pm
   ...: 
   ...: with pm.Model() as model:
   ...:     a = pm.Uniform("a", 1, 2)
   ...:     b = pm.Normal("b", 1 ,a)
   ...: 
   ...: model_diagram = pm.model_to_graphviz(model)
   ...: model_diagram.render("model_graph", format="png", cleanup=True)
   ...: print("Finished")

WARNING (aesara.tensor.blas): Using NumPy C-API based implementation for BLAS functions.
Finished

The versions from watermark:

Python implementation: CPython
Python version       : 3.10.4
IPython version      : 8.4.0

aeppl : 0.0.31
numpy : 1.22.4
pymc  : 4.0.0b6
aesara: 2.6.2
arviz : 0.12.1

Watermark: 2.3.1

@twiecki
Copy link
Member

twiecki commented Jun 1, 2022

@danhphan Any reason you didn't use conda? It would allow easy installation for MKL which would make the blas warning go away./

@bwengals
Copy link
Contributor

bwengals commented Jun 1, 2022

Looking in the current docker scripts, the only reason its broken is because its expecting a environment-dev.yml file (see here) for the build, which has been replaced by the set of conda environments here instead. I think it'd be best if the container reused one of these environments. A couple questions then are:

  • Which conda env to use? The script could be modified to take an arg that picks the environment name, for instance, pymc-dev-py39 would build this one. Use the dev or test environments?
  • Could build a container with all of them together? Would likely be pretty hefty and slow to build though.
  • What's the use case for the container? Is it for development, so you'd want jupyter, vscode maybe, whatever IDE people use built in, or should it be a lightweight base image for someone to build off of?

@twiecki
Copy link
Member

twiecki commented Jun 1, 2022

dev environments were made for this, but we'd need to set libblas to mkl (which is easy).

The main use-case is for deployment I'd say and maybe for users who have a hard time installing.

@danhphan
Copy link
Member

danhphan commented Jun 2, 2022

Hi, I may be biased here, but to me conda is kinds of slow (even with mamba) and heavy. conda may be great for development environment and education (with jupyter notebook), but not for deployment.

I have some difficult experience when using conda to deploy a machine learning model with a web like flask. Asked a couple of friends if they use conda in their operational environments and they said no. Some use pyenv, or just python venv with pip, which is light weight.

However, I have not thought about libblas or mkl for numpy in our case. I will test the docker with conda installation soon, to address the blas issue.

For docker use-case, I thought that it will mainly use for deployment, not development. Besides, if the users know how to use docker, then the installation should not be a problem for them?

Should we separate into these docker use-case:

  • For pymc dev and contributors: => docker may not be a good environment for development (I prefer local machine as it integrate with vs code and many extensions...). And I assume we have already made our own set-up => Low priority
  • For pymc testing: large dependency requirements, different python version (>= 3.7?) => Low priority
  • For normal user: just one docker with small requirements (for using pymc), one python version (3.9?) => High priority

@bwengals
Copy link
Contributor

bwengals commented Jun 2, 2022

Yup it's very true, pip and pyenv are lighter weight, and are used more in Python overall. Conda's useful for the pydata stack because it's heavy weight. For computing stuff, you need all sorts of optimized C libraries, Fortran, CUDA. Conda can even do R, matlab, and all kinds of other stuff. Unlike pip it handles non-python packages so it's more of a general purpose package manager. Outside of scientific python I don't think conda is used much at all, but I don't know for sure. It makes sense then that flask stuff on conda may not get as much attention.

PyMC (but really Aesara under the hood) can run just fine on pure python, but runs way better with a C compiler and optimized linear algebra libraries installed (MKL ideally). New Aesara can use Numba and Jax too (and all of their deps!). Conda usually handles all that better than pip. So pip is the lightest weight / fastest route to a PyMC install, but conda is the the quickest route to a full and more optimized install. Not that the pure python backend isn't useful -- its how @twiecki did this: https://www.pymc-labs.io/blog-posts/pymc-in-browser/ My conda/pip knowledge might be a few years old though, so keep that in mind!

@canyon289
Copy link
Member

canyon289 commented Jun 2, 2022

Heres my 2 cents.

  1. Use conda in the container for DS because
  • assume its for local development so size doesnt matter as much, and itll replicate the most common user non docker environment
  • If someone is going to deploy pymc in docker containers there probably smart enough to know they should build their own, and will know how to do it
  1. Make the smallest base image possible for the scope of this image
  • If other stuff is needed later we can add those dependencies in docker file, for instance multistage docker containers, or a series of base images that layer on top of each other. Docker is explicitly designed for this which is handy

So TLDR my vote is a minimal conda environment. All the other stuff can get added on later in containers that use this first container as a base image

@twiecki
Copy link
Member

twiecki commented Jun 2, 2022

Agree with Ravin, although I think using mamba is just better in every way, but it doesn't matter too much.

@twiecki twiecki modified the milestones: v4.0.0, v4.1.0 Jun 3, 2022
@danhphan
Copy link
Member

danhphan commented Jun 3, 2022

Hi,

I have successfully installed a docker image with conda (mamba). The blas warning is fixed. The docker image is pushed again on https://hub.docker.com/r/danhphan/pymc/tags

Can you check it out? If it is alright, I will incorporate it into the PyMC dockerfile.

The current conda installation uses the PyMC environment-dev-py39.yml file, and added libblas and mkl-service.

The image size is quite large though. It is 2.41 GB now, compared to 900MB for yesterday version with pip. I will try to tidy up and reduce the image size.

If we just want to build a minimal conda environment, can I just remove any packages related to test (pytest,...) and docs (sphinx,...)?

Also, just want to ask why we need to keep different .yml files such as environment-dev-py37.yml, environment-dev-py38.yml, and environment-dev-py39.yml? I checked and these files are only different on a python version. Should we only keep just one environment-dev.yml file, and install any python version (even 3.6 or 3.10, 3.11) by using conda command in dockerfile. Same things for environment-test.

@danhphan
Copy link
Member

danhphan commented Jun 3, 2022

This is the outputs when run docker in bash

danh@danh-ubuntu:~/WORK/codes/myprojects/pymc-docker$ docker run -it -v "$(pwd)":/home/jovyan --rm pymc:v4.0.0b6 bash
(base) jovyan@fce58958b188:~$ 
(base) jovyan@fce58958b188:~$ 
(base) jovyan@fce58958b188:~$ conda env list
# conda environments:
#
base                  *  /opt/conda
pymc-dev                 /opt/conda/envs/pymc-dev

(base) jovyan@fce58958b188:~$ conda activate pymc-dev
(pymc-dev) jovyan@fce58958b188:~$ 
(pymc-dev) jovyan@fce58958b188:~$ 
(pymc-dev) jovyan@fce58958b188:~$ ipython
Python 3.10.4 | packaged by conda-forge | (main, Mar 24 2022, 17:38:57) [GCC 10.3.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import pymc as pm
   ...: 
   ...: with pm.Model() as model:
   ...:     a = pm.Uniform("a", 1, 2)
   ...:     b = pm.Normal("b", 1 ,a)
   ...: 
   ...: model_diagram = pm.model_to_graphviz(model)
   ...: model_diagram.render("model_graph", format="png", cleanup=True)
   ...: print("Finished")
Finished

@twiecki
Copy link
Member

twiecki commented Jun 3, 2022

Did you run conda clean? You can also remove the base environment.

You can also use https://github.com/mamba-org/mamba#micromamba.

If we just want to build a minimal conda environment, can I just remove any packages related to test (pytest,...) and docs (sphinx,...)?

Yes.

Also, just want to ask why we need to keep different .yml files such as environment-dev-py37.yml, environment-dev-py38.yml, and environment-dev-py39.yml? I checked and these files are only different on a python version. Should we only keep just one environment-dev.yml file, and install any python version (even 3.6 or 3.10, 3.11) by using conda command in dockerfile. Same things for environment-test.

Yes for dev, no for test.

@danhphan
Copy link
Member

danhphan commented Jun 4, 2022

Hi, yes sure. After cleaning up, the docker image size now about 1.38GB, which I think is acceptable.

This is the latest Dockerfile, I will try to tidy up and reduce the image size a little bit more. Also, I am checking related scripts in https://github.com/pymc-devs/pymc/tree/main/scripts and will open a PR to incorporate the dockerfile into these scripts. If you have any suggestions, please let me know.

Will need to wait for this PR #5842 to be passed as well :)

Thanks.

@danhphan
Copy link
Member

danhphan commented Jun 9, 2022

Hi, docker images for PyMC version 4.0.0 on both CPUs and GPUs are ready now.

The Dockerfile for CPUs and GPUs (and guideline) have been updated on https://github.com/danhphan/pymc-docker

I'm going to integrate it into the PyMC repos this weekend. Thanks

@twiecki
Copy link
Member

twiecki commented Jun 9, 2022

@danhphan Excellent news!

@michaelosthege
Copy link
Member Author

Closing (mostly done), superseded by #5939

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted installation issues about dependencies or installation maintenance
Projects
None yet
Development

No branches or pull requests

10 participants