Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/linux-cpu-arm64-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,29 @@ jobs:
docker run --rm \
--volume $GITHUB_WORKSPACE:/onnxruntime_src \
-w /onnxruntime_src ort_genai_linux_arm64_gha bash -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/onnxruntime_src/ort/lib/ /onnxruntime_src/build/cpu/unit_tests"

- name: Docker -- Build and Run the C# Tests
run: |
docker run --rm \
--volume $GITHUB_WORKSPACE:/onnxruntime_src \
--volume $DOTNET_INSTALL_DIR:/opt/dotnet \
-e PATH="/opt/dotnet:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
-e DOTNET_ROOT=/opt/dotnet \
-e DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \
-w /onnxruntime_src ort_genai_linux_arm64_gha bash -c " \
export ORTGENAI_LOG_ORT_LIB=1 && \
cd /onnxruntime_src/test/csharp && \
dotnet test /p:Configuration=Release /p:NativeBuildOutputDir=../../build/cpu/ /p:OrtLibDir=../../ort/lib/ --verbosity normal"

- name: Docker -- Build the C# Examples
run: |
docker run --rm \
--volume $GITHUB_WORKSPACE:/onnxruntime_src \
--volume $DOTNET_INSTALL_DIR:/opt/dotnet \
-e PATH="/opt/dotnet:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
-e DOTNET_ROOT=/opt/dotnet \
-e DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \
-w /onnxruntime_src ort_genai_linux_arm64_gha bash -c " \
export ORTGENAI_LOG_ORT_LIB=1 && \
cd /onnxruntime_src/examples/csharp/ModelChat && dotnet build -c Release && \
cd /onnxruntime_src/examples/csharp/ModelMM && dotnet build -c Release"
28 changes: 18 additions & 10 deletions .pipelines/nuget-publishing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ parameters:
displayName: Whether Post Packaging validation is run
type: boolean
default: false
- name: enable_win_cpu
displayName: 'Whether Windows CPU package is built.'
- name: enable_win_x64_cpu
displayName: 'Whether Windows x64 CPU package is built.'
type: boolean
default: true

Expand All @@ -13,8 +13,13 @@ parameters:
type: boolean
default: true

- name: enable_linux_cpu
displayName: 'Whether Linux CPU package is built.'
- name: enable_linux_x64_cpu
displayName: 'Whether Linux x64 CPU package is built.'
type: boolean
default: true

- name: enable_linux_arm64_cpu
displayName: 'Whether Linux ARM64 CPU package is built.'
type: boolean
default: true

Expand Down Expand Up @@ -145,9 +150,10 @@ extends:
stages:
- template: stages/capi-packaging-stage.yml
parameters:
enable_win_cpu: ${{ parameters.enable_win_cpu }}
enable_win_x64_cpu: ${{ parameters.enable_win_x64_cpu }}
enable_win_cuda: ${{ parameters.enable_win_cuda }}
enable_linux_cpu: ${{ parameters.enable_linux_cpu }}
enable_linux_x64_cpu: ${{ parameters.enable_linux_x64_cpu }}
enable_linux_arm64_cpu: ${{ parameters.enable_linux_arm64_cpu }}
enable_linux_cuda: ${{ parameters.enable_linux_cuda }}
enable_win_dml: ${{ parameters.enable_win_dml }}
enable_win_arm64: ${{ parameters.enable_win_arm64 }}
Expand All @@ -166,9 +172,10 @@ extends:

