Repository navigation
Conversation
…ersist its cache CosyVoice3 loads s3tokenizer's speech_tokenizer_v3_25hz during LLM stage init. That is a ~925 MiB download from modelscope.cn into $XDG_CACHE_HOME/s3tokenizer, and run-amd-test.sh points XDG_CACHE_HOME at a per-job directory that is discarded with the pod, so every CosyVoice3 job re-downloads it inside the --stage-init-timeout 600 window. When the mirror is slow (~2 MiB/s today) the download alone takes 8-10 minutes and the READY blocking job 'CosyVoice3-TTS E2E Smoke (SDPA)' fails with 'LLM stage-0 replica-0 did not become ready within 600s'. - run-amd-test.sh: symlink $XDG_CACHE_HOME/s3tokenizer to $HF_HOME/s3tokenizer so the checkpoint lives on the persistent HF volume and is fetched once per node. - prefetch_s3tokenizer.py: download the checkpoint (with retries) before pytest in the three CosyVoice3 AMD jobs so a cold or slow mirror never counts against the engine startup deadline and shows up as an explicit download failure instead. - tests/buildkite: cover the runner wiring, the step ordering and the prefetch retry behavior. Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contributor intent (required human answers)
1. What outcome do you want to achieve?
Stop the READY blocking job
CosyVoice3-TTS E2E Smoke (SDPA)on AMD CI from failing with a stage-init timeout whenever the modelscope mirror is slow, so release backports such as #9470 are not blocked by an infra flake. (Explicit request from @tzhouam while triaging the AMD failure on #9470.)2. What is the highest-leverage variable for that outcome?
Pending contributor answer.
3. How will this work move that variable?
Pending contributor answer.
4. Whose customer or user needs does this address, and what are those needs?
Pending contributor answer.
Purpose
Before.
CosyVoice3callss3tokenizer.load_model("speech_tokenizer_v3_25hz")while the LLM stage initializes. On a cold cache that is a ~925 MiB download from modelscope.cn into$XDG_CACHE_HOME/s3tokenizer..buildkite/amd/scripts/run-amd-test.shpointsXDG_CACHE_HOMEat/tmp/vllm-omni-native-<job_id>/xdg, which is discarded with the pod, so every CosyVoice3 AMD job re-downloads the checkpoint inside the--stage-init-timeout 600window. When the mirror serves at ~2 MiB/s the download alone takes 8–10 minutes and the job fails as an opaque timeout:Seen today on unrelated PRs at the same time: AMD builds 14817 (#9470), 14814 (#9463), 14815 (#9174), 14801 (#9377), 14802 (#9335). In 14814 the download finished at 8m49s and the job still timed out during JIT warmup.
After.
run-amd-test.shsymlinks$XDG_CACHE_HOME/s3tokenizer→$HF_HOME/s3tokenizer, so the checkpoint lives on the persistent Hugging Face volume (the same oneVLLM_CI_REQUIRE_PERSISTENT_HF_CACHE=1already guarantees) and is fetched once per node instead of once per job..buildkite/amd/scripts/prefetch_s3tokenizer.pydownloads the checkpoint (3 attempts;s3tokenizerre-downloads on SHA-256 mismatch, so a retry recovers an interrupted transfer) beforepytestin the three CosyVoice3 AMD jobs (CosyVoice3-TTS E2E Smoke (SDPA)in READY,CosyVoice3-TTS E2E TestandCosyVoice3 Offline Zero-shot Smokein nightly). A slow or dead mirror now costs job wall time and surfaces as an explicit download failure, never as an engine stage-init timeout.No runtime code changes;
vllm_omni/is untouched. The touched files are identical onrelease/v0.32.0, so this cherry-picks cleanly there as a follow-up.Test Plan
vLLM Version: n/a (CI configuration only)
vLLM-Omni Commit: a3aba86
Plus the AMD CI run on this PR:
CosyVoice3-TTS E2E Smoke (SDPA)should now logs3tokenizer checkpoint speech_tokenizer_v3_25hz ready in …sbefore pytest starts.Test Result
94 passedfor the fourtests/buildkitemodules above (new:test_amd_runner_keeps_s3tokenizer_cache_on_persistent_volume, prefetch ordering asserted in the three CosyVoice3 step tests, 5 behavior tests intest_prefetch_s3tokenizer.pycovering success, retry-then-succeed, exhausted retries, invalid attempts and CLI parsing).ruff check/ruff format --check,check_test_marks.pyandbash -nclean.HF_HOME/XDG_CACHE_HOMEpair:ln -sfnis idempotent ands3tokenizer's defaultdownload_rootresolves through the link.