Byzer-LLM 支持同时开源和SaaS版通义千问

实际上很多模型 我们都已经同时支持开源和SaaS版本,不过通义千问我们目前支持的更完整些,具有如下特性:

  1. 可以使用相同方式部署开源大模型和SaaS大模型

  2. 支持相同的调用接口

  3. 同时支持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 查看部署结果:

7473d529f7ea8e9c0a6ef1899e9d6d41.png

可以看到,启动了一共十个进程。两个管理进程,八个计算进程。每个进程你都可以点击进去看日志啥的。

接着你可以马上这样用:

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 查看部署结果:

c0ee738f9a137c6f28bfce9229c46692.png

一个管理进程,一个代理计算进程。

现在,你可以用和开源相同的方式调用 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集群上统一进行管理,非常高效。    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值