- template: stages/nuget-packaging-stage.yml
parameters:
enable_win_cpu: ${{ parameters.enable_win_cpu }}
enable_win_x64_cpu: ${{ parameters.enable_win_x64_cpu }}
enable_win_cuda: ${{ parameters.enable_win_cuda }}
enable_linux_cpu: ${{ parameters.enable_linux_cpu }}
enable_linux_x64_cpu: ${{ parameters.enable_linux_x64_cpu }}
enable_linux_arm64_cpu: ${{ parameters.enable_linux_arm64_cpu }}
enable_linux_cuda: ${{ parameters.enable_linux_cuda }}
enable_win_dml: ${{ parameters.enable_win_dml }}
enable_win_arm64: ${{ parameters.enable_win_arm64 }}
Expand All @@ -186,9 +193,10 @@ extends:
- ${{ if eq(parameters.enable_post_packaging_validation, true) }}:
- template: stages/nuget-validation-stage.yml
parameters:
enable_win_cpu: ${{ parameters.enable_win_cpu }}
enable_win_x64_cpu: ${{ parameters.enable_win_x64_cpu }}
enable_win_cuda: ${{ parameters.enable_win_cuda }}
enable_linux_cpu: ${{ parameters.enable_linux_cpu }}
enable_linux_x64_cpu: ${{ parameters.enable_linux_x64_cpu }}
enable_linux_arm64_cpu: ${{ parameters.enable_linux_arm64_cpu }}
enable_linux_cuda: ${{ parameters.enable_linux_cuda }}
enable_win_dml: ${{ parameters.enable_win_dml }}
enable_win_arm64: ${{ parameters.enable_win_arm64 }}
Expand Down
23 changes: 15 additions & 8 deletions .pipelines/pypl-publishing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ parameters:
type: boolean
default: false

- name: enable_win_cpu
displayName: 'Whether Windows CPU package is built.'
- name: enable_win_x64_cpu
displayName: 'Whether Windows x64 CPU package is built.'
type: boolean
default: true

Expand All @@ -24,8 +24,13 @@ parameters:
type: boolean
default: true

- name: enable_linux_cpu
displayName: 'Whether Linux CPU package is built.'
- name: enable_linux_x64_cpu
displayName: 'Whether Linux x64 CPU package is built.'
type: boolean
default: true

- name: enable_linux_arm64_cpu
displayName: 'Whether Linux ARM64 CPU package is built.'
type: boolean
default: true

Expand Down Expand Up @@ -104,9 +109,10 @@ extends:
stages:
- template: stages/py-packaging-stage.yml
parameters:
enable_linux_cpu: ${{ parameters.enable_linux_cpu }}
enable_linux_x64_cpu: ${{ parameters.enable_linux_x64_cpu }}
enable_linux_arm64_cpu: ${{ parameters.enable_linux_arm64_cpu }}
enable_linux_cuda: ${{ parameters.enable_linux_cuda }}
enable_win_cpu: ${{ parameters.enable_win_cpu }}
enable_win_x64_cpu: ${{ parameters.enable_win_x64_cpu }}
enable_win_cuda: ${{ parameters.enable_win_cuda }}
enable_win_dml: ${{ parameters.enable_win_dml }}
enable_win_arm64_cpu: ${{ parameters.enable_win_arm64_cpu }}
Expand All @@ -124,9 +130,10 @@ extends:
- ${{ if eq(parameters.enable_post_packaging_validation, true) }}:
- template: stages/py-validation-stage.yml
parameters:
enable_linux_cpu: ${{ parameters.enable_linux_cpu }}
enable_linux_x64_cpu: ${{ parameters.enable_linux_x64_cpu }}
enable_linux_arm64_cpu: ${{ parameters.enable_linux_arm64_cpu }}
enable_linux_cuda: ${{ parameters.enable_linux_cuda }}
enable_win_cpu: ${{ parameters.enable_win_cpu }}
enable_win_x64_cpu: ${{ parameters.enable_win_x64_cpu }}
enable_win_cuda: ${{ parameters.enable_win_cuda }}
enable_win_dml: ${{ parameters.enable_win_dml }}
enable_win_arm64_cpu: ${{ parameters.enable_win_arm64_cpu }}
Expand Down
27 changes: 21 additions & 6 deletions .pipelines/stages/capi-packaging-stage.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
parameters:
- name: enable_winml
type: boolean
- name: enable_win_cpu
- name: enable_win_x64_cpu
type: boolean
- name: enable_win_cuda
type: boolean
- name: enable_win_dml
type: boolean
- name: enable_win_arm64
type: boolean
- name: enable_linux_cpu
- name: enable_linux_x64_cpu
type: boolean
- name: enable_linux_arm64_cpu
type: boolean
default: false
- name: enable_linux_cuda
type: boolean
- name: enable_macos_cpu
Expand Down Expand Up @@ -65,7 +68,7 @@ stages:
ort_version: ${{ parameters.ort_winml_version }}
build_config: ${{ parameters.build_config }}

