- 博客(24)
- 收藏
- 关注
原创 tensorflow2.0 对超参数进行寻优的时候,不断加载模型产生OOM(即内存泄露)问题,该怎么解决呢?
在平时某个项目的时候,在完成对模型结构的建模之后,还需要对模型的训练超参数进行一个寻优过程,当然这个结构建模过程也是可以进行参数寻优的。但这个不是重点,重点在于我们在进行超参数寻优的过程中,如果需要不断的加载模型进内存,...
2020-08-22 13:07:30 1582 9
原创 知道你的Python程序每一行运行消耗多少内存,需要多少时间吗?提高python运行效率!
前言:很多开发人员在写程序的时候只针对是否能够完成需求的目的来开发的,当然这个是没什么问题的。毕竟产品经理在那里盯着,但是我们把需求顺利完成了就真的没问题了吗?OK,就算没问题的前提下,作为有追求的我们在不产生bug的前提下也要对程序的效率消耗进行优化。开发容易优化难。我相信很多人对这句话都是深有体验的。那优化的前提要知道这个脚本到底哪里消耗内存,哪里消耗时间。。。一、每一行消耗了多少时间?借助 line_profiler 模块具体代码如下from line_profiler impo
2020-06-13 14:58:27 2289
原创 Python3 centos虚拟环境安装 Flask,实操小例子
环境准备安装python3由于在实际生产环境中会有多个项目,而不同项目之间的flask开发可能并不一致,需要的组件不一样,因此需要创建多个虚拟环境下的flask,这样不同项目下的flask才不会互相污染到。1、创建虚拟环境创建flask项目文件夹mkdir my_flaskcd my_flask利用python3自带的虚拟环境命令venvpython3 -m venv flask_1看到有这样的环境则虚拟环境创建好了。里面是纯净的python3环境可以看到纯净的环境只有pip安装
2020-06-13 14:13:52 420
原创 Python 为什么要使用数据库连接池, MySQL PooledDB 简单使用
我们先来了解一下什么是连接池,池的概念一、连接池其实池的概念很好理解,顾名思义,池就是一个池塘,里面放了很多条已经创建好了的连接,这几条连接是有寿命的,在这几条连接池存活的时候,你可以随意使用其中的任意一条,在使用完之后,也不会关闭这条连接,而是会继续放到池中,供下一次调用使用。池里面的连接数在创建池的时候已经定义好了的,假设为N个连接数。所以如果一旦有多于这个连接数的调用,则第N+1 开始会等待前面的调用完释放连接到连接池才会继续调用。注意,这里的池是放在内存里的,所以也不是连接数越多越好,白白浪
2020-06-07 14:21:38 2767
原创 Python 内存泄露问题,详细讲解如何查找问题以及解决方法
上个星期,把之前弄的tensorflow项目部署到线上,真正开始进行评测的时候,发现了还是会有一些问题,而且这些问题还是相对比较严重的,在这里我就先给大家分享一下model_from_json造成的内存泄露问题,以及怎么解决的。一、背景在我的一篇博客中,写了关于tensorflow训练完后model的保存以及借助redis加载到内存形成分并发调用,并且在对模型进行更新的时候只需要更新一台机器即可,有加快模型调用以及方便的作用。感兴趣的可以先去看看我的这篇博客。https://editor.csdn.
2020-05-30 14:43:38 3715 1
原创 Tensorflow多输入模型构建以及Dataset数据构建
多输入模型多适用于问答模型或者对于时间序列模型来说有部分特征是针对样本个体而固定的,不随时间变换而发生改变的情况下。对于模型的输入数据格式来说,有很多种方式,普通的全部数据导入,或者写成生成器等,可以逐批读取数据然后训练模型,但是当你使用tensorflow内置分布式训练,也就是多机多卡模卡MultiWorkerMirroredStrategy的时候,就必须使用Dataset格式。因为Dataset会自动根据batch_size分发数据进行迭代训练。如果对MultiWorkerMirroredStra
2020-05-24 14:00:13 5887 4
原创 实操TF单机模式MirroredStrateg,分布式模式MultiWorkerMirroredStrategy 比较!!
服务器背景一台16核64g(数据存储机,命名tensor101)一台4核16g(命名tensor102)案例背景针对某款手游,观察玩家在7天内的行为,包括在副本,经验,金币,市场等各个方面的表现识别这个玩家是否是脚本玩家。单机模式训练数据量:716392, 7, 18测试数据量:182158, 7, 18本例采用的是LSTM 模型。epochs = 5 # 总轮次batch_size = 1024 # 单次训练batchnum_workers = 1 # 机器个数seque
2020-05-24 13:08:12 1734 2
原创 Python 在大数据处理下的优化(三)DataFrame的生成效率提高4倍!!
今天看标题就知道我们又来谈的是优化,针对pandas的数据结构DataFrame做的优化。当然这种优化更多的是提供给大家一种思路,而不是所有的DataFrame都可以这么转化。废话不多说,我们直接来看今天的主要优化内容。一、DataFrame数据结构做过数据处理这块的应该都知道并且非常熟悉的pandas下最常用的二维表结构,DataFrame。DataFrame自带的各种处理数据的函数给我们复杂的需求带来了很多的便捷,并且在数据量较少的情况下,处理速度都非常快,因此在很多地方都会用到相关的一些函数
2020-05-23 12:21:22 4453 1
原创 tensorflow训练完后模型的保存,储存到Redis,形成快速的并发调用
前言相信有很多人在搞机器学习也好,深度学习也好,最主要的东西都是如何训练出一个好模型,当然应该这样,我也是把最主要的重心放在如何训练好模型上了。但是最近完成了一个深度学习模型的训练后,在部署到线上的时候,却发现考虑少了一些东西。其中一个方面就是如何使得你的模型能够快速的应用到线上?如何使得代码的运行效率更快?因为平时训练都是把模型直接保存在本地,需要的时候就直接读进内存即可。但是如果在实际生产"环境中,怎么可能每调用一次模型就要读一次文件呢?这样运行效率太低了,而且在部署的时候就需要把模型拷贝到各
2020-05-16 15:53:36 3569 35
原创 Python 安装tensorflow,解决报错 Could not find a version that satisfies the requirement tensorflow
如果你用的是python3,那这篇文章可能对你没什么帮助,但是如果是生产环境部署的tensorflow出现了如下这个问题:Collecting tensorflowCould not find a version that satisfies the requirement tensorflow (from versions: )No matching distribution found for tensorflow那可能你遇到的问题跟我遇到的问题是一样的。搞了一天才弄明白问题出现在哪里现在
2020-05-16 11:59:30 6182
原创 Python 多线程+多进程简单使用教程,如何在多进程开多线程
一、Python多进程多线程关于python多进程多线程的相关基础知识,在我之前的博客有写过,并且就关于python多线程的GIL锁问题,也在我的一篇博客中有相关的解释。为什么python多线程在面对IO密集型任务的时候会产生加速作用?为什么python多线程在面对CPU计算密集型任务的时候不仅起不到加速作用,反而加长了计算时间?相关传送门:进程,线程,协程关系:https://blog.csdn.net/qq_35869630/article/details/105747155python线程
2020-05-09 20:24:20 5309
原创 Python 在大数据处理下的优化(二)字符串相加,用 join 比 sum 快20倍!
照例答案写在开头为什么sum要换成join?因为join 速度比sum快好几倍!!如果你是对自己代码运行效率有追求的话,建议换换~下面实际操作一下,看看结果怎么样import pandas as pdfrom time import timedf = pd.DataFrame(zip(range(1000000),['test']*1000000),columns=['a','b'])...
2020-05-05 16:25:18 937
原创 Modin.pandas使用多核CPU加速pandas?Modin.pandas可以代替pandas?看看就知道了
答案先写在开头,免得你们直接拉到下面看结果~modin.pandas 确实能使得一部分函数使用多核cpu进行加速处理,但是现在有些功能还不完善,有些函数还是用的默认pandas处理…具体哪些函数是可以加速的可以往下看看主要测试了apply,groupby,read_csv一、Modin.pandas在讲modin之前,简单介绍一下pandas,pandas主要是python用来处理数据的...
2020-05-05 15:32:03 3778
原创 Python 在大数据处理下的优化(一)用json.loads比eval快10倍!!
eval 跟json.loads 是不一样的函数,是有实现不一样功能的地方,但是在某些地方它们两个函数的功能是一样的,在这个时候如果对执行效率有一定要求的话,建议不要用eval,改用json.loads会有惊喜哦。一、evaleval() 函数用来执行一个字符串表达式,并返回表达式的值。二、json.loadsjson.loads 用于解码 JSON 数据。该函数返回 Python 字段的...
2020-05-04 16:49:32 2367
原创 Redis安装卸载详细教程,顺便看看界面化Redis~
一、RedisRedis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据...
2020-05-04 15:25:32 1719
原创 Python多线程跟GIL锁到底什么关系?看完你肯定有收获
一、多线程线程是操作系统中最小的单位,也是处理器主要消耗者,线程不具备自己的独立资源,一个进程空间中可以同时创建多个线程,并且多个线程之间可以互相操作,一个线程可以启动另外一个线程等,资源也可以共享,线程之间是可以并行运行的(前提是建立在多核CPU,如果是单核则不是真正的并行)。想了解进程,线程,协程之间的关系可以看看我的另外一篇文章:https://blog.csdn.net/qq_3586...
2020-05-01 15:34:47 2062 1
原创 协程,线程,进程 一家人就要整整齐齐
前几天在开会的时候,部门大佬回溯了一下上周末项目出现的一个问题,在面对大量的http请求的时候,之前的做法是开多进程多线程去分布式接受然后响应,但是由于没有预估好请求量级,导致大量的请求被堵住,影响了线上的业务。解决方案:当然多架点服务器,多开点进程线程也能缓解需求,但是为了偶尔的峰值来架多服务器有点浪费~于是大佬就提出一个东西,协程,说实话,我还没听说过这个东西,之前就知道进程,线程,协程是...
2020-04-25 12:44:33 1480
原创 从根源上解决libc.so.6版本问题 /lib64/libc.so.6:version 'GLIBC_XXX' not found
不知道你们是不是有时候也跟我一样,在安装完python某些包的时候,在import的时候总会报错 libc.so.6的版本问题,在网上查找了N种方式,不是没有资源下载就是没用,偶尔也会遇到一些有用的,但是是实在是有点烦。于是就去找了公司的运维小哥帮忙看下,结果三两下就解决了。害…厚着脸皮要来了解决方法,分享给大家查看支持版本:strings /lib64/libc.so.6 | grep ...
2020-04-25 11:25:47 5999 2
原创 Celery队列你想知道的这都有,任务优先级,动态指定队列....
今天介绍一下生产队列中常用的队列配置,怎么设置队列中任务使得任务之间有个优先级关系,怎么动态指定任务发送的队列。一、Celery队列配置简介CELERY_QUEUES = ( Queue("celery", Exchange("celery"), routing_key="celery"))celery是设置的队列名Exchange 是交换机的名称routing_key 交...
2020-04-19 14:49:51 4797
原创 简易构建celery框架+如何在本地IDE(pycharm)启动celery监听队列
今天跟大家讲解一下最简单celery框架怎么构建,以及怎么用本地的IDE启动服务端进行数据监控,废话不多说,直接开始。一、Celery1、组件最简单也是官方推荐的比较合适的RabbitMQ,在本次例子中就拿RabbitMQ进行中间件的储存以及结果集的储存,就不用其他的组件,类似Redis,MySQL等。2、配置整体的主要有以下几个文件celery_config 储存Celery配置,...
2020-04-18 16:11:04 3530 3
原创 可能是最详细的Celery微服务分布式系统任务提交流程
一、Celery分布式系统构建简介1、Celery简介Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度,Celery一个worker就是一个守护进程。2、组件在网上可以搜到Celery分布式组件大概是由这三个组件构成,Celery+RabbitMQ+Redis,当然也可以用MySQL,这种中间件的选择可以根据你的业务情况来选...
2020-04-12 17:27:43 1798 1
原创 Python分布式系统Celery,根据CPU核数探讨最优worker数 《案例:jieba分词玩家热点追踪》
一、服务器背景1台4核服务器二、jieba分词问题探究在本例中,主要针对的是对玩家每天的聊天记录进行一个热点追踪,技术层面不难,无非就是对玩家的语句进行清洗,分词,然后做主题提取等一些常规的流程。但是难点在保证查询效率的同时,怎么把庞大的玩家聊天记录数据存储下来以及进行条件式筛选。三、Celery异步任务1、什么是CeleryCelery是一个简单、灵活且可靠的,处理大量消息的分布式系...
2020-04-10 17:38:50 2728
原创 tensorflow深度学习两种学习模式MirroredStrateg,MultiWorkerMirroredStrategy进行对比-- 实际案例《针对玩家一段时间表现识别是否为脚本玩家》
服务器背景一台16核64g(数据存储机,命名tensor101)一台4核16g(命名tensor102)案例背景针对某款手游,观察玩家在7天内的行为,包括在副本,经验,金币,市场等各个方面的表现识别这个玩家是否是脚本玩家。单机模式训练数据量:716392, 7, 18测试数据量:182158, 7, 18本例采用的是LSTM 模型。epochs = 5 # 总轮次batch_...
2020-04-06 17:25:32 1788
原创 zookeeper 跟kafka 之间的具体存储结构
zookeeper 跟kafka 之间的具体存储结构**zookeeper到底存储了kafka的什么东西?1、kafka依赖zookeeper对集群进行管理,zookeeper存储kafka 各个sever(broker)的信息,当kafka各个节点的信息发生改变能够及时进行通知处理。2、kafka的topic信息是存储在zookeeper上的,zookeeper上只存储topic的配置信...
2020-04-06 14:39:08 1647
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人