From 9004d959bb3dad2cd6980a2ddf971b83362669a8 Mon Sep 17 00:00:00 2001 From: Jacob Szwejbka Date: Wed, 14 Jan 2026 14:09:20 -0800 Subject: [PATCH 1/6] parakeet cpu test --- .github/workflows/pull.yml | 113 +++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index f25d7ede3b3..df74c5a9660 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -358,6 +358,119 @@ jobs: # run python unittest python -m unittest examples.models.moshi.mimi.test_mimi + test-parakeet-linux: + name: test-parakeet-linux + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + permissions: + id-token: write + contents: read + strategy: + fail-fast: false + with: + runner: linux.2xlarge + docker-image: ci-image:executorch-ubuntu-22.04-clang12 + submodules: 'recursive' + 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}" + + PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool "cmake" + + # install parakeet requirements + pip install -r examples/models/parakeet/install_requirements.txt + + # install audio processing dependencies (same as whisper) + conda install -y -c conda-forge "ffmpeg<8" + pip install datasets soundfile + pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu + + # reinstall executorch + bash ./install_executorch.sh --minimal + pip list + + # export parakeet model with portable backend (no hardware-specific backend) + python -m examples.models.parakeet.export_parakeet_tdt --output-dir /tmp/parakeet_export + + # verify the .pte file was created + ls -la /tmp/parakeet_export/ + test -f /tmp/parakeet_export/parakeet_tdt.pte + + test-parakeet-transcription-linux: + name: test-parakeet-transcription-linux + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + permissions: + id-token: write + contents: read + strategy: + fail-fast: false + with: + runner: linux.4xlarge.memory + docker-image: ci-image:executorch-ubuntu-22.04-clang12 + submodules: 'recursive' + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} + timeout: 120 + 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}" + + # install parakeet requirements + pip install -r examples/models/parakeet/install_requirements.txt + + # install audio processing dependencies (same as whisper) + conda install -y -c conda-forge "ffmpeg<8" + pip install datasets soundfile + pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu + + # reinstall executorch + bash ./install_executorch.sh + + echo "::group::Build ExecuTorch with LLM runner" + cmake --workflow --preset llm-release + echo "::endgroup::" + + echo "::group::Build Parakeet runner (CPU)" + cd examples/models/parakeet && cmake --workflow --preset parakeet-cpu + cd ../../.. + echo "::endgroup::" + + echo "::group::Export Parakeet model" + python -m examples.models.parakeet.export_parakeet_tdt --output-dir /tmp/parakeet_export + ls -la /tmp/parakeet_export/ + echo "::endgroup::" + + echo "::group::Download test audio" + python -c " + from datasets import load_dataset + import soundfile as sf + sample = load_dataset('distil-whisper/librispeech_long', 'clean', split='validation')[0]['audio'] + sf.write('/tmp/test_audio.wav', sample['array'][:sample['sampling_rate']*30], sample['sampling_rate']) + print('Audio file created: /tmp/test_audio.wav') + " + echo "::endgroup::" + + echo "::group::Run Parakeet transcription" + EXPECTED_OUTPUT="Mr. Quilter is the apostle of the middle classes" + OUTPUT=$(./cmake-out/examples/models/parakeet/parakeet_runner \ + --model_path /tmp/parakeet_export/parakeet_tdt.pte \ + --audio_path /tmp/test_audio.wav \ + --tokenizer_path /tmp/parakeet_export/tokenizer.model \ + --timestamps segment 2>&1) + echo "$OUTPUT" + + if ! echo "$OUTPUT" | grep -iq "$EXPECTED_OUTPUT"; then + echo "Expected output '$EXPECTED_OUTPUT' not found in transcription" + exit 1 + else + echo "Success: '$EXPECTED_OUTPUT' found in transcription output" + fi + echo "::endgroup::" + test-quantized-aot-lib-linux: name: test-quantized-aot-lib-linux uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main From 47713cb6fb37546c5c30fc9ad97ef83d60bf7525 Mon Sep 17 00:00:00 2001 From: Jacob Szwejbka Date: Wed, 14 Jan 2026 14:32:40 -0800 Subject: [PATCH 2/6] install torchaudio after --- .github/workflows/pull.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index df74c5a9660..e04982275d8 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -380,16 +380,11 @@ jobs: PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool "cmake" - # install parakeet requirements - pip install -r examples/models/parakeet/install_requirements.txt - - # install audio processing dependencies (same as whisper) - conda install -y -c conda-forge "ffmpeg<8" - pip install datasets soundfile - pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu - # reinstall executorch bash ./install_executorch.sh --minimal + + # install parakeet requirements AFTER executorch to get compatible torchaudio + pip install -r examples/models/parakeet/install_requirements.txt pip list # export parakeet model with portable backend (no hardware-specific backend) @@ -419,17 +414,17 @@ jobs: CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]") conda activate "${CONDA_ENV}" - # install parakeet requirements - pip install -r examples/models/parakeet/install_requirements.txt - # install audio processing dependencies (same as whisper) conda install -y -c conda-forge "ffmpeg<8" pip install datasets soundfile pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu - # reinstall executorch + # reinstall executorch first to get correct PyTorch version bash ./install_executorch.sh + # install parakeet requirements AFTER executorch to get compatible torchaudio + pip install -r examples/models/parakeet/install_requirements.txt + echo "::group::Build ExecuTorch with LLM runner" cmake --workflow --preset llm-release echo "::endgroup::" From b243847e1f0768265af23ec028dcea65015b3514 Mon Sep 17 00:00:00 2001 From: Jacob Szwejbka Date: Wed, 14 Jan 2026 14:48:00 -0800 Subject: [PATCH 3/6] move torch audio import to dodge issue --- examples/models/parakeet/export_parakeet_tdt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/models/parakeet/export_parakeet_tdt.py b/examples/models/parakeet/export_parakeet_tdt.py index a6fee64a1a1..39a0ee9af43 100644 --- a/examples/models/parakeet/export_parakeet_tdt.py +++ b/examples/models/parakeet/export_parakeet_tdt.py @@ -7,8 +7,6 @@ import tempfile import torch - -import torchaudio from executorch.exir import ( EdgeCompileConfig, ExecutorchBackendConfig, @@ -20,6 +18,7 @@ def load_audio(audio_path: str, sample_rate: int = 16000) -> torch.Tensor: """Load audio file and resample to target sample rate.""" + import torchaudio waveform, sr = torchaudio.load(audio_path) From 45fa2f337890795b037443da4d056053f0105bbb Mon Sep 17 00:00:00 2001 From: Jacob Szwejbka Date: Wed, 14 Jan 2026 15:19:01 -0800 Subject: [PATCH 4/6] try again --- .github/workflows/pull.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index e04982275d8..40301025634 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -414,16 +414,19 @@ jobs: CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]") conda activate "${CONDA_ENV}" - # install audio processing dependencies (same as whisper) - conda install -y -c conda-forge "ffmpeg<8" - pip install datasets soundfile - pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu + PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool "cmake" - # reinstall executorch first to get correct PyTorch version - bash ./install_executorch.sh + # reinstall executorch + bash ./install_executorch.sh --minimal # install parakeet requirements AFTER executorch to get compatible torchaudio pip install -r examples/models/parakeet/install_requirements.txt + pip list + + # install audio processing dependencies (same as whisper) + conda install -y -c conda-forge "ffmpeg<8" + pip install datasets soundfile + pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu echo "::group::Build ExecuTorch with LLM runner" cmake --workflow --preset llm-release From ba813222d4f8df7e106e342a5d2a034d2912e71b Mon Sep 17 00:00:00 2001 From: Jacob Szwejbka Date: Wed, 14 Jan 2026 15:40:28 -0800 Subject: [PATCH 5/6] try again --- .github/workflows/pull.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index 40301025634..b7d519eb9ae 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -414,20 +414,16 @@ jobs: CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]") conda activate "${CONDA_ENV}" - PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool "cmake" - - # reinstall executorch - bash ./install_executorch.sh --minimal - - # install parakeet requirements AFTER executorch to get compatible torchaudio - pip install -r examples/models/parakeet/install_requirements.txt - pip list - # install audio processing dependencies (same as whisper) conda install -y -c conda-forge "ffmpeg<8" pip install datasets soundfile pip install torchcodec==0.10.0.dev20251211 --extra-index-url https://download.pytorch.org/whl/nightly/cpu + # install executorch and parakeet requirements + bash ./install_executorch.sh + pip install -r examples/models/parakeet/install_requirements.txt + pip list + echo "::group::Build ExecuTorch with LLM runner" cmake --workflow --preset llm-release echo "::endgroup::" From e2531756b74eb3cac283bd506892c9f95521e019 Mon Sep 17 00:00:00 2001 From: Jacob Szwejbka Date: Wed, 14 Jan 2026 15:59:52 -0800 Subject: [PATCH 6/6] try again --- .github/workflows/pull.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index b7d519eb9ae..1b45fffe790 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -422,6 +422,9 @@ jobs: # install executorch and parakeet requirements bash ./install_executorch.sh pip install -r examples/models/parakeet/install_requirements.txt + + # Reinstall torchvision to match torch version (nemo_toolkit may install incompatible version) + pip install --force-reinstall torchvision --extra-index-url https://download.pytorch.org/whl/nightly/cpu pip list echo "::group::Build ExecuTorch with LLM runner"