当前位置: 首页 > 编程日记 > 正文

AI规模化落地,英特尔至强的七重助力

640?wx_fmt=png

 

当今时代,各行各业与人工智能(AI)加速融合,通过智能化创新来寻求业务转型升级。与为数不多的顶级AI研发公司相比,大多数传统行业或企业有着更丰富的 AI 应用场景,推动着规模化的AI应用落地,其AI应用更具有实践意义。然而,在智能化技术架构和平台选择上,它们又往往面临着“拿着钉子到处找锤子”的尴尬局面。

 

尽管有人津津乐道于承载 AI 应用的一些专用架构平台,但实际情况是,仅采用专用加速芯片或优化单一框架,已经无法满足运行不同工作负载和适应不同应用场景所需。这是因为,AI的应用需求是多种多样的,不同的应用也决定了从数据中心到边缘再到设备所需的硬件能力都会有所差别。而且,解决企业 AI 规模化落地,需要充分利用以数据为中心的基础架构,考虑芯片处理器、核心算法和软件工具等平台解决方案的选择。

 

无论是算法工程师、AI 开发者还是数据科学家,他们在选择AI技术架构和平台时会有多方面的考量。一个共识是,基于既有的IT基础设施,统一大数据和人工智能平台,可以更加高效释放数据价值,实现AI业务目标。大家越来越发现,通用的英特尔架构有一个非常重要的先发优势,就是使用者众、部署广泛。来自英特尔架构和至强平台的助力,可以帮助企业从既有的平台起步,推动AI的发展,加速“破局”AI产业实践。

  

640?wx_fmt=png

下面我们从7个方面,展开阐述英特尔如何从性能、数据预处理、可扩展性、内存、模型部署、大数据分析、跨平台部署应用等多方面实现优化和升级,全面支持企业AI的 规模化应用落地。

第一重助力:性能

 

“CPU 性能优化有数量级提升,VNNI 和框架优化等大幅提升了 CPU 架构运行深度学习推理的速度。

 

很多人可能都认为AI这种新出现的技术,或者说应用负载,也应该用新的架构来支撑,其实不然。实际上随着 CPU 性能的数量级提升,以及在软硬件层面针对AI应用的不断优化,CPU平台也能很好地承载 AI 应用。现在CPU 能兼容几乎所有的 AI 主流技术,深度学习的应用任务,特别是推理,完全可以用 CPU来搞定。而且CPU还有一个特定的优势,就是当用户混合使用机器学习和深度学习方法时,CPU更适合承载这样的任务。

 

不断更新换代的英特尔CPU平台,已经在AI应用特别是推理上提供了强大的算力。以第二代英特尔®至强®可扩展处理器为例,它集成了加速人工智能深度学习推理的英特尔®深度学习加速(英特尔®DL Boost)技术,将人工智能性能提升到一个全新的水平,可加速数据中心、企业和智能边缘计算环境中的人工智能推理工作负载。以常见的 Caffe Resnet-50 模型为例来看性能变化,第二代英特尔®至强®铂金8280处理器借助英特尔DL Boost技术,图像识别的速度可比上一代英特尔至强可扩展处理器提升14倍


另外,英特尔CPU平台还与各类主流深度学习框架 (包括 TensorFlow、PyTorch、caffe 、MXNet、PaddlePaddle、BigDL 等)合作,针对CPU的AI训练和AI推理功能进行全面优化,Xeon处理器训练性能因此得到不断提升,客户也可以选择使用适合自身需求的深度学习框架做模型训练,而无需购买或者设置不同的硬件基础设施。


随着软件工具的不断更新及面向主流框架的深度优化,CPU 平台不论是支持基于单一 AI 技术的应用,还是在运行融合了多种 AI 技术的应用时,其性能表现都更为突出。对于全新硬件架构的每一个数量级的性能提升潜力,软件能带来超过两个数量级的性能提升。以第二代英特尔至强可扩展处理器上的VNNI深度学习加速指令为例,过去卷积神经需要三条指令,而现在的话一条指令就可以了,通过在底层的软硬件协同优化,可根据不同深度学习框架将推理性能加速2-3倍甚至更多。

  

第二重助力:数据预处理

 

