Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
davidycliao committed Jan 30, 2025
1 parent f66ad4b commit 7e0558d
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 101 deletions.
93 changes: 53 additions & 40 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,53 @@ FROM rocker/r-ver:latest

# 系統依賴
RUN apt-get update && apt-get install -y \
python3-minimal \
python3-pip \
python3-venv \
libssl-dev \
gdebi-core \
wget \
sudo \
curl \
pkg-config \
git \
cmake \
build-essential \
g++
python3-minimal \
python3-pip \
python3-venv \
libssl-dev \
gdebi-core \
wget \
sudo \
curl \
pkg-config \
git \
cmake \
build-essential \
g++ \
protobuf-compiler \
libprotobuf-dev \
autoconf \
automake \
libtool \
# R 相關套件編譯依賴
libxml2-dev \
libcurl4-openssl-dev \
libssl-dev \
libfontconfig1-dev \
libharfbuzz-dev \
libfribidi-dev \
libfreetype6-dev \
libpng-dev \
libtiff5-dev \
libjpeg-dev

# 創建 rstudio 用戶
ARG USER=rstudio
ARG PASSWORD=rstudio123
RUN useradd -m $USER && \
echo "$USER:$PASSWORD" | chpasswd && \
adduser $USER sudo && \
echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
echo "$USER:$PASSWORD" | chpasswd && \
adduser $USER sudo && \
echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

# 安裝 RStudio Server
RUN wget https://download2.rstudio.org/server/jammy/amd64/rstudio-server-2023.12.1-402-amd64.deb && \
gdebi -n rstudio-server-2023.12.1-402-amd64.deb && \
rm rstudio-server-*.deb
gdebi -n rstudio-server-2023.12.1-402-amd64.deb && \
rm rstudio-server-*.deb

# 創建並配置 Python 虛擬環境
RUN python3 -m venv /opt/venv && \
chown -R $USER:$USER /opt/venv && \
chmod -R 775 /opt/venv
chown -R $USER:$USER /opt/venv && \
chmod -R 775 /opt/venv

# 設置環境變量
ENV PATH="/opt/venv/bin:$PATH"
Expand All @@ -41,36 +57,33 @@ ENV PYTHONPATH="/opt/venv/lib/python3.12/site-packages"

# 設置 R 環境配置
RUN mkdir -p /usr/local/lib/R/etc && \
echo "RETICULATE_PYTHON=/opt/venv/bin/python" >> /usr/local/lib/R/etc/Renviron.site && \
echo "options(reticulate.prompt = FALSE)" >> /usr/local/lib/R/etc/Rprofile.site
echo "RETICULATE_PYTHON=/opt/venv/bin/python" >> /usr/local/lib/R/etc/Renviron.site && \
echo "options(reticulate.prompt = FALSE)" >> /usr/local/lib/R/etc/Rprofile.site

# 創建並設置 R 庫目錄權限
RUN mkdir -p /usr/local/lib/R/site-library && \
chown -R $USER:$USER /usr/local/lib/R/site-library && \
chmod -R 775 /usr/local/lib/R/site-library
chown -R $USER:$USER /usr/local/lib/R/site-library && \
chmod -R 775 /usr/local/lib/R/site-library

# 安裝基本的 R 套件
RUN R -e 'install.packages(c("remotes", "reticulate", "devtools"), repos="https://cloud.r-project.org/", dependencies=TRUE)'

# 切換到 root 用戶安裝 Python 包
RUN /opt/venv/bin/pip install --no-cache-dir \
numpy==1.26.4 \
scipy==1.12.0 \
torch>=2.0.0 \
transformers>=4.30.0 \
flair>=0.11.3 \
sentencepiece>=0.1.99
'numpy==1.26.4' \
'scipy==1.12.0' \
'torch>=2.0.0' \
'transformers[sentencepiece]>=4.25.0,<5.0.0' \
'flair>=0.11.3'

# 切換到 rstudio 用戶安裝 R 包
# 切換到 rstudio 用戶
USER $USER
RUN R -e 'install.packages("reticulate", repos="https://cloud.r-project.org/", dependencies=TRUE)' && \
R -e 'if(require(reticulate)) { \
Sys.setenv(RETICULATE_PYTHON="/opt/venv/bin/python"); \
reticulate::use_python("/opt/venv/bin/python", required=TRUE); \
install.packages("remotes", repos="https://cloud.r-project.org/", dependencies=TRUE); \
remotes::install_github("davidycliao/flaiR", dependencies=TRUE) \
}'

# 設置工作目錄
WORKDIR /home/$USER

# 設置 R 環境
RUN R -e 'Sys.setenv(RETICULATE_PYTHON="/opt/venv/bin/python")' && \
R -e 'reticulate::use_python("/opt/venv/bin/python", required=TRUE)'

# 暴露 RStudio Server 端口
EXPOSE 8787

Expand Down
75 changes: 14 additions & 61 deletions R/zzz.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,75 +9,30 @@ NULL


### Add Version Constants ------------------------------------------------------
# .pkgenv$package_constants <- list(
# python_min_version = "3.9",
# python_max_version = "3.12",
# numpy_version = "1.26.4",
# scipy_version = "1.12.0",
# flair_min_version = "0.11.3",
# torch_version = "2.2.0",
# transformers_version = "4.37.2",
# gensim_version = "4.0.0",
# sentencepiece_version = "0.1.97",
# install_options = list(
# sentencepiece = "--no-deps"
# )
# )

.pkgenv$package_constants <- list(
# Python 版本限制
python_min_version = "3.9",
python_max_version = "3.12",

# 核心套件版本
# 核心依賴版本
numpy_version = "1.26.4",
scipy_version = "1.12.0",

# Flair 和主要 ML 套件版本
# 主要包版本
torch_version = "2.2.0",
transformers_version = "4.37.2", # 要改成 transformers[sentencepiece]
flair_min_version = "0.11.3",
torch_version = "2.2.0", # 符合 torch>=1.5.0,!=1.8
transformers_min_version = "4.25.0",
transformers_max_version = "5.0.0",

# NLP 相關套件
gensim_version = "4.0.0",
sentencepiece_version = "0.1.97",
tokenizers_min_version = "0.14.0",
tokenizers_max_version = "0.19.0",

# 其他必要套件最低版本
boto3_min_version = "1.20.27",
conllu_min_version = "4.0",
conllu_max_version = "5.0.0",
deprecated_min_version = "1.2.13",
ftfy_min_version = "6.1.0",
gdown_min_version = "4.4.0",
huggingface_hub_min_version = "0.10.0",
langdetect_min_version = "1.0.9",
lxml_min_version = "4.8.0",
matplotlib_min_version = "2.2.3",
more_itertools_min_version = "8.13.0",
mpld3_min_version = "0.3",
pptree_min_version = "3.1",
dateutil_min_version = "2.8.2",
pytorch_revgrad_min_version = "0.2.0",
regex_min_version = "2022.1.18",
scikit_learn_min_version = "1.0.2",
segtok_min_version = "1.5.11",
sqlitedict_min_version = "2.0.0",
tabulate_min_version = "0.8.10",
tqdm_min_version = "4.63.0",
transformer_vocab_min_version = "0.2.3",
wikipedia_api_min_version = "0.5.7",
bioc_min_version = "2.0.0",
bioc_max_version = "3.0.0",

# 安裝選項
install_options = list(
sentencepiece = "--no-deps",
transformers = "sentencepiece" # 表示安裝時要包含 sentencepiece

# 安裝設定
install_configs = list(
transformers = list(
name = "transformers[sentencepiece]",
version = "4.37.2",
options = "--no-deps"
)
)
)

### Add installation state tracking
.pkgenv$installation_state <- new.env(parent = emptyenv())

Expand Down Expand Up @@ -725,7 +680,7 @@ install_dependencies <- function(venv = NULL, max_retries = 3, quiet = FALSE) {
packages = c(
sprintf("numpy==%s", .pkgenv$package_constants$numpy_version),
sprintf("scipy==%s", .pkgenv$package_constants$scipy_version),
sprintf("transformers==%s", .pkgenv$package_constants$transformers_version)
sprintf("transformers[sentencepiece]>=%s,<5.0.0", .pkgenv$package_constants$transformers_version) # 修改這行
)
),
flair = list(
Expand Down Expand Up @@ -2089,8 +2044,6 @@ initialize_modules <- function() {

invisible(NULL)
}


# .onAttach <- function(libname, pkgname) {
# # 儲存原始環境設定
# original_python <- Sys.getenv("RETICULATE_PYTHON")
Expand Down

0 comments on commit 7e0558d

Please sign in to comment.