Skip to main content

GPU Benchmarks

Date focus: 2026-07-13 (plus Vertex benches from 2026-07-12). Workload: samp_match_03_5min (~5 min video), unified pipeline ON, ACESENSE_BALL_BATCH=8. Account (AWS): 109375139591. GCP project: acesense-prod.

Only approved / currently usable quotas are listed in Β§2. Pending requests are omitted.


1. Pipeline versions under test​

Version IDImage / codeWhat changed vs prior
v0 β€” Vertex weekGAR …/pipeline:bench-5ba30d6-fix1Unified pipeline + FrameFeed-era backend used for Vertex L4/T4/V100
v1 β€” SM/EC2 baselineECR acesense-gpu:bench-5ba30d6-fix1 (+ -sm entrypoint overlay)Same app code as v0; SageMaker/EC2 entrypoints download from S3
v2 β€” cpuopt1ECR acesense-gpu:bench-5ba30d6-cpuopt1(1) FFmpeg/NVDEC path wired in read_video_optimized (2) parallel ball HoughCircles (3) MediaPipe workers cap 4β†’~12

All SM numbers below say which version. Lambda Labs numbers from earlier July are out of scope for this SM-first plan (see MasterContext).


2. Approved resources (usable now)​

2a. SageMaker β€” us-east-1 only for real GPU training​

Training job usage = 1 (unless noted):

FamilyApproved training types (1-GPU unless noted)
g6 (L4)ml.g6.xlarge … 16xlarge (also 12xlarge = 4Γ—L4)
g5 (A10G)ml.g5.xlarge … 16xlarge (also 12xlarge = 4Γ—A10G)
g4dn (T4)ml.g4dn.4xlarge, ml.g4dn.8xlarge only
p4dml.p4d.24xlarge = 8Γ—A100 (training=1)
trn1ml.trn1.2xlarge (not CUDA AceSense)

Also: endpoint quotas for many g4dn/g5/g6 including *.4xlarge (=1); processing all ml.g6.* =2.

AceSense RAM floor ~64 GB β†’ practical training SKUs: *.4xlarge and up. Skip xlarge/2xlarge for this pipeline.

Other regions (eu-*, us-west-2, …): no useful GPU training quota (endpoint leftovers only at 16–32 GB).

2b. EC2​

RegionG/VT vCPUP vCPUPractical max GPU host
us-east-180g4dn/g5/g6.2xlarge (8 vCPU / 32 GB)
eu-central-1, eu-north-180same
others checked00β€”

Inf/Trn On-Demand 8 in us-east-1 β€” irrelevant for CUDA AceSense.

2c. Vertex (GCP) β€” previously used​

Custom Job GPUs were available enough to complete L4/T4/V100 benches (2026-07-12). Re-auth required for new submits as of 2026-07-13 evening.


3. Benchmark results​

Wall = pipeline WALL_SEC inside container (not full cloud billable time). Cold start (provision + pull) is extra ~3–6 min typical on SM/Vertex.

3a. SageMaker β€” version v1 (fix1-sm)​

RUN_IDLabelInstanceWall (s)CourtBallPlayersPose (s / fps)Enrich
20260713_020318l4ml.g6.4xlarge4865213660156 / 3024
20260713_020318t4ml.g4dn.4xlarge87175228116353 / 1320
20260713_022702_highcpul4-hcml.g6.8xlarge4895114360155 / 3024
20260713_022702_highcput4-hcml.g4dn.8xlarge87267235118361 / 1320
20260713_143430-maxcatl4-maxml.g6.16xlarge5054716160156 / 3024
20260713_143430-maxcatt4-maxml.g4dn.8xlarge85667232116350 / 1320
20260713_143430-maxcata10g-maxml.g5.16xlarge4435513548111 / 4227
20260713_143430-maxcata100-maxml.p4d.24xlarge331461193254 / 8718

Findings (v1): Extra CPU does not help. A10G beats L4. A100 fastest SM but only 1 GPU used of 8. T4 too slow for prod target.

3b. SageMaker β€” version v2 (cpuopt1)​

RUN_IDLabelInstanceWall (s)CourtBallPlayersPoseEnrichVideo
20260713_154338-cpuopta10g-cpuoptml.g5.4xlarge430639648111 / 421241
20260713_154338-cpuoptl4-cpuoptml.g6.4xlarge4945213360157 / 301135

vs v1: A10G wall 443β†’430; ball 135β†’96; enrich 27β†’12. L4 β‰ˆ flat (486β†’494). Video load time rose on v2 (NVDEC path / accounting) β€” net still small A10G win. g5.4xlarge β‰ˆ g5.16xlarge for this workload.

3c. EC2 β€” version v1, max under G=8 (*.2xlarge, 32 GB + swap)​

RUN_ID: 20260713_144007-ec2-maxcat

Do not read the wall times as β€œL4/A10G are slow on EC2.” Core GPU stages were in a normal-ish range; walls exploded because player detection thrashed on 32 GB RAM (full-res frames + swap).

LabelInstanceWallBallPosePlayersWhat happened
ec2-l4-maxg6.2xlarge21592042551285Players ~20Γ— SM; swap cliff
ec2-a10g-maxg5.2xlarge18871611901140Same pattern
ec2-t4-maxg4dn.2xlarge949226364120Players stayed normal; wall still ~2Γ— SM

For comparison, SM A10G players β‰ˆ 48s, ball β‰ˆ 96–135s, wall β‰ˆ 430s.

Finding: EC2 at current G/VT=8 quota is not a viable AceSense host β€” not because the GPU can’t run TrackNet/pose, but because 32 GB is below the ~64 GB floor and player stage falls off a cliff. Use SM numbers for planning, not these EC2 walls.

3d. Vertex β€” version v0 (2026-07-12)​

Image: us-central1-docker.pkg.dev/acesense-prod/acesense-gpu/pipeline:bench-5ba30d6-fix1 RUN example: gs://acesense-prod-gpu-bench/vertex-bench/runs/20260712_162418/

GPUMachineWall (s) approx
L4g2-standard-16~569
T4n1-highmem-8~1079
V100n1-highmem-8~580

SM L4 (~486) beat Vertex L4 (~569) on same era code. Vertex v2 cpuopt not run (gcloud auth expired).


UseSKUWhy
Default SM inferenceml.g5.4xlargeBest 1-GPU price/perf in quota; ~430s v2
Fastest SM nowml.p4d.24xlarge~331s; wasteful until multi-GPU code
Avoid for prod targetT4, EC2 *.2xlarge, SM *.xlarge/2xlargeSlow or OOM

5. Artifacts​

  • SM results: s3://acesense-gpu-bench/sagemaker-bench/runs/<RUN_ID>/<label>/timings.json
  • Vertex results: gs://acesense-prod-gpu-bench/vertex-bench/runs/<RUN_ID>/
  • Scripts: acesense-gpu-backend/deploy/{sagemaker,vertex,ec2}/