Интеграция библиотеки TPOT autoML в контейнер Docker из rocker/r-ver:X.X.X

Я хотел бы встроить библиотеку TPOT autoML в контейнер Docker из rocker/r-ver:4.1.0. Чтобы воплотить мечту, я воспользовался пакетом R reticulate. Этот проект вдохновил меня на создание Dockerfile. Однако он не работает в среде R.

На мой взгляд, некоторые зависимости Debian отсутствуют. Я добавил libstdc++6 или gcc, но это тоже не работает. У кого-нибудь есть идея? Большое спасибо.

основной.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)

Докерфайл

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

Соберите и запустите образ Docker:

sudo docker build --no-cache -t tpot-demo .
sudo docker run tpot-demo

Какую конкретную ошибку вы получаете?

MrFlick 06.02.2023 22:43

Ну вот я запустил новый контейнер и получаю *** caught segfault *** address (nil), cause 'unknown'

Alex Yahiaoui Martinez 07.02.2023 08:26

могу воспроизвести эту ошибку, и иногда я получаю еще один Segfault, связанный с C. Распределение памяти в виртуальных средах и контейнерах может быть сложным, возможно, попробуйте снизить уровень абстракции (например, используя python непосредственно в докере).

user12256545 07.02.2023 14:42

Идея состоит в том, чтобы встроить TPOT autoML в Rscript. Я пробовал reticulate::source_python() но получил аналогичный результат. Тем не менее, библиотека хорошо работает с использованием собственного Python, как в примере, указанном в описании.

Alex Yahiaoui Martinez 07.02.2023 16:49

на моей машине TPOT также отлично работает, используя reticulate, но не из докера

user12256545 07.02.2023 17:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
5
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот Dockerfile работает для меня. Ты?

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

Я не знаю, какое изменение помогло. Возможно, вы используете образ rocker/tidyverse, чтобы установить devtools?

Я всегда ставил WORKDIR и заметил, что ты этого не сделал. Возможно, что?

Общий совет заключается в том, что docker exec — отличный инструмент для отладки Dockerfiles. Вы можете начать с базового образа (т.

Вот результат:

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

После многих попыток лучший способ запустить TPOT в Docker со средой R — это переключиться на FROM rocker/tidyverse. Хорошая работа Артур!

Alex Yahiaoui Martinez 11.02.2023 12:08

Другие вопросы по теме