做深度学习这么多年还不会挑GPU?这儿有份选购全攻略

大数据文摘出品

来源:timdettmers

编译:刘佳玮、钱天培

深度学习是一个对算力要求很高的领域。GPU的选择将从根本上决定你的深度学习体验。

一个好的GPU可以让你快速获得实践经验,而这些经验是正是建立专业知识的关键。如果没有这种快速的反馈,你会花费过多时间,从错误中吸取教训。

那么,现在问题来了。

如果你想购买新的GPU,应该关注哪些指标呢?GPU RAM,内核,还是Tensor Core?

各种厂商五花八门。英伟达,英特尔,还是谷歌?我又应该选择哪家的产品?

本文将深入研究这些问题,并将为你提供建议,帮助你做出适合的选择。

本文结构如下:

首先,我会讨论拥有多个GPU的用处,然后讨论所有相关的硬件选项,如英伟达和AMD GPU,Intel Xeon Phis,Google TPU和初创公司的硬件。然后我会讨论哪些GPU规格指标是深度学习性能的良好指标。最后,我会总结GPU的选购建议。

只想阅读最终采购建议的同学可以直接跳到文末。

多个GPU能让我的训练更快吗?

我的核心观点是,卷积和循环网络很容易并行化,特别是当你只使用一台计算机或4个GPU时。然而,包括Google的Transformer在内的全连接网络并不能简单并行,并且需要专门的算法才能很好地运行。

图1:主计算机中的设置:你可以看到三个GPU和一个InfiniBand网卡。这是一个很好的深度学习配置吗?

像TensorFlow和PyTorch这样的现代库非常适合并行化循环和卷积网络。以卷积为例,2/3/4 块GPU的期望加速大约分别是1.9x / 2.8x / 3.5x。对于循环网络,序列长度是最重要的参数,在常见的NLP问题中,对应的加速比与卷积网络相似或稍差。

然而,全连接网络(包括Transformer)通常具有较差的数据并行性能,并且需要更高级的算法来加速网络的这些部分。如果你在多个GPU上运行Transformer,你应该也尝试在单个GPU上运行,并比较查看是否真的有加速。

在不考虑并行性的情况下使用多个GPU

除了并行运算,拥有多个GPU能带来的更显著帮助是,让你可以在每个GPU上单独运行多个算法或实验。

高效的超参数搜索是多个GPU的最常见用途。虽然你没有获得加速,但你可以获得有关不同超参数设置或不同网络架构的性能的更快信息。这对新手来说也非常有用,因为你可以快速获得训练不熟悉的深度学习架构的见解和经验。

以这种方式使用多个GPU通常比通过数据并行在多个GPU上运行单个网络更有用。购买多个GPU时,请记住这一点:当你购买多个GPU时,用于提高并行性的指标(如PCIe通道数量)并不重要。

另外,请注意,单个GPU应该足以满足几乎所有任务的要求。单GPU的体验范围与4个 GPU的体验不会差太多。唯一的区别是,你可以在给定时间内使用多个GPU运行更多实验。

你该如何选择:英伟达 vs AMD vs 英特尔 vs 谷歌 vs 亚马逊 vs 微软 vs 初创公司

英伟达:领导者

英伟达的标准库使得在CUDA中建立第一个深度学习库非常容易,而AMD的OpenCL没有这样强大的标准库。这一早期优势与英伟达强大的社区支持相结合,迅速增加了CUDA社区的规模。这意味着只要你使用英伟达 GPU,如果出现问题,你将很容易找到支持;如果你自己编写CUDA,你会找到支持和建议;并且你会发现大多数深度学习库都对英伟达 GPU提供最佳支持。在过去的几个月里,英伟达仍将更多的资源投入到软件中。例如,Apex库支持在PyTorch中实现稳定的16位梯度,还包括融合快速优化器,如FusedAdam。总的来说,软件是英伟达 GPU非常强大的一步。

另一方面,英伟达现在有一项政策,即只允许Tesla GPU在数据中心使用CUDA,而不允许GTX或RTX卡。目前外界尚不清楚“数据中心”的严格定义,但这意味着,由于担心法律问题,组织和大学将被迫购买价格昂贵且性价比低的Tesla GPU。然而,Tesla卡与GTX和RTX卡相比没有真正的优势,成本却高达10倍。

英伟达可以在没有任何重大阻力的情况下做到这一点,正表明了他们垄断的力量——他们可以随心所欲地做,我们必须接受这些条款。如果你选择了英伟达 GPU在社区和支持方面的主要优势,你也需要同时接受随时可能出现的各种限制。

