Pointcept:BuildMatrix
lastmod 2026-09-28created 2026-09-281 edits
Pointcept prebuilt wheel matrix (amd64 · arm64)
Written: 2026-09-28 · Target: the pointcept-wheelhouse package of the app.cvp.run Pointcept agent app
Overview
The Pointcept agent app builds its environment only from the pointcept-wheelhouse uploaded to the registry (roadmap decision R5). If there is no wheelhouse matching the host, it does not fall back to a source build; it stops in a blocked state. So for the agent to work with downloads alone, a wheelhouse must be prebuilt and uploaded for each host combination.
The PyPI and PyG indexes are mostly missing wheels for CUDA 13 (cu130) and for arm64. This page lays out the amd64·arm64 matrix to prebuild with scripts/build_wheels.sh, and the constraints confirmed by actually building and running.
Conclusion: Rather than making many combinations, building one wheelhouse per accel with a wide cuda_arch gives the widest coverage. 3–4 for amd64 and 3–4 for arm64 are enough.
The agent's wheelhouse selection rules
Based on wheelhouseFits·selectWheelhouse in app.cvp.run/cli/src/pointcept/packages.ts.
| Rule | Impact on the matrix |
| The | |
| It does not filter by the python tag; it creates a venv with the version written in the tag | cp312 alone is enough. Other python combinations only duplicate candidates with the same conditions |
| The CUDA version of | Cover each host driver lower bound with one per accel |
| The GPU's compute capability must be exactly in the | Even if an 8.0 wheel runs on 8.6, it is not selected unless 8.6 is in the tag. You must list all target GPUs |
| With multiple candidates, it picks the highest by torch → CUDA → version | If you publish torch 2.13 tagged with 12.1, GB10 picks it and crashes. Standardize torch on 2.9.1 only |
Recommended build matrix
Every row is python 3.12, torch 2.9.1.
| # | arch | accel | | Target GPUs | Minimum driver | Compiled from source | Status |
| A1 | amd64 | cu126 | 7.5† 8.0 8.6 8.9 9.0 | T4, A100, RTX30/40, L4, H100 | 12.6 | flash-attn, swin3d, 5 local packages (spconv·cumm·PyG have prebuilts) | Not built |
| A2 | amd64 | cu128 | 7.5† 8.0 8.6 8.9 9.0 10.0 12.0 | A1 + B200, RTX50, RTX PRO Blackwell | 12.8 | A1 + spconv (no spconv-cu128) | Not built |
| A3 | amd64 | cu129 | A2 + 10.3 | B300 | 12.9 | A2 + PyG (no pt29cu129) | Optional |
| A4 | amd64 | cu130 | 7.5† 8.0 8.6 8.9 9.0 10.0 10.3 12.0 | All 13.x drivers | 13.0 | A1 + cumm, spconv | Verified (12.0 only, published |
| B1 | arm64 | cu126 | 8.0 8.6 8.9 9.0 | GH200, Arm servers + A100/L40 | 12.6 | All (except pccm·torch-geometric·ocnn) | Not built |
| B2 | arm64 | cu128 | 8.0 8.6 8.9 9.0 10.0 12.0 | B1 + GB200, Arm + RTX PRO | 12.8 | All | Not built |
| B3 | arm64 | cu129 | B2 + 10.3 12.1 | GB300, GB10 with driver 12.9 | 12.9 | All | Optional |
| B4 | arm64 | cu130 | 8.0 8.6 8.9 9.0 10.0 10.3 12.0 12.1 | DGX Spark (GB10), GB200/300 | 13.0 | All | Verified (12.1 only, completed 60 epochs) → rebuild wider |
† 7.5 (Turing) can only be added after the agent is fixed first. See flash-attn.
Combinations recommended for exclusion
| Combination | Reason |
| cu130/cu132 + torch 2.13.0 (arm64) | Crashes on GB10 with |
| cu132 | Requires torch 2.12 or later, so it cannot be standardized on 2.9.1. cu130 wheels are enough for driver 13.2 hosts |
| cu131 | There is no PyTorch index, so torch comes from cu130. It only raises the required driver over cu130 and gains nothing |
| cu118 · cu121 · cu124 | No torch 2.9.1 (≤2.7.1, ≤2.5.1, ≤2.6.0 respectively), and cannot compile sm_100 or higher. No aarch64 torch either |
| Jetson Orin (8.7) | The aarch64 torch the agent downloads from |
| Thor (11.0) | No flash-attn kernel, and not within the compile range (8.0–12.0) of the torch aarch64 cu130 wheel. Unverified |
Confirmed constraints
torch wheel index
List of cp312 wheels in download.pytorch.org/whl/<accel>/torch/ as of 2026-09-28.
| accel | x86_64 | aarch64 |
| cu118 | 2.2–2.7.1 | None |
| cu121 | 2.2–2.5.1 | None |
| cu124 | 2.4–2.6.0 | None |
| cu126 | 2.6–2.14 | 2.6, 2.9.0–2.14 (no 2.7·2.8) |
| cu128 | 2.7–2.11 | 2.7, 2.9–2.11 (no 2.8) |
| cu129 | 2.8–2.13 (no 2.12.0) | 2.8–2.13 (no 2.12.0) |
| cu130 | 2.9–2.14 | 2.9–2.14 |
| cu132 | 2.12–2.14 | 2.12–2.14 |
The versions common to cu126·cu128·cu129·cu130 and both arches are 2.9.x, 2.10, 2.11. Of these, only 2.9.1 is verified.
torch lower bounds filtered by the builder (cuda_min_torch): cu126 ≥ 2.6.0, cu128 ≥ 2.7.0, cu129 ≥ 2.8.0, cu130 ≥ 2.9.0, cu132 ≥ 2.12.0.
PyPI · PyG prebuilt gaps
| Package | Range with prebuilts | Notes |
| spconv | cu118·cu121·cu124·cu126, x86_64 only (2.3.8) | cu128·cu129·cu130 packages do not exist at all |
| cumm | cu126·cu128, x86_64 only (0.8.2) | No cu130 package |
| torch-scatter / torch-sparse / torch-cluster | | Nothing at all for aarch64. cu129 only goes up to torch 2.8. cu130 covers torch 2.9–2.14 |
| flash-attn | None (sdist only) | Compiled from source in every combination |
Therefore arm64 compiles all 12 native packages from source. Only the pure Python packages pccm, torch-geometric, and ocnn use prebuilts.
Per-package pins and patches
| Package | Verified version | Constraints |
| pccm | 0.4.16 | cumm's setup.py imports it, so it must be installed into the venv first |
| cumm | cumm-cu130 0.8.2 | Its own arch table does not know 8.8·10.3·11.0·12.1. The builder lowers them to the PTX of the nearest lower arch (12.1 → |
| spconv | spconv-cu130 2.3.8 | A fork patch relaxed the cumm upper bound to |
| torch-scatter / sparse / cluster | 2.1.2 / 0.6.18 / 1.6.3 | Compiled from source on arm64 |
| torch-geometric | 2.7.0 | Pinned to |
| flash-attn | 2.8.3.post1 | See flash-attn below |
| swin3d | 1.0.0 | Uses the |
| pointgroup_ops | 0.0.0 | Requires |
| ocnn | 2.3.3 | Pure Python |
flash-attn
- flash-attn 2.x only produces cubins for sm_80, 90, 100, 120. 8.6·8.7·8.9 run on the sm_80 cubin.
- 10.3 and 12.1 are in a different Blackwell family, so the cubins do not load. The builder builds with
100+PTX,120+PTXso they are reached via driver JIT (commitc35c4d4, 2026-09-10).- It builds and works on DGX Spark (sm_121). Since 2026-09-11 it has been recorded in the manifest as
compiled flash_attn-2.8.3.post1-…-linux_aarch64.whl, and on 2026-09-21 it completed 60 epochs of training withenable_flash=True. - Before 2026-09-10 there was no arch matching 12.1, so it was silently skipped.
- It builds and works on DGX Spark (sm_121). Since 2026-09-11 it has been recorded in the manifest as
import flash_attn succeeds (scripts.ts). So if you put 7.5 in the tag of a wheelhouse containing flash-attn, flash turns on on T4 and fails. To add 7.5, the agent must first be fixed to enable flash only when capability ≥ 8.0. CUDA_CACHE_PATH must point to a writable path to pay the JIT cost only once. glibc compatibility
Updated 2026-09-28: the build_wheels.sh default changed to --os manylinux_2_28, which resolves this issue. Below are measurements from the earlier ubuntu24.04 builds (including 2026.09.11, currently published in the registry). See manylinux_2_28 build.
The current wheels are built in an ubuntu24.04 container. The maximum symbol versions confirmed with objdump are as follows (amd64 cu130).
| Wheel | GLIBC | GLIBCXX |
| cumm_cu130 | 2.38 | 3.4.32 |
| spconv_cu130 | 2.34 | 3.4.32 |
| pointops | 2.32 | 3.4.21 |
| flash_attn | 2.32 | 3.4.21 |
On Ubuntu 22.04 hosts (glibc 2.35, GLIBCXX 3.4.30), importing cumm·spconv fails. The agent's os tag is only linux, so it cannot filter out such hosts in advance. There are two alternatives.
- Build with
--os ubuntu22.04. Wheels built on 22.04 also run on 24.04. Not yet tried. - Add the glibc version to the tag and check it in
wheelhouseFits.
Prebuilts and tag accuracy
When prebuilt spconv·cumm·PyG are downloaded on amd64 as in A1·A2, the arch set of those wheels is decided upstream and may differ from the cuda_arch tag. To make the tag exact, use --force-source. The build time increases in exchange.
Upload size
Widening the arch list makes the cumm·spconv wheels larger. First check whether the Workers CPU limit problem in the admin package upload relay (pointcept-agent-app-roadmap.md) has been resolved.
How to build
amd64 is built directly on an amd64 host and arm64 directly on DGX Spark. QEMU cross builds are not used because nvcc is 10–30x slower. Keep the output directory separate so it does not mix with existing single-arch results. If the same directory is used, manifest.txt gets appended to.
The two loops below are in the repository as scripts/build_matrix_amd64.sh and scripts/build_matrix_arm64.sh. Output goes to wheelhouse-wide/ (git-ignored), and trailing arguments are passed to build_wheels.sh (e.g. --jobs 8, --dry-run).
# amd64
for spec in "cu126|8.0 8.6 8.9 9.0" \
"cu128|8.0 8.6 8.9 9.0 10.0 12.0" \
"cu130|8.0 8.6 8.9 9.0 10.0 10.3 12.0"; do
bash scripts/build_wheels.sh build --arch amd64 --accel "${spec%%|*}" \
--torch 2.9.1 --python 3.12 --cuda-arch "${spec#*|}" \
--force-source --out wheelhouse-wide --keep-going -y
done
# arm64 (DGX Spark)
for spec in "cu126|8.0 8.6 8.9 9.0" \
"cu128|8.0 8.6 8.9 9.0 10.0 12.0" \
"cu130|8.0 8.6 8.9 9.0 10.0 10.3 12.0 12.1"; do
bash scripts/build_wheels.sh build --arch arm64 --accel "${spec%%|*}" \
--torch 2.9.1 --python 3.12 --cuda-arch "${spec#*|}" \
--out wheelhouse-wide --keep-going -y
done
To include A3·B3 (cu129), add "cu129|… 10.3 12.1" in the same format.
Verification and publishing
- Check installation, import, kernels, and PTv3 forward with
scripts/verify_wheels.sh <wheelhouse 디렉터리>. - If possible, check through training with
scripts/verify_mlops.sh. - Publish each combination to the registry with a unique version and attach tags.
{"os":"linux","arch":"arm64","accel":"cu130","torch":"2.9.1","python":"3.12",
"cuda_arch":"8.0 8.6 8.9 9.0 10.0 10.3 12.0 12.1"}
Only two have been verified on real GPUs: sm_120 (RTX PRO 2000) and sm_121 (GB10). The other arches have only been compiled, so note "unverified" in the package description.
Runtime conditions: is matching arch and GPU enough?
No. Even assuming the whole matrix above is built, there are more host-side conditions, and some GPUs need agent code changes to run properly even when the wheels match.
Host conditions
| Condition | Reason | When not met |
| Linux | The | Blocked with |
| NVIDIA driver CUDA ≥ accel | | |
| | | |
| glibc ≥ 2.28 | Building with manylinux_2_28 gives the same lower bound as torch. Existing wheels built on ubuntu24.04 require glibc 2.38 and GLIBCXX 3.4.32 | pip rejects manylinux wheels at the install stage. Existing wheels install and then fail at import (Ubuntu 22.04, RHEL 8·9, etc.) |
| Internet access | torch is not in the registry, so it is downloaded from | Installation fails. Cannot be used on air-gapped networks |
| About 5 GB or more of disk | Needs torch 3 GB, wheels 130 MB or more (larger with a wider arch list), and weights (555 MB per model) | Installation fails |
| GPU memory | A condition unrelated to the wheels. Without flash-attn, 8 GB cards hit OOM | Per-request OOM |
| Plan | The package's | |
GPUs that require agent changes first
| Target | Problem | Required action |
| sm_121 (DGX Spark), sm_103 (B300) | cumm does not know these arches, so spconv is built as PTX only (12.1 → | Native pinning must be added to the agent's training·inference scripts. Until then, training on GB10 can crash midway even when the wheels match |
| sm_75 (T4, RTX20) | There is no flash-attn kernel, but the agent enables flash if the import succeeds | Do not put 7.5 in the tag until it is fixed to enable flash only when capability ≥ 8.0 |
| Hosts with mixed GPUs | The capabilities of all GPUs must be within a single tag | E.g. with an RTX 3090 (8.6) and RTX 5090 (12.0) together, only cu128·cu130 match |
| Jetson Orin, Thor | torch is an SBSA build, so it does not work | Not supported |
Verification status
"Built" and "runs" are different. The only combinations confirmed end-to-end on real GPUs are amd64 cu130 sm_120 and arm64 cu130 sm_121 (in mlops, with Native pinning). For the other arches, it is only confirmed that nvcc compiled them successfully. 8.0–9.0, 10.0, and 12.0, which are built as cubins, are low risk, but 10.3·12.1, which rely on PTX JIT, need verification on real hardware.
Summary
On a host with Linux, driver CUDA ≥ accel, glibc 2.28 or later (for manylinux builds), and internet access, installation and inference work as long as arch·GPU match. However, two things are needed first.
- GB10 and B300: spconv Native pinning must be added to the agent.
- Ubuntu 22.04·RHEL hosts: the wheelhouse must be rebuilt with manylinux_2_28 and published. The currently published
2026.09.11is an ubuntu24.04 build.
Single-bundle distribution (download once and run without sudo)
Everything the agent uses for training and inference can be packed into one per (arch, accel), so that it runs just by downloading and extracting. The NVIDIA driver and glibc cannot be put in the bundle and must be on the host. For the format, a compressed archive (tar.zst) per (arch, accel) is recommended over AppImage.
What can and cannot go in the bundle
| Component | Bundleable | Notes |
| Python interpreter | ✓ | Uses python-build-standalone. This is exactly the python uv installs, and it works even when moved to another path |
| torch, torchvision | ✓ | About 1.1 GB |
| CUDA runtime, cuDNN, NCCL, cuBLAS | ✓ | cu12·cu13 torch installs them together as |
| 15 Pointcept wheels, source, pure Python dependencies | ✓ | About 200 MB |
| | ✓ | Building with manylinux removes the need for a newer version in the first place. See manylinux_2_28 build below |
| libgomp | ✓ | torch already bundles it |
| libGL, libglib (open3d) | Not needed | The agent uses a stub instead of open3d |
| C compiler (Triton JIT) | △ | On first run, Triton compiles a small launcher with the system |
| NVIDIA kernel driver and | ✗ | Paired with the kernel module, so the host's must be used. The driver CUDA ≥ accel condition remains |
| glibc | ✗ (effectively) | The whole bundle has the glibc of the build base as its lower bound. Building with manylinux_2_28 makes the lower bound 2.28 |
Why AppImage is not recommended
- AppImage must be mounted with FUSE to run. On hosts without
libfuse2,sudo apt install libfuse2is required, which defeats the purpose. Containers often lack/dev/fuse. Using--appimage-extract-and-runends up extracting every time anyway. - The bundle is around 5 GB, so there is no benefit to mounting squashfs on every run.
- The agent already has the necessary structure. The registry's
archivetype, the CLI'sextractAll, version markers, and the~/.cache/cvp/<app>root can be used as-is. Download the archive once, extract it, and run withbin/python3; no sudo, FUSE, or network (PyPI,download.pytorch.org) is needed.
Recommended layout
pointcept-runtime-<arch>-<accel>.tar.zst # 예: arm64-cu130
└─ runtime/
├─ python/ # python-build-standalone 3.12. venv가 아니라 이 python의 site-packages에 직접 설치
│ └─ lib/python3.12/site-packages/ # torch, nvidia-*, Pointcept 휠, 순수 의존성
├─ lib/ # 호스트보다 새 공유 라이브러리가 필요할 때만
├─ src/pointcept/ # 고정 커밋 소스
├─ scripts/ # 추론·학습 워커
└─ env.sh # PYTHONPATH, LD_LIBRARY_PATH, TRITON_CACHE_DIR, CUDA_CACHE_PATH
- Do not use a venv. Absolute paths are baked into
pyvenv.cfgand script shebangs, so moving it breaks them. Always run viapython/bin/python3 -m …or the script path. - Size: the agent's current rfdetr·sam2 venvs are 4.7–5.3 GB extracted (torch 1.1 + nvidia 2.7 + triton 0.7 GB). Pointcept adds about 0.2 GB to this, so it is expected to be about 2.5–3 GB compressed. For the 6 combinations in the recommended matrix, the total is about 15–18 GB.
- Do not put weights in the bundle. They are 555 MB per model and optional, so keep them as separate packages as now.
- Reuse: the torch and nvidia parts (about 4.5 GB) are the same as rfdetr·sam2. If multiple apps are later moved to bundles, splitting into two layers, a "torch base per (arch, accel)" and an "app layer", lets them share downloads and disk. Currently the python versions differ (rfdetr·sam2 use 3.11, Pointcept uses 3.12).
Remaining host conditions
- Linux, and an NVIDIA driver matching (arch, accel).
nvidia-smimust work. - At least the glibc lower bound set by the build base (2.28 for manylinux_2_28)
- About 8 GB or more of disk (the archive and the extracted result)
- GB10·B300 need spconv
ConvAlgo.Nativepinning in the agent scripts. This is a code problem unrelated to the bundle.
Sticking points
- Upload: uploading multi-GB files to the registry requires the Workers CPU limit problem in the admin upload relay to be solved first. Switching to presigned direct uploads is one option.
- Verification method: run everything from download and extraction through inference·training on a base image with nothing installed. This means a state where only the driver is injected via nvidia-container-toolkit, such as
docker run --gpus all ubuntu:22.04,debian:12,rockylinux:9. Whether Triton finds a compiler also shows up at this stage.
manylinux_2_28 build
manylinux is not a way to remove the glibc dependency. It standardizes the approach of building on an old glibc to lower the lower bound. build_wheels.sh now uses this as its default (--os manylinux_2_28).
What manylinux actually does
| Step | Details | Effect |
| 1. Build on an old base | manylinux_2_28 is based on glibc 2.28. Here | Linked glibc symbols are bound to 2.28 or lower |
| 2. Compile with gcc-toolset | New C++ features are statically linked via | The |
| 3. | Other | No separate libraries are needed on the host |
| 4. Policy check | repair rejects wheels that exceed the policy | The build fails instead of import failing on the host |
As a result, it works on any Linux with glibc 2.28 or later (RHEL 8·9, Ubuntu 20.04 or later, Debian 10 or later). This lower bound is the same as that of the torch wheel itself (manylinux_2_28), so the additional constraints caused by the Pointcept wheels are zero. Upstream spconv-cu124·cu126 and cumm-cu126 are also distributed as manylinux_2_28.
Since the platform tag is in the wheel filename, on hosts with insufficient glibc pip rejects it at the install stage and states the reason. The problem of crashing with an obscure error at import goes away.
Build base images
nvidia/cuda:<버전>-devel-rockylinux8 is distributed for amd64 and arm64 for all of CUDA 11.8, 12.1, 12.4, 12.6, 12.8, 12.9, 13.0, 13.1, and 13.2 (Docker Hub, checked 2026-09-28). For CPU targets, rockylinux:8 is used.
There are also pytorch/manylinux2_28-builder (x86_64) and pytorch/manylinuxaarch64-builder (aarch64), which PyTorch uses to build its own wheels. But they are separate repositories per architecture, so the rockylinux8 image, which provides both platforms under one name, was chosen.
Behavior of build_wheels.sh
- The
--osdefault ismanylinux_2_28.ubuntu24.04andubuntu22.04can still be used. - Inside the container, it enables EPEL and PowerTools with dnf and installs gcc-toolset, cmake, git,
openblas-devel, andsparsehash-devel. - The gcc-toolset version is matched to the range nvcc allows. 11 for cu118, 12 for cu121, and 13 otherwise.
- Compiled wheels and prebuilt wheels with the
linux_*tag (PyG, etc.) all go throughauditwheel repair --plat manylinux_2_28_<arch>. If a prebuilt fails the policy, that package is compiled from source. - Libraries excluded from repair:
libtorch*,libc10*,libshm*,libcaffe2*,libgomp*(provided by torch),libcudart*,libnvrtc*,libcublas*,libcusparse*,libcurand*,libcufft*,libcusolver*,libnvJitLink*,libnvToolsExt*,libcudnn*,libnccl*,libcupti*,libnvshmem*(provided bynvidia-*wheels),libcuda.so*(provided by the driver). Putting these in the wheel loads a different copy from the one torch uses, causing conflicts. - ROCm only has Ubuntu images. Without
--os, it builds on ubuntu24.04 (no tag); if--os manylinux_2_28is specified, that combination is skipped. -
--nativebuilds use the host OS, so no manylinux tag is added. - The output path does not distinguish OS (
<out>/linux-<arch>/<accel>/torch<ver>-cp<py>/). Rebuilding into the same directory replaces the old ubuntu wheels with manylinux wheels.
Comparison with other approaches
| Approach | Assessment |
| manylinux_2_28 build and auditwheel | Adopted. Same lower bound as torch, industry standard, and verified upstream |
| Going lower with manylinux2014 (glibc 2.17) | No benefit. torch requires 2.28 since 2.6, so the lower bound ends up at 2.28 anyway |
| Putting glibc and | Possible but not recommended. The host driver's |
| Cross-building against an old glibc with | Unstable as nvcc's host compiler |
Verification results (2026-09-28, amd64 · cu130 · torch 2.9.1 · sm_120)
Built pccm, cumm, spconv, torch-scatter, and pointops with --os manylinux_2_28.
| Wheel | auditwheel tag | Max GLIBC | Max GLIBCXX | Additionally bundled libraries |
| cumm_cu130 0.8.2 | manylinux_2_24 · 2_28 | 2.14 | 3.4.21 | None |
| spconv_cu130 2.3.8 | manylinux_2_27 · 2_28 | 2.14 | 3.4.21 | None |
| torch_scatter 2.1.2 | manylinux_2_24 · 2_28 | 2.14 | 3.4.21 | None |
| pointops 1.0 | manylinux_2_24 · 2_28 | 2.14 | 3.4.21 | None |
When the same combination was built on ubuntu24.04, cumm required GLIBC 2.38 / GLIBCXX 3.4.32.
The PyG prebuilts did not pass the policy. auditwheel rejected torch_scatter-2.1.2+pt29cu130-…-linux_x86_64.whl (data.pyg.org) for "too-recent versioned symbols", and the builder fell back to compiling from source. This means the PyG prebuilts used on amd64 so far could also have broken on older hosts. In exchange, the amd64 build time grows by the compile time of the 3 PyG packages.
Runtime check (docker run --gpus all, with only uv, python 3.12, torch 2.9.1+cu130, and the wheels installed on a base image with nothing else installed):
| Container | glibc | Existing ubuntu24.04 wheels | manylinux wheels |
| | 2.35 | cumm import fails: | spconv SubMConv3d, torch_scatter scatter_mean, pointops knn_query all succeed on GPU |
| | 2.28 | (not tested) | All succeed as above |
Not yet confirmed
- flash-attn, swin3d, torch-sparse, torch-cluster, pointops2, pointgroup_ops, pointseg, pointrope built with manylinux
- arm64 (DGX Spark) manylinux build
- cu118·cu121 using gcc-toolset-11·12
Remaining decisions
-
glibc: whether to build with→ resolved with the manylinux_2_28 defaultubuntu22.04or distinguish by tag - 7.5 (Turing): whether to add it to the tag after fixing the agent to decide flash use by capability
- Whether to publish cu129 (A3·B3)
- Whether to add spconv
ConvAlgo.Nativepinning to the agent (app.cvp.run). Required to support GB10·B300
References
- Pointcept
- Pointcept fork:
scripts/build_wheels.sh,scripts/verify_wheels.sh,scripts/verify_mlops.sh - mlops:
src/geo_mlops/resources/training_runtime/Dockerfile.pointcept,src/geo_mlops/resources/training_runtime/pointcept_semseg.py(GeoSpconvAlgo),docs/plans/36_pointcept_training_runtime_plan.md,docs/plans/50_pointgroup_instance_segmentation_plan.md - app.cvp.run:
cli/src/pointcept/packages.ts,cli/src/pointcept/env.ts,cli/src/pointcept/scripts.ts,docs/plans/pointcept-agent-app-roadmap.md