“数据的处理分析和之后的AI应用如果在一个平台上,可以给用户带来更大的便利性,也能节省成本和降低风险。”

 

尽管当前市场对于AI技术抱有很大兴趣,但实施水平仍然相当低下。我们需要根据应用需求构建起完整的数据分析/AI流水线,从高质量数据源整理、数据预处理与清洗、适当特征数据的选择与构建等前期工作开始,这就要求数据工程师、算法工程师等协同工作。

 

算法工程师往往要花很多时间,来处理用于深度学习模型训练和测试的庞大数据,数据预处理会涉及很多很零碎的事情,比如校对数据的标注是否符合某种逻辑。在进行数据预处理时,所写的代码不一定是执行起来效率最高的,因为有可能这些零碎的校验数据功能只用一次,而不是反复使用。在这种情况下,可以使用方便快速实现功能的 Python 语言调用 CPU 来实现,而且基于 CPU 有很多现成的包和工具,具有更快数据预处理的优势。CPU还可以通过使用更多内存、减少I/O 操作来提升AI运行效率。

 

如今的深度学习和AI领域,优秀的算法和框架数不胜数,但英特尔开源的BigDL和采用了这一技术的Analytics Zoo平台选择了一个颇具独特性的切入点,那就是专为已有大数据集群的场景设计。目前,来自零售业、金融服务行业、医疗保健业、制造业及电信业等领域的企业客户都已经开始在英特尔至强服务器上利用Analytics Zoo、或基于BigDL构建更为平滑无缝的数据分析-AI应用流水线。

 

第三重助力:可扩展性

 

“CPU 平台现有基础设施就是为可扩展性而搭建,不仅易于在更多节点上进行扩展,还能按核实现弹性扩展和调配。可伸可缩方为真英雄!”

 

在深度学习和机器学习领域,不管是模型训练还是推理,为了分配和部署计算能力,常常需要基于现有的 IT 基础设施或者云平台进行硬件扩展。目前一些专有的AI架构平台只能以卡或芯片为单位来管理和扩展,而英特尔至强平台不仅更容易在更多节点上扩展,还能按核实现弹性的扩展和调配,能真正做到精细化的资源管理和调配。这使得AI平台可以尽可能通过云化来提高灵活性,提升自动化管理水平,并充分利用到每个计算核心的价值等。换句话说,现在的基础设施就是为可扩展性而搭建。

 

640?wx_fmt=png

比如有开发者指出,在新一代 Skylake-SP 微构架芯片设计上,英特尔首次开始采用了全新网格互连构架(Mesh Interconnect Architecture)设计方式,从传统的利用环形连接,到了新设计则全面改采用网格互连的方式,来进行资料存取与控制指令的传送。因为最小单位可以是以每行、每列来连接,所以每颗 Skylake-SP 核心、缓存、内存控制器及 I/O 控制器之间的路径选择变得更多元,还可以跨不同的节点互连,以寻找最短的数据传递捷径,即使是加大核心数量,也能够维持很快存取数据,并支持更高内存频宽,以及更高速的 I/O 传输。

 

第四重助力:内存

 

“CPU 易扩展缓存,而英特尔®傲腾™DC持久内存 Apache Pass 更是集大容量、经济性和持久性于一身,性能接近 DRAM。”

 

不论是AI训练还是推理,靠近计算单元的内存或者说较高速的数据缓存都非常重要。在 AI 分析中,它们对训练中的神经网络构建,并通过该网络进行推理比较都有着重要的影响。因此我们希望在靠近计算单元的地方尽可能缓存更多数据。其容量的增加,会很大程度上提高 AI 的整体性能、准确性、响应速度。

 

训练深度学习模型时,占用CPU 内存比较大,一般来说单台刀片可以轻松做到 256GB 以上的内存,做分布式训练时还可以把数据分配到不同机器上进行计算,而且可以尽量把数据预存到 CPU。此外,CPU 大内存的优势不仅体现在训练上,更主要的是推理,比如对尺寸很大的医疗影像模型进行推理处理。

