关于实时模式的vllm解码并发问题
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Refactorisation
- Clarté
- À clarifier
- Activité
- Active
- Stack technique
- python
- Domaine
- backend, performance
Piste de recherche
Start in the realtime_ws flow around RealtimeBatchingEngine, handle_client, and run_session_work; trace the asyncio.to_thread call into synchronous LLM.generate. Run the existing concurrency benchmark, which currently covers up to 8 clients, and compare it with higher session counts. Done means a benchmark-backed decision and, if pursued, verified per-session partial ordering and latency under the target concurrency.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
【realtime_ws】并发 streaming session 的vllm解码
测试中并发 streaming session 增多时,首条结果延迟明显上升,超过一定并发后结果趋于停滞。
在约 15+ 个并发 session 下,首字延迟 p50 从 10 个 session 时的 ~1.5s 涨到 ~2.2s(p95
到 ~66s),并随并发继续恶化。以上数值仅供参考,不代表精确基准。
似乎RealtimeBatchingEngine把并发 session 的请求统一汇到单个 worker 线程,底层调用同步 `LLM.generate。实时流式里每个 session 的 handle_client循环要等自己的 partial 返回之后才发下一帧(run_session_work → asyncio.to_thread →阻塞 generate),语音请求在vad处理后请求天然稀疏,batch_wait_ms=10ms的攒批窗口几乎凑不齐。于是请求稀疏 → 批凑不满 → 单条串行 → 客户端等更久 → 更稀疏,形成自锁,吞吐受限。这是我的推测解释,未必准确,供参考。
目前benchmark 文档只到 8 clients,若未来有意支持更高并发,是否可以考虑把解码器切到 AsyncLLMEngine(vLLM v1 的vllm.v1.engine.async_llm.AsyncLLM,同样 enable_prompt_embeds=True),每个 session 的partial / 锁句作独立 request_id提交:引擎按 step 在卡上合批、同时把每条结果返回给各自调用方,天然保住每个 session 的顺序与 partial 中间态,吞吐也随之恢复。是否值得,请各位大佬按定位评估;我这边物理条件有限,测试结果未必准确,也很难支持更高并发下的吞吐测试,若感兴趣可在高并发下尝试验证。
- Langage dominant
- Python
- Étoiles
- 20.7k
- Forks
- 2.1k
- Merge moyen
- 23 h 18 min
- PR mergées (30 j)
- 38
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de modelscope/FunASR
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
modelscope/FunASR#3762 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Bug: blank lines in wav.scp / jsonl file lists crash prepare_data_iterator (IndexError / JSONDecodeError)Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverteneeds feedback
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
modelscope/FunASR#3757 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
modelscope/FunASR#3730 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
modelscope/FunASR#3704 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
没有vllm时使用fun-asr-nano每次都重新加载模型Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertebug needs feedback
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
modelscope/FunASR#3401 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de modelscope/FunASR
Issues similaires
-
tunneld on Windows: Wi-Fi devices are not discovered because uvicorn runs on a ProactorEventLoopOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
doronz88/pymobiledevice3#2051 ·
Les mainteneurs répondent en général sous 1 jour
-
Remove DatacircleOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
collabnix/awesome-mcp-lists#230 ·
Les mainteneurs répondent en général sous 9 jours
-
Groc schedules with out of range values pass config validation and fail later when the scheduler is builtPeut-être pris @auraseb l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
autowarefoundation/autoware_carla_scenario#342 ·
Les mainteneurs répondent en général sous 1 jour
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ianktoo/project-monitor#14 ·