首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Pytorch Lightning重构代码速度更慢,修复后速度倍增

选自Medium 作者:Florian Ernst 机器之心编译 编辑:小舟、陈萍 用了 Lightning 训练速度反而更慢,你遇到过这种情况吗?...两周前,我将一些深度学习代码重构为 Pytorch Lightning,预计大约有 1.5 倍的加速。然而,训练、评估和测试任务的速度却降为原来的 1/4。...我注意到几个可以加速的地方,并将代码重构为 Pytorch 代码,让训练大约快了 3 倍。 但我认为还有改进的余地。...我打乱了其中一些超参数,训练速度没有任何变化。 然后我调整了数据加载器,发现改变作业数 n_jobs 会对总训练时间产生影响。然而影响不是加快了计算速度,而是减慢了。...我开始采用 Python 的 getter & setter 用法: 当 DataLoader.

84010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    BiliAPI Python版本重构手记

    和我有过邮件联系的dalao们应该会发现,两年前我就提及BiliAPI会有Python版本,然而……咕咕咕。然后最近,一股来自东方的神秘力量催使我又打开了这个项目。...于是我翻了翻Python3.6的新特性,又跑过来填坑了。然而惨不忍睹的旧设计实在是没有改的空间了,于是我打算开始一波重构。...repo位于码云:https://gitee.com/kaaass/biliapi_python重构分支为reconstruct,欢迎Star、测试、issue、PR。...看commit和issue记录你会发现,其实已经有一次重构了,但是由于当时设计的时候并没有考虑到一些接口的特性,所以后续开发根本没法弄。现在借鉴了一下B站客户端的实现,重新进行了设计。...以我第一次重构后的接口为例,请求是通过Request对象实现的,而接口内部就有一个默认对象。App对象用于存放ak、sk和app_type,通用库也会持有一个默认对象。

    45120

    Python代码重构的最佳实践

    重构是提高代码质量的重要手段,特别是在长期项目中,代码重构可以显著提高项目的可维护性和可扩展性。本文将详细介绍Python中的代码重构方法,涵盖重构的基本原则、常见的重构技术、工具和实际应用示例。...重构的基本原则 保持代码行为不变:重构不应该改变代码的外部行为,只是优化内部结构。 小步前进:逐步进行小的改动,每次重构后运行测试确保没有引入新的问题。...持续重构:将重构作为日常开发的一部分,而不是等到代码质量变得无法维护时再进行大规模重构。 编写测试:在重构之前,确保有足够的单元测试覆盖代码的功能,这样可以在重构后验证代码的正确性。...user_input) if error: print(error) else: print(check_even_or_odd(number)) 总结 本文详细介绍了Python...中的代码重构方法,包括重构的基本原则、常见的重构技术以及实际应用案例。

    18810

    重构学习-重构原则

    什么是重构: 视上下文重构有两个不同的定义,第一个定义是名词形式 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 重构的另一人用法是动词形式 使用一系列的重构手法...和重构一样,性能优化通常也不会改变组件的行为,只改变执行 速度,只修改内部结构。两者的出发点不同,性能优化可能会使代码较难理解。...强调一下,重构不会改变软件的可观察行为,也就是说重构之后功能和原来一样。 为什么要重构重构改进软件设计,如果没有重构,程序的设计会逐渐腐败变质。...如果在修改bug和审查代码时发现不合理的地方也要进行重构,这样是为了更好的阅读和理解代码 何时不重构: 如果发现代码太混乱,重构它不如重写来的简单这种情况下建议重写,不用进行重构。...这个的解决方案是先写出可高试的软件,然后 调整它以求获得足够的速度

    1.1K50

    重构重构概要--六大重构模块

    重构方法介绍: 重构改善既有代码的设计 一 重新组织函数 关于注释 :要尽可能少的使用注释 , 注释越多代码的可读性反而更差,注释可以使用函数名来代替 , 不要管函数名有多长, 即使函数名比函数中的代码还要长也不要紧...能更加明确的表明函数的意义,可以将这个算法替换; 二 在对象之间搬移特性 功能模块归属类:对象设计中, 将一个功能模块放在哪个类中,是最重要的任务之一,谁也不能一开始保证设计的是完全合适的,这就需要“对象之间搬移特性”这个重构方法...搬移函数和搬移字段:这两种重构方法都可以解决大多数的问题,如果两种方法同时使用,先搬移字段,在搬移函数。

    71030

    重构

    说到重构,我们再来了解一下定义:重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,利用设计思想、设计原则、设计模式编程规范等理论来优化代码。...重构目的:1.重构是时刻保证代码质量的一个极其有效的手段,防止代码腐化。当代码腐化到一定程度,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本。2.优秀的架构和代码是迭代出来的。...时机:持续的重构(做好重构计划,小步快跑,要保证代码仓库中的代码一直处于可运行、逻辑正确的状态.要做好与新功能,老代码的兼容工作。利用静态代码扫描,codeReview做好日常持续重构)。...重构手法总结为“十六字心法”,非常形象、贴切:旧的不变,新的创建。一步切换,旧的再见。...“旧的不变”是指先不动旧方法;“新的创建”是指创建一个跟原来方法功能相同的新方法,你可以通过先复制再重构的方式,来得到这个新方法,也就是整个系统的一个增量;“一步切换”是指,在充分测试之后,新的方法可以完全替代旧方法了

    22830

    Python面试:代码审查与重构相关问题

    Python编程相关的面试中,面试官常常关注面试者对代码审查与重构的理解与实践经验。本文将深入浅出地探讨这两方面的话题,梳理面试中常见的问题、易错点及应对策略,并通过代码示例进一步阐述。1....熟悉Python编程规范:如PEP 8编码风格、类型提示、docstring等。易错点与避免策略:仅关注表面错误:深入理解代码逻辑,评估其是否满足需求、是否存在潜在问题、是否易于维护。...重构常见问题:理解重构目的与原则:改进代码结构,提升代码质量,而不改变其外部行为。熟悉重构手法:如提取函数、提炼类、搬移特性、替换算法等。...忽视重构带来的技术债务:评估重构的成本与收益,优先处理影响较大的问题,避免无谓的重构。忘记记录重构过程:使用版本控制系统记录每一次重构步骤,便于回滚或追踪问题。...item.get_price() * item.quantity return totaldef lookup_price(item_name): # 查询数据库或外部服务获取价格 ...综上所述,理解和掌握Python

    13710

    代码重构(三):数据重构规则

    在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细的介绍了函数与类的重构规则。...对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性。 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的。通过这些规则可以使你更好的组织数据,让你的应用程序更为健壮。...在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据重构的规则,并讨论一下何时使用那些重构规则进行数据重构。...还是那句话“物极必反”呢,如果不恰当的使用重构规则,或者过度的使用重构规则不但起不到重构的作用,有时还会起到反作用。废话少说,进入今天数据重构的主题。 一. ...在本次重构中,依照重构的规则,我们不会去修改我们的测试用例,这一点很重要。 (1)从根本解决问题,首先我们对Customer进行重构

    1.2K60

    Python技巧:如何提高爬虫速度

    今天在浏览知乎时,发现一个有趣的问题: 如何优化 Python 爬虫的速度?...他的问题描述是: 目前在写一个 Python 爬虫,单线程 urllib 感觉过于慢了,达不到数据量的要求(十万级页面)。求问有哪些可以提高爬取效率的方法?...程序提速这个问题其实解决方案就摆在那里,要么通过并发来提高单位时间内处理的工作量,要么从程序本身去找提效点,比如爬取的数据用gzip传输、提高处理数据的速度等。...t_list:     t.join() print("多线程版爬虫耗时:", time.time() - t1) # 多线程版爬虫耗时:0.8038511276245117 我们可以看到,用上多线程之后,速度提高了...多进程版本爬虫 除了多线程之外,我们还可以使用多进程来提高爬虫速度: import requests import time import multiprocessing from multiprocessing

    94320

    代码重构(二):类重构规则

    在上篇博客《代码重构(一):函数重构规则(Swift版)》中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace...关于上述这些函数重构的规则更为详细的信息请参考上一篇博客,在此就不做过多的赘述了。 今天这篇博客主要介绍一下类的重构。在我们写代码时,有些类是不规范的,需要重构。...当然,在你实现时,测试用例是必不可少的,因为测试用例可以在你重构时及时发现因为重构而产生的错误。言归正传,进入今天博客的主题。...搬移后,我们可以再使用函数的重构规则对新组的函数进行重构。下方就通过一个实例来直观的感受一下Move Method。...关于这两个函数重构的规则的具体细节请参见《代码重构(一):函数重构规则(Swift版)》中的介绍。下方截图是对BookCustomer类中的charge()函数进行重构后的结果,如下所示: ?

    1.3K100

    代码重构(三):数据重构规则

    在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细的介绍了函数与类的重构规则。...对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性。 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的。通过这些规则可以使你更好的组织数据,让你的应用程序更为健壮。...在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据重构的规则,并讨论一下何时使用那些重构规则进行数据重构。...还是那句话“物极必反”呢,如果不恰当的使用重构规则,或者过度的使用重构规则不但起不到重构的作用,有时还会起到反作用。废话少说,进入今天数据重构的主题。 一....在本次重构中,依照重构的规则,我们不会去修改我们的测试用例,这一点很重要。 (1)从根本解决问题,首先我们对Customer进行重构

    99210

    代码重构(一):函数重构规则

    此时,你要考虑重构了。 重构,在《重构,改善既有代码的设计》这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况下,修改代码的内部特征。...经典的重构书籍中是使用Java语言来实现的,如果你对PHP, Python等其他语言比较熟悉,完全可以使用这些语言来测试一些重构手法。...本篇博客的主题就是通过一些列的重构手法,对既有的需要重构的函数或者方法进行重构。并且会将每个示例在GitHub上进行分享,感兴趣的小伙伴可以对其进行下载。...实在是没有必要再找其他的例子说明这些重构规则,因为《重构:改善既有的代码的设计》这本书真的是太经典了。 1.需要重构的代码如下所示。...在写好需要重构的类后,我们要为该类写一个测试用例。这便于在我们重构时对重构的正确性进行验证,因为每次重构后都要去执行该测试用例,以保证我们重构是正确的。

    1.6K50
    领券