即使没有英特尔®傲腾™ 数据中心级持久内存 的出现,英特尔至强处理器平台也很容易扩展内存的容量。但有了这种全新类型的产品后,内存的存储密度/价格比可能会更理想,其性能也接近 DRAM,让更大量的数据可以更接近 CPU 进行移动和处理,极大地降低从系统存储获取数据的延迟。相比之下,专有架构平台要扩展缓存,还是很不方便的。

 

第五重助力:模型部署

 

“英特尔技术产品从端到端是有统一的应用兼容性的,这样可以保证我们在后端训练迭代算法,前端部署推理。”

 

在深度学习实践中,是否应该去搭建一套新的专用平台?持否定意见的开发者认为,目前主要用于 AI 模型推理的平台都是基于 CPU 架构的,应该利用现有的数据中心基础设施,利用现有的、熟悉的处理器平台,以最低的成本部署人工智能,这相比另起炉灶、寻找其他计算平台的方法,用时更短 、风险更低、性价比更高。

 

640?wx_fmt=png

 

有开发者据此总结了三条理由:首先,现如今标准 CPU 平台完全能够胜任 AI 所有应用;其次,现在AI属于“试错阶段“,同时技术也在快速演变和迭代,利用现有的 CPU 平台,可以最小成本做最大的事,无需大量额外投资,但如果另起炉灶可能得不偿失;最后,用多年熟悉且信任的 CPU 平台,构建“激进”的 AI 项目,本身就是一个绝好的平衡,让技术风险变得可控。

 

在现有英特尔架构支持的数据应用基础上构建 AI 应用,生产环境非常成熟,易于部署,运维人员学习难度低。英特尔从云到端都有硬件平台就绪,不论是通用计算还是专用芯片(如Movidius),而且还有相关的软件支持,如众多优化库、框架和工具。另外,英特尔为 AI 应用的开发者们提供了 OpenVINO 等工具包,可以方便实现模型部署,优势显著。

 

第六重助力:大数据分析

 

“英特尔至强处理器和 BigDL软硬搭配,在 Hadoop 和 Spark 等主流大数据框架上,可以简化训练(数据获取+处理)过程。”

 

Hadoop 和 Spark 是目前非常流行的大数据管理和处理框架,想利用它们承载的数据进行深度学习训练,通常需要把这些数据导出,然后进行处理,这个过程不仅耗时而且投资较大,所以在这些大数据平台上进行深度学习训练显得尤为重要。

 

有开发者认为,可以针对各种不同来源的数据,首先根据目标算法需要的数据格式,进行数据整合。得到目标数据之后,再根据业务需要,按照对应的比例,将最原始的数据分成训练数据和测试数据,通过算法对数据不断进行训练,后期进行相应的测试。

  

640?wx_fmt=png

其实更好的方式是打通数据流水线。英特尔的 Analytics Zoo (内含BigDL)打通端到端数据流水线,在 Hadoop 和 Spark 等主流的大数据框架上,把数据的收集、存储、传输、预处理、后期处理等环节,与 AI 的训练和预测等部分有机结合起来,就可以让企业的数据分析流水线变得高效而统一。例如,英特尔协助美的公司基于Analytics Zoo构建了一套端到端的产品缺陷检测方案,准确率优于人工检查方法,并避免了检查工作给生产线带来侵入性影响。Analytics Zoo将Spark、TensorFlow以及BigDL程序整合至同一流水线当中,整个流水线能够在Spark集群之上以透明方式实现扩展,从而进行分布式训练与推理。最终使美的的图像预处理时长由200毫秒降低至50毫秒,并将延迟影响由2,000毫秒缩短至124毫秒。

 

第七重助力:跨平台部署应用

 

“英特尔至强处理器、Analytics Zoo以及OpenVINO工具包,能够简化深度学习流水线,实现一站式端到端的 AI 应用部署。”

 

深度学习应用的开发周期很长,而且往往会涉及多个工具和平台,如何将新技术、新创新应用到非常大规模、大数据的生产系统中,目前在软硬件架构上有非常大的断层。这提升了技术开发门槛,开发者十分期待从云端到终端能跨平台部署深度学习应用。

 

2018年,英特尔开源了Analytics Zoo,构建了端到端的大数据分析+AI平台,无论是用TensorFlow还是Keras,都能将这些不同模块的程序无缝运行在端到端流水线上,大大提升了开发效率。

 

