Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Integrating TPOT autoML library in Docker container from rocker/r-ver:X.X.X

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.

main.R

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)

Dockerfile

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"]

Build and Run the Docker image:

sudo docker build --no-cache -t tpot-demo .
sudo docker run tpot-demo
like image 536
Alex Yahiaoui Martinez Avatar asked Oct 22 '25 04:10

Alex Yahiaoui Martinez


1 Answers

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"
like image 67
Arthur Avatar answered Oct 23 '25 18:10

Arthur



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!