Bug 1964665 - Add a perftest for speecht5-tts r=firefox-ai-ml-reviewers,sparky,perftest-reviewers,tarek
This patch adds a perftest for the OONX speecht5-tts q8 quantized model as part of our ongoing exploration and benchmarking of TTS tasks for transform media type project. The goals are 1) add the first perftest for speech-to-text task as reference for future tests; 2) benchmark core performance metrics like latency and memory usage to assess realistic inference conditions (note that streaming audio output is not yet tested. This helps establish a baseline for comparing candidate TTS models (as well as different quantization levels) for future integration decisions. The test runs directly in transformers.js without any modification to the pipeline. Differential Revision: https://phabricator.services.mozilla.com/D248133
This commit is contained in:
committed by
vbaungally@mozilla.com
parent
edbda0a1b9
commit
ed3a91e4fa
@@ -66,6 +66,7 @@ suites:
|
|||||||
"ML Smart Tab Clustering": ""
|
"ML Smart Tab Clustering": ""
|
||||||
"browser_ml_smart_tab_perf.js": ""
|
"browser_ml_smart_tab_perf.js": ""
|
||||||
"browser_ml_llama_summarizer_perf.js": ""
|
"browser_ml_llama_summarizer_perf.js": ""
|
||||||
|
"ML Speech T5 TTS": ""
|
||||||
|
|
||||||
intl/benchmarks/test/xpcshell:
|
intl/benchmarks/test/xpcshell:
|
||||||
description: "Performance tests running through XPCShell for Intl code"
|
description: "Performance tests running through XPCShell for Intl code"
|
||||||
|
|||||||
@@ -98,3 +98,30 @@ smollm2-360-instruct-gguf:
|
|||||||
revision: 593b5a2e04c8f3e4ee880263f93e0bd2901ad47f
|
revision: 593b5a2e04c8f3e4ee880263f93e0bd2901ad47f
|
||||||
path-prefix: "onnx-models/HuggingFaceTB/SmolLM2-360M-Instruct-GGUF/main/"
|
path-prefix: "onnx-models/HuggingFaceTB/SmolLM2-360M-Instruct-GGUF/main/"
|
||||||
artifact-name: smollm2-360-instruct-gguf.tar.zst
|
artifact-name: smollm2-360-instruct-gguf.tar.zst
|
||||||
|
|
||||||
|
speecht5-tts:
|
||||||
|
description: microsoft/speecht5_tts with ONNX weights to be compatible with Transformers.js
|
||||||
|
fetch:
|
||||||
|
type: git
|
||||||
|
repo: https://huggingface.co/Xenova/speecht5_tts
|
||||||
|
revision: 73001d8bf5a9a7532c9cede52b5d3c21936939b1
|
||||||
|
path-prefix: "onnx-models/Xenova/speecht5_tts/main/"
|
||||||
|
artifact-name: speecht5_tts.tar.zst
|
||||||
|
|
||||||
|
speecht5-tts-vocoder:
|
||||||
|
description: vocoder for speecht5_tts
|
||||||
|
fetch:
|
||||||
|
type: git
|
||||||
|
repo: https://huggingface.co/Xenova/speecht5_hifigan
|
||||||
|
revision: 05bbb2dea568f207f71113f71c9ecc216840238e
|
||||||
|
path-prefix: "onnx-models/Xenova/speecht5_hifigan/main/"
|
||||||
|
artifact-name: speecht5_tts_hifigan.tar.zst
|
||||||
|
|
||||||
|
speecht5-tts-speaker:
|
||||||
|
description: speaker embedding for speecht5_tts
|
||||||
|
fetch:
|
||||||
|
type: git
|
||||||
|
repo: https://huggingface.co/datasets/Xenova/transformers.js-docs
|
||||||
|
revision: 4cc21eccd7f4ad1174c2f721c02468e43bf39b60
|
||||||
|
path-prefix: "onnx-models/Xenova/transformers.js-docs/main/"
|
||||||
|
artifact-name: speecht5_tts_speaker_embedding.tar.zst
|
||||||
|
|||||||
@@ -666,3 +666,32 @@ ml-perf-smart-tab-cluster:
|
|||||||
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
--mochitest-name-change
|
--mochitest-name-change
|
||||||
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
||||||
|
|
||||||
|
ml-perf-speecht5-tts:
|
||||||
|
fetches:
|
||||||
|
fetch:
|
||||||
|
- ort.jsep.wasm
|
||||||
|
- speecht5-tts
|
||||||
|
- speecht5-tts-vocoder
|
||||||
|
- speecht5-tts-speaker
|
||||||
|
description: Run ML speecht5-tts Model
|
||||||
|
worker:
|
||||||
|
max-run-time: 900
|
||||||
|
treeherder:
|
||||||
|
symbol: perftest(ml-perf-speecht5)
|
||||||
|
tier: 2
|
||||||
|
attributes:
|
||||||
|
batch: false
|
||||||
|
cron: false
|
||||||
|
run-on-projects: [autoland, mozilla-central]
|
||||||
|
run:
|
||||||
|
command: >-
|
||||||
|
mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
|
||||||
|
cd $MOZ_FETCHES_DIR &&
|
||||||
|
python3 python/mozperftest/mozperftest/runner.py
|
||||||
|
--mochitest-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
|
||||||
|
--flavor mochitest
|
||||||
|
--output $MOZ_FETCHES_DIR/../artifacts
|
||||||
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
|
--mochitest-name-change
|
||||||
|
toolkit/components/ml/tests/browser/browser_ml_speecht5_tts.js
|
||||||
|
|||||||
@@ -593,3 +593,32 @@ ml-perf-smart-tab-cluster:
|
|||||||
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
--mochitest-name-change
|
--mochitest-name-change
|
||||||
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
||||||
|
|
||||||
|
ml-perf-speecht5-tts:
|
||||||
|
fetches:
|
||||||
|
fetch:
|
||||||
|
- ort.jsep.wasm
|
||||||
|
- speecht5-tts
|
||||||
|
- speecht5-tts-vocoder
|
||||||
|
- speecht5-tts-speaker
|
||||||
|
description: Run ML speecht5-tts Model
|
||||||
|
treeherder:
|
||||||
|
symbol: perftest(ml-perf-speecht5)
|
||||||
|
tier: 2
|
||||||
|
worker:
|
||||||
|
max-run-time: 900
|
||||||
|
attributes:
|
||||||
|
batch: false
|
||||||
|
cron: false
|
||||||
|
run-on-projects: [autoland, mozilla-central]
|
||||||
|
run:
|
||||||
|
command: >-
|
||||||
|
mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
|
||||||
|
cd $MOZ_FETCHES_DIR &&
|
||||||
|
python3 python/mozperftest/mozperftest/runner.py
|
||||||
|
--mochitest-binary ${MOZ_FETCHES_DIR}/target.dmg
|
||||||
|
--flavor mochitest
|
||||||
|
--output $MOZ_FETCHES_DIR/../artifacts
|
||||||
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
|
--mochitest-name-change
|
||||||
|
toolkit/components/ml/tests/browser/browser_ml_speecht5_tts.js
|
||||||
|
|||||||
@@ -268,3 +268,32 @@ ml-perf-smart-tab-cluster:
|
|||||||
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
--mochitest-name-change
|
--mochitest-name-change
|
||||||
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
||||||
|
|
||||||
|
ml-perf-speecht5-tts:
|
||||||
|
fetches:
|
||||||
|
fetch:
|
||||||
|
- ort.jsep.wasm
|
||||||
|
- speecht5-tts
|
||||||
|
- speecht5-tts-vocoder
|
||||||
|
- speecht5-tts-speaker
|
||||||
|
description: Run ML speecht5-tts Model
|
||||||
|
worker:
|
||||||
|
max-run-time: 900
|
||||||
|
treeherder:
|
||||||
|
symbol: perftest(ml-perf-speecht5)
|
||||||
|
tier: 2
|
||||||
|
attributes:
|
||||||
|
batch: false
|
||||||
|
cron: false
|
||||||
|
run-on-projects: [autoland, mozilla-central]
|
||||||
|
run:
|
||||||
|
command: >-
|
||||||
|
mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
|
||||||
|
cd $MOZ_FETCHES_DIR &&
|
||||||
|
python3 python/mozperftest/mozperftest/runner.py
|
||||||
|
--mochitest-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
|
||||||
|
--flavor mochitest
|
||||||
|
--output $MOZ_FETCHES_DIR/../artifacts
|
||||||
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
|
--mochitest-name-change
|
||||||
|
toolkit/components/ml/tests/browser/browser_ml_speecht5_tts.js
|
||||||
|
|||||||
@@ -541,3 +541,32 @@ ml-perf-smart-tab-cluster:
|
|||||||
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
--mochitest-name-change
|
--mochitest-name-change
|
||||||
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
toolkit/components/ml/tests/browser/browser_ml_smart_tab_clustering_perf.js
|
||||||
|
|
||||||
|
ml-perf-speecht5-tts:
|
||||||
|
fetches:
|
||||||
|
fetch:
|
||||||
|
- ort.jsep.wasm
|
||||||
|
- speecht5-tts
|
||||||
|
- speecht5-tts-vocoder
|
||||||
|
- speecht5-tts-speaker
|
||||||
|
description: Run ML speecht5-tts Model
|
||||||
|
worker:
|
||||||
|
max-run-time: 900
|
||||||
|
treeherder:
|
||||||
|
symbol: perftest(ml-perf-speecht5)
|
||||||
|
tier: 2
|
||||||
|
attributes:
|
||||||
|
batch: false
|
||||||
|
cron: false
|
||||||
|
run-on-projects: [autoland, mozilla-central]
|
||||||
|
run:
|
||||||
|
command: >-
|
||||||
|
mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
|
||||||
|
cd $MOZ_FETCHES_DIR &&
|
||||||
|
python3 python/mozperftest/mozperftest/runner.py
|
||||||
|
--mochitest-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
|
||||||
|
--flavor mochitest
|
||||||
|
--output $MOZ_FETCHES_DIR/../artifacts
|
||||||
|
--hooks toolkit/components/ml/tests/tools/hooks_local_hub.py
|
||||||
|
--mochitest-name-change
|
||||||
|
toolkit/components/ml/tests/browser/browser_ml_speecht5_tts.js
|
||||||
|
|||||||
@@ -439,6 +439,24 @@ browser_ml_smart_tab_clustering_perf.js
|
|||||||
|
|
||||||
**Testing Smart Tab Clustering**
|
**Testing Smart Tab Clustering**
|
||||||
|
|
||||||
|
browser_ml_speecht5_tts.js
|
||||||
|
==========================
|
||||||
|
|
||||||
|
:owner: GenAI Team
|
||||||
|
:name: ML Speech T5 TTS
|
||||||
|
:Default options:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
--perfherder
|
||||||
|
--perfherder-metrics name:latency,unit:ms,shouldAlert:False, name:memory,unit:MiB,shouldAlert:False
|
||||||
|
--verbose
|
||||||
|
--manifest perftest.toml
|
||||||
|
--manifest-flavor browser-chrome
|
||||||
|
--try-platform linux, mac, win
|
||||||
|
|
||||||
|
**Testing Speech T5 TTS**
|
||||||
|
|
||||||
browser_ml_autofill_perf.js
|
browser_ml_autofill_perf.js
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/* Any copyright is dedicated to the Public Domain.
|
||||||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const perfMetadata = {
|
||||||
|
owner: "GenAI Team",
|
||||||
|
name: "ML Speech T5 TTS",
|
||||||
|
description: "Testing Speech T5 TTS",
|
||||||
|
options: {
|
||||||
|
default: {
|
||||||
|
perfherder: true,
|
||||||
|
perfherder_metrics: [
|
||||||
|
{
|
||||||
|
name: "latency",
|
||||||
|
unit: "ms",
|
||||||
|
shouldAlert: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "memory",
|
||||||
|
unit: "MiB",
|
||||||
|
shouldAlert: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
verbose: true,
|
||||||
|
manifest: "perftest.toml",
|
||||||
|
manifest_flavor: "browser-chrome",
|
||||||
|
try_platform: ["linux", "mac", "win"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
requestLongerTimeout(250);
|
||||||
|
|
||||||
|
const { sinon } = ChromeUtils.importESModule(
|
||||||
|
"resource://testing-common/Sinon.sys.mjs"
|
||||||
|
);
|
||||||
|
|
||||||
|
// Text-to-speech model tests
|
||||||
|
add_task(async function test_ml_tts() {
|
||||||
|
const options = new PipelineOptions({
|
||||||
|
taskName: "text-to-speech",
|
||||||
|
modelId: "Xenova/speecht5_tts",
|
||||||
|
modelHubUrlTemplate: "{model}/{revision}",
|
||||||
|
modelRevision: "main",
|
||||||
|
dtype: "q8",
|
||||||
|
timeoutMS: 2 * 60 * 1000,
|
||||||
|
});
|
||||||
|
|
||||||
|
const requestInfo = {
|
||||||
|
inputArgs: "The one ring to rule them all.",
|
||||||
|
runOptions: {
|
||||||
|
speaker_embeddings: `${Services.env.get("MOZ_MODELS_HUB")}/Xenova/transformers.js-docs/main/speaker_embeddings.bin`,
|
||||||
|
vocoder: `${Services.env.get("MOZ_MODELS_HUB")}/Xenova/speecht5_hifigan`,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const request = {
|
||||||
|
args: [requestInfo.inputArgs],
|
||||||
|
options: requestInfo.runOptions,
|
||||||
|
};
|
||||||
|
|
||||||
|
info(`is request null | ${request === null || request === undefined}`);
|
||||||
|
|
||||||
|
await perfTest({
|
||||||
|
name: "speecht5_tts",
|
||||||
|
options,
|
||||||
|
request,
|
||||||
|
iterations: 10,
|
||||||
|
addColdStart: true,
|
||||||
|
trackPeakMemory: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -26,6 +26,9 @@ disabled = "Disabled as we want to run this only as perftest, not regular CI"
|
|||||||
["browser_ml_smart_tab_perf.js"]
|
["browser_ml_smart_tab_perf.js"]
|
||||||
disabled = "Disabled as we want to run this only as perftest, not regular CI"
|
disabled = "Disabled as we want to run this only as perftest, not regular CI"
|
||||||
|
|
||||||
|
["browser_ml_speecht5_tts.js"]
|
||||||
|
disabled = "Disabled as we want to run this only as perftest, not regular CI"
|
||||||
|
|
||||||
["browser_ml_suggest_feature_perf.js"]
|
["browser_ml_suggest_feature_perf.js"]
|
||||||
disabled = "Disabled as we want to run this only as perftest, not regular CI"
|
disabled = "Disabled as we want to run this only as perftest, not regular CI"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user