Bootstrap python3.10 inside setup_server.sh

A freshly recreated ubuntu:24.04 container has no python3.10 yet, so the
script now installs deadsnakes + python3.10 + pip when missing. Step
numbering bumped to 1..8 accordingly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
main
songhyeonsu 1 month ago
parent b94c048526
commit ecf8d8cc53

@ -22,8 +22,19 @@ PY=python3.10
PIP="$PY -m pip" PIP="$PY -m pip"
PIP_OPTS="--quiet --root-user-action=ignore" PIP_OPTS="--quiet --root-user-action=ignore"
echo "[1/7] python / paddle 확인" echo "[1/8] python3.10 + pip (deadsnakes PPA)"
if ! command -v $PY >/dev/null 2>&1; then
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -q software-properties-common ca-certificates curl
add-apt-repository -y ppa:deadsnakes/ppa
apt-get update -qq
apt-get install -y -q python3.10 python3.10-venv python3.10-dev libgomp1
curl -sS https://bootstrap.pypa.io/get-pip.py | $PY
fi
$PY --version $PY --version
echo "[2/8] paddle 확인"
if ! $PY -c 'import paddle; assert paddle.is_compiled_with_cuda()' 2>/dev/null; then if ! $PY -c 'import paddle; assert paddle.is_compiled_with_cuda()' 2>/dev/null; then
echo " paddle 미설치 또는 CUDA 비호환. sm_120 wheel 설치..." echo " paddle 미설치 또는 CUDA 비호환. sm_120 wheel 설치..."
WHL=$(ls "$WHEEL_DIR"/paddlepaddle_gpu-*-cp310-*linux_x86_64.whl 2>/dev/null | head -1) WHL=$(ls "$WHEEL_DIR"/paddlepaddle_gpu-*-cp310-*linux_x86_64.whl 2>/dev/null | head -1)
@ -35,18 +46,18 @@ if ! $PY -c 'import paddle; assert paddle.is_compiled_with_cuda()' 2>/dev/null;
fi fi
$PY -c 'import paddle; print(" paddle:", paddle.__version__, "cuda:", paddle.is_compiled_with_cuda())' $PY -c 'import paddle; print(" paddle:", paddle.__version__, "cuda:", paddle.is_compiled_with_cuda())'
echo "[2/7] OpenCV 시스템 의존성 (libgl 등)" echo "[3/8] OpenCV 시스템 의존성 (libgl 등)"
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
apt-get install -y -q libgl1 libglib2.0-0 libsm6 libxext6 libxrender1 wget git apt-get install -y -q libgl1 libglib2.0-0 libsm6 libxext6 libxrender1 wget git
echo "[3/7] PaddleOCR clone (release/2.7)" echo "[4/8] PaddleOCR clone (release/2.7)"
if [ ! -d "$PADDLEOCR_DIR" ]; then if [ ! -d "$PADDLEOCR_DIR" ]; then
git clone --depth 1 -b release/2.7 https://github.com/PaddlePaddle/PaddleOCR.git "$PADDLEOCR_DIR" git clone --depth 1 -b release/2.7 https://github.com/PaddlePaddle/PaddleOCR.git "$PADDLEOCR_DIR"
fi fi
cd "$PADDLEOCR_DIR" cd "$PADDLEOCR_DIR"
echo " PaddleOCR @$(git rev-parse --short HEAD)" echo " PaddleOCR @$(git rev-parse --short HEAD)"
echo "[4/7] PaddleOCR Python 의존성 (한 줄씩, 충돌 패키지는 skip)" echo "[5/8] PaddleOCR Python 의존성 (한 줄씩, 충돌 패키지는 skip)"
# paddle은 이미 wheel로, blinker는 system pkg, opencv는 numpy2 비호환 → 제외 후 별도 설치 # paddle은 이미 wheel로, blinker는 system pkg, opencv는 numpy2 비호환 → 제외 후 별도 설치
grep -viE '^(paddlepaddle|paddleocr|blinker|opencv-)' requirements.txt > /tmp/kr_lp_req.txt || true grep -viE '^(paddlepaddle|paddleocr|blinker|opencv-)' requirements.txt > /tmp/kr_lp_req.txt || true
while IFS= read -r line; do while IFS= read -r line; do
@ -54,7 +65,7 @@ while IFS= read -r line; do
$PIP install $PIP_OPTS --ignore-installed "$line" 2>/dev/null || echo " skip: $line" $PIP install $PIP_OPTS --ignore-installed "$line" 2>/dev/null || echo " skip: $line"
done < /tmp/kr_lp_req.txt done < /tmp/kr_lp_req.txt
echo "[5/7] OpenCV (numpy2 호환) + numpy<2 (PaddleOCR release/2.7 호환성) + wandb + cuDNN 9.17" echo "[6/8] OpenCV (numpy2 호환) + numpy<2 (PaddleOCR release/2.7 호환성) + wandb + cuDNN 9.17"
$PIP install $PIP_OPTS 'opencv-python>=4.10' 'opencv-contrib-python>=4.10' wandb $PIP install $PIP_OPTS 'opencv-python>=4.10' 'opencv-contrib-python>=4.10' wandb
# paddle sm_120 wheel은 cuDNN 9.17 빌드라 paddle deps의 9.13.0.50을 9.17로 upgrade 필요. # paddle sm_120 wheel은 cuDNN 9.17 빌드라 paddle deps의 9.13.0.50을 9.17로 upgrade 필요.
# (안 하면 conv2d에서 cublasLtCreate 심볼 로드 실패 → process abort) # (안 하면 conv2d에서 cublasLtCreate 심볼 로드 실패 → process abort)
@ -63,7 +74,7 @@ $PIP install $PIP_OPTS --upgrade 'nvidia-cudnn-cu13>=9.17,<9.18'
# paddle 3.3.0.dev는 numpy 1.x도 호환. # paddle 3.3.0.dev는 numpy 1.x도 호환.
$PIP install $PIP_OPTS 'numpy<2' --force-reinstall $PIP install $PIP_OPTS 'numpy<2' --force-reinstall
echo "[6/7] PGNet step1 pretrain weight 다운로드 + import smoke test" echo "[7/8] PGNet step1 pretrain weight 다운로드 + import smoke test"
mkdir -p "$PRETRAIN_DIR" mkdir -p "$PRETRAIN_DIR"
cd "$PRETRAIN_DIR" cd "$PRETRAIN_DIR"
if [ ! -d train_step1 ]; then if [ ! -d train_step1 ]; then
@ -82,7 +93,7 @@ from ppocr.data.imaug.pg_process import PGProcessTrain
print(' PGNet modules import OK') print(' PGNet modules import OK')
" "
echo "[7/7] dict / config symlink → PaddleOCR 트리" echo "[8/8] dict / config symlink → PaddleOCR 트리"
ln -sf "$KR_LP_DIR/dict/kr_lp_dict.txt" "$PADDLEOCR_DIR/ppocr/utils/kr_lp_dict.txt" ln -sf "$KR_LP_DIR/dict/kr_lp_dict.txt" "$PADDLEOCR_DIR/ppocr/utils/kr_lp_dict.txt"
mkdir -p "$PADDLEOCR_DIR/configs/e2e" mkdir -p "$PADDLEOCR_DIR/configs/e2e"
ln -sf "$KR_LP_DIR/configs/kr_lp_pgnet.yml" "$PADDLEOCR_DIR/configs/e2e/kr_lp_pgnet.yml" ln -sf "$KR_LP_DIR/configs/kr_lp_pgnet.yml" "$PADDLEOCR_DIR/configs/e2e/kr_lp_pgnet.yml"

Loading…
Cancel
Save