Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring native builds and Java binding generation #521

Merged
merged 69 commits into from
Feb 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
aaf411c
First draft for Bazelcism
karllessard Jul 28, 2023
beb033a
Adding Linux x86_64 support (currently uses GPU binaries).
Craigacp Aug 11, 2023
35144c6
Adding linux cpu whl, stripping out unsupported JavaCPP platforms & more
Craigacp Aug 11, 2023
f6cff48
Get full native build working + cleanup
karllessard Oct 7, 2023
fcb5129
Add back generated files
karllessard Oct 13, 2023
281204d
Beginning update to TF 2.14.
Craigacp Oct 13, 2023
c0b589d
Updates for 2.14.
Craigacp Oct 27, 2023
b2d0f27
Fixing links.
Craigacp Nov 3, 2023
88d1fe3
Fix library linking and source path
karllessard Oct 13, 2023
0cb97af
Patch proto files
karllessard Nov 3, 2023
d3d16ae
Fix proto packaging
karllessard Nov 12, 2023
e6d7b73
Move native stuff to distinct module
karllessard Nov 17, 2023
39999f0
adding missing ops and fixing some framework issues.
Craigacp Nov 17, 2023
0231a24
Add missing ops and move more files around
karllessard Nov 17, 2023
9ca87aa
Fixing a weird warning where tensorflow-framework depended on an old …
Craigacp Nov 17, 2023
c711d5a
Cleanup more native executions from core API
karllessard Nov 21, 2023
edd4e45
Clean custom gradient deprecation notice
karllessard Nov 24, 2023
f8bebf7
Move URLs to download script + new CI
karllessard Nov 24, 2023
809f37d
Update runners
karllessard Nov 24, 2023
8069bc0
Update curl command for older versions
karllessard Nov 24, 2023
cebbe2c
Fix library links
karllessard Nov 24, 2023
501b9c7
Attempt to fix windows build
karllessard Nov 24, 2023
5043ba4
Rename branch
karllessard Nov 24, 2023
4e0c2f8
Try to fix strange linux build error
karllessard Nov 24, 2023
8b60359
Move weak pointers to native lib
karllessard Nov 24, 2023
ac05e94
Attempt to fix windows build
karllessard Nov 24, 2023
dd78848
Don't build framework on platform builds
karllessard Nov 24, 2023
25c3b51
Download wheel and clib for Windows
karllessard Nov 25, 2023
30335e0
Fix windows command line
karllessard Nov 25, 2023
daec982
Update deployment scripts to new layout
karllessard Nov 27, 2023
4cf0a74
Upgrade to TF2.15
karllessard Nov 28, 2023
67c8fd4
Use 'yes' when unzipping files
karllessard Nov 28, 2023
668a54d
Another attempt to fix windows
karllessard Nov 29, 2023
0e4793e
Create missing API defs on generation
karllessard Dec 11, 2023
a898c68
Fixing invalid endpoints
karllessard Dec 11, 2023
ba268cb
Refreshing the docs after Bazelcism (#506)
karllessard Dec 13, 2023
12982b4
Adding a TF-text custom op test.
Craigacp Dec 15, 2023
156a7cc
Removing the bin from /bin/bash as Windows CI doesn't like it.
Craigacp Dec 15, 2023
c593cbb
Add C API extension for custom gradient functions (#511)
karllessard Jan 10, 2024
05ecb91
ErrorCodes proto fix.
Craigacp Jan 12, 2024
cf66e33
Fix custom gradient lookup bug (#512)
karllessard Jan 16, 2024
8bca983
Revert Conv2d backprop to V1 (#513)
karllessard Jan 18, 2024
f260407
Activate local build profile by default
karllessard Jan 19, 2024
a9034bf
Shorten paths for Bazel on Windows
karllessard Jan 26, 2024
5f4511a
Fixes for Windows build.
Craigacp Jan 28, 2024
a29aa0d
Working on macOS ARM 64 build support.
Craigacp Feb 2, 2024
fa292a9
Bumping to JavaCPP 1.5.10.
Craigacp Feb 2, 2024
8d67be0
Try building Windows in nightly snapshot
karllessard Feb 4, 2024
0eafb61
Disable some C API extensions in Windows.
karllessard Feb 4, 2024
ca4eb63
Disable graph extension on Windows as well
karllessard Feb 4, 2024
5488f42
Trying fixing windows build...
karllessard Feb 4, 2024
bc0ebb6
Export TFJ symbols in C++
karllessard Feb 4, 2024
401fb5f
Add string header
karllessard Feb 4, 2024
8af5c4f
Don't download wheel for Windows
karllessard Feb 4, 2024
a97cb09
Add back wheel and fix clib unzip path
karllessard Feb 4, 2024
0e9e135
Restore native build for Windows
karllessard Feb 5, 2024
5a42206
Exclude TSL linkage to solve Windows build problem (#518)
karllessard Feb 12, 2024
234ee7b
Force Java architecture for MacOS ARM64 (#519)
karllessard Feb 12, 2024
235d401
Update version to 1.0.0-SNAPSHOT
karllessard Feb 12, 2024
ece2f23
Delete legacy CI build
karllessard Feb 12, 2024
58dbd57
Use arm64 image by default for MacOS
karllessard Feb 12, 2024
f9ffb44
Deploy native artifacts in GHA runners
karllessard Feb 13, 2024
af6ee7c
Configure unified deployment in POM
karllessard Feb 13, 2024
e204dbe
Adding a control dependency on the gradients to the gradient optimizers.
Craigacp Feb 17, 2024
22e370a
Run mvn deploy in batch mode
karllessard Feb 17, 2024
b14bc39
Small pre-release adjustments
karllessard Feb 23, 2024
c2e69d1
Downgrade Spring dependency
karllessard Feb 23, 2024
7f72273
Fixing snapshot deployments
karllessard Feb 23, 2024
1934128
Spotless fixes.
Craigacp Feb 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
24 changes: 0 additions & 24 deletions .github/ISSUE_TEMPLATE/40-tflite-op-request.md

This file was deleted.

201 changes: 201 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
name: CI build
on:
push:
branches:
- master
- staging
- r[0-9]+.*
pull_request:
branches:
- master
- r[0-9]+.*
types: [opened, reopened, synchronize, labeled, unlabeled]
env:
STAGING_PROFILE_ID: 46f80d0729c92d
DEPLOY_SNAPSHOT: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging') }}
DEPLOY_RELEASE: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/r') }}
jobs:
check-format:
if: github.event_name == 'pull_request'
runs-on: ubuntu-20.04
steps:
- name: Configure Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '17'
- name: Checkout repository
uses: actions/checkout@v1
- name: Build project
run: |
gcc --version
mvn -version
mvn clean install -Pjdk17 -B -U -e -Dlint.skip=true -Dmaven.test.skip=true
- name: Run format checks
run: |
mvn spotless:check -Pjdk17 -B -U -e
prepare:
runs-on: ubuntu-20.04
outputs:
repositoryUrl: ${{ steps.repository.outputs.repositoryUrl }}
steps:
- name: Create staging repository
if: env.DEPLOY_RELEASE == 'true'
id: staging
run: |
echo "Creating staging repository with profile $STAGING_PROFILE_ID"
echo "<promoteRequest><data><description>Releasing TF Java - created by CI build</description></data></promoteRequest>" > request.xml
curl -X POST -d @request.xml -s -o response.xml -u ${{ secrets.CI_DEPLOY_USERNAME }}:${{ secrets.CI_DEPLOY_PASSWORD }} -H "Content-Type:application/xml" \
https://oss.sonatype.org/service/local/staging/profiles/$STAGING_PROFILE_ID/start
export STAGING_REPOSITORY_ID=`awk -F'[<>]' '/stagedRepositoryId/{print $3}' response.xml`
echo "Staging repository created: $STAGING_REPOSITORY_ID"
- name: Checkout repository
uses: actions/checkout@v1
- name: Extract distribution repository URL
id: repository
run: |
if [[ "${{ env.DEPLOY_RELEASE }}" = "true" ]]; then
export REPOSITORY_URL=`mvn exec:exec -q -N -Dexec.executable='echo' -Dexec.args="\\${project.distributionManagement.repository.url}" -DstagingRepositoryId=$STAGING_REPOSITORY_ID`
else
export REPOSITORY_URL=`mvn exec:exec -q -N -Dexec.executable='echo' -Dexec.args="\\${project.distributionManagement.snapshotRepository.url}"`
fi
echo "Repository URL: $REPOSITORY_URL"
echo "::set-output name=repositoryUrl::$REPOSITORY_URL"
linux-x86_64:
runs-on: ubuntu-20.04
needs: prepare
strategy:
matrix:
ext: ["", -gpu]
steps:
- name: Configure Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v1
- name: Build project
run: |
gcc --version
mvn -version
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Deploy native artifact
if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
run: mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
macosx-arm64:
runs-on: macos-14
needs: prepare
strategy:
matrix:
ext: [""]
steps:
- name: Configure Java
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '17'
architecture: 'arm64'
- name: Checkout repository
uses: actions/checkout@v1
- name: Build project
run: |
clang --version
mvn -version
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Deploy native artifact
if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
run: mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
macosx-x86_64:
runs-on: macos-11
needs: prepare
strategy:
matrix:
ext: [""]
steps:
- name: Configure Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v1
- name: Build project
run: |
clang --version
mvn -version
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
- name: Deploy native artifact
if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
run: mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
windows-x86_64:
runs-on: windows-2019
needs: prepare
strategy:
matrix:
ext: [""] #, -gpu]
steps:
- name: Install environment
shell: cmd
run: |
set "PATH=C:\msys64\usr\bin;%PATH%"
python -m pip install numpy six
set "EXT=${{ matrix.ext }}"
echo %JAVA_HOME%
- name: Configure Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v1
- name: Build project
shell: cmd
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
set "PATH=C:\msys64\usr\bin;%PATH%"
echo Shorten work paths to prevent Bazel from reaching MAX_PATH limit
mkdir C:\tmp
set "TEST_TMPDIR=C:\tmp"
set "TMPDIR=C:\tmp"
set "TEMP=C:\tmp"
set "TMP=C:\tmp"
bash --version
git --version
cl
call mvn -version
echo ^<settings^>^<servers^>^<server^>^<id^>ossrh^</id^>^<username^>${{ secrets.CI_DEPLOY_USERNAME }}^</username^>^<password^>${{ secrets.CI_DEPLOY_PASSWORD }}^</password^>^</server^>^</servers^>^</settings^> > %USERPROFILE%\.m2\settings.xml
set "SKIP_EXPORT=true"
call mvn clean install -pl "!tensorflow-framework" -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
if ERRORLEVEL 1 exit /b
- name: Deploy native artifact
if: env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
shell: cmd
run: |
call mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
if ERRORLEVEL 1 exit /b

deploy:
if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging') }} # DEPLOY_SNAPSHOT (releases should be signed and deployed manually from local machine)
needs: [linux-x86_64, macosx-x86_64, windows-x86_64, macosx-arm64]
runs-on: ubuntu-20.04
steps:
- name: Configure Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v1
- name: Build project
run: |
java -version
mvn -version
mvn clean install -B -U -e -Pdeploying
- name: Deploy snapshot artifacts
run: |
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
mvn deploy -Pdeploying -B -e -Dmaven.test.skip=true
Loading
Loading