并且,Analytics Zoo 也兼容 OpenVINO™在 AI 应用上的加速特性。基于英特尔硬件平台、专注于加速深度学习的OpenVINO™工具套件,是一个快速开发高性能计算机视觉和深度学习视觉应用的工具包。 

 

英特尔®OpenVINO工具套件不仅适用于开发可模拟人类视觉的应用和解决方案,它还可以通过英特尔®FPGA深度学习加速套件支持FPGA,旨在通过优化广泛使用的Caffe和TensorFlow框架来简化采用英特尔®FPGA的推理工作负载,并用于包括图像分类、机器视觉、自动驾驶、军事以及医疗诊断等应用。

 

OpenVINO™工具包基于卷积神经网络(CNN),可扩展英特尔硬件(包括加速器)的工作负载,并最大限度地提高性能。


具体来说,OpenVINO具有面向OpenCV和OpenVx的优化计算机视觉库,并支持跨计算机视觉加速器的异构执行,可通过基于英特尔架构的处理器(CPU)及核显(Integrated GPU)和深度学习加速器(FPGA、Movidius™ VPU)的深度学习加速芯片,增强视觉系统功能和性能。它支持 在边缘端进行深度学习推理,并加速高性能计算机视觉应用, 帮助开发人员和数据科学家提高计算机视觉应用性能,简化深度学习部署过程。

 

总结:英特尔架构和平台,AI应用落地之选

 

上面分析了AI应用落地时,开发者需要重点关注的七大维度——性能、数据预处理、可扩展性、内存、模型部署、大数据分析、跨平台部署应用,我们会发现,每一个维度都支持CPU架构和平台的优势。一方面,CPU的计算能力通过软硬件协同优化不断提升,可以更好地适应AI场景需求,企业渐渐意识到用CPU做AI已经“足够好”;另一方面,通过收购和探索不同芯片架构,英特尔的AI软硬件产品组合正在不断完善,这使得英特尔能够建立一个完整的AI基础架构,非常丰富的产品组合是英特尔与其他公司实现差异化的最大亮点。

相关文章:

Linux进程编程基础介绍

Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生…

关于互联网技术基层绩效管理的一些思考

起因是一篇内部的文章,那记录也就留在内部吧,磨炼了的价值观在自己心里就好。 类似的还有 1. 罗振宇不发年终奖:https://xueqiu.com/7118120763/119669075 2. 有赞白鸦强行一波996:https://baijiahao.baidu.com/s?id1623959680…

波纹管 编织管

为什么80%的码农都做不了架构师?>>> 波纹管 编织管 http://wenku.baidu.com/view/4272a9feaef8941ea76e057e.html 转载于:https://my.oschina.net/tadcat/blog/151049

Git基础(常用命令)介绍

版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs;集中化的版本控制系统,如CVS、SVN;分布式版本控制系统,如Git。 Git基础要点 G…

MIT开发新加密货币,用户所需数据比比特币减少99%

MIT的研究人员开发了一种新的加密货币,大大减少了用户加入网络和验证交易所需的数据,与当今流行的加密货币相比,最高可达99%。这意味着网络更具扩展性。 像比特币之类流行的加密货币都是构建于区块链上的网络,而区块链是按照一系列…

深入了解AI加速芯片的定制数据流架构与编译器 | 公开课

随着人工智能时代的来临,业内对于更高效率算力的需求也越来越紧迫,而传统的 CPU 计算能力弱,只适合软件编程,并不适合应用于人工神经网络算法的自主迭代运算。为了满足支撑深度学习的大规模并行计算的需求,人工智能芯片…

《GPU高性能编程CUDA实战》中代码整理

CUDA架构专门为GPU计算设计了一种全新的模块,目的是减轻早期GPU计算中存在的一些限制,而正是这些限制使得之前的GPU在通用计算中没有得到广泛的应用。使用CUDA C来编写代码的前提条件包括:(1)、支持CUDA的图形处理器,即由NVIDIA推…

​50年来最具影响力的十大编程语言!

作者 | javinpaul译者 | 馨怡责编 | 屠敏出品 | CSDN(ID:CSDNnews)【导语】“适者生存”的自然法则在应用竞争激烈的编程语言界同样适用,而在数百种编程语言中,相对而言,哪些最具影响力?哪些才是…