- ${{ if eq(parameters.enable_win_cpu, true) }}:
- ${{ if eq(parameters.enable_win_x64_cpu, true) }}:
- template: jobs/capi-packaging-job.yml
parameters:
arch: 'x64'
Expand All @@ -77,7 +80,7 @@ stages:
ort_build_version: ${{ parameters.ort_build_version }}
ort_build_source: ${{ parameters.ort_build_source }}

- ${{ if and(eq(parameters.enable_win_arm64, true), eq(parameters.enable_win_cpu, true)) }}:
- ${{ if and(eq(parameters.enable_win_arm64, true), eq(parameters.enable_win_x64_cpu, true)) }}:
- template: jobs/capi-packaging-job.yml
parameters:
arch: 'arm64'
Expand All @@ -89,7 +92,7 @@ stages:
ort_build_version: ${{ parameters.ort_build_version }}
ort_build_source: ${{ parameters.ort_build_source }}

- ${{ if and(eq(parameters.enable_win_cpu, true), eq(parameters.enable_win_dml, true)) }}:
- ${{ if and(eq(parameters.enable_win_x64_cpu, true), eq(parameters.enable_win_dml, true)) }}:
- template: jobs/capi-packaging-job.yml
parameters:
arch: 'x64'
Expand Down Expand Up @@ -126,7 +129,7 @@ stages:
ort_build_version: ${{ parameters.ort_build_version }}
ort_build_source: ${{ parameters.ort_build_source }}

- ${{ if eq(parameters.enable_linux_cpu, true) }}:
- ${{ if eq(parameters.enable_linux_x64_cpu, true) }}:
- template: jobs/capi-packaging-job.yml
parameters:
arch: 'x64'
Expand All @@ -138,6 +141,18 @@ stages:
ort_build_version: ${{ parameters.ort_build_version }}
ort_build_source: ${{ parameters.ort_build_source }}

- ${{ if eq(parameters.enable_linux_arm64_cpu, true) }}:
- template: jobs/capi-packaging-job.yml
parameters:
arch: 'arm64'
ep: 'cpu'
ort_version: ${{ parameters.ort_version }}
os: 'linux'
build_config: ${{ parameters.build_config }}
enable_winml: ${{ parameters.enable_winml }}
ort_build_version: ${{ parameters.ort_build_version }}
ort_build_source: ${{ parameters.ort_build_source }}

- ${{ if eq(parameters.enable_linux_cuda, true) }}:
- template: jobs/capi-packaging-job.yml
parameters:
Expand Down
9 changes: 8 additions & 1 deletion .pipelines/stages/jobs/capi-packaging-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
${{ if eq(parameters.arch, 'x64') }}:
name: 'onnxruntime-Ubuntu2204-AMD-CPU'
${{ elseif eq(parameters.arch, 'arm64') }}:
name: 'onnxruntime-genai-Ubuntu2004-ARM-CPU'
name: 'onnxruntime-linux-ARM64-CPU-2019'
hostArchitecture: 'Arm64'
${{ else }}:
name: 'onnxruntime-Ubuntu2204-AMD-CPU'
Expand Down Expand Up @@ -97,7 +97,14 @@ jobs:
displayName: Copy python 3.11.0 version to agent tools directory
condition: and(eq(variables['arch'], 'arm64'), eq(variables['os'], 'win'))

