大模型分布式推理ray

一、目录

1 框架
2. 入门
3. 安装教程
4. 相关文档、案例阅读

二、实现

1 框架:Ray:将一个模型拆分到多个显卡中,实现分布式预测、训练等功能。
2. 入门 :
案例:通过ray 实现分布式部署,分布式推理服务。
参考:https://zhuanlan.zhihu.com/p/647973148?utm_id=0
文件名:test.py
pip install ray
pip install “ray[serve]”

import pandas as pd

import ray
from ray import serve
from starlette.requests import Request

@serve.deployment(ray_actor_options={"num_gpus": 2})        #两个gpu 将模型拆分,进行推理
class PredictDeployment:
    def __init__(self, model_id: str):
        from transformers import AutoModelForCausalLM, AutoTokenizer
        import torch

        self.model = AutoModelForCausalLM.from_pretrained(
            model_id,
            torch_dtype=torch.float16,
            device_map="auto",
        )
        self.tokenizer = AutoTokenizer.from_pretrained(model_id)

    def generate(self, text: str) -> pd.DataFrame:
        input_ids = self.tokenizer(text, return_tensors="pt").input_ids.to(
            self.model.device
        )
        gen_tokens = self.model.generate(
            input_ids,
            temperature=0.9,
            max_length=200,
        )
        return pd.DataFrame(
            self.tokenizer.batch_decode(gen_tokens), columns=["responses"]
        )

    async def __call__(self, http_request: Request) -> str:    #异步实现http 框架
        json_request: str = await http_request.json()
        print(json_request)
        prompt=json_request[0]

        return self.generate(prompt["text"])

deployment = PredictDeployment.bind(model_id="huggyllama/llama-13b")

运行>> serve run test:deployment #后台启动的 后台关闭指令: serve shutdown
测试:

import requests
sample_input = {"text": "Funniest joke ever:"}
output = requests.post("http://localhost:8000/", json=[sample_input]).json()
print(output)
  1. 安装教程
    pip install ray
    依赖环境:https://github.com/ray-project/ray
  2. 相关文档、案例阅读
    网址: https://github.com/ray-project/ray
    文档-案例:https://docs.ray.io/en/latest/serve/index.html在这里插入图片描述
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 深度学习模型分布式并行推理设计一般可以通过以下步骤实现: 1. 将模型进行切割,将模型的各个层次划分为不同的部分。 2. 将切割后的模型分配到不同的计算节点中进行推理计算。 3. 对于分配到不同计算节点的模型部分,进行数据并行处理,使得每个计算节点都能够对自己的数据进行计算。 4. 对于每个计算节点的计算结果进行聚合,得到最终的推理结果。 在分布式并行推理设计中,还需要考虑数据传输和通信的问题,以保证计算节点之间的数据同步和一致性。同时,还需要根据具体的硬件环境和应用需求,选择合适的分布式并行推理框架,如TensorFlow、PyTorch等,以实现高效的分布式并行计算。 ### 回答2: 深度学习模型分布式并行推理设计是指将模型推理过程划分为多个子任务,并同时在多个计算设备上进行并行计算,以提高推理速度和效率。 在进行分布式并行推理设计时,需要考虑以下几个关键步骤: 首先,需要将深度学习模型进行切分。通常,可以将模型按照层级进行切分,将每个层级的计算划分到不同的计算设备上。这样可以使得每个设备只负责部分计算,减轻单个设备的计算压力,提高推理效率。 其次,需要考虑数据的分割和传输。在深度学习模型中,通常需要输入大量数据进行推理。因此,在分布式并行推理过程中,需要将输入数据进行合理的切分,并将切分后的数据分配到不同的计算设备上进行并行计算。同时,还需要考虑数据的传输和同步机制,以保证计算设备之间的数据一致性。 接着,需要进行并行计算的任务分配和调度。在分布式并行推理设计中,需要将切分后的模型和数据任务分配给不同的计算设备,并合理调度计算设备之间的通信和计算任务,以实现高效的并行计算。 最后,需要考虑结果的合并和输出。在分布式并行推理完成后,需要将各个计算设备得到的结果进行合并,并输出最终的推理结果。同时,还需要考虑结果的同步和一致性,以确保输出结果的准确性和完整性。 总而言之,深度学习模型分布式并行推理设计是一个复杂而关键的任务,需要考虑模型划分、数据传输、任务调度等多个方面的问题。通过合理设计和优化,可以实现高效的深度学习模型推理,并在大规模计算设备上快速完成推理任务。 ### 回答3: 深度学习模型分布式并行推理设计是指将一个大型的深度学习模型部署到多个计算节点上,通过分布式计算的方式实现模型推理。下面是关于如何设计深度学习模型分布式并行推理的一些建议: 1. 模型并行设计:将模型分割成多个子模型,并将不同的子模型分配到不同的计算节点上进行计算。可以基于模型的结构特点进行切割,例如如果模型是由多个卷积层组成,可以每个卷积层分配一个计算节点。 2. 数据并行设计:将训练数据分割成多份,并将每份数据分配到不同的计算节点上进行计算。每个计算节点都使用一部分数据来进行推理,然后将结果进行合并。 3. 网络拓扑设计:将不同的计算节点通过高速网络连接起来,形成一个分布式的计算集群。可以采用主从架构,其中一个计算节点作为主节点负责控制任务的调度和结果的合并,其他计算节点作为从节点进行计算。 4. 任务调度算法:设计一种合适的任务调度算法来决定每个计算节点的工作任务分配。可以考虑负载均衡、任务优先级等因素,使各个计算节点的计算负载尽可能均衡,并确保推理任务能够按时完成。 5. 通信机制设计:考虑到分布式计算节点之间需要进行数据传输和通信,需要设计合适的通信机制来保证传输速度和数据完整性。可以使用消息传递接口或者共享内存等机制进行节点间的数据交换。 以上仅是关于深度学习模型分布式并行推理设计的一些基本建议,具体的实现方案因应用场景和需求而有所不同。需要根据具体情况进行深入研究和调优,以提高并行推理的效率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值