AMD:功能强大但缺乏支持

HIP通过ROCm将英伟达和AMD GPU统一为一种通用编程语言,在编译成GPU组件之前编译成相应的GPU语言。如果我们将所有GPU代码都放在HIP中,这将是一个重要的里程碑,但这很困难,其中就包含了移植TensorFlow和PyTorch代码库。 TensorFlow和PyTorch对AMD GPU有一些支持,所有主要网络都可以在AMD GPU上运行,但如果你想开发新网络,可能会遗漏一些细节,这可能会阻止你实现你需要的东西。 ROCm社区也不是太大,因此很难直接解决问题。 AMD对他们的深度学习软件投入很少,因此不能指望英伟达和AMD之间的软件差距将在未来缩小。

目前,AMD GPU的性能还可以。它们现在具有16位计算能力,这是一个重要的里程碑,但英伟达 GPU的Tensor核心为Transformer和卷积网络提供了更高的计算性能(不过对于词级循环网络而言,没有提高那么多)。

总的来说,我认为对于那些只希望GPU能够顺利运行的普通用户,我不太推荐AMD GPU。更有经验的用户应该可以减少问题,并且通过支持AMD GPU和ROCm / HIP开发人员,他们有助于打击英伟达的垄断地位,因为这将使每个人长期受益。如果你是GPU开发人员并希望为GPU计算做出重要贡献,那么AMD GPU可能是长期发挥良好影响力的最佳方式。对于其他所有人来说,英伟达 GPU可能是更安全的选择。

英特尔:努力追赶

以我的亲身经历而言,我对英特尔Xeon Phis非常失望,我不认为它们是英伟达或AMD显卡的真正竞争对手,因此我只简单描述一下:如果你决定使用Xeon Phi,你可能会遇到以下问题:很差的技术支持,代码运行得比CPU还慢,编写优化代码困难,没有完全支持C ++ 11特性,不支持某些重要的GPU设计模式,难以兼容依赖BLAS例程的其他库(NumPy和SciPy)等等。

除了Xeon Phi之外,我非常期待英特尔的Nervana神经网络处理器(NNP),因为它的规格对GPU开发人员而言非常强大,并且它将允许新的算法,这可能重新定义神经网络的使用方式,但这一项目已经无休止地延迟,有传言称大部分研发都打了水漂。NNP计划于2019年第三季度/第四季度开始。如果你想等待那么长时间,请记住,从AMD和英特尔自己的Xeon Phi可以看出,好的硬件并非一切。可能直到2020年或2021年,NNP才有能力与GPU或TPU竞争

谷歌:强大,廉价的按需处理

Google TPU已发展成为一种非常成熟的基于云的产品,具有成本效益。理解TPU的最简单方法是将其视为打包在一起的多个专用GPU——而且只为了一个目的:进行快速矩阵乘法。如果我们看一下Tensor-Core-enabled V100与TPU v2的性能指标,我们发现两个系统在运行ResNet50模型时的性能几乎相同。

但是,Google TPU更具成本效益。由于TPU具有复杂的并行化基础架构,如果你使用多于1个云TPU(相当于4个GPU),TPU将比GPU具有更大的速度优势。

尽管仍在试验中,但PyTorch现在也支持TPU了,这将有助于加强TPU社区和生态系统。

TPU仍然存在一些各种各样的问题,例如,2018年2月的一份报告称,当使用LSTM时TPUv2没有收敛。我至今没有找到该问题已经解决的报道。

另一方面,在TPU上训练大型Transformer取得了巨大成功。GPT-2,BERT和机器翻译模型可以在TPU上非常有效地进行训练。根据我的估计,TPU比GPU快约56%,并且由于它们与云GPU相比价格较低,因此它们是大型Transformer项目的绝佳选择。

然而,在TPU上训练大型模型的一个问题可能是累积成本。TPU具有高性能,最适合在训练阶段使用。在原型设计阶段,你应该关闭云端来降低成本。因此,最佳选择是,在你的个人GPU上进行原型设计,然后在TPU训练最终模型。

总而言之,目前TPU似乎最适合用于训练卷积网络或大型Transformer,并且应该结合其他计算资源共同使用,而不是作为主要的深度学习资源。

亚马逊AWS和微软Azure:可靠但昂贵

来自Amazon AWS和微软Azure的GPU实例非常具有吸引力,因为你可以根据需要轻松扩展和缩小实例。这对于赶paper或者更大的一次性项目非常有用。然而,与TPU类似,成本会随实例数增长而迅速累加。目前,GPU云实例太昂贵而无法单独使用,我建议在云中启动最终训练工作之前,使用一些专用的廉价GPU进行原型设计。

初创公司:具有革命性的硬件概念但缺乏软件

有一系列初创公司旨在生产下一代深度学习硬件。这些公司通常拥有出色的理论设计,然后被谷歌、英特尔或其他公司收购,以获得完成设计和生产芯片所需的资金。下一代芯片的开发成本十分昂贵(约10亿美元)。一旦这个阶段完成,软件就成了主要问题。目前,还没有初创公司能够生产出适用于当前深度学习硬件的软件。需要开发一个完整的软件套件才能具有竞争力,这一点从AMD与英伟达的例子中可以清楚地看出:AMD拥有出色的硬件,但只有90%的软件——这还不足以与英伟达竞争。

目前,没有任何公司能够完成所有的硬件和软件步骤。英特尔NNP可能是最接近的,但目前来看,我们不能指望在2020年或2021年之前出现有竞争力的产品。所以目前我们需要继续使用GPU和TPU。

因此,你就先别指望初创公司的新硬件了。

一个优秀的GPU应该拥有什么性能?

训练深度学习模型时,GPU性能中最重要的特性到底是什么?是CUDA Core吗?还是时钟频率?或是RAM大小?

GPU的选择实在令人困惑:16位计算能力,Tensor Core,没有Tensor Core的16位GPU,多代GPU仍然可行(Turning,Volta,Maxwell)。

所幸我们仍然有一些可靠的性能指标,我们可以使用这些指标作为经验法则。这里有一些针对不同深度学习架构的优先级指南:

卷积网络和Transformer:Tensor Core> FLOP>存储器带宽> 16位计算能力

循环网络:存储器带宽> 16位计算能力>Tensor Core> FLOP

解释如下:如果我想使用卷积网络,我应该首先优先考虑具有Tensor Core的GPU,然后是高FLOP指数,然后是高内存带宽,然后是具有16位计算能力的GPU 。在确定优先级时,你也需要根据模型大小选择具有足够内存的GPU。

为什么优先级是这样的呢?

GPU可以快速实现两个最重要的张量操作:矩阵乘法和卷积。

考虑矩阵乘法A * B = C。将A,B的存储器复制到芯片上比计算A * B更昂贵。这意味着,如果你想使用LSTM和其他经常进行大量小矩阵乘法的循环网络,则内存带宽是GPU最重要的特性。矩阵乘法越小,内存带宽就越重要。

相反,卷积受计算速度的约束。因此,GPU上的TFLOP是ResNets和其他卷积架构性能的最佳指标。Tensor Core可以明显增加FLOP。

图2:GPU和TPU的标准化性能数据。越高越好。RTX卡假定16位计算。RNN编号指的是长度小于100的短序列的biLSTM性能。使用PyTorch 1.0.1和CUDA 10完成基准测试。

性价比分析

GPU的性价比可能是选择GPU的最重要标准。本文的性能分析如下:

1.对于Transformer,我对Transformer-XL和BERT进行了基准测试。

2.对于词级和字符级RNN,我对最先进的biLSTM模型进行了基准测试。

3.(1)和(2)中的基准测试是针对Titan Xp,Titan RTX和RTX 2080 Ti进行的。对于其他卡,我线性地缩放了性能差异。

4.我使用现有的CNN基准。

5.我使用亚马逊和eBay的平均成本作为GPU的参考成本。

图3:卷积网络(CNN),循环网络(RNN)和Transformer的标准化性能/成本。越高越好。RTX 2060的成本效率是Tesla V100的5倍以上。RNN编号指的是长度小于100的短序列的biLSTM性能。使用PyTorch 1.0.1和CUDA 10完成基准测试。

从这些数据中,我们看到RTX 2060比RTX 2070,RTX 2080或RTX 2080 Ti更具性价比。为什么会这样呢?使用Tensor Core进行16位计算的能力远远超过拥有更多Tensor Core核心的更大的硬件。使用RTX 2060,你可以以最低的价格获得这些功能。

然而,这种分析存在一些应该考虑的偏差:

1.这种分析强烈倾向于较小的显卡。较小而经济高效的GPU可能没有足够的内存来运行你真正感兴趣的模型!

2.GTX 10xx卡标价过高:目前,由于游戏玩家不喜欢RTX卡,GTX 10XX卡似乎加价格被哄抬过高。

