The TestApp is currently being used as a dummy app by Circle CI for nightly jobs. The challenge comes when testing the arm64 build as we don't have a way to code-sign our TestApp. This is where Fastlane came to rescue. Fastlane is a trendy automation tool for building and managing iOS applications. It also works seamlessly with Circle CI. We are going to leverage the import_certificate
action, which can install developer certificates on CI machines. See Fastfile
for more details.
For simulator build, we run unit tests as the last step of our CI workflow. Those unit tests can also be run manually via the fastlane scan
command.
Follow these steps if you want to run the test locally.
Checkout PyTorch repo including all submodules
Build PyTorch for ios
USE_COREML_DELEGATE=1 IOS_PLATFORM=SIMULATOR ./scripts/build_ios.sh
python test/mobile/model_test/gen_test_model.py ios-test
You need to install regular PyTorch on your local machine to run this script. Check https://github.com/pytorch/pytorch/tree/master/test/mobile/model_test#diagnose-failed-test to learn more.
cd ios/TestApp/benchmark ruby setup.rb --lite 1
Make sure PyTorch (not PyTorch for iOS) is installed See https://pytorch.org/get-started/locally/
Re-generate models for operator test
python test/mobile/model_test/gen_test_model.py ios python test/mobile/model_test/gen_test_model.py ios-test
cd ios/TestApp/benchmark; python coreml_backend.py
Make sure all models are generated. See https://github.com/pytorch/pytorch/tree/master/test/mobile/model_test to learn more.
There's no debug information in simulator test (project TestAppTests). You can copy the failed test code to TestApp/TestApp/ViewController.mm and debug in the main TestApp.
The benchmark folder contains two scripts that help you setup the benchmark project. The setup.rb
does the heavy-lifting jobs of setting up the XCode project, whereas the trace_model.py
is a Python script that you can tweak to generate your model for benchmarking. Simply follow the steps below to setup the project
IOS_ARCH=arm64 ./scripts/build_ios.sh
to generate the custom build from Master branchbenchmark
folder, run python trace_model.py
to generate your model.config.json
. Those are the input parameters you can tweak.ruby setup.rb
to setup the XCode project.TestApp.xcodeproj
, you're ready to go.The benchmark code is written in C++, you can use UI_LOG
to visualize the log. See benchmark.mm
for more details.