onnxruntime/tools/ci_build/github/azure-pipelines/templates/py-linux-gpu.yml
Yi Zhang cd6d3aea45
Refactor Python CUDA packaging pipeline to fix random hangs in building (#19989)
### Description
1. Move building on CPU machine.
2. Optimize the pipeline
3. Since there isn't official ONNX package for python 12, the python 12
test stage uses the packages built with ONNX source in build stage.


### Motivation and Context
1. Resolve the random hang in compilation
4. Save a lot of GPU resources.

---------
2024-03-22 09:16:00 +08:00

100 lines
2.9 KiB
YAML

parameters:
- name: arch
type: string
- name: machine_pool
type: string
- name: extra_build_arg
type: string
default: ''
- name: cmake_build_type
type: string
default: 'Release'
values:
- Debug
- Release
- RelWithDebInfo
- MinSizeRel
- name: docker_base_image
type: string
default: 'nvidia/cuda:11.8.0-cudnn8-devel-ubi8'
values:
- nvidia/cuda:11.8.0-cudnn8-devel-ubi8
- nvidia/cuda:12.2.2-cudnn8-devel-ubi8
- name: trt_version
type: string
default: '8.6.1.6-1.cuda11.8'
values:
- 8.6.1.6-1.cuda11.8
- 8.6.1.6-1.cuda12.0
- name: cuda_version
type: string
default: '11.8'
values:
- 11.8
- 12.2
stages:
- stage: Linux_py_GPU_Wheels_${{ parameters.arch }}
dependsOn: []
jobs:
- job: Linux_py_GPU_Wheels_${{ parameters.arch }}
timeoutInMinutes: 240
workspace:
clean: all
pool: ${{ parameters.machine_pool }}
variables:
# The build machine pool doesn't have dotnet, so it can't run CG.
- name: skipComponentGovernanceDetection
value: true
- name: extra_build_args
${{ if ne(parameters.extra_build_arg, '') }}:
value: -x ${{ parameters.extra_build_arg }}
${{ if eq(parameters.extra_build_arg, '') }}:
value: ''
steps:
- checkout: self
clean: true
submodules: recursive
- template: set-nightly-build-option-variable-step.yml
- template: get-docker-image-steps.yml
parameters:
Dockerfile: tools/ci_build/github/linux/docker/Dockerfile.manylinux2_28_cuda
Context: tools/ci_build/github/linux/docker
DockerBuildArgs: "
--network=host
--build-arg BASEIMAGE=${{ parameters.docker_base_image }}
--build-arg TRT_VERSION=${{ parameters.trt_version }}
--build-arg BUILD_UID=$( id -u )
--build-arg PLATFORM=${{ parameters.arch }}
"
Repository: onnxruntimecuda${{ replace(parameters.cuda_version, '.', '') }}xtrt86build${{ parameters.arch }}
- task: Bash@3
displayName: 'Build Python Wheel'
inputs:
targetType: filePath
filePath: tools/ci_build/github/linux/run_python_dockerbuild.sh
arguments: -i onnxruntimecuda${{ replace(parameters.cuda_version, '.', '') }}xtrt86build${{ parameters.arch }} -d "GPU" -c ${{ parameters.cmake_build_type }} $(extra_build_args)
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: ONNXRuntime python wheel'
inputs:
PathtoPublish: '$(Build.BinariesDirectory)/dist'
ArtifactName: onnxruntime_gpu
- task: PublishPipelineArtifact@0
displayName: 'Publish Test Binaries'
inputs:
artifactName: 'drop-linux-gpu-${{ parameters.arch }}'
targetPath: '$(Build.BinariesDirectory)/Release'
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
displayName: 'Clean Agent Directories'
condition: always()