Skip to content

GH: Add M1 conda build workflows #6135

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

Merged
merged 1 commit into from
Jun 8, 2022
Merged

GH: Add M1 conda build workflows #6135

merged 1 commit into from
Jun 8, 2022

Conversation

malfet
Copy link
Contributor

@malfet malfet commented Jun 8, 2022

Clean up Conda build folder before every run
Enable artifact upload to GitHub for every workflow run, but upload to Conda/S3 only on nightly pushes

Test plan: conda install -c pytorch-nightly torchvision; python -c "import torchvision;print(torchvision.io.read_image('hummingbird.jpg').shape)"

@malfet malfet force-pushed the malfet/add-m1-conda-builds branch 7 times, most recently from 65751d5 to b728e4a Compare June 8, 2022 04:07
@malfet malfet force-pushed the malfet/add-m1-conda-builds branch from b728e4a to 84b245c Compare June 8, 2022 04:24
@malfet malfet changed the title GH: Add M1 conda build step GH: Add M1 conda build workflows Jun 8, 2022
@malfet malfet requested review from NicolasHug and atalman June 8, 2022 04:24
export SOURCE_ROOT_DIR=$(pwd)
conda build -c defaults $CONDA_CHANNEL_FLAGS --no-anaconda-upload --python "$PYTHON_VERSION" packaging/torchvision
mkdir -p dist
cp ~/miniconda3/conda-bld/osx-arm64/*.tar.bz2 dist/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we test the conda package by running the smoke tests as we do above with the wheels?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@datumbox isn't it part of coda build process? I.e. it should execute commands defined in test section, i.e.:

test:
imports:
- torchvision
- torchvision.datasets
- torchvision.transforms
source_files:
- test
requires:
- pytest
- scipy
- jpeg

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will just try to import torchvision, torchvision.datasets and torchvision.transforms?
We should at least check that ops are properly present like we do for the wheels

          conda run --cwd /tmp -p ${ENV_NAME} python3 -c "import torchvision;print(torchvision.io.read_image('${PWD}/gallery/assets/dog1.jpg').shape)"

@datumbox datumbox mentioned this pull request Jun 8, 2022
Copy link
Contributor

@atalman atalman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@malfet
Copy link
Contributor Author

malfet commented Jun 8, 2022

@datumbox I'm going to merge this one as is and then perhaps at testing when moving both x86 and m1 binary builds to GHA infrastructure.... (as neither has testing at the moment)

@malfet malfet merged commit ee6f6ec into main Jun 8, 2022
@malfet malfet deleted the malfet/add-m1-conda-builds branch June 8, 2022 16:18
@github-actions
Copy link

github-actions bot commented Jun 8, 2022

Hey @malfet!

You merged this PR, but no labels were added. The list of valid labels is available at https://github.com/pytorch/vision/blob/main/.github/process_commit.py

NicolasHug pushed a commit to YosuaMichael/vision that referenced this pull request Jun 8, 2022
Clean up Conda build folder before every run
Enable artifact upload to GitHub for every workflow run, but upload to Conda/S3 only on nightly pushes

Test plan: `conda install -c pytorch-nightly torchvision; python -c "import torchvision;print(torchvision.io.read_image('hummingbird.jpg').shape)"`
facebook-github-bot pushed a commit that referenced this pull request Jun 9, 2022
Summary:
Clean up Conda build folder before every run
Enable artifact upload to GitHub for every workflow run, but upload to Conda/S3 only on nightly pushes

Reviewed By: YosuaMichael

Differential Revision: D37038112

fbshipit-source-id: 686c5b3286f5d59520b06b034085bf5e11440f13
atalman pushed a commit to atalman/vision that referenced this pull request Jun 14, 2022
Clean up Conda build folder before every run
Enable artifact upload to GitHub for every workflow run, but upload to Conda/S3 only on nightly pushes

Test plan: `conda install -c pytorch-nightly torchvision; python -c "import torchvision;print(torchvision.io.read_image('hummingbird.jpg').shape)"`
NicolasHug added a commit that referenced this pull request Jun 15, 2022
* Add M1 wheels binary builds (#5948)

* [M1] Set build version and delocate wheels (#6110)

This would package libpng and libjpeg.dylib into wheel files
Add a very simple test step, copied from https://github.com/pytorch/pytorch.github.io/blob/1eaa33a3d3f1b83b64c5031c6dd04dbb238d6105/scripts/test_install.py#L78
Cherry-picked from https://github.com/pytorch/builder/blob/d0bc74cc363a9da5a8b6a40e883d40d25d050036/build_m1_domains.sh#L22

* [BE] Unify version computation (#6117)

* [BE] Unify version computation

Instead of hardcoding dev version in various script, use one from
`version.txt` if `setup_build_version` is called without arguments

Also, pass `--pre` option to M1 build/test pip install commands to build
TorchVision against nightly pytorch

* Pin torchvision dependency to a specific pytorch version

* [M1] Install "jpeg<=9b" rather than OpenJpeg (#6122)

Explicitly set PATH to point to `conda` binary, otherwise libjpeg detection logic does not work
Pin libjpeg to the same version on x86 and m1
Add simple tests that jpeg can be decoded by a generated wheel

* Add unit-tests for M1 (#6132)

* Add M1 testing job

* libjpeg -> jpeg<=9b in test-m1.yml

* Added export PATH=~/miniconda3/bin... from 6122

* Tests were OK, let's see if we can remove the pinning

* GH: Add M1 conda build workflows (#6135)

Clean up Conda build folder before every run
Enable artifact upload to GitHub for every workflow run, but upload to Conda/S3 only on nightly pushes

Test plan: `conda install -c pytorch-nightly torchvision; python -c "import torchvision;print(torchvision.io.read_image('hummingbird.jpg').shape)"`

* Fix `Test M1` workflow

By passing `--pre` option to `pip install`, otherwise torchvision were always tested against last PyTorch release

* Adding tagged builds for M1 (#6140)

* Adding tagged builds

* Testing

* Testing

* Testing

* Testing

* Adding conda builds

* Fix `if` condition for s3/conda uploads (#6146)

Replace `steps.extract_branch.outputs.branch` (which were probably taken from
https://stackoverflow.com/questions/58033366/how-to-get-the-current-branch-within-github-actions ) with straightforward `github.event.ref`

Tested in
https://github.com/malfet/deleteme/runs/6822647720?check_suite_focus=true and https://github.com/malfet/deleteme/runs/6822691158?check_suite_focus=true

* Fix typo in GHA nightly build condition (#6158)

s#ref/heads/#refs/heads/#

I should have noticed it while copy-n-pasting the condition. Unfortunately there are no way to test is other than in prod, but nightly builds are still not getting pushed, see https://github.com/pytorch/vision/runs/6860407007?check_suite_focus=true for example

* Making sure we are building against release

* Testing

Testing

Testing

Testing

testing

Testing

Testing

Testing

Testing

Testing

Testing

Testing

* Testing

* Testing

* Cleanup

* Refactoring logic

Co-authored-by: Nikita Shulga <[email protected]>
Co-authored-by: Nicolas Hug <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants