赞
踩
实际上很多模型 我们都已经同时支持开源和SaaS版本,不过通义千问我们目前支持的更完整些,具有如下特性:
可以使用相同方式部署开源大模型和SaaS大模型
支持相同的调用接口
同时支持block / stream chat 模式
来,一起看看 他到底都给我们带来哪些便利。
设置环境
Byzer-LLM 依赖于 Ray。所以安装也就比较直接:
- git clone https://github.com/allwefantasy/byzer-llm
- cd byzer-llm
- pip install -r requirements.txt
- pip install -U vllm
- pip install -U byzerllm
- ray start --head
最后一步是启动Ray,前面都是安装一些依赖包。请保证 python版本==3.10.11。
如果你没有GPU,没办法用开源版本的,也没关系,可以忽略掉比如 vllm 之类的安装,他们可能会报错。因为 SaaS 版本不需要你有 GPU 资源。
部署开源版本的 Qwen
首先先下载一个模型:
git clone https://modelscope.cn/qwen/Qwen-72B-Chat.git
我这里下载的模型比较大,你可以选择一个小一点的。
启动很简单:
- import ray
- from byzerllm.utils.client import ByzerLLM
- ray.init(address="auto",namespace="default")
-
- llm = ByzerLLM()
- model_location="/home/byzerllm/models/Qwen-72B-Chat"
-
- llm.setup_gpus_per_worker(8).setup_num_workers(1).setup_infer_backend(InferBackend.VLLM)
-
- llm.deploy(
- model_path=model_location,
- pretrained_model_type="custom/auto",
- udf_name=chat_model_name,
- infer_params={}
- )
-
- llm.setup_default_model_name("chat")
- llm.setup_template("chat",Templates.qwen())

连接 Ray, 新建一个 ByzerLLM 对象,然后设置下资源,实例数,backend 是啥,最后调用 deploy 函数完成部署。
部署完成后,你可以打开 127.0.0.1:8265 查看部署结果:
可以看到,启动了一共十个进程。两个管理进程,八个计算进程。每个进程你都可以点击进去看日志啥的。
接着你可以马上这样用:
- t = llm.chat_oai([{
- "content":'''你好,你是谁''',
- "role":"user"
- }])
-
- t[0].output
或者流式输出:
- t = llm.stream_chat_oai([{
- "content":'''你好,你是谁''',
- "role":"user"
- }])
-
- for v in t:
- print(v)
当你使用 stream_chat_oai, 会返回一个生成器。这样就能满足你多种需求了。
部署 SaaS 版本Qwen
你到官网去申请一个 token。然后就可以按如下方式部署:
- import ray
- from byzerllm.utils.client import ByzerLLM
-
- ray.init(address="auto",namespace="default")
- llm = ByzerLLM()
-
- llm.setup_num_workers(1).setup_gpus_per_worker(0)
-
- chat_name = "qianwen_chat"
-
- llm.deploy(model_path="",
- pretrained_model_type="saas/qianwen",
- udf_name=chat_name,
- infer_params={
- "saas.api_key":"xxxxx",
- "saas.model":"qwen-turbo"
- })

和开源版本的完全一样的套路,唯一的区别是,这里需要你把 gpus 资源设置为0, 然后你依然可以配置部署到实例数来满足外部并发需求。
同样的,你也可以登录 127.0.0.1:8265 查看部署结果:
一个管理进程,一个代理计算进程。
现在,你可以用和开源相同的方式调用 SaaS 模型。
阻塞调用:
- t = llm.chat_oai([{
- "content":'''你好,你是谁''',
- "role":"user"
- }])
-
- t[0].output
或者流式输出:
- t = llm.stream_chat_oai([{
- "content":'''你好,你是谁''',
- "role":"user"
- }])
-
- for v in t:
- print(v)
总结
通过 Byzer-LLM,你可以快速部署一个私有模型或者SaaS模型代理,然后对应用上层提供了一个一致的接口。用户如果需要切换模型,基本无需修改任何代码。部署的实力,也可以在一个或者多个Ray集群上统一进行管理,非常高效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。