# UsePythonVersion is skipped on linux-arm64 because the
# 'onnxruntime-linux-ARM64-CPU-2019' self-hosted pool does not provide
# Python in the agent tools cache (no arm64 Python available from the
# GitHub Actions python-versions registry). The Linux build runs inside
# Docker, so the host's system 'python3' is sufficient for the few
# helper scripts (e.g., get_docker_image.py).
- task: UsePythonVersion@0
condition: not(and(eq(variables['os'], 'linux'), eq(variables['arch'], 'arm64')))
inputs:
versionSpec: 3.11
addToPath: true
Expand Down
11 changes: 11 additions & 0 deletions .pipelines/stages/jobs/custom-nuget-packaging-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ jobs:
ArtifactName: onnxruntime-genai-linux-cuda-x64-capi
TargetPath: '$(Build.BinariesDirectory)/artifact-downloads'

- template: steps/utils/flex-download-pipeline-artifact.yml
parameters:
StepName: 'Download linux-cpu-arm64 capi Artifacts'
ArtifactName: onnxruntime-genai-linux-cpu-arm64-capi
TargetPath: '$(Build.BinariesDirectory)/artifact-downloads'

- checkout: self
path: onnxruntime-genai
clean: true
Expand Down Expand Up @@ -67,6 +73,8 @@ jobs:
$rid = "win-arm64"
} elseif ($a -like "*osx-arm64*") {
$rid = "osx-arm64"
} elseif ($a -like "*linux-arm64*") {
$rid = "linux-arm64"
} elseif ($a -like "*linux-x64*") {
$rid = "linux-x64"
} else {
Expand Down Expand Up @@ -113,11 +121,13 @@ jobs:
$win_arm64_artifact_path = (Get-ChildItem -Path '$(Build.BinariesDirectory)/artifact-downloads/win-arm64/')[0].FullName
$osx_arm64_artifact_path = (Get-ChildItem -Path '$(Build.BinariesDirectory)/artifact-downloads/osx-arm64/')[0].FullName
$linux_x64_artifact_path = (Get-ChildItem -Path '$(Build.BinariesDirectory)/artifact-downloads/linux-x64/')[0].FullName
$linux_arm64_artifact_path = (Get-ChildItem -Path '$(Build.BinariesDirectory)/artifact-downloads/linux-arm64/')[0].FullName

Write-Host "Win x64 artifact path " $win_x64_artifact_path
Write-Host "Win arm64 artifact path " $win_arm64_artifact_path
Write-Host "OSX arm64 artifact path " $osx_arm64_artifact_path
Write-Host "Linux x64 artifact path " $linux_x64_artifact_path
Write-Host "Linux arm64 artifact path " $linux_arm64_artifact_path
$ort_package_version = $versioned_name.Substring($ort_nuget_package_name.Length + 1, $versioned_name.Length - $ort_nuget_package_name.Length - 1 - ".nupkg".Length)
python.exe $(Build.Repository.LocalPath)\tools\nuget\generate_nuspec_for_custom_nuget.py `
--package_name $genai_nuget_package_name `
Expand All @@ -130,6 +140,7 @@ jobs:
--win_arm64 $win_arm64_artifact_path `
--osx_arm64 $osx_arm64_artifact_path `
--linux_x64 $linux_x64_artifact_path `
--linux_arm64 $linux_arm64_artifact_path `
--commit_id $(Build.SourceVersion)

cat $(Build.Repository.LocalPath)\nuget\$genai_nuget_package_name.nuspec
Expand Down
43 changes: 35 additions & 8 deletions .pipelines/stages/jobs/nuget-packaging-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ parameters:
- name: ep
type: string

- name: enable_win_cpu
displayName: 'Whether Windows CPU package is built.'
- name: enable_win_x64_cpu
displayName: 'Whether Windows x64 CPU package is built.'
type: boolean
default: false

Expand All @@ -12,8 +12,13 @@ parameters:
type: boolean
default: false

- name: enable_linux_cpu
displayName: 'Whether Linux CPU package is built.'
- name: enable_linux_x64_cpu
displayName: 'Whether Linux x64 CPU package is built.'
type: boolean
default: false

- name: enable_linux_arm64_cpu
Comment thread
baijumeswani marked this conversation as resolved.
displayName: 'Whether Linux ARM64 CPU package is built.'
type: boolean
default: false

Expand Down Expand Up @@ -125,7 +130,7 @@ jobs:
ArtifactName: onnxruntime-genai-win-winml-arm64-capi
TargetPath: '$(Build.BinariesDirectory)/artifact-downloads'

- ${{ if and(eq(parameters.enable_win_cpu, true), eq(parameters.ep, 'cpu')) }}:
- ${{ if and(eq(parameters.enable_win_x64_cpu, true), eq(parameters.ep, 'cpu')) }}:
- template: steps/utils/flex-download-pipeline-artifact.yml
parameters:
StepName: 'Download win-cpu-x64 capi Artifacts'
Expand Down Expand Up @@ -160,13 +165,20 @@ jobs:
ArtifactName: onnxruntime-genai-win-directml-arm64-capi
TargetPath: '$(Build.BinariesDirectory)/artifact-downloads'

- ${{ if and(eq(parameters.enable_linux_cpu, true), eq(parameters.ep, 'cpu')) }}:
- ${{ if and(eq(parameters.enable_linux_x64_cpu, true), eq(parameters.ep, 'cpu')) }}:
- template: steps/utils/flex-download-pipeline-artifact.yml
parameters:
StepName: 'Download linux-cpu-x64 capi Artifacts'
ArtifactName: onnxruntime-genai-linux-cpu-x64-capi
TargetPath: '$(Build.BinariesDirectory)/artifact-downloads'

- ${{ if and(eq(parameters.enable_linux_arm64_cpu, true), eq(parameters.ep, 'cpu')) }}:
- template: steps/utils/flex-download-pipeline-artifact.yml
parameters:
StepName: 'Download linux-cpu-arm64 capi Artifacts'
ArtifactName: onnxruntime-genai-linux-cpu-arm64-capi
TargetPath: '$(Build.BinariesDirectory)/artifact-downloads'

- ${{ if and(eq(parameters.enable_linux_cuda, true), eq(parameters.ep, 'cuda')) }}:
- template: steps/utils/flex-download-pipeline-artifact.yml
parameters:
Expand Down Expand Up @@ -253,15 +265,16 @@ jobs:
$rid = "win-arm64"
} elseif ($a -like "*linux-x64*") {
$rid = "linux-x64"
} elseif ($a -like "*linux-arm64*") {
$rid = "linux-arm64"
} elseif ($a -like "*osx-arm64*") {
$rid = "osx-arm64"
} elseif ($a -like "*android*") {
$rid = "android"
} elseif ($a -like "*ios*") {
$rid = "ios"
} else {
Write-Host "Unknown artifact name" $a
return
throw "Unknown artifact name $a"
}