3.单GPU偏置:一台具有4个低成本卡(4x RTX 2080 Ti)的计算机比具有最高成本/效率卡(8x RTX 2060)的2台计算机更具性价比。

警告:多GPU RTX发热问题

如果你使用多个彼此相邻的GPU,那么RTX 2080 Ti和其他具有标准双风扇的RTX GPU就存在问题了——尤其是一台计算机中的多个RTX 2080 Ti。多个RTX 2080和RTX 2070也会受到影响。

RTX卡上的风扇是由英伟达开发的一种新设计,用于改善运行单GPU的游戏玩家的体验(静音,低发热)。但是,如果你使用具有此开放式双风扇设计的多个GPU,那么这种设计非常糟糕。如果你想使用多个彼此相邻的RTX卡(直接在下一个PCIe插槽中),那么你应该获得具有“鼓风式”单风扇设计的版本。对于RTX 2080 Ti卡尤其如此。华硕和PNY目前市场上有RTX 2080 Ti型号,带有鼓风式风扇。如果你使用两个RTX 2070,你可以使用任何风扇,但是,我仍愿意选择使用一个鼓风式风扇,以便在彼此旁边运行2个以上的RTX 2070。

所需内存大小和16位训练

GPU上的内存对于某些应用程序(如计算机视觉,机器翻译和某些其他NLP应用程序)至关重要,你可能认为RTX 2070具有性价比,但其内存太小,只有8 GB。但请注意,通过16位训练,你几乎可以拥有16 GB的内存。任何标准型号都可以被轻松放入RTX 2070。

RTX 2080和RTX 2080 Ti也是如此。但请注意,在大多数软件框架中,16位运算并非默认选项,因为某些框架以32位存储权重以执行更精确的梯度下降。一个好的经验法则是,使用16位计算往往可以节省50%的内存。因此,16位8GB内存的大小与12 GB 32位内存大致相当。

GPU推荐

目前,我的主要建议是购买RTX 2070 GPU并使用16位训练。我永远不会建议购买XP Titan,Titan V,任何Quadro显卡或任何Founders Edition GPU。但是,有一些特定的GPU也有它们的用武之处:

1.如果要额外内存的话,我建议使用RTX 2080 Ti。如果你真的需要大量的内存,RTX Titan是最好的选择——但要确保你真的需要那么多内存!

2.如果想要额外的性能,我建议使用RTX 2080 Ti。

3.如果你缺钱,我会推荐eBay上的任何便宜的GTX 10XX卡(取决于你需要多少内存)或RTX 2060。如果太贵,可以看看Colab。

https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d)

4.如果你只想入门深度学习,GTX 1060(6GB)是一个很好的选择。

5.如果你已经拥有GTX 1070或更高版本,请再等等。除非你使用大型Transformer,否则升级是不值得的。

6.如果你想快速学习深度学习,建议使用多个GTX 1060(6GB)。

云端深度学习

AWS / Azure上的GPU实例和Google Cloud中的TPU都是深度学习的可行选择。虽然TPU稍微便宜一点,但它缺乏云GPU的多功能性和灵活性。

TPU可能是训练物体识别或Transformer模型的首选武器。对于其他工作负载,云GPU是更安全的选择——云实例的好处是你可以随时在GPU和TPU之间切换,甚至可以同时使用两者。

但是,请注意这样做的代价:如果你一直使用AWS / Azure完成工作,那么你将无法学到如何在个人GPU上工作的技能,并且你也无法获得使用TPU的技能。如果你一直使用个人GPU,则无法学会通过云扩展到更多GPU / TPU的技能。

如果你使用TPU,当你需要完整功能时,你可能就只能使用TensorFlow了。学习云GPU / TPU工作流的代价是很高,如果你正在面临TPU、云GPU和个人GPU的选择,你应该意识到这个代价。

另一个问题是,何时使用云服务?如果你试图学习深度学习,或者你需要搭建原型,那么个人GPU可能是最好的选择,因为云实例可能很昂贵。

但是,一旦你找到了良好的深度网络配置,并且你只想使用数据并行性训练模型,那么使用云实例是一种可靠的方法。小型GPU足以进行原型设计,而人们可以依靠云计算的强大功能来扩展到更大的实验。

如果你的资金不足,云计算实例也可能是一个很好的解决方案:在CPU上进行原型设计,然后在GPU / TPU实例上实验,以便快速进行训练。这不是最好的工作流程,因为在CPU上做原型设计十分痛苦,但它可以是一个具有高性价比的替代方案。

结论

