项目实训——大模型篇1:MING模型部署与OpenaiAPI服务的实现1之ModelWorker

在前述文章里面,我们成功地把MING部署在了AutoDL服务器上,但有一个问题在于,MING的开发者们并没有尝试过使用REStfulAPI的形式对大模型进行访问,因此提供的api服务组件也是不全的。

一般而言,fastchat部署流程是这样的

1、在地址A启动controller服务

2、在地址B启动model_worker服务,并在controller上进行注册

3、在地址C启动api_server服务

在这个流程中,用户先访问api_server的接口,发送json信息,api_server解析json信息后,接着向controller发送信息,获得目标模型的model_worker地址,api再向目标模型model_worker所在地址发出请求,获得生成的消息流,再将其返回给用户

MING的开发者写了一套简易的聊天服务,但并没有给MING-MOE提供部署相关的服务。因此我们根据现有代码,写了针对ming-moe模型的一套简易model_worker、controller和api服务

1、MOE架构模型介绍

MoE架构是一种基于条件计算的模型架构,它将大型模型拆分为多个较小的专家模型,每个专家模型负责处理特定的任务或数据子集。在模型运行时,根据输入数据的特性,选择相应的专家模型进行处理。这种架构可以在保证模型性能的同时,显著提高模型的效率和可扩展性。

MING-MOE模型是基于Qwen的Moe模型,这意味着需要Qwen作为对应的模型基座,做一个合并才能正常使用。

2、Model_worker

权重融合

ming/model/builder.py中的load_molora_pretrained_model函数中基于PEFT库合并lora权重,实现了lora权重和基座模型的合并,在初始化时需要进行加载

ming-moe开发者已经实现了与基座模型合并的函数,我们只需要使用就行

 self.tokenizer, self.model, self.context_len, _ = load_molora_pretrained_model(model_path, model_base,
                                                                                       model_name, load_8bit,
                                                                                       None,
                                                                                       use_logit_bias=None,
                                                                                       only_load=None,
                                                                                       expert_selection=None)

初始化与消息生成

初始化部分完成参数传递和权重融合

generate_stream_gate将参数传递给inference.py,再调用model.generate来生成回答文本。这里生成的文本并非由多个token构成的集合,而是一段完整的文本

之后我们要将这段文本包装成json的格式,并以流或json文本的形式返回给API_Server

  def generate_stream_gate(self, params):
        try:
            output = self.generate_stream_func(self.model, self.tokenizer,params, self.device, self.beam_size, self.context_len,args.stream_interval)
            ret = {
                "text": output,
                "error_code": 0,
            }
            yield json.dumps(ret).encode() + b"\0"
        except torch.cuda.OutOfMemoryError as e:
            ret &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值