【基础篇】DatePickerDialog日期控件的基本使用(一)

项目步骤&#xff1a; 1.首先在Main.xml布局文件中添加一个Button标签&#xff0c;用来点击显示日期控件&#xff0c;Main.xml内容如下&#xff1a; <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://sch…

PoPo数据可视化第9期

PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域&#xff0c;发现可视化领域有意思的内容。不想错过可视化领域的精彩内容, 就快快关注吧 :)2018 in the Ito Design Lab&#xff08;视频内容请关注微信公众号浏览&#xff09;1900~2018年城市温度异常变化可视化Temperatur…

面向可解释的NLP:北大、哈工大等提出文本分类的生成性解释框架

作者 | Hui Liu, Qingyu Yin, William Yang Wang 译者 | Rachel编辑 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导语】北大、哈工大和加州大学圣巴巴拉分校在 ACL 2019 的一篇论文中联合提出了一个全新的生成性解释框架&#xff0c;该框架能够对分类策…

pyramid参数

2019独角兽企业重金招聘Python工程师标准>>> 普通参数permission: 该view的访问权限&#xff0c;这个后续会具体介绍。attr: Pyramid默认调用的是view类的__call__函数&#xff0c;如果需要指定调用其他方法&#xff0c;通过attr指定。如attrindex。renderer: 指定构…

Linux下常用的C/C++开源Socket库

1. Linux Socket Programming In C : http://tldp.org/LDP/LG/issue74/tougher.html 2. ACE: http://www.cs.wustl.edu/~schmidt/ACE.html ACE采用ACE_OS适配层屏蔽各种不同的、复杂繁琐的操作系统API。 ACE是一个大型的中间件产品&#xff0c;代码20万行左右&…

前端技术选型的遗憾和经验教训

我是Max&#xff0c;Spectrum的技术联合创始人。Spectrum 是一个面向大型在线社区的开源聊天应用程序&#xff0c;最近被GitHub收购。我们是一个三人团队&#xff0c;主要拥有前端和设计背景&#xff0c;我们在这个项目上工作了近两年时间。 事后看来&#xff0c;以下是我做出的…

时间序列的建模新思路:清华、李飞飞团队等提出强记忆力E3D-LSTM网络

作者 | Yunbo Wang,、Lu Jiang、 Ming-Hsuan Yang、Li-Jia Li、Mingsheng Long、Li Fei-Fei译者 | 凯隐编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】如何对时间序列进行时空建模及特征抽取&#xff0c;是RGB视频预测分类&#xff0…

了解node.js

转载自http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb 当我向人们介绍node.js时&#xff0c;通常会得到两种反应&#xff0c;一种人马上就能了解&#xff0c;另一种则是非常困惑。 如果你是第二种人&#xff0c;请看一下我对node的解…

VS2013中Image Watch插件的使用(OpenCV)

之前在vs2010中写OpenCV程序时经常用NativeViewer&#xff0c;安装此插件后&#xff0c;在调试代码时&#xff0c;对于cv::Mat变量&#xff0c;CV_TYPE类型为CV_8UC1或CV_8UC3&#xff0c;可以随时查看显示结果。其操作步骤为&#xff1a;1. 从http://sourceforge.net/p…

【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署

嵌入式 servlet 容器 在 spring boot 之前的web开发&#xff0c;我们都是把我们的应用部署到 Tomcat 等servelt容器&#xff0c;这些容器一般都会在我们的应用服务器上安装好环境&#xff0c;但是 spring boot 中并不需要外部应用服务器安装这些servlet容器&#xff0c;spring …

让织梦内容页arclist标签的当前文章标题加亮显示

很多人在用织梦做站的时候&#xff0c;会用到在当前栏目页面&#xff0c;给当前栏目标题使用指定样式如标题加亮&#xff0c;或者放个背景图。这是一个很常用和实用的功能&#xff0c;比如在导航页面&#xff0c;标识当前在浏览哪个栏目。如下图&#xff1a; 但是有些时候&…

RHEL6入门系列之九,常用命令2