mkdir -Force $outputDir/$rid
Expand Down Expand Up @@ -290,6 +303,20 @@ jobs:
Get-ChildItem -Path $outputDir/$rid -Recurse
}

# Verify all enabled RIDs produced the expected native library.
$expected = @{}
if ('${{ parameters.enable_win_x64_cpu }}' -eq 'True') { $expected['win-x64'] = 'onnxruntime-genai.dll' }
if ('${{ parameters.enable_win_arm64 }}' -eq 'True') { $expected['win-arm64'] = 'onnxruntime-genai.dll' }
if ('${{ parameters.enable_linux_x64_cpu }}' -eq 'True') { $expected['linux-x64'] = 'libonnxruntime-genai.so' }
if ('${{ parameters.enable_linux_arm64_cpu }}' -eq 'True'){ $expected['linux-arm64']= 'libonnxruntime-genai.so' }
if ('${{ parameters.enable_macos_cpu }}' -eq 'True') { $expected['osx-arm64'] = 'libonnxruntime-genai.dylib' }
foreach ($rid in $expected.Keys) {
$lib = "$outputDir/$rid/$(buildConfig)/$($expected[$rid])"
if (-not (Test-Path $lib)) {
throw "Expected native library missing for enabled RID '$rid': $lib"
}
}
Comment thread
baijumeswani marked this conversation as resolved.

displayName: 'Extract Artifacts & Prepare Native Libraries'
workingDirectory: '$(Build.BinariesDirectory)/artifact-downloads'

Expand Down
Loading
Loading