Skip to content

Commit

Permalink
Update on "Update pytorch nightly pin to 03/13"
Browse files Browse the repository at this point in the history

## Context

Updating PyTorch nightly pin to 03/13 to capture dynamic shape support in ATen Vulkan (pytorch/pytorch#121598).

Previous upate was to 03/12 (#2370) so this should not be a risky change. Also, according to PyTorch nightly HUD (https://hud.pytorch.org/hud/pytorch/pytorch/nightly) this 03/13 nightly is all green while 03/12 nightly had some failures.

Differential Revision: [D54870270](https://our.internmc.facebook.com/intern/diff/D54870270)

[ghstack-poisoned]
  • Loading branch information
SS-JIA committed Mar 20, 2024
2 parents 779fd60 + 72288a5 commit 28a220a
Show file tree
Hide file tree
Showing 337 changed files with 12,705 additions and 2,916 deletions.
7 changes: 7 additions & 0 deletions .ci/docker/build.sh
Expand Up @@ -37,6 +37,12 @@ case "${IMAGE_NAME}" in
ARM_SDK=yes
CLANG_VERSION=12
;;
executorch-ubuntu-22.04-clang12-android)
LINTRUNNER=""
CLANG_VERSION=12
# From https://developer.android.com/ndk/downloads
ANDROID_NDK_VERSION=r26c
;;
*)
echo "Invalid image name ${IMAGE_NAME}"
exit 1
Expand Down Expand Up @@ -66,6 +72,7 @@ docker build \
--build-arg "LINTRUNNER=${LINTRUNNER:-}" \
--build-arg "BUILD_DOCS=${BUILD_DOCS}" \
--build-arg "ARM_SDK=${ARM_SDK:-}" \
--build-arg "ANDROID_NDK_VERSION=${ANDROID_NDK_VERSION:-}" \
-f "${OS}"/Dockerfile \
"$@" \
.
2 changes: 1 addition & 1 deletion .ci/docker/ci_commit_pins/pytorch.txt
@@ -1 +1 @@
5b90074540577267c29f5f784be123ee54f6491d
6b5259e50704aede43c87fed33f64224f9047087
70 changes: 70 additions & 0 deletions .ci/docker/common/install_android.sh
@@ -0,0 +1,70 @@
#!/bin/bash
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

set -ex

# Double check if the NDK version is set
[ -n "${ANDROID_NDK_VERSION}" ]

install_prerequiresites() {
apt-get update

# NB: Need OpenJDK 17 at the minimum
apt-get install -y --no-install-recommends \
openjdk-17-jdk \
ca-certificates-java \
ant

# Cleanup package manager
apt-get autoclean && apt-get clean
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
}

install_ndk() {
NDK_INSTALLATION_DIR=/opt/ndk
mkdir -p "${NDK_INSTALLATION_DIR}"

pushd /tmp
# The NDK installation is cached on ossci-android S3 bucket
curl -Os --retry 3 "https://ossci-android.s3.amazonaws.com/android-ndk-${ANDROID_NDK_VERSION}-linux.zip"
unzip -qo "android-ndk-${ANDROID_NDK_VERSION}-linux.zip"

# Print the content for manual verification
ls -lah "android-ndk-${ANDROID_NDK_VERSION}"
mv "android-ndk-${ANDROID_NDK_VERSION}"/* "${NDK_INSTALLATION_DIR}"

popd
}

install_cmdtools() {
CMDTOOLS_FILENAME=commandlinetools-linux-11076708_latest.zip

pushd /tmp
# The file is cached on ossci-android S3 bucket
curl -Os --retry 3 "https://ossci-android.s3.us-west-1.amazonaws.com/${CMDTOOLS_FILENAME}"
unzip -qo "${CMDTOOLS_FILENAME}" -d /opt

ls -lah /opt/cmdline-tools/bin
popd
}

install_sdk() {
SDK_INSTALLATION_DIR=/opt/android/sdk
mkdir -p "${SDK_INSTALLATION_DIR}"

# These are the tools needed to build Android apps
yes | /opt/cmdline-tools/bin/sdkmanager --sdk_root="${SDK_INSTALLATION_DIR}" --install "platforms;android-34"
yes | /opt/cmdline-tools/bin/sdkmanager --sdk_root="${SDK_INSTALLATION_DIR}" --install "build-tools;33.0.1"
# And some more tools for future emulator tests
yes | /opt/cmdline-tools/bin/sdkmanager --sdk_root="${SDK_INSTALLATION_DIR}" --install "platform-tools"
yes | /opt/cmdline-tools/bin/sdkmanager --sdk_root="${SDK_INSTALLATION_DIR}" --install "tools"
}

install_prerequiresites
install_ndk
install_cmdtools
install_sdk
6 changes: 6 additions & 0 deletions .ci/docker/ubuntu/Dockerfile
Expand Up @@ -71,6 +71,12 @@ COPY ./requirements-lintrunner.txt requirements-lintrunner.txt
RUN if [ -n "${LINTRUNNER}" ]; then bash ./install_linter.sh; fi
RUN rm install_linter.sh utils.sh requirements-lintrunner.txt

ARG ANDROID_NDK_VERSION
# Install lintrunner if needed
COPY ./common/install_android.sh install_android.sh
RUN if [ -n "${ANDROID_NDK_VERSION}" ]; then bash ./install_android.sh; fi
RUN rm install_android.sh

ARG ARM_SDK
COPY --chown=ci-user:ci-user ./arm /opt/arm
# Set up ARM SDK if needed
Expand Down
2 changes: 1 addition & 1 deletion .ci/scripts/utils.sh
Expand Up @@ -19,7 +19,7 @@ install_executorch() {
which pip
# Install executorch, this assumes that Executorch is checked out in the
# current directory
pip install . --no-build-isolation
pip install . --no-build-isolation -v
# Just print out the list of packages for debugging
pip list
}
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/_unittest.yml
Expand Up @@ -33,8 +33,11 @@ jobs:
conda activate "${CONDA_ENV}"
BUILD_TOOL=${{ matrix.build-tool }}
# Setup MacOS dependencies as there is no Docker support on MacOS atm
PYTHON_EXECUTABLE=python EXECUTORCH_BUILD_PYBIND=ON bash .ci/scripts/setup-linux.sh "${BUILD_TOOL}"
PYTHON_EXECUTABLE=python \
EXECUTORCH_BUILD_PYBIND=ON \
.ci/scripts/setup-linux.sh "${BUILD_TOOL}"
# Run pytest with coverage
pytest -n auto --cov=./ --cov-report=xml
Expand All @@ -59,8 +62,13 @@ jobs:
BUILD_TOOL=${{ matrix.build-tool }}
bash .ci/scripts/setup-conda.sh
# Setup MacOS dependencies as there is no Docker support on MacOS atm
PYTHON_EXECUTABLE=python ${CONDA_RUN} EXECUTORCH_BUILD_PYBIND=ON bash .ci/scripts/setup-macos.sh "${BUILD_TOOL}"
PYTHON_EXECUTABLE=python \
EXECUTORCH_BUILD_PYBIND=ON \
CMAKE_ARGS="-DEXECUTORCH_BUILD_COREML=ON -DEXECUTORCH_BUILD_MPS=ON -DEXECUTORCH_BUILD_XNNPACK=ON" \
${CONDA_RUN} --no-capture-output \
.ci/scripts/setup-macos.sh "${BUILD_TOOL}"
# Run pytest with coverage
${CONDA_RUN} pytest -n auto --cov=./ --cov-report=xml
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/android.yml
@@ -0,0 +1,47 @@
name: Build ExecuTorch Android demo apps

on:
push:
branches:
- main
- release/*
pull_request:
paths:
- .ci/docker/**
- .github/workflows/android.yml
- install_requirements.sh
- examples/demo-apps/**
- extension/module/**
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }}-${{ github.event_name == 'schedule' }}
cancel-in-progress: true

jobs:
test-demo-android:
name: test-demo-android
uses: pytorch/test-infra/.github/workflows/linux_job.yml@main
strategy:
matrix:
include:
- build-tool: buck2
with:
# NB: The example model dl3 requires lots of memory (T161064121)
runner: linux.12xlarge
docker-image: executorch-ubuntu-22.04-clang12-android
submodules: 'true'
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout: 90
script: |
set -eux
# The generic Linux job chooses to use base env, not the one setup by the image
CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]")
conda activate "${CONDA_ENV}"
BUILD_TOOL=${{ matrix.build-tool }}
# Setup MacOS dependencies as there is no Docker support on MacOS atm
PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh "${BUILD_TOOL}"
# Build Android demo app
bash build/test_android_ci.sh
66 changes: 60 additions & 6 deletions .github/workflows/apple.yml
Expand Up @@ -8,7 +8,7 @@ on:
pull_request:
paths:
- .ci/docker/**
- .github/workflows/app-build.yml
- .github/workflows/apple.yml
- install_requirements.sh
- backends/apple/**
- build/build_apple_frameworks.sh
Expand Down Expand Up @@ -58,14 +58,20 @@ jobs:
python-version: '3.11'
submodules: 'true'
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
upload-artifact: executorch.zip
upload-artifact: executorch-frameworks-ios
timeout: 90
script: |
WORKSPACE=$(pwd)
pushd "${WORKSPACE}/pytorch/executorch"
BUILD_TOOL=cmake
VERSION="0.1.0"
OUTPUT="executorch-${VERSION}"
FRAMEWORKS=(
"executorch"
"coreml_backend"
"mps_backend"
"portable_backend"
"xnnpack_backend"
)
.ci/scripts/setup-conda.sh
Expand All @@ -83,10 +89,58 @@ jobs:
# Build iOS Frameworks
PYTHON_EXECUTABLE=python ${CONDA_RUN} --no-capture-output \
build/build_apple_frameworks.sh --output="${OUTPUT}" --coreml --mps --portable --xnnpack
build/build_apple_frameworks.sh --coreml --mps --portable --xnnpack
# Bundle iOS Frameworks
cp LICENSE "${OUTPUT}"
zip -r "${RUNNER_TEMP}/artifacts/${OUTPUT}.zip" "${OUTPUT}"
for FRAMEWORK in "${FRAMEWORKS[@]}"; do (
cd cmake-out && zip -r "${RUNNER_TEMP}/artifacts/${FRAMEWORK}-${VERSION}.zip" "${FRAMEWORK}.xcframework"
) done
popd
upload-frameworks-ios:
runs-on: ubuntu-22.04
needs: build-frameworks-ios
timeout-minutes: 30
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
cache: pip
- name: configure aws credentials
uses: aws-actions/configure-aws-credentials@v1.7.0
with:
role-to-assume: arn:aws:iam::308535385114:role/gha_executorch_upload-frameworks-ios
aws-region: us-east-1
- name: Download the artifact
uses: actions/download-artifact@v3
with:
# NB: The name here needs to match the upload-artifact name from build-frameworks-ios job
name: executorch-frameworks-ios
path: ${{ runner.temp }}/frameworks-ios/
- name: Only push to S3 when running the workflow manually from main branch
if: ${{ github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main' }}
shell: bash
run: |
set -eux
echo "UPLOAD_ON_MAIN=1" >> "${GITHUB_ENV}"
- name: Upload the artifact to ossci-ios S3 bucket
shell: bash
run: |
set -eux
pip install awscli==1.32.18
AWS_CMD="aws s3 cp --dryrun"
if [[ "${UPLOAD_ON_MAIN:-0}" == "1" ]]; then
AWS_CMD="aws s3 cp"
fi
for FILENAME in "${RUNNER_TEMP}"/frameworks-ios/*.zip; do
[ -e "${FILENAME}" ] || continue
${AWS_CMD} "${FILENAME}" s3://ossci-ios/executorch/ --acl public-read
done
1 change: 1 addition & 0 deletions .github/workflows/docker-builds.yml
Expand Up @@ -38,6 +38,7 @@ jobs:
- docker-image-name: executorch-ubuntu-22.04-clang12
- docker-image-name: executorch-ubuntu-22.04-linter
- docker-image-name: executorch-ubuntu-22.04-arm-sdk
- docker-image-name: executorch-ubuntu-22.04-clang12-android
env:
DOCKER_IMAGE: 308535385114.dkr.ecr.us-east-1.amazonaws.com/executorch/${{ matrix.docker-image-name }}
steps:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/pull.yml
Expand Up @@ -206,7 +206,9 @@ jobs:
# build module for executorch.extension.pybindings.portable_lib
BUILD_TOOL=${{ matrix.build-tool }}
PYTHON_EXECUTABLE=python EXECUTORCH_BUILD_PYBIND=ON bash .ci/scripts/setup-linux.sh "${BUILD_TOOL}"
PYTHON_EXECUTABLE=python \
EXECUTORCH_BUILD_PYBIND=ON \
bash .ci/scripts/setup-linux.sh "${BUILD_TOOL}"
# see if we can import the module successfully
python -c "from executorch.extension.pybindings import portable_lib; print('success!')"
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,6 +3,7 @@ buck-out/
cmake-out/
cmake-android-out/
cmake-ios-out/
ethos-u-scratch/
executorch.egg-info
__pycache__/
build/lib/
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Expand Up @@ -30,7 +30,7 @@
url = https://github.com/Maratyszcza/FXdiv.git
[submodule "backends/xnnpack/third-party/XNNPACK"]
path = backends/xnnpack/third-party/XNNPACK
url = https://github.com/google/XNNPACK.git
url = https://github.com/digantdesai/XNNPACK.git
[submodule "backends/arm/third-party/serialization_lib"]
path = backends/arm/third-party/serialization_lib
url = https://review.mlplatform.org/tosa/serialization_lib
Expand Down

0 comments on commit 28a220a

Please sign in to comment.