今天还是继续来学习Linux的基本命令。4、touch命令——建立空文件touch命令用于建立空文件。[rootlocalhost ~]# mkdir /root/test ‘创建目录/root/test[rootlocalhost ~]# touch /root/test/test1.txt ‘在目录/root/test中创建空文件test1.txt[rootlocalhos…

为什么华为200万招聘AI博士,马斯克却推出脑机接口对抗AI?

作者 | 伍杏玲来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;7 月&#xff0c;华为一则薪资通知刷爆朋友圈&#xff1a;华为给8位博士应届生给予 89.6 万至 201 万的年薪。其中薪资最高的两位博士均研究人工智能相关专业。7 月还有一件大事&#xff1a;马斯克发布…

Artistic Style在windows下的使用(C/C++)

ArtisticStyle是一个开源的源代码格式化工具。主页地址为&#xff1a;http://astyle.sourceforge.net/&#xff0c;它可以应用在C、C、Objective-C、C#、Java等程序语言中。http://astyle.sourceforge.net/astyle.html中为对使用它的详细介绍。从http://sourceforge.net/projec…

ESXi主机与网络中其他主机的网咯数据包捕获

1、tcpdump-uw -i vmk0 -s 1514 host x.x.x.x 指定捕获与某台主机间的网络数据包2、tcpdump -i vmk0 -s 1514 port not 22 and port not 53 在捕获的数据包中&#xff0c;过滤掉指定端口的数据包3、tcpdump-uw -i vmk0 -s 1514 -w traffic.pcap 捕获的数据包保存成PCAP文件&…

Windows下批处理文件(.bat)的使用

批处理(Batch)&#xff0c;就是进行批量的处理&#xff0c;英文译文BATCH&#xff0c;批处理文件后缀BAT就取的前三个字母&#xff0c;通常被认为是一种简化的脚本语言&#xff0c;它应用于DOS和Windows系统中。批处理文件是扩展名为.bat或.cmd的文本文件&#xff0c;包含一条或…

金融业加速智能化,解析360金融AI基础架构和应用

传统金融信贷业务中&#xff0c;催收、客服及电销人员占比超过 60%&#xff0c;人员素质参差不齐的现状造成了管理成本过高的问题&#xff0c;由此衍生的客户体验差&#xff0c;也成为困扰金融业的一大通病。 8 月 15 日&#xff0c;在 360金融 AI 媒体开放日上&#xff0c;360…

正则:匹配一个汉字姓名

//汉字姓名正则var reg/^[\u4e00-\u9fa5]{2,}(\.[\u4e00-\u9fa5])?$/console.log(reg.test(张卫健.爱新觉罗))console.log(reg.test(兔子)) 复制代码

NLP命名实体识别开源实战教程 | 深度应用

作者 | 小宋是呢来源 | CSDN博客近几年来&#xff0c;基于神经网络的深度学习方法在计算机视觉、语音识别等领域取得了巨大成功&#xff0c;另外在自然语言处理领域也取得了不少进展。在NLP的关键性基础任务—命名实体识别&#xff08;Named Entity Recognition&#xff0c;NER…

poj 2063完全背包

题意&#xff1a;给出总资金和投资年份 &#xff0c;n个股票 给出股票价格和其一年的利润。问如何选择能获得最大利润。 思路&#xff1a;股票可以重复选择&#xff0c;完全背包问题&#xff0c;完全背包也是从01背包衍生而行的&#xff0c;其主要区别在于中间那层循环的次序不…

UTF-8 CPP的使用

UTF-8 CPP是一个简单、小巧、轻量级、跨平台的UTF-8编码字符串库。下面对其使用方法进行简单的介绍&#xff1a;1. 从http://sourceforge.net/projects/utfcpp/下载最新的utf8_v2_3_4.zip源码&#xff0c;将其解压缩&#xff1b;2. 新建一个vs2013 控制台工程TestUTF…

一行js代码识别Selenium+Webdriver及其应对方案

有不少朋友在开发爬虫的过程中喜欢使用Selenium Chromedriver&#xff0c;以为这样就能做到不被网站的反爬虫机制发现。 先不说淘宝这种基于用户行为的反爬虫策略&#xff0c;仅仅是一个普通的小网站&#xff0c;使用一行Javascript代码&#xff0c;就能轻轻松松识别你是否使用…