From 378d59a366a748611eafc1fae46480e4a7d63912 Mon Sep 17 00:00:00 2001 From: Kevin Pedro Date: Tue, 12 Aug 2025 18:49:48 -0500 Subject: [PATCH 1/5] arg to disable docker cache --- build.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/build.py b/build.py index 716b227c42..29f44afb7e 100755 --- a/build.py +++ b/build.py @@ -1787,6 +1787,11 @@ def create_docker_build_script(script_name, container_install_dir, container_ci_ "--pull", ] + if FLAGS.no_container_cache: + baseargs += [ + "--no-cache", + ] + # Windows docker runs in a VM and memory needs to be specified # explicitly (at least for some configurations of docker). if target_platform() == "windows": @@ -2467,6 +2472,12 @@ def enable_all(): required=False, help="Do not use Docker --pull argument when building container.", ) + parser.add_argument( + "--no-container-cache", + action="store_true", + required=False, + help="Use Docker --no-cache argument when building container.", + ) parser.add_argument( "--container-memory", default=None, From e57b755cd9c75caad56030a827c58b14d3d97ed1 Mon Sep 17 00:00:00 2001 From: Kevin Pedro Date: Tue, 12 Aug 2025 19:18:09 -0500 Subject: [PATCH 2/5] add arg to override default repo tag for all dependencies --- build.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build.py b/build.py index 29f44afb7e..9c49fa4013 100755 --- a/build.py +++ b/build.py @@ -2738,6 +2738,12 @@ def enable_all(): default=DEFAULT_TRITON_VERSION_MAP["upstream_container_version"], help="This flag sets the upstream container version for Triton Inference Server to be built. Default: the latest released version.", ) + parser.add_argument( + "--default-repo-tag", + required=False, + default=None, + help="Override the calculated default-repo-tag value", + ) parser.add_argument( "--ort-version", required=False, @@ -2866,6 +2872,8 @@ def enable_all(): cver = FLAGS.triton_container_version if not cver.endswith("dev"): default_repo_tag = "r" + cver + if FLAGS.default_repo_tag: + default_repo_tag = FLAGS.default_repo_tag log("default repo-tag: {}".format(default_repo_tag)) # For other versions use the TRITON_VERSION_MAP unless explicitly From ce53f4317ed7911b19bb9d13cee78454f6159fb6 Mon Sep 17 00:00:00 2001 From: Kevin Pedro Date: Tue, 19 Aug 2025 16:40:49 -0500 Subject: [PATCH 3/5] add explicit buildbase option to use temporary container for backend builds --- build.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/build.py b/build.py index 9c49fa4013..22f157fc41 100755 --- a/build.py +++ b/build.py @@ -688,17 +688,17 @@ def onnxruntime_cmake_args(images, library_paths): ) if target_platform() == "windows": - if "base" in images: + if "buildbase" in images: cargs.append( cmake_backend_arg( - "onnxruntime", "TRITON_BUILD_CONTAINER", None, images["base"] + "onnxruntime", "TRITON_BUILD_CONTAINER", None, images["buildbase"] ) ) else: - if "base" in images: + if "buildbase" in images: cargs.append( cmake_backend_arg( - "onnxruntime", "TRITON_BUILD_CONTAINER", None, images["base"] + "onnxruntime", "TRITON_BUILD_CONTAINER", None, images["buildbase"] ) ) else: @@ -754,17 +754,17 @@ def openvino_cmake_args(): ) ] if target_platform() == "windows": - if "base" in images: + if "buildbase" in images: cargs.append( cmake_backend_arg( - "openvino", "TRITON_BUILD_CONTAINER", None, images["base"] + "openvino", "TRITON_BUILD_CONTAINER", None, images["buildbase"] ) ) else: - if "base" in images: + if "buildbase" in images: cargs.append( cmake_backend_arg( - "openvino", "TRITON_BUILD_CONTAINER", None, images["base"] + "openvino", "TRITON_BUILD_CONTAINER", None, images["buildbase"] ) ) else: @@ -801,9 +801,9 @@ def dali_cmake_args(): def fil_cmake_args(images): cargs = [cmake_backend_enable("fil", "TRITON_FIL_DOCKER_BUILD", True)] - if "base" in images: + if "buildbase" in images: cargs.append( - cmake_backend_arg("fil", "TRITON_BUILD_CONTAINER", None, images["base"]) + cmake_backend_arg("fil", "TRITON_BUILD_CONTAINER", None, images["buildbase"]) ) else: cargs.append( @@ -2591,6 +2591,12 @@ def enable_all(): required=False, help='Use specified Docker image in build as ,. can be "base", "gpu-base", or "pytorch".', ) + parser.add_argument( + "--use-buildbase", + default=False, + action="store_true", + help='Use local temporary "buildbase" Docker image as "base" image to build backends', + ) parser.add_argument( "--enable-all", @@ -2945,6 +2951,11 @@ def enable_all(): ) log('image "{}": "{}"'.format(parts[0], parts[1])) images[parts[0]] = parts[1] + if FLAGS.use_buildbase: + images["buildbase"] = "tritonserver_buildbase" + else: + if "base" in images: + images["buildbase"] = images["base"] # Initialize map of library paths for each backend. library_paths = {} From 82eac337d5aee1629f87fd020639e27936311e73 Mon Sep 17 00:00:00 2001 From: Kevin Pedro Date: Thu, 14 Aug 2025 16:27:02 -0500 Subject: [PATCH 4/5] allow changing github org for individual backends --- build.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/build.py b/build.py index 22f157fc41..ce76ecfc8d 100755 --- a/build.py +++ b/build.py @@ -32,6 +32,7 @@ import os.path import pathlib import platform +import re import stat import subprocess import sys @@ -2062,14 +2063,14 @@ def tensorrtllm_postbuild(cmake_script, repo_install_dir, tensorrtllm_be_dir): def backend_build( be, cmake_script, - tag, + tag_org, build_dir, install_dir, - github_organization, images, components, library_paths, ): + tag, github_organization = tag_org repo_build_dir = os.path.join(build_dir, be, "build") repo_install_dir = os.path.join(build_dir, be, "install") @@ -2082,8 +2083,8 @@ def backend_build( if be == "tensorrtllm": github_organization = ( "https://github.com/NVIDIA" - if "triton-inference-server" in FLAGS.github_organization - else FLAGS.github_organization + if "triton-inference-server" in github_organization + else github_organization ) repository_name = "TensorRT-LLM" cmake_script.gitclone(repository_name, tag, be, github_organization) @@ -2132,11 +2133,11 @@ def backend_build( def backend_clone( be, clone_script, - tag, + tag_org, build_dir, install_dir, - github_organization, ): + tag, github_organization = tag_org clone_script.commentln(8) clone_script.comment(f"'{be}' backend") clone_script.comment("Delete this section to remove backend from build") @@ -2676,7 +2677,7 @@ def enable_all(): "--backend", action="append", required=False, - help='Include specified backend in build as [:]. If starts with "pull/" then it refers to a pull-request reference, otherwise indicates the git tag/branch to use for the build. If the version is non-development then the default is the release branch matching the container version (e.g. version YY.MM -> branch rYY.MM); otherwise the default is "main" (e.g. version YY.MMdev -> branch main).', + help='Include specified backend in build as [:][:]. If starts with "pull/" then it refers to a pull-request reference, otherwise indicates the git tag/branch to use for the build. If the version is non-development then the default is the release branch matching the container version (e.g. version YY.MM -> branch rYY.MM); otherwise the default is "main" (e.g. version YY.MMdev -> branch main). allows using a forked repository instead of the default --github-organization value.', ) parser.add_argument( "--repo-tag", @@ -2899,11 +2900,14 @@ def enable_all(): # Initialize map of backends to build and repo-tag for each. backends = {} for be in FLAGS.backend: - parts = be.split(":") + pattern = r"(https?:\/\/[^\s:]+)|:" + parts = list(filter(None,re.split(pattern, be))) if len(parts) == 1: parts.append(default_repo_tag) - log('backend "{}" at tag/branch "{}"'.format(parts[0], parts[1])) - backends[parts[0]] = parts[1] + if len(parts) == 2: + parts.append(FLAGS.github_organization) + log('backend "{}" at tag/branch "{}" from org "{}"'.format(parts[0], parts[1], parts[2])) + backends[parts[0]] = parts[1:] if "vllm" in backends: if "python" not in backends: @@ -3114,7 +3118,6 @@ def enable_all(): backends[be], script_build_dir, script_install_dir, - github_organization, ) else: backend_build( @@ -3123,7 +3126,6 @@ def enable_all(): backends[be], script_build_dir, script_install_dir, - github_organization, images, components, library_paths, From f9404746e12e1bbc55b69d18dade689c50bdb7ee Mon Sep 17 00:00:00 2001 From: Kevin Pedro Date: Tue, 19 Aug 2025 16:51:07 -0500 Subject: [PATCH 5/5] update build docs --- docs/customization_guide/build.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/customization_guide/build.md b/docs/customization_guide/build.md index 478f804bd4..8bdd1571a2 100644 --- a/docs/customization_guide/build.md +++ b/docs/customization_guide/build.md @@ -113,6 +113,8 @@ building with Docker. build Triton. When building without GPU support, the *min* image is the standard ubuntu:22.04 image. + * The flag `--use-buildbase` can be specified to automate the use of the *tritonserver_buildbase* image to build backends that require a base image. + * Run the cmake_build script within the *tritonserver_buildbase* image to actually build Triton. The cmake_build script performs the following steps. @@ -159,7 +161,7 @@ If you want to enable only certain Triton features, backends and repository agents, do not specify --enable-all. Instead you must specify the individual flags as documented by --help. -#### Building With Specific GitHub Branches +#### Building With Specific GitHub Branches and Organization As described above, the build is performed in the server repo, but source from several other repos is fetched during the build @@ -182,7 +184,12 @@ instead use the corresponding branch/tag in the build. For example, if you have a branch called "mybranch" in the [onnxruntime_backend](https://github.com/triton-inference-server/onnxruntime_backend) repo that you want to use in the build, you would specify ---backend=onnxruntime:mybranch. +`--backend=onnxruntime:mybranch`. + +If you want to build a backend from an alternative organization or user ``, you can extend this syntax as follows: +```bash +$ ./build.py ... --backend=onnxruntime:mybranch:https://github.com/ +``` #### CPU-Only Build