[中文版|English]
💫 NVIDIA & AMD nvidia & amd#
基于 Triton 3.1/3.2/3.3/3.4/3.5/3.6,x64
1. 构建和运行环境#
1.1 使用镜像(适用于 Triton 3.6)#
如果您的网络连接可用,则无需执行后续的步骤 1.x,因为依赖项将在构建过程中自动获取。
# 方案 A:docker pull(35.5GB)
IMAGE=harbor.baai.ac.cn/flagtree/flagtree-py312-torch2.8.0a0_5228986c39.nv25.05-ubuntu24.04:202605-3.6-base
docker pull ${IMAGE}
# 方案 B:docker load(16GB)
IMAGE=flagtree-py312-torch2.8.0a0_5228986c39.nv25.05-ubuntu24.04:202605-3.6-base
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/flagtree-py312-torch2.8.0a0_5228986c39.nv25.05-ubuntu24.04.202605-3.6-base.tar.gz
docker load -i flagtree-py312-torch2.8.0a0_5228986c39.nv25.05-ubuntu24.04.202605-3.6-base.tar.gz
CONTAINER=flagtree-dev-xxx
docker run -dit \
--net=host --uts=host --ipc=host --privileged \
--ulimit stack=67108864 --ulimit memlock=-1 \
--security-opt seccomp=unconfined \
--gpus=all \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data -v /home:/home -v /tmp:/tmp \
-w /root --name ${CONTAINER} ${IMAGE} bash
docker exec -it ${CONTAINER} /bin/bash
1.2 手动下载 LLVM#
cd ${YOUR_LLVM_DOWNLOAD_DIR}
# 适用于 Triton 3.1
wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-10dc3a8e-ubuntu-x64.tar.gz
tar zxvf llvm-10dc3a8e-ubuntu-x64.tar.gz
export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-10dc3a8e-ubuntu-x64
# 适用于 Triton 3.2
wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-86b69c31-ubuntu-x64.tar.gz
tar zxvf llvm-86b69c31-ubuntu-x64.tar.gz
export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-86b69c31-ubuntu-x64
# 适用于 Triton 3.3
wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-a66376b0-ubuntu-x64.tar.gz
tar zxvf llvm-a66376b0-ubuntu-x64.tar.gz
export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-a66376b0-ubuntu-x64
# 适用于 Triton 3.4
wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-8957e64a-ubuntu-x64.tar.gz
tar zxvf llvm-8957e64a-ubuntu-x64.tar.gz
export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-8957e64a-ubuntu-x64
# 适用于 Triton 3.5
wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-7d5de303-ubuntu-x64.tar.gz
tar zxvf llvm-7d5de303-ubuntu-x64.tar.gz
export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-7d5de303-ubuntu-x64
# 适用于 Triton 3.6(方案 A)
wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-f6ded0be-ubuntu-x64.tar.gz
tar zxvf llvm-f6ded0be-ubuntu-x64.tar.gz
export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-f6ded0be-ubuntu-x64
# 适用于所有版本
export LLVM_INCLUDE_DIRS=$LLVM_SYSPATH/include
export LLVM_LIBRARY_DIR=$LLVM_SYSPATH/lib
# 适用于 Triton 3.6(方案 B,推荐)
RES="--index-url=https://resource.flagos.net/repository/flagos-pypi-hosted/simple"
python3.12 -m pip install mlir $RES
1.3 手动下载 Triton 依赖项#
Triton 依赖项已在镜像中下载并安装。 如果您不需要从源码构建 FlagTree 或 Triton,则无需下载 Triton 依赖项。
cd ${YOUR_CODE_DIR}/FlagTree
# 适用于 Triton 3.1(x64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.1.x-linux-x64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.1.x-linux-x64.tar.gz
# 适用于 Triton 3.2(x64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.2.x-linux-x64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.2.x-linux-x64.tar.gz
# 适用于 Triton 3.2(aarch64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.2.x-linux-aarch64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.2.x-linux-aarch64.tar.gz
# 适用于 Triton 3.3(x64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.3.x-linux-x64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.3.x-linux-x64.tar.gz
# 适用于 Triton 3.4(x64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.4.x-linux-x64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.4.x-linux-x64.tar.gz
# 适用于 Triton 3.5(x64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.5.x-linux-x64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.5.x-linux-x64.tar.gz
# 适用于 Triton 3.6(x64)
wget https://baai-cp-web.ks3-cn-beijing.ksyuncs.com/trans/build-deps-triton_3.6.x-linux-x64.tar.gz
sh python/scripts/unpack_triton_build_deps.sh ./build-deps-triton_3.6.x-linux-x64.tar.gz
执行上述脚本后,原始的 ~/.triton 目录将被重命名,并创建一个新的 ~/.triton 目录来存储预下载的包。 请注意,脚本在执行过程中会提示手动确认。
2. 安装命令#
2.1 免源码安装#
# 注意:首先安装 PyTorch,然后执行以下命令
python3 -m pip uninstall -y triton # 重复此命令直到完全卸载
RES="--index-url=https://resource.flagos.net/repository/flagos-pypi-hosted/simple"
python3.12 -m pip install flagtree===0.6.0rc1 $RES
安装 flagtree 后,您可以通过以下命令检查:
python3 -m pip show flagtree
2.2 从源码构建#
apt update; apt install zlib1g zlib1g-dev libxml2 libxml2-dev nlohmann-json3-dev
cd ${YOUR_CODE_DIR}/FlagTree
python3 -m pip install -r python/requirements.txt
cd python # 对于 Triton 3.1、3.2、3.3,需要进入 python 目录进行构建
git checkout main # 适用于 Triton 3.1
git checkout -b triton_v3.2.x origin/triton_v3.2.x # 适用于 Triton 3.2
git checkout -b triton_v3.3.x origin/triton_v3.3.x # 适用于 Triton 3.3
git checkout -b triton_v3.4.x origin/triton_v3.4.x # 适用于 Triton 3.4
git checkout -b triton_v3.5.x origin/triton_v3.5.x # 适用于 Triton 3.5
git checkout -b triton_v3.6.x origin/triton_v3.6.x # 适用于 Triton 3.6
unset FLAGTREE_BACKEND
MAX_JOBS=32 python3 -m pip install . --no-build-isolation -v
# 如果之后需要构建其他后端,应清除 LLVM 相关的环境变量
unset LLVM_SYSPATH LLVM_INCLUDE_DIRS LLVM_LIBRARY_DIR
3. 测试和验证#
参考 nvidia 后端测试
常见问题#
问:安装后运行程序报错:找不到 GLIBC 或 GLIBCXX 版本#
答:检查您环境中 libc.so.6 和 libstdc++.so.6.0.30 支持的 GLIBC / GLIBCXX 版本:
strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 | grep GLIBCXX
如果所需的 GLIBC / GLIBCXX 版本已受支持,您也可以尝试:
export LD_PRELOAD="/lib/x86_64-linux-gnu/libc.so.6" # 如果找不到 GLIBC
export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30" # 如果找不到 GLIBCXX
export LD_PRELOAD="/lib/x86_64-linux-gnu/libc.so.6 \
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30" # 如果 GLIBC 和 GLIBCXX 都找不到