Skip to content

IFU-main-2024-02-22

IFU-main-2024-02-22 #5

name: Validate manywheel binaries
# This workflow validates the size of the manywheel binaries after repackaging for PyPi
# Specify the direct URLs to the binaries (from https://download.pytorch.org/whl/test/torch/) in the matrix
# along with the python version.
#
# The workflow will:
# * download the binaries,
# * run release/pypi/prep_binary_for_pypi.sh
# * run smoke tests on the repackaged binaries
# * display the size before and after repackaging as the workflow annotation
# * optionally upload the repackaged binaries as artifacts (for debug or promotion)
on:
pull_request:
paths:
- .github/workflows/validate-repackaged-binary-sizes.yml
- release/pypi/prep_binary_for_pypi.sh
jobs:
validate-binary-size:
strategy:
fail-fast: false
matrix:
whl:
- url: https://download.pytorch.org/whl/test/cu121/torch-2.2.0%2Bcu121-cp312-cp312-linux_x86_64.whl
python: "3.12"
artifact: false
- url: https://download.pytorch.org/whl/test/cu121/torch-2.2.0%2Bcu121-cp311-cp311-linux_x86_64.whl
python: "3.11" # python version to use for smoke tests
upload_artifact: false # upload the repackaged binary as an artifact
- url: https://download.pytorch.org/whl/test/cu121/torch-2.2.0%2Bcu121-cp310-cp310-linux_x86_64.whl
python: "3.10"
artifact: false
- url: https://download.pytorch.org/whl/test/cu121/torch-2.2.0%2Bcu121-cp39-cp39-linux_x86_64.whl
python: "3.9"
artifact: false
- url: https://download.pytorch.org/whl/test/cu121/torch-2.2.0%2Bcu121-cp38-cp38-linux_x86_64.whl
python: "3.8"
artifact: false
uses: pytorch/test-infra/.github/workflows/linux_job.yml@main
with:
runner: linux.g5.4xlarge.nvidia.gpu
job-name: "Validate binary size"
upload-artifact: ${{ matrix.whl.upload_artifact == 'true' && 'repackaged-binary' || '' }}
script: |
set -ex
export ENV_NAME="conda-env-${{ github.run_id }}"
export MATRIX_GPU_ARCH_VERSION="12.1"
export MATRIX_GPU_ARCH_TYPE="cuda"
export MATRIX_CUDA_VER="12.1"
export DESIRED_PYTHON="${{ matrix.whl.python }}"
export MATRIX_PACKAGE_TYPE="wheel"
export TARGET_OS="linux"
# install zip
sudo yum install zip -y
# install patchelf
chmod a+x common/install_patchelf.sh
sudo common/install_patchelf.sh
# download torch whl
wget ${{ matrix.whl.url }}
FILENAME=$(ls -1 *.whl | head -n 1)
SIZE_BEFORE=$(du -h $FILENAME | cut -f1)
# repackage into manywheel
release/pypi/prep_binary_for_pypi.sh $FILENAME
NEW_FILENAME=$(ls -1 *.whl | head -n 1)
echo "::notice:: $FILENAME before: $SIZE_BEFORE after: $(du -h $NEW_FILENAME | cut -f1)"
# cp to ${RUNNER_ARTIFACT_DIR}
cp $NEW_FILENAME ${RUNNER_ARTIFACT_DIR}/
# create conda env
conda create -y -n $ENV_NAME python=$DESIRED_PYTHON
conda activate $ENV_NAME
# install torch
pip install numpy pillow $NEW_FILENAME
# run smoke test
python ./test/smoke_test/smoke_test.py --package=torchonly