I would like to embed the TPOT autoML library in a Docker container from rocker/r-ver:4.1.0. To make dream come true, I used the R package reticulate. I was inspired by this project to build the Dockerfile. However, it doesn't work in R environment.
In my opinion, some debian dependencies are missing. I added libstdc++6 or gcc but it doesn't work too. Anybody have an idea? Many thanks.
X_train <- iris[,-5]
y_train <- iris$Species
tpot <- reticulate::import("tpot")
tp <- tpot$TPOTClassifier(generations = 1)
fit <- tp$fit(X_train, y_train)
score <- fit$predict(X_train)
print(score)
FROM rocker/r-ver:4.1.0
RUN R -q -e 'install.packages("remotes")'
RUN R -q -e 'remotes::install_github("rstudio/reticulate", upgrade = "never")'
RUN R -q -e 'reticulate::install_miniconda()'
RUN R -q -e 'reticulate::conda_install("r-reticulate", c("python=3.8.13", "numpy<1.24"))'
RUN R -q -e 'reticulate::conda_install("r-reticulate", "tpot", pip = TRUE)'
COPY main.R main.R
CMD ["Rscript", "main.R"]
sudo docker build --no-cache -t tpot-demo .
sudo docker run tpot-demo
This Dockerfile works for me. You?
FROM rocker/tidyverse
WORKDIR /tpot_test
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install git
RUN R -e "install.packages('reticulate')"
RUN R -e "reticulate::install_python()"
RUN R -e "reticulate::install_miniconda()"
RUN R -q -e 'install.packages("remotes")'
RUN R -q -e 'reticulate::conda_install("r-reticulate", c("python=3.8.13", "numpy<1.24"))'
RUN R -q -e 'reticulate::conda_install("r-reticulate", "tpot", pip = TRUE)'
COPY main.R main.R
CMD ["Rscript", "main.R"]
I don't know what change did the trick. Perhaps using the rocker/tidyverse image so that devtools gets installed?
I've always set a WORKDIR and I notice you didn't. Perhaps that?
A general piece of advice is that docker exec is a great tool for debugging Dockerfiles. You can start from a base image (i.e. rocker/tidyverse), docker exec into it, test commands one by one until you can get the whole sequence to work, and then code this sequence to the Dockerfile.
Here is the output:
/root/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/tpot/builtins/__init__.py:36: UserWarning: Warning: optional dependency `torch` is not available. - skipping import of NN models.
warnings.warn("Warning: optional dependency `torch` is not available. - skipping import of NN models.")
[1] "setosa" "setosa" "setosa" "setosa" "setosa"
[6] "setosa" "setosa" "setosa" "setosa" "setosa"
[11] "setosa" "setosa" "setosa" "setosa" "setosa"
[16] "setosa" "setosa" "setosa" "setosa" "setosa"
[21] "setosa" "setosa" "setosa" "setosa" "setosa"
[26] "setosa" "setosa" "setosa" "setosa" "setosa"
[31] "setosa" "setosa" "setosa" "setosa" "setosa"
[36] "setosa" "setosa" "setosa" "setosa" "setosa"
[41] "setosa" "setosa" "setosa" "setosa" "setosa"
[46] "setosa" "setosa" "setosa" "setosa" "setosa"
[51] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[56] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[61] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[66] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[71] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[76] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[81] "versicolor" "versicolor" "versicolor" "virginica" "versicolor"
[86] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[91] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[96] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[101] "virginica" "virginica" "virginica" "virginica" "virginica"
[106] "virginica" "virginica" "virginica" "virginica" "virginica"
[111] "virginica" "virginica" "virginica" "virginica" "virginica"
[116] "virginica" "virginica" "virginica" "virginica" "virginica"
[121] "virginica" "virginica" "virginica" "virginica" "virginica"
[126] "virginica" "virginica" "virginica" "virginica" "virginica"
[131] "virginica" "virginica" "virginica" "versicolor" "virginica"
[136] "virginica" "virginica" "virginica" "virginica" "virginica"
[141] "virginica" "virginica" "virginica" "virginica" "virginica"
[146] "virginica" "virginica" "virginica" "virginica" "virginica"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With