M5: Emily.Compiler — Nx.Defn.Compiler on Emily.Backend #25
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| precommit: | |
| name: precommit (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Emily is Apple-Silicon only. macos-14 is arm64 (M1). | |
| os: [macos-14] | |
| env: | |
| MIX_ENV: test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Beam | |
| uses: erlef/setup-beam@v1 | |
| with: | |
| version-file: .tool-versions | |
| version-type: strict | |
| - name: Cache MLX prebuilt | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/Library/Caches/emily | |
| key: mlx-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('mix.exs') }} | |
| - name: Cache deps | |
| uses: actions/cache@v4 | |
| with: | |
| path: deps | |
| key: deps-${{ runner.os }}-${{ hashFiles('mix.lock') }} | |
| restore-keys: deps-${{ runner.os }}- | |
| - name: Cache build | |
| uses: actions/cache@v4 | |
| with: | |
| path: _build | |
| key: build-${{ runner.os }}-${{ hashFiles('mix.lock', 'c_src/**', 'Makefile', '.tool-versions') }} | |
| restore-keys: build-${{ runner.os }}- | |
| # The Bumblebee cache holds tiny-random HuggingFace fixtures | |
| # downloaded by the conformance suite (~3 MB across 7 repos). | |
| # Cached by conformance test content so new fixtures invalidate; | |
| # restore-keys lets unrelated changes reuse the existing cache. | |
| - name: Cache Bumblebee fixtures | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/Library/Caches/bumblebee | |
| key: bumblebee-${{ runner.os }}-${{ hashFiles('test/emily/conformance/**') }} | |
| restore-keys: bumblebee-${{ runner.os }}- | |
| - run: mix deps.get | |
| - run: mix precommit | |
| # Conformance tests are excluded from the default suite because | |
| # they require network access on a cold cache (see | |
| # test/test_helper.exs). In CI we always want them green — a | |
| # DistilBERT forward pass is the canonical integration signal | |
| # that no Nx op on the transformer critical path has regressed. | |
| - run: mix test --only conformance |