总的来说,在GPU选取上,我推荐以下三个策略:

1.坚持使用GTX 1070或更好的GPU

2.购买RTX GPU

3.使用某种GPU进行原型设计,然后在TPU或云GPU上进行并行训练。

更多建议

最佳GPU:RTX 2070 

最差GPU:任何Tesla卡、任何Quadro卡、任何初创公司的卡; Titan RTX,Titan V,Titan XP

高性价比但价格昂贵:RTX 2070

高性价比且价格便宜:RTX 2060,GTX 1060(6GB)

有点小钱:GTX 1060(6GB)

没钱:GTX 1050 Ti(4GB)或者:CPU(原型)+ AWS / TPU(训练);或者Colab。

参加Kaggle:RTX 2070。如果你没有足够的钱,可以从eBay购买GTX 1060(6GB)或GTX Titan(Pascal)进行原型设计,然后使用AWS进行最终训练。使用fastai库。

计算机视觉或机器翻译研究员:GTX 2080 Ti(采用鼓风机设计)。如果你训练非常大的网络,请使用RTX Titans。

NLP研究员:16位的RTX 2080 Ti。

想认真学习深度学习:从RTX 2070开始。在6-9个月后购买更多RTX 2070。根据你接下来选择的领域(创业,Kaggle,研究,应用深度学习),卖掉你的GPU,并在大约两年后购买更合适的东西。

只想玩一玩试深度学习:GTX 1050 Ti(4或2GB)。这通常适合你的标准桌面,不需要新的PSU。如果装得下的话,不要购买新电脑!

相关报道:

http://timdettmers.com/2019/04/03/which-gpu-for-deep-learning/
Image placeholder
lihongdan
未设置
  54人点赞

没有讨论,发表一下自己的看法吧

推荐文章
TensorFlow与PyTorch之争,哪个框架最适合深度学习

谷歌的Tensorflow与Facebook的PyTorch一直是颇受社区欢迎的两种深度学习框架。那么究竟哪种框架最适宜自己手边的深度学习项目呢?本文作者从这两种框架各自的功能效果、优缺点以及安装、版

丰巢刷脸取件被小学生破解,号称3D、深度学习加持的人脸识别究竟靠谱吗?

大数据文摘出品作者:曹培信经费不够,2D来凑?前些天,丰巢智能快递柜被“小学生”用打印照片破解,让人大跌眼镜。据《人民日报》报道,嘉兴上外秀洲外国语学校402班科学小队向都市快报《好奇实验室》报料:他

医疗保健案例研究:怎样用深度学习检测疟疾

导言本文中,我们将集中讨论人工智能(AI)与流行的开源工具、技术和框架如何被用于发展和改善医疗行业。俗话说,健康就是财富。在这篇文章中,我们将探讨如何利用人工智能来检测一种致命的疾病–疟疾,以及如何建

万万没想到,HashMap默认容量的选择,竟然背后有这么多思考!?

集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生。在日常开发中,我们经常会像如下方式以下创建一个HashMap:Map ma

阿里巴巴重磅发布含光 800 芯片:顶 10 个 GPU

2019年9月25日,2019杭州·云栖大会在云栖小镇举行。回顾历届大会,每年都有那么几件大事情值得关注,比如提出“DT时代”、“五新”概念,宣布建设“城市大脑”,成立达摩院、半导体公司“平头哥”等

干货!IP桌面电话选购的五大要点

随着人们对高效便捷工作方式的追求,移动办公和分布式团队愈发普及。协作空间已不再局限于常规的会议室,它可能是一张办公桌或提供Wi-Fi的咖啡厅,空间风格也逐渐向轻松随意的氛围转变。如何随时、随地利用任何

打好网络安全攻坚战 思科年度安全报告系列关注未知安全挑战

当网络攻击愈演愈烈,当勒索软件愈加嚣张,企业对于网络安全的重视程度稳步提升。网络安全在企业中的地位从没像今天这般高涨。但不可否认的是,即便企业提升了对网络安全的防护,但网络安全威胁依旧长期存在且愈加复

做机器学习项目数据不够?这里有5个不错的解决办法

许多开展人工智能项目的公司都具有出色的业务理念,但是当企业AI团队发现自己没有足够多的数据时,就会慢慢变得十分沮丧……不过,这个问题的解决方案还是有的。本文将简要介绍其中一些经笔者实践证明确实有效的办

JVM CPU Profiler技术原理及源码深度解析

本文介绍了JVM平台上CPUProfiler的实现原理,希望能帮助读者在使用类似工具的同时也能清楚其内部的技术实现。引言研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。

