当前位置: 首页 > news >正文

tensorflow内存泄漏或模型只加载不运行

使用tf2模型进行推理的过程中,发现模型的内存占用在逐步增加,甚至会因为OOM被kill掉进程,有时候模型只加载不运行,搜索得到很多五花八门的答案,有些认为是tf2本身的问题,但在使用内存追踪的时候发现,是模型的动态图没有得到释放,而导致这个问题出现的原因,是数据的加载方式存在问题!!!

        mhc_a_batches = list(chunks(mhc_seqs_a, self.batch_size))mhc_b_batches = list(chunks(mhc_seqs_b, self.batch_size))pep_batches = list(chunks(pep_seqs, self.batch_size))assert len(mhc_a_batches) == len(mhc_b_batches)assert len(mhc_a_batches) == len(pep_batches)size = len(mhc_a_batches)# 开始预测preds = []for i in range(size):_preds = self.model([mhc_a_batches[i], mhc_b_batches[i], pep_batches[i]], training = False)preds.extend(_preds.numpy().tolist())return preds

如这段代码,直接使用了list作为模型的输入,尽管tf2也支持numpy的输入格式,但却存在隐患,会产生大量的空tensor!!!

将其改为这样的形式,问题得到解决:

 mhc_seqs_a = tf.convert_to_tensor(mhc_seqs_a, dtype=tf.float32)mhc_seqs_b = tf.convert_to_tensor(mhc_seqs_b, dtype=tf.float32)pep_seqs   = tf.convert_to_tensor(pep_seqs, dtype=tf.float32)assert len(mhc_seqs_a) == len(mhc_seqs_b)assert len(mhc_seqs_a) == len(pep_seqs)ds = tf.data.Dataset.from_tensor_slices((mhc_seqs_a, mhc_seqs_b, pep_seqs)).batch(self.batch_size).prefetch(1)preds = []for x, y, z in ds:_preds = self.model([x,y,z], training=False)preds.extend(_preds.numpy().tolist())return preds

现在可以愉快的进行模型推理了,而且速度比之前要快几倍不止,实测在GPU上提速近30倍,可想而知对于上亿级别的数据,节省的时间多么可观!

http://www.lryc.cn/news/224078.html

相关文章:

  • npm和yarn的一些命令
  • Linux开发工具之自动化构建工具-make/Makefile
  • UE5蓝图接口使用方法
  • vue动态修改css样式
  • 小解List的使用【C++】
  • 自动驾驶高效预训练--降低落地成本的新思路(AD-PT)
  • Spring笔记(四)(黑马)(web层解决方案-SpringMVC)
  • 企业如何实现高效运转?工单管理系统有什么特点和优势?
  • 工业摄像机参数计算
  • Android系统中设置TextView的行间距
  • 嵌入式养成计划-47----QT--基于QT的OpenCV库实现人脸识别功能
  • MySQL(12):MySQL数据类型
  • 哪款手机便签软件支持存储录音文件并支持转文字?
  • Health Kit申请验证有问题?解决方案全解析
  • 2007-2022年上市公司工业机器人渗透度数据
  • k8s基础环境部署
  • 家用工作站方案:ThinkBook 14 2023 版
  • 电脑篇——本地串口转TCP,TCP转虚拟串口,网络调试助手,串口调试助手
  • igbt好坏判断方法有哪些?万用表怎么测试igbt的好坏?
  • Android UI 开发·界面布局开发·案例分析
  • 2023-11-06 monetdb-事务-insert-delta缓存-分析
  • ubuntu 22.04 flameshot 截图异常的问题
  • 正点原子嵌入式linux驱动开发——Linux WIFI驱动
  • React中的“状态”(state)和“属性”(props)的区别
  • 棋牌室电脑计时灯控,棋牌室计时灯控安装,佳易王计时计费管理系统软件
  • P02项目诊断报警组件(学习操作日志记录、单元测试开发)
  • 【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】
  • 服务器硬件有哪些组成
  • 【Git】Git基础命令操作速记
  • 使用CDN有什么好处?