puruan/Dockerfile
2026-02-04 11:05:11 +08:00

76 lines
2.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 1. 基础镜像:使用你验证过的 CUDA 12.4 开发版
FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04
# 环境变量
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive
# 针对 RTX 50 系列的架构优化 (Blackwell = sm_100/sm_120这里涵盖所有新架构)
ENV TORCH_CUDA_ARCH_LIST="9.0;10.0+PTX"
# 2. 安装系统工具 (增加了 ffmpeg 用于视频处理)
RUN apt-get update && apt-get install -y \
python3.10 \
python3-pip \
git \
wget \
ffmpeg \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
build-essential \
ninja-build \
&& rm -rf /var/lib/apt/lists/*
# 建立 python 软链接,方便直接用 python 命令
RUN ln -s /usr/bin/python3.10 /usr/bin/python
WORKDIR /app
# 3. 升级 pip (使用清华源加速)
RUN python3 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=100
# 4. 🔥 核心修复:安装适配 RTX 50 系列的 PyTorch (cu128)
# 这是解决 "sm_120 is not compatible" 的关键一步
RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 --default-timeout=100
# 5. 安装 SAM3 依赖 (包含之前报错缺少的 decord, pycocotools)
# 移除了 transformers 版本限制,使用最新版适配 SAM3
RUN pip install \
opencv-python-headless \
matplotlib \
jupyter \
jupyterlab \
ipympl \
pyyaml \
tqdm \
hydra-core \
iopath \
pillow \
networkx \
scipy \
pandas \
timm \
einops \
transformers \
tokenizers \
decord \
pycocotools \
-i https://pypi.tuna.tsinghua.edu.cn/simple \
--default-timeout=100
# 6. 拉取 SAM3 代码
RUN git clone https://github.com/facebookresearch/sam3.git sam3_code
# 7. 安装 SAM3 包
WORKDIR /app/sam3_code
RUN pip install -e .
# 8. 设置工作目录和入口
WORKDIR /app
EXPOSE 8888
# 默认保持运行,方便进入终端调试
CMD ["/bin/bash", "-c", "jupyter lab --ip=0.0.0.0 --port=8888 --allow-root --no-browser --NotebookApp.token='sam3'"]