一次使用threading.Thread来实现Pytorch多个模型并发运行的失败案例

文章目录

背景

我有多个pytorch GPU模型,他们有不同的参数(也就是说不是共享的),但是相同的数据输入,想要并发运行。

不并发运行,当然就是循环喽。

复制代码
        for i in range(self.args.m):
            self.models[i](batch)

我想要并发,因为m有点大。像上面循环的话m=30以上速度就有点受不了了。我看过了,我的GPU还有很多空间,起码放上去10个模型没有问题。

我的做法(但证明不起效果)

我想到了多线程,如下:

复制代码
class MyThread_forward(threading.Thread):  #自定义线程类
    def __init__(self, model,batch):
        threading.Thread.__init__(self)
        self.model = model              
        self.batch=batch
    def run(self):                    
        self.result=self.model(self.batch) 
    def get_result(self): 
        return self.result

def multi_thread_forward():
    threads=[]
    for  i in range(self.args.m):#创建多个线程
        threads.append(MyThread_forward(self.models[i],batch))
    for thread in threads:#各个线程开始并发运行。
        thread.start()
    for thread in threads:#等待各个线程运行完毕再执行下面代码。
        thread.join()    
    results= []
    for thread in threads:
    	results.append(thread.get_result())  #每个线程返回结果(result)加入列表中
    return results
    
multi_thread_forward()#多线程运行。

结果就是不起效果好像,还是运行得很慢,咋回事捏。

相关推荐
ZoeJoy83 分钟前
C# + 机器视觉 + AI:从工业相机取图到 YOLO 目标检测的完整工控解决方案
人工智能·数码相机·c#
饼干哥哥8 分钟前
90%跨境电商工作流会被Kimi OpenClaw+Skills替代
人工智能
Leo655359 分钟前
动态透视报表 + 查询接口 + Excel导出
开发语言·windows·python
清水白石00811 分钟前
pytest Fixture 设计实战指南:作用域、依赖链、自动清理与测试资源高效复用
python·pytest
阿里云大数据AI技术19 分钟前
Mem0 + Elasticsearch:构建 AI 记忆系统
人工智能·llm
Steiwe20 分钟前
MLLM CAN SEE? DYNAMIC CORRECTION DECODINGFOR HALLUCINATION MITIGATION
人工智能
ai产品老杨21 分钟前
异构计算与边缘协同:基于 X86/ARM 的企业级 AI 视频中台架构解析
arm开发·人工智能·音视频
饼干哥哥22 分钟前
GLM-5「全栈长任务」实测:3小时复刻TikTok视频生成SaaS
人工智能
饼干哥哥25 分钟前
首个「牛马模型」?实测Minimax M2.5搭了个特斯拉股票交易系统
人工智能
BioRunYiXue36 分钟前
Nature Methods:CellVoyager 自主 AI 智能体开启生物数据分析新时代
大数据·开发语言·前端·javascript·人工智能·数据挖掘·数据分析