一、TensorRT-LLM有三種安裝方式,從簡單到難
1.NGC上的預構建發布容器進行部署,見《tensorrt-llm0.20.0離線部署DeepSeek-R1-Distill-Qwen-32B》。
2.通過pip進行部署。
3.從源頭構建再部署。
? ? ? ?在實際開發中,我們常常面臨這樣的場景:本地筆記本為 Windows 系統,雖然可以訪問 GitHub,但受限于硬件性能,編譯大型項目(如 TensorRT-LLM)耗時過長;而公司或實驗室提供的 Linux 服務器性能強勁,適合編譯任務,但卻因網絡策略限制無法連接外網,尤其是無法訪問 GitHub。
? ? ? 為了充分利用服務器的高性能并繞過網絡限制,本文將分享一種高效、可行的編譯方案:在本地準備依賴資源,通過中轉方式將代碼和依賴上傳至服務器,完成編譯構建。
二、在能連接github的服務器中,下載源代碼
2.1下載源代碼
#git clone https://github.com/NVIDIA/TensorRT-LLM.git
上傳到服務器/home/TensorRT-LLM
2.2下載cmake和mpi4py
https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz
https://github.com/mpi4py/mpi4py/archive/refs/tags/3.1.5.tar.gz
上傳到服務器/home/TensorRT-LLM/docker/context,如果文件夾不存在,則創建。
2.3修改Dockerfile.multi文件
增加如下兩行代碼:
COPY docker/context/cmake.tar.gz /tmp/cmake-3.30.2-linux-x86_64.tar.gz
# Install mpi4py
COPY docker/context/mpi4py-3.1.5.tar.gz ?/tmp/mpi4py-3.1.5.tar.gz
2.4修改install_cmake.sh文件
注釋下面兩行或刪除。
路徑:/home/TensorRT-LLM/docker/common/install_cmake.sh
#RELEASE_URL_CMAKE=${GITHUB_URL}/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE_NAME}.tar.gz
#wget --no-verbose --timeout=180 --tries=3 ${RELEASE_URL_CMAKE} -P /tmp
2.5修改install_mpi4py.sh文件
路徑:/home/TensorRT-LLM/docker/common/install_mpi4py.sh
將curl -L ${RELEASE_URL} | tar -zx -C "$TMP_DIR"
改成
tar -zxf /tmp/mpi4py-3.1.5.tar.gz -C "$TMP_DIR"
2.6修改scripts/build_wheel.py文件
路徑:/home/TensorRT-LLM/scripts/build_wheel.py
將下面的代碼刪除或注釋
# ? ?with open(project_dir / ".gitmodules", "r") as submodules_f:
# ? ? ? ?submodules = [
# ? ? ? ? ? ?l.split("=")[1].strip() for l in submodules_f.readlines()
# ? ? ? ? ? ?if "path = " in l
# ? ? ? ?]
# ? ?if any(not (project_dir / submodule / ".git").exists()
# ? ? ? ? ? for submodule in submodules):
# ? ? ? ?build_run('git submodule update --init --recursive')
三、編譯開發環境
構建腳本有7個階段,詳見《TensorRT-LLM.V1.1.0rc1:Dockerfile.multi文件解讀》。
本次構建開發環境devel??
docker buildx build --target devel ?--load --platform linux/amd64 ??-f docker/Dockerfile.multi ?-t tensorrt-llm:1.1.0rc0 .
3.1參數解釋
?--target devel
表示只構建多階段 Dockerfile 中名為 devel 的構建階段(stage)。
使用 --target devel 意味著:只構建到 devel 階段為止,不繼續構建后面的 runtime 等階段。
這通常用于開發調試,因為 devel 鏡像包含編譯工具、源碼等,體積大但便于開發。
--load
將構建好的鏡像加載到本地 Docker 鏡像庫中(即可以通過 docker images 看到)。
因為 buildx 默認使用 docker-container 或 remote 構建器時,結果不會自動進入本地鏡像列表。
--platform linux/amd64
指定目標架構為 x86_64(即 amd64) 的 Linux 系統。
即使你在 ARM(如 Apple M1/M2)機器上運行,也會通過 QEMU 模擬構建出 amd64 的鏡像。
常見可選值:
linux/amd64(Intel/AMD 64位)
linux/arm64(ARM 64位,如 M1/M2)
也可以指定多個:--platform linux/amd64,linux/arm64
-f docker/Dockerfile.multi
指定使用的 Dockerfile 文件路徑為:項目根目錄下的 docker/Dockerfile.multi。
表明這是一個多階段構建(multi-stage) 的 Dockerfile,可能包含多個 FROM 階段,用于分離開發、運行環境等。
?-t tensorrt-llm:1.1.0rc0
給構建出的鏡像打標簽(tag):
倉庫名:tensorrt-llm
標簽名:1.1.0rc0(表示版本 1.1.0 的 release candidate 0)
#docker images查看