Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev/use vllm #1053

Merged
merged 7 commits into from
Mar 13, 2025
Merged

Dev/use vllm #1053

merged 7 commits into from
Mar 13, 2025

Conversation

qi-hua
Copy link

@qi-hua qi-hua commented Mar 7, 2025

目前使用 vllm 的 AsyncLLMEngine 加速推理

增加了 cosyvoice.llm.llm_vllm.VllmQwen2LM ,其他文件主要是简单修改;

VllmQwen2LM目前支持多任务推理,并发需对原接口适当修改;

使用trt的情况下,加速后效果 rtf 能够达到 0.1-0.15

qi-hua added 6 commits March 7, 2025 20:26
- 新增基于队列和线程的异步推理机制
- 优化同步推理接口,使用新机制实现
- 删除了 LLM 类中的 async_llm_inference 方法
- 该方法尚未使用,且再在loop_thread之外运行后会导致 vllm 崩溃,因此将其移除
- 新增 speed_test.ipynb 文件,用于测试 CosyVoice2模型的性能
- 包含测试环境配置、默认情况下的使用示例、使用 vllm 加速 LLM 推理的步骤
- 移除任务队列和单任务处理限制
- 使用 asyncio.run_coroutine_threadsafe() 在后台线程中运行推理任务
@wang-TJ-20
Copy link

wang-TJ-20 commented Mar 8, 2025

@qi-hua 你好,感谢你的分享,我尝试你这个分支,想问下需要多少显存可以呢。gpu_memory_utilization在代码的哪块加呢
image

@qi-hua
Copy link
Author

qi-hua commented Mar 8, 2025

@qi-hua 你好,感谢你的分享,我尝试你这个分支,想问下需要多少显存可以呢。gpu_memory_utilization在代码的哪块加呢 !

vllm需要大概3-4G的显存就可以了,gpu_memory_utilization的设置目前放在了cosyvoice/llm/llm_vllm.py:39 ENGINE_ARGS中,还没有暴露设置的位置,需要手动修改。

- 在 Frontend 中,恢复原本逐个生成文本令牌
- 在 Model 类中,移除了不必要的日志信息和断言,简化了文本令牌的处理流程
@wang-TJ-20
Copy link

@qi-hua 你好,感谢你的分享,我尝试你这个分支,想问下需要多少显存可以呢。gpu_memory_utilization在代码的哪块加呢 !

vllm需要大概3-4G的显存就可以了,gpu_memory_utilization的设置目前放在了cosyvoice/llm/llm_vllm.py:39 ENGINE_ARGS中,还没有暴露设置的位置,需要手动修改。

哦哦,感谢感谢,另外,我发现一个问题是,我按下面的测试脚本测试出现了下面的错误,
image
image
根据报错提示改成下面的调用方式就可以了,请问是vllm版本实现中启动了多进程吗
image

@qi-hua
Copy link
Author

qi-hua commented Mar 9, 2025

我不了解这两种方式的区别,但默认会启动很多的进程。

@aluminumbox
Copy link
Collaborator

@lyblsgo 麻烦帮忙看一下这个代码

@lyblsgo lyblsgo merged commit 00b454c into FunAudioLLM:dev/Comet Mar 13, 2025
@deyituo
Copy link

deyituo commented Mar 13, 2025

@qi-hua dev/use_vllm 按照speed_test.ipynb加载vllm模型还跑不通。async_cosyvoice可以跑通。
@wang-TJ-20 你改了一些代码?

@wang-TJ-20
Copy link

wang-TJ-20 commented Mar 13, 2025

@qi-hua dev/use_vllm 按照speed_test.ipynb加载vllm模型还跑不通。async_cosyvoice可以跑通。 @wang-TJ-20 你改了一些代码?

我没改代码
运行步骤如下:
1、先按requirements_vllm.txt安装环境,建议新建个conda环境,完全按照requirements_vllm.txt里装。
2、在speed_test.ipynb里运行一下,下面这个代码块,注册下模型的类。
image
3、将async_cosyvoice仓库里的配置文件(如下图)复制到2.0的模型权重文件夹下
image
4、使用下面的代码进行调用,我是使用的自己的spk_id,指定的是girl,这个根据自己选择,也可以直接用prompt_speech_16k。
`def main():
# 初始化模型
cosyvoice = CosyVoice2(CosyVoice2-0.5B',
load_jit=False,
load_trt=True,
fp16=True,
use_vllm=True)

# 加载提示语音
prompt_speech_16k = load_wav("girl_cut.wav", 16000)
text = "今天天气不错"
for _ in range(20):
    time1 = time.time()
    audio_list = []
    # for i, j in enumerate(cosyvoice.inference_instruct2("今天天气不错", '以悲伤的情感说', prompt_speech_16k, stream=True)):
    for i, j in enumerate(cosyvoice.inference_instruct2_by_spk_id(text, "以悲伤的情感说", 'girl', stream=True)):
        if i == 0:
            logging.info(f"首包耗时: {time.time() - time1}")
        audio_list.append(j['tts_speech'])
    full_tts = torch.cat(audio_list, dim=1)
    torchaudio.save('instruct.wav', full_tts, cosyvoice.sample_rate)

if name == 'main':
main()`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants