FEATURED · 精选文章

TileLang 容器化环境搭建:Docker 镜像构建与 GPU 容器运行全解

发布时间 / 2026/9/16 18:11:09
来源 / 创域科博编辑部
栏目 / 资讯中心
TileLang 容器化环境搭建:Docker 镜像构建与 GPU 容器运行全解 TileLang 容器化环境搭建Docker 镜像构建与 GPU 容器运行全解【免费下载链接】tilelangDomain-specific language designed to streamline the development of high-performance GPU/CPU/Accelerators kernels项目地址: https://gitcode.com/GitHub_Trending/ti/tilelangTileLang 的构建依赖一条较长的工具链定制版 TVM 子模块、CUTLASS 头文件、CUDA/HIP 工具链以及一套 C/CMake 构建环境。本文以仓库 docker/README.md 为主体完整讲解如何用docker/目录下的官方 Dockerfile 构建 TileLang 开发镜像、如何在 NVIDIA 与 AMD 两类 GPU 主机上以正确参数运行容器并结合各 Dockerfile 的逐行内容说明镜像内部实际安装了什么、为什么要这样装使你能在不破坏宿主环境的前提下获得一个可直接编译和调试 TileLang 核函数的可复现环境。一、为什么用 Docker一次构建消除依赖差异安装指南中给出的源码构建流程要求宿主机具备 Python 3.10、CMake 3.26.1见 pyproject.toml 中tool.scikit-build.cmake.version的约束、protobuf/z3/LLVM 等系统依赖并且 TileLang 依赖一个以 git submodule 形式内嵌在3rdparty/tvm下的定制 TVM——任何一个环节版本不对构建都可能失败。docker/目录的做法是把这些依赖固化进镜像基础镜像统一选用 NVIDIA 官方的 PyTorch 容器自带对应版本 CUDA 与 PyTorchAMD 侧选用 ROCm 官方 PyTorch 容器系统级编译依赖通过apt-get一次性安装在镜像构建阶段直接pip install -e .以可编辑模式编译 TileLang容器启动后即可直接import tilelang。按 docker/README.md 的说法镜像基于 Ubuntu 20.04 生态实际基础镜像为 NVIDIA/ROCm 官方 PyTorch 容器均为 Ubuntu 系包含运行实验所需的全部依赖官方目前仅维护 NVIDIA GPU 的 Dockerfile 为主流路径AMD 的 Dockerfile 同样已经提供在仓库中docker/Dockerfile.rocm。二、可用的 Dockerfile 与基础镜像对照docker/目录下共有 9 个 Dockerfile覆盖 CUDA 11.8 到 12.8 以及 ROCm 7.2。CUDA 系列 Dockerfile 之间除基础镜像版本外结构完全一致差异仅体现在第一行FROM因此下表可以直接作为选型依据Dockerfile基础镜像CUDA 版本由基础镜像决定Dockerfile.cu118nvcr.io/nvidia/pytorch:22.12-py311.8Dockerfile.cu120nvcr.io/nvidia/pytorch:23.01-py312.0Dockerfile.cu121nvcr.io/nvidia/pytorch:23.07-py312.1Dockerfile.cu123nvcr.io/nvidia/pytorch:24.02-py312.3Dockerfile.cu124nvcr.io/nvidia/pytorch:24.05-py312.4Dockerfile.cu125nvcr.io/nvidia/pytorch:24.07-py312.5Dockerfile.cu126nvcr.io/nvidia/pytorch:24.12-py312.6Dockerfile.cu128nvcr.io/nvidia/pytorch:25.01-py312.8Dockerfile.rocmrocm/pytorch:rocm7.2_ubuntu22.04_py3.10_pytorch_release_2.10.0ROCm 7.2选择原则以你宿主机驱动所支持的最高 CUDA 版本为准取不超过该版本的最接近的Dockerfile.cu*NVIDIA 驱动向后兼容较新驱动可运行较旧 CUDA 容器。三、构建 CUDA 镜像README 官方流程docker/README.md 给出的标准流程如下git clone使用官方仓库地址-f指定的 Dockerfile 换成你要的 CUDA 版本git clone --recursive https://github.com/tile-ai/tilelang TileLang cd TileLang/docker # 构建镜像可能需要一段时间官方测试机上约 10 分钟以上 # 将版本号 cu124 替换为你想用的版本 # AMD GPU 用户将 .cu** 替换为 .rocm docker build -t tilelang_workspace -f Dockerfile.cu124 .几个关键点--recursive不可省略。TileLang 依赖3rdparty/tvm定制 TVM 子模块与3rdparty/cutlass[安装指南](https://link.gitcode.com/i/6b7620ebfa49625c54fcde9acccfb47a)在源码构建一节中也明确强调了这一点。构建上下文是docker/目录CUDA 系列因为 Dockerfile 内通过git clone自行拉取源码上下文内容无关而 ROCm 系列 Dockerfile 用COPY .拷贝源码构建方式不同见第六节。构建耗时主要来自 TVM 相关 C 库与 TileLang 本体libtilelang的编译CPU 核数多的机器上会更快。镜像内部实际安装了什么以 Dockerfile.cu124 为例逐段解读各 CUDA 版本 Dockerfile 的结构与此一致FROM nvcr.io/nvidia/pytorch:24.05-py3 # 自带 CUDA 12.4 PyTorch 的官方镜像 WORKDIR /root # 1) 系统编译依赖构建工具 TileLang/TVM 需要的库 RUN apt-get update apt-get install -y --no-install-recommends \ build-essential git wget \ libgtest-dev libprotobuf-dev protobuf-compiler libgflags-dev libsqlite3-dev llvm-dev \ apt-get clean autoclean ... # 2) 安装 Miniconda (py310) 到 /opt/conda并把它加入 PATH RUN wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.5.2-0-Linux-x86_64.sh -O install_miniconda.sh \ bash install_miniconda.sh -b -p /opt/conda rm install_miniconda.sh ENV PATH/opt/conda/bin:${PATH} # 3) conda 安装 pip、cmake并用 conda-forge 的 libstdcxx-ng12 保证 C 运行时 RUN conda install pip cmake conda install -c conda-forge libstdcxx-ng12 conda clean --all # 4) 再补一轮 apt 的 Python 头文件与构建工具 RUN apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev # 5) 拉取源码含子模块并以可编辑模式安装 RUN git clone https://github.com/tile-ai/tilelang.git --recursive -b main TileLang \ cd TileLang USE_CUDA1 pip install -e . -v CMD bash两点值得注意USE_CUDA1是构建开关。TileLang 的 CMake 入口会读取该环境变量决定后端在 CMakeLists.txt 中USE_CUDA/USE_ROCM环境变量分别被映射为 CMake 的USE_CUDA/USE_ROCM开关未显式设置时Linux 上默认按能否找到 CUDA 头文件自动判断。**pip install -e .可编辑模式**意味着源码目录/root/TileLang就是 Python 包的安装位置。进入容器后修改tilelang/下的 Python 文件立即生效若改动 C 代码则需在build/目录下重新make/ninja这一开发者快速重编路径在 安装指南 的Faster Rebuild for Developers一节有详述。Dockerfile.cu128相比其他版本额外安装了cython3并执行pip install cython对应构建系统对 Cython 的依赖pyproject.toml中build-system.requires声明了cython3.1.0。四、运行 NVIDIA GPU 容器镜像构建完成后按 docker/README.md 启动docker run -it --cap-addSYS_ADMIN --networkhost --gpus all --cap-addSYS_PTRACE --shm-size4G --security-opt seccompunconfined --security-opt apparmorunconfined --name tilelang_test tilelang_workspace bash各参数作用参数作用-it交互式、分配 TTY启动后即进入 bash--gpus all通过 nvidia-container-toolkit 把宿主机所有 GPU 暴露进容器前提是宿主机已装 NVIDIA 驱动与 Docker GPU 运行时--shm-size4G扩大/dev/shm。TileLang 的 JIT 编译缓存默认在~/.tilelang/cache多线程编译与张量级测试会用到共享内存--networkhost使用宿主网络栈容器内pip install/git clone无需 NAT 端口映射--cap-addSYS_ADMIN/--security-opt seccompunconfined/--security-opt apparmorunconfined放宽容器安全限制避免 JIT 编译、动态链接等系统调用被默认 seccomp/apparmor 策略拦截--cap-addSYS_PTRACE允许 ptrace方便在容器内用 gdb 等调试工具--name tilelang_test命名容器便于docker exec -it tilelang_test bash再次进入进入容器后验证安装与 安装指南 中的验证命令一致python -c import tilelang; print(tilelang.__version__)如果后续要在容器内跑性能敏感的实验也可以参考 安装指南 Docker 一节的建议把--shm-size调大例如32g并用-v挂载宿主目录做代码/数据共享。五、ROCm 镜像不同的构建约定Dockerfile.rocm 与 CUDA 系列有两点本质区别构建上下文是仓库根目录因为该文件用COPY . /root/tilelang直接拷贝本地源码而不是git clone。文件内注释已写明构建方式# 在 tilelang 仓库根目录执行 docker build -f docker/Dockerfile.rocm -t tilelang_rocm:latest .这意味着你本地改过的源码会直接进入镜像适合定制构建。安装时临时移除 torch 依赖。TileLang 的 pyproject.toml 声明了torch为运行时依赖而基础镜像已内置 ROCm 版 PyTorch 2.10.0。为避免 pip 从 PyPI 重新拉取 CUDA 版 torch 覆盖容器内的 ROCm 版Dockerfile 在安装前把pyproject.toml中以torch开头的依赖行临时删掉、安装完成后再恢复RUN cd /root/tilelang \ cp pyproject.toml pyproject.toml.bak \ sed -i /^[[:space:]]*\torch/d pyproject.toml \ USE_ROCM1 USE_CUDA0 pip install -e . -v \ mv pyproject.toml.bak pyproject.toml此外ROCm Dockerfile 相比 CUDA 系列额外安装了rocm-dev rocm-libs hip-dev hipblas-dev rocblas-dev并设置了一组固定环境变量ENV USE_ROCM1 ENV USE_CUDA0 ENV ROCM_HOME/opt/rocm ENV HIP_PLATFORMamd ENV PYTORCH_ROCM_ARCHgfx90a;gfx942;gfx950;gfx1201;gfx1100其中USE_ROCM/USE_CUDA对应 CMakeLists.txt 中的环境变量开关PYTORCH_ROCM_ARCH列出了预编译 PyTorch 所覆盖的 GPU 架构如 MI300X 的gfx942。提示安装指南 同时说明仅仅运行TileLang 在 AMD GPU 上并不需要源码构建——PyPI 的 Linux x86_64 wheel 是 CUDAROCm 的 fat 构建pip install tilelang配合 ROCm 版 torch 即可只需宿主机提供hipccJIT 用。docker/Dockerfile.rocm面向的是开发 TileLang 本身或需要定制构建的场景该文档还附有一节在既有 ROCm 容器如 sglang 镜像内就地重编 TileLang 的完整步骤-DUSE_CUDAOFF -DUSE_ROCMON、--no-deps安装等遇到容器内构建问题可对照阅读。六、运行 AMD GPU 容器AMD 主机的启动命令与 NVIDIA 版只有设备暴露方式不同来自 docker/README.mddocker run -it --cap-addSYS_ADMIN --networkhost --device/dev/kfd --device/dev/dri \ --cap-addSYS_PTRACE --shm-size4G --security-opt seccompunconfined --security-opt apparmorunconfined \ --name tilelang_test tilelang_workspace bash关键差异是用--device/dev/kfd --device/dev/dri直接把 ROCm 的设备节点传入容器替代--gpus allROCm 不使用 nvidia-container-toolkit。容器内验证目标检测可执行python -c import tilelang; from tilelang.backend.target import determine_target; print(tilelang.__version__, determine_target(return_objectTrue))正常应输出hiptarget 及你的 GPU 架构例如mcpugfx942若 ROCm 不在/opt/rocm或 PATH 上存在多个 HIP 工具链需按 安装指南 的说明设置ROCM_PATH指向正确的 ROCm 前缀。七、实用建议与常见注意事项构建不需要 GPU 宿主。按 安装指南 的说法Docker 构建阶段只是编译宿主机没有 GPU 也可完成docker build然后把镜像docker save/load到有 GPU 的机器上使用。版本对应关系tilelang.__version__默认会嵌入 SDK 与 git 信息形如sdk.gitgit_hashsdk取cuda/rocm/metalCUDA 侧表现为cu124这类标签可用它确认容器内构建所用的工具链如需去掉该标签构建时设置NO_VERSION_LABELON详见 安装指南 的Install Configs一节构建期环境变量全集如USE_CUDA、USE_ROCM、USE_LLVM、TVM_ROOT、WITH_PIP_CUDA_TOOLCHAIN等也集中说明在该处。容器内二次安装依赖由于容器使用宿主网络且 conda 在 PATH 最前pip install的行为与宿主机环境完全隔离不会互相污染这正是容器化方案相对裸机安装的最大优势。镜像选择核对如果你只看到nvcc/CUDA 头文件相关报错先确认docker build -f指定的 Dockerfile 与你宿主驱动支持的 CUDA 版本匹配再确认启动命令带上了--gpus allNVIDIA或/dev/kfd、/dev/dri设备AMD。通过上述流程你可以在 docker/README.md 提供的官方 Dockerfile 基础上为 TileLang 搭建一个从编译到调试都开箱即用的 GPU 容器环境NVIDIA 侧选定Dockerfile.cu*构建后以--gpus all启动AMD 侧在仓库根目录以Dockerfile.rocm构建后以 KFD/DRI 设备节点启动并用import tilelang及 target 检测命令完成闭环验证。【免费下载链接】tilelangDomain-specific language designed to streamline the development of high-performance GPU/CPU/Accelerators kernels项目地址: https://gitcode.com/GitHub_Trending/ti/tilelang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