耗时6年生成代码1.6亿行,农业银行大数据平台打造攻略!

摘要: 耗时6年,135个项目,8000页需求,累计投入11000多人月,生成的代码行1.6亿行,支持了8大业务领域,33条业务线,120多个应用场景,这就是中国农业银行大数据平台。近日,中国人民银行

GitHub上标星1.5w,被B站使用,flv.js开源作者月薪还不到5k!学历对程序员有多重要?

大数据文摘出品作者:刘俊寰上周,文摘菌向大家介绍了在美国当数据科学家的年薪水平,发现科学家们的整体薪资走势虽然有所下降,但是年薪中位数保持在12万美元左右。同一时间,知乎上一个很老的话题忽然被重提,也

看完这篇,你还不能理解 ‘数据库架构’?趁早回家吧

来源:http://rrd.me/ep46N一、数据库架构原则高可用高性能一致性扩展性二、常见的架构方案方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用jdbc:mysql://vip:3

你真的了解 React 吗?这里有 50 个 React 面试问题

如果你是一位有理想的前端开发人员,并且正在准备面试,那么这篇文章就是为你准备的。本文收集了React面试中最常见的50大问题,这是一份理想的指南,让你为React相关的面试做好充分的准备工作。首先我

为什么大部分人做不了架构师?这2点是关键

阿里妹导读:选择有时候比努力重要,真正厉害的人不仅仅是埋头苦干,而是会利用好的思维方式、好的方法,看穿事物的本质,顺势而为,找到事情的最优解,并懂得举一反三。架构师是程序员的目标之一,但大多数程序员无

深度解读当代前端架构演进与趋势(上)

软件架构的核心思想,就是推断软件系统各个组件之间数据流动的方式。软件架构的质量取决于你设法推断这些数据流的难易程度!本文要讲的内容,就是在今天的Web应用程序背后探索这些数据流和最终的体系结构。We

深度解密 Go 语言之 context

Go语言的context包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获! 什

分布式Redis深度历险-复制

摘要Redis深度历险分为两个部分,单机Redis和分布式Redis。本文为分布式Redis深度历险系列的第一篇,主要内容为Redis的复制功能。Redis的复制功能的作用和大多数分布式存储系统一样,

深度好文 | 华为新贵!方舟编译器的荣光和使命

本文转自 | 菊厂搞机  future_technologies2017年5月的一个凌晨,华为某实验室里,方舟编译器上第一个Java程序“Hello,World”跑通了。当时项目组的一位工程师就哽咽了

SpringBoot 深度调优,让你的项目飞起来!

项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。一、修改配置文件关于修改配置文件application.p

深度盘点丨华为云数据库布局及研发路线图

“华为是个可怕的对手,一旦下定决心做某件事,鲜有做不成的。”这句在圈内少有达成共识的话,也正在一步一步得到应验。很多人或许以为,华为的优势并非软件而是硬件,但其实在数据库软件领域,华为也玩得风生水起华

深度复盘GitHub发展史:如何在短短10年内改变了人们的编程方式?

前不久,微软以75亿美元的价格收购GitHub,引发了科技行业的关注。在短短的10年内,GitHub改变了人们的编程方式。不仅让编程变得更简单,还改变了软件开发者对编程的看法。GitHub是如何做到的

BAT大牛推荐开发人员必备Spring源码剖析文档,深度剖析Spring

为什么学习读源码我们每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。

深度解析微信域名经常被封的防封方案与已被封域名强制浏览器打开的防封短链接实现!

很多做H5(QP、BC、CP)的朋友都会经常遇到域名被微信秒封的情况。导致推广出去的二维码和链接用户打不开,这样会错失很多流量。这个问题一直让很多朋友头疼,因为微信推广的效率确实很理想,用户量的裂变也

Python分析42年高考数据,告诉你高考为什么这么难?

大数据文摘授权转载自数据森麟作者:徐麟对于已经工作的“上班族”来说,6月7号到9号三天无疑是兴奋到飞起的,终于迎来了令人愉悦的端午假期。然而有那么一群人,将在端午节日之际迎来人生特别重要的一次经历或者

1000亿文本信息,高并发MD5查询,这么大数据量的业务怎么弄?

==提问== 沈老师,你好,想请教一个身份证信息检索的问题。公司有一个每秒5万并发查询的业务,(假设)根据身份证MD5查询身份证信息,目前有1000亿条数据,纯文本存储,前几天看你写LevelDB,请