PHP开发工程师岗位职责,第1张

PHP开发工程师岗位职责15篇

 在现实社会中,岗位职责的使用频率逐渐增多,岗位职责是指工作者具体工作的内容、所负的责任,及达到上级要求的标准,完成上级交付的任务。那么岗位职责怎么制定才能发挥它最大的作用呢?以下是我为大家收集的PHP开发工程师岗位职责,欢迎大家借鉴与参考,希望对大家有所帮助。

PHP开发工程师岗位职责1

  职责:

 1 负责公司内部运营ERP管理系统和跨境电商(外贸平台)行业相关软件系统的设计和开发;

 2 需要您使用PHP技术,完成系统的开发工作;

 3 准确理解部门员工需求,及时跟进系统的改良和新模块的开发;

 4 较快掌握公司产品业务和系统架构逻辑,尽快参与到项目开发中;

 5 承担产品主要功能开发,分析模块需求和解决开发中遇到的技术难点,编写符合公司要求的高质量代码;

 6 参与公司的软件体系建设工作,为公司内部提供软件的技术支持和服务;

 7 对互联网电商软件行业有浓厚兴趣;

 8 完成上级分配的其他软件开发相关工作任务。

  岗位要求:

 1计算机专业毕业,三年以上的开发经验;

 2 编程功底:具备良好的项目开发经验,能独立的承担开发任务,负责软件开发,编码、测试;

 3 编程语言:精通PHP;

 4 项目经验:有开发过大型项目的开发经验;高性能系统;有跨境电商(外贸)项目(ERP、独立站、或刊登系统)开发经验者优先考虑;熟悉主流跨境电商平台(Amazon、eBay、Aliexpress、Wish等)的API集成者优先考虑;有在物流、仓储、电子商务等行业从事软件开发者优先考虑;

 6 数据库:对索引、事务、锁有一定的了解;

 7 项目沟通:具有良好的沟通表达能力、执行力、责任心、自我管理能力和团队精神,对待工作积极、严谨、踏实,能承受较大1000的工作压力;

 8 编码规范:具备良好的编码规范和编程风格,命名规范,逻辑性强,代码冗余率低;

PHP开发工程师岗位职责2

  职责:

 1、负责网站平台上线维护及网站功能拓展;

 2、负责系统框架的整合,程序开发和维护;

 3、负责新功能各业务模块的流程设计及实现;

 4、合理的性能优化、代码设计优化、数据库结构的设计及优化;

  任职要求:

 1本科及以上学历,计算机相关专业;3年以上PHP工作经验

 2具备极强的责任心

 2擅长PHP语言,熟悉面向对象编程,熟悉的thinkphp32 , thinkphp5等开源框架

 3精通MySQL数据库开发,能熟练地运用SQL语言,了解数据库配置管理,性能优化

 4熟悉前端WEB开发技术,包括js,jq,div+css,ajax,等技术

 5熟悉运用各种API接口。

 6有独立的二次开发能力,和良好的审美观、逻辑性强,代码冗余率低,了解网站空间服务器等网络安全

 7有物流行业开发经营或电商方面项目经验优先

PHP开发工程师岗位职责3

  职责:

 1、负责公司后端的研发,保障系统的稳定性和质量

 2、与业务需求部门及项目经理沟通,理解需求,进行架构设计;

 3、搭建开发框架、负责核心代码的编写,解决技术难点;

 4、界定、分析和解决系统中存在的问题和缺陷;

 5、对系统进行持续改进,提升系统的性能、可扩展性、可维护性;

 6、持续改进系统架构、核心算法或者核心技术等,保证系统高性能、高可用性和高可扩展性-新技术预研,完成项目的`选型和设计,难点攻关

  任职资格:

 1本科及以上学历,3年以上开发经验;

 2良好的代码习惯,要求结构清晰、命名规范、逻辑性强、代码冗余率低;

 3熟悉Mysql,有较为熟练地掌握mysql语言及编写存储过程、触发器等数据库开发的能力;

 4精通PHP语言,精通CGI标准和HTTP等互联网协议;

 5熟练掌握javascript、div+css等web前端布局及多浏览器兼容相关技术;

 6熟练使用Linux系统,熟悉在Linux下配置php+mysql的运行环境;

 7有良好的沟通、协调能力和学习能力,具备良好的团队合作精神,对工作积极严谨踏实,能承受较大的工作压力。

PHP开发工程师岗位职责4

  职责:

 1、负责快速迭代产品线开发、升级、维护;

 2、参与或主导需求分析,并实现新需求(功能);

 3、独立或分组进行项目分解开发及优化;

 4、负责核心功能板块开发;

 5、独立解决技术难题,及时定位并驱动落实。

  任职要求:

 1、计算机相关专业专科及以上学历,3年以上开发经验;

 2、熟练掌握PHP语言知识,至少熟练使用一个流行框架TP5、Laraval、Phalcon;

 3、熟练掌握MySQL数据库操作、熟练使用存储过程、事务;

 4、熟练完成第三方接口接入,微信、支付宝、短信、云存储等;

 5、熟练使用git、SVN等开发工具,掌握Linux环境操作;

 6、有高并发、大数据开发经验,有较好的学习能力和沟通能力,有创新能力和责任感,熟悉软件工程,具有良好的代码编写规范和书写文档的习惯。

PHP开发工程师岗位职责5

  职责:

 1、参与产品初期的需求定义

 2、根据需求快速完成开发方案设计

 3、高效完成功能开发

 4、功能自测、代码定期自查、框架及系统完善

 5、参与日常的功能快速迭代,完成开发、自动化测试到产品发布的整个流程。

  任职要求:

 1、扎实的计算机编程及网络基础,熟悉常用软件设计模式

 2、3年以上PHP开发经验,熟练练使用PHP框架,有一个以上Laravel或Swoft的完整项目的开发经验

 3、熟练使用MySQL数据库,对索引、锁和事务有了解,有并发处理和调优经验

 4、熟练使用Redis、Memcache等常见非关系型数据库

 5、熟练使用HTML、CSS、Javascript、Jquery、Vue等前端技术,有Vue实际使用经验

 6、有支付、OSS、消息通讯等一种以上三方应用的集成经验

 7、熟悉Docker、Git、及常用Linux命令使用有,有生产服务器运维经验的优先

 8、熟悉或掌握一种或以上其他服务端语言的优先

 9、有SaaS系统、社交软件、直播平台高并发处理能力经验的优先

 10、有责任心,具备良好的编码习惯,较强的学习及沟通能力。

PHP开发工程师岗位职责6

  职责:

 1负责主要项目结构设计,架构原型实现及核心模块的开发工作;

 2负责软件项目平台的设计与开发;

 3负责技术方案决策、技术风险防范与化解,分析系统瓶颈,解决各种疑难问题,对系统进行性能调优;

 4指导团队不断提高技术能力和开发效率,从技术层面持续提高用户体验;

 5负责技术团队建设和管理,注重人才培养和营造创新的研发文化。

  任职资格:

 1计算机专业全日制本科以上学历,4年以上PHP网站设计编程(多语言)经验;

 2有扎实的PHP基础并熟练独立使用php+mysql开发;

 3理解ajax原理,熟悉javascript、jquery使用,理解web标准;

 4理解http协议,熟悉linux环境下的web开发优先,有丰富电子商务相关经验的优先;

 6具备良好的代码编程习惯,逻辑思维严密,有较强的数据分析和问题排查能力;

 7熟悉JAVA、C、Python其中一种优先;

 8良好的表达能力,能够清晰和准确地描述问题;

 9能适应快速成长型技术团队的要求,具备自我管理能力和创业精神,能够承担一定的工作压力;

 10、有责任心,善于沟通,有钻研和学习精神,擅长分析问题解决问题。

PHP开发工程师岗位职责7

 工作职责:

 1、承担机器学习系统和算法的研发,为字节跳动全系产品提供增长算法策略支持,包括不限于头条、西瓜视频、抖音、TikTok等;

 2、负责头条用户增长智能引擎中的算法策略部分,例如人群Lookalike、触达决策、着陆页个性化等。

 任职要求:

 1、具备强悍的编码能力和扎实的数据结构和算法功底;

 2、熟悉至少一种主流深度学习编程框架(TensorFlow/Caffe/MXNet),熟悉其底层架构和实现机制,熟悉深度学习算法(CNN/RNN/LSTM等);

 3、熟悉常见的开源组件,参与过高性能在线服务研发者优先;

 4、有大规模海量数据机器学习/数据挖掘/计算广告/搜索引擎相关经验者优先;

 5、具备良好的沟通和表达能力,有较好的产品意识者优先。

PHP开发工程师岗位职责8

  职责:

 1、负责企业网站产品的开发及技术设计;

 2、从事php项目开发,能独立开发、制作整站或独立完成局部程序;

 3、熟练使用PHP/MySQL开发;熟悉Sql语法,包括数据库设计,速度优化;

 4、熟悉Yii框架

 5、熟悉php、Html5、JavaScript、div+CSS。

  任职要求:

 1、熟练使用PHP+MySQL,有扎实的php语言基础知识,能独立设计网站架构,完成前后台代码编写工作;

 2、专科及以上学历,做过PHP网站程序开发2年工作经验以上,能独立完成一般性网站的开发,有大中型项目开发经验优先;

 3、熟练掌握thnkphp框架,熟悉smarty, 具有PHP开发经验和MVC实际开发经验;

 4、熟悉各种WEB技术,并有实际的项目经验;

 5、良好的编程习惯、阅读能力、理解能力、学习能力,思路清晰,工作规范。

PHP开发工程师岗位职责9

  职责:

 1负责金融类交易项目产品的开发。

 2参与需求讨论并能独立完成的程序,以及撰写程序文档;

 3与产品经理一起配合开发以及系统的日常维护;

 4对测试环境,开发环境,以及线上环境能独立进行部署;

 5积极的与同事进行技术交流与沟通。

  岗位要求:

 1、计算机相关技术专业,大专及以上学历;

 2、有金融行业,数字货币交易所工作经验优先;

 3、有3年以上使用PHP开发工作经验;

 4、精通分布式、缓存、消息、搜索等机制;

 5、熟练运用PHP、JavaScript、MySQL、HTML、CSS等WEB开发技术,能独立完成功能前后端开发和数据库调优。

 6、责任心强,学习能力强,分析和解决问题能力强;

 7、良好的团队协作和沟通能力,能够承担一定工作压力。

PHP开发工程师岗位职责10

  职责:

 1根据业务需求,进行架构分析、设计及实现;

 2依照业务需求,进行相关功能的数据库设计;

 3根据业务及前端需求,及时、高效、高质量产出符合RESTFUL规范的api接口;

 4参与系统微服务化,如微服务实现、Docker环境建设、Jenkins等自动化部署。

  任职资格:

 1熟悉关系型数据库,如MySQL,能依据业务需求进行合理的数据库设计;

 2精通PHP,PHP方面至少精通一种MVC框架,熟悉Yii框架优先;

 3熟悉前后端分离开发模式;

 4熟练使用git进行代码管理;

 5热爱互联网开源生态,充满求知欲,具有非常强的持续学习能力;

 6有良好的沟通能力和团队协作精神;

 7有微服务开发实践,熟悉Docker、Kafka、Flink更佳。

PHP开发工程师岗位职责11

  职责:

 1、负责公司网站的开发设计及开发小组工作安排;

 2、负责高性能应用架构设计和优化及技术调研,性能调优等技术开发工作,负责网站程序的详细设计、编码和内部测试的组织实施;

 3、协调系统内部、跨系统的技术方案制定和评审,保证系统的可扩展、易维护性;

 4、参与开发和维护现有的网站程序。

 5、对项目的规划,开发与前后端的接连,跟进整个项目各模块的进度。

 6、对线上系统的稳定性和可用性负责;

  任职资格:

 1、计算机相关专业,需3-5年及以上PHP后端工作经验,熟练掌握HTML、Ajax、JavaScript、技术,有vuejs开发经验者优先;

 2、熟悉yii2、laravel等至少一种框架,熟悉各种主流的MVC开发框架的使用及其原理;精通LAMP/LNMP架构开发,掌握MySQL主从开发、索引优化、查询优化和存储优化,以及PHP缓存、静态化等技术。

 3、熟悉Linux服务器性能优化,NGINX的PHP环境配置和PHP应用,精通MySQL一种或以上关系数据库使用,至少精通redismemcach等一种nosql数据库;

 4、工作认真,有条理,责任心强;具有很强的沟通能力及团队合作精神,具备很好的学习钻研能力,乐观开朗,工作能够服从安排;有很强的进取精神,能承受一定的工作压力;

PHP开发工程师岗位职责12

  职责:

 1、负责公司网站及网络应用产品开发和维护;

 2、根据产品需求完成架构和模块设计、编码、测试工作;

 3、按照项目计划,遵循公司软件开发流程按时提交高质量代码,完成开发任务;

 4、项目,软件开发设计文档的编写、维护,以及其他与项目相关工作;

 5、与产品、项目经理、测试部门沟通保证产品的质量和开发进度;

 6、参与产品、项目设计方案评审,并提出问题和改进意见。

  职位要求:

 1、计算机及相关专业,学历本科以上;

 2、3年以上PHP/Web开发经验,至少有3个完整项目的开发经验;

 3、熟悉Linux,MySQL,熟悉B/S系统前后端相关开发技术及框架;

 4、英语读写流利,能在工作环境中熟练运用,听说流利的优先;

 5、熟悉Html/CSS/Div布局,熟练使用JQuery,JavaScript,XML,AJAX ;

 6、具有独立分析、解决问题的能力,具有良好的编码习惯;

 7、具有良好的沟通能力,团队合作精神,高度的责任心,能承担工作压力。

PHP开发工程师岗位职责13

  职责:

 1熟悉thinkcmf5框架优先录取

 2核心业务功能开发和代码维护;

 3负责网站后端程序开发、数据库结构设计和搭建;

 4参与网站产品的设计和开发,配合产品经理进行技术决策。

  岗位要求:

 1有开发商城系统/微信定制开发优先;1-2年工作经验也可考虑;

 2熟练掌握PHP,熟悉面向对象的软件设计方法;熟悉MVC三层架构的开发,熟练应用PHP框架Thinkphp5。

 3熟悉HTML、CSS、Javascript等前端技术,熟悉jquery者优先;

 4熟悉Linux常用命令;MySQL数据库开发及常用优化方法;

 5有良好的代码习惯,要求结构清晰、命名规范、逻辑性强、代码冗余率低,代码注释清晰;

 6性格开朗、喜欢钻研技术,具有较强的分析和解决问题的能力。

PHP开发工程师岗位职责14

  职责:

 1、负责公司CMS系统优化和新产品开发;

 2、按照项目计划,与项目组其他成员协同工作实现开发目的;

 3、协助工程师测试和发布系统,准备相关的技术文档,协助解决各种技术问题;

 4、负责文档撰写,在前期期间设计交付URL接口文档、模板数据描述文档,在编码期间能撰写清晰明了的注释。

  任职资格:

 1、熟练基于windows/Linux系统的PHP+MySQL开发;

 2、相关专业毕业,1年以上PHP编程经验,熟悉Ajax的前台技术;

 3、拥有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低;

 4、熟悉ThinkPHP框架开发或者二次开发的优先;

 5、能独立用php开发一般的项目,对软件编程有较透彻的了解;

 6、良好的沟通能力和团队合作精神。

PHP开发工程师岗位职责15

  职责:

 1、参与项目的架构设计,架构原型实现及核心模块的开发工作;

 2、参与系统需求分析与设计,并负责完成PHP核心代码,接口规范制定;

 3、重构现有架构,优化服务端性能。

  任职要求:

 1、1年以上LNMP开发经验,熟悉Ecshop二开的优先。

 2、熟练运用PHP、mysql,至少熟悉一种MVC框架;

 3、熟悉Mysql数据库,掌握各种调优技巧,熟悉多种nosql;

 4、对代码和设计质量有严格要求,重视CodeReview,良好的编码习惯和严格的编码规范;

 5、有软件架构、服务器架构等方面经验,了解大负载大流量服务器端解决方案;

 6、有带团队经验,具备良好的团队合作精神;

 7、能承受大工作量负荷。

;

FPGA 芯片领域顶级会议 FPGA 2017 于 2 月 24 日在加州 Monterey 结束。在本次大会上,斯坦福大学在读 PhD、深鉴科技联合创始人韩松等作者的论文 ESE: Efficient Speech Recognition Engine with Sparse LSTM on FPGA 获得了大会最佳论文奖。得知此消息后,机器之心对深鉴科技科技创始人兼 CEO 姚颂与联合创始人韩松(本论文的第一作者)进行了联系,他们对该文章进行了技术解读。

韩松在FPGA'17会场讲解 ESE 硬件架构

FPGA 领域顶级会议 FPGA 2017 于 2 月 24 日在加州 Monterey 结束。在本次大会上,深鉴科技论文《ESE: Efficient Speech Recognition Engine with Sparse LSTM on FPGA》获得了大会最佳论文奖(Best Paper Award)。

图1:韩松提出的深度学习部署方案。跟传统的「训完即用」的方案相比,「训练后经过压缩再用硬件加速推理」的方案,可以使得推理更快、能耗更低。

该项工作聚焦于使用 LSTM 进行语音识别的场景,结合深度压缩(Deep Compression)、专用编译器以及 ESE 专用处理器架构,在中端的 FPGA 上即可取得比 Pascal Titan X GPU 高 3 倍的性能,并将功耗降低 35 倍。而此前,本文还曾获得 2016 年 NIPS Workshop on Efficient Method for Deep Neural Network 的最佳论文提名。据悉,本文所描述的 ESE 语音识别引擎,也是深鉴科技 RNN 处理器产品的原型。

图 2:ESE 语音识别引擎工作全流程

LSTM 全称为 Long-Short Term Memory,在语音识别、机器翻译、Image Captioning中有较多的应用。对于语音识别而言,LSTM 是其中最重要一环,也是计算耗时最多的一环,通常占到整个语音识别流程时间的 90% 以上。

图 3:LSTM 在语音识别中的位置

Deep Compression 算法可以将 LSTM 压缩 20 倍以上。但在以往的纯算法压缩上,并没有考虑多核并行时的负载均衡,这样在实际运行时,实际的运行性能被负载最大的核所限制。本文提出了一种新的 Load Balance Aware Pruning,在稀疏化时保证剪枝后分配到每个核的计算量类似,从而进一步加速的计算。

图 4:Load-Balance-Aware Pruning示意:保证稀疏性的同时保证多核负载均衡

结合新的模型压缩算法以及 ESE 专用处理架构,在一个可实际使用的 LSTM 模型上测试,相同情况下,深鉴基于中等 FPGA 平台的耗时为 827us,功耗为 41W;而 Pascal Titan X GPU 则需要 2874us 的运行时间,并且耗能 135W。这也再次证明了稀疏化路线的作用:在价格、资源全面弱于 GPU 的专用硬件上,通过算法与硬件的协同优化,的确可以取得更好的深度学习运算能力。

深鉴科技成立于 2016 年 3 月,创始成员来自清华大学和斯坦福大学,公司致力于结合深度压缩与深度学习专用处理架构,提供更高效与便捷的深度学习平台。

公司聚焦于稀疏化神经网络处理得技术路线,提出的 Deep Compression 算法可以将模型尺寸压缩数十倍大小而不损失预测精度,并结合专用的深度学习处理架构来实现加速。而 ICLR 2016 和 FPGA 2017 两篇最佳论文的获奖,也证实深鉴科技所聚焦的稀疏化路线越来越得到深度学习界的关注。

论文:ESE: Efficient Speech Recognition Engine with Sparse LSTM on FPGA

摘要:长短期记忆网络(LSTM)被广泛用于语音识别领域。为实现更高的预测精度,机器学习研究者们构建了越来越大的模型。然而这样的模型十分耗费计算和存储资源。部署此类笨重的模型会带数据中心来很高的功耗,从而带来很高的总拥有成本(TCO)。为了增加预测速度,提高能源效率,我们首次提出了一种可以在几乎没有预测精度损失的情况下将 LSTM 模型的尺寸压缩 20 倍(10 倍来自剪枝和 2 倍来自量化)的负载平衡感知剪枝(load-balance-aware pruning)方法。这种剪枝后的模型对并行计算很友好。另外,我们提出了可以对压缩模型进行编码和分割成 PE 以进行并行化的调度器(scheduler),并编排了其复杂的 LSTM 数据流。最后,我们设计了一种可以直接在这种压缩模型上工作的硬件框架——Efficient Speech Recognition Engine (ESE)。该框架使用了运行频率为 200 MHz 的 Xilinx XCKU060 FPGA,具有以 282 GOPS 的速度直接运行压缩 LSTM 网络的性能,相当于在未压缩 LSTM 网络上 252 TOPS 的速度;此外,该框架执行一个用于语音识别任务的全 LSTM 仅需 41 W 功耗。在基于 LSTM 的语音基准测试中,ESE 的速度为英特尔 Core i7 5930k CPU 的 43 倍,英伟达 Pascal Titan X GPU 的 3 倍。它的能量效率分别为以上两种处理器的 40 倍和 115 倍。

以我对他家公司边缘计算服务器的了解,他家边缘计算服务器具有以下几个特点:

1、支持DNN、CNN、RNN、LSTM 维稳等神经网络分析编译和调整

2、支持云端推送应用、更新算法云端统一设备管理固件升级

3、与私有云、公有云协同一体化服务等等

用机器学习检测异常点击流

本文内容是我学习ML时做的一个练手项目,描述应用机器学习的一般步骤。该项目的目标是从点击流数据中找出恶意用户的请求。点击流数据长下图这样子,包括请求时间、IP、平台等特征:

该项目从开始做到阶段性完成,大致可分为两个阶段:算法选择和工程优化。算法选择阶段挑选合适的ML模型,尝试了神经网络、高斯分布、Isolation Forest等三个模型。由于点击流数据本身的特性,导致神经网络和高斯分布并不适用于该场景,最终选择了Isolation Forest。工程优化阶段,最初使用单机训练模型和预测结果,但随着数据量的增加,最初的单机系统出现了性能瓶颈;然后开始优化性能,尝试了分布化训练,最终通过单机异步化达到了性能要求。

1 算法选择

11 神经网络

刚开始没经验,受TensorFlow热潮影响,先尝试了神经网络。选用的神经网络是MLP(Multilayer Perceptron,多层感知器),一种全连接的多层网络。MLP是有监督学习,需要带标签的样本,这里“带标签”的意思是样本数据标注了哪些用户请求是恶意的、哪些是正常的。但后台并没有现成带标签的恶意用户样本数据。后来通过安全侧的一些数据“间接”给用户请求打上了标签,然后选择IP、平台、版本号、操作码等数据作为MLP的输入数据。结果当然是失败,想了下原因有两个:

1, 样本的标签质量非常差,用这些样本训练出来的模型性能当然也很差;

2, 输入的特征不足以刻画恶意用户。

数据的质量问题目前很难解决,所以只能弃用MLP。

12 高斯分布

然后尝试其他模型。通过搜索发现,有一类ML模型专门用于异常检测,找到了Andrew Ng介绍的基于高斯分布的异常检测算法:高斯分布如下图所示:

这个算法的思想比较简单:与大部分样本不一致的样本就是异常;通过概率密度量化“不一致”。具体做法是:选择符合高斯分布或能转换为高斯分布的特征,利用收集到的数据对高斯分布做参数估计,把概率密度函数值小于某个阈值的点判定为异常。

所谓的参数估计是指,给定分布数据,求分布的参数。对高斯分布来说,就是求μ和σ。用极大似然估计可以得到高斯分布参数的解析解:

得到高斯分布参数后,用下式计算概率密度:

X表示一个特征输入。若有多个特征x0、x1、…、xn,一种简单的处理方法是将其结果连乘起来即可:f(x) = f(x0)f(x1)…f(xn)。

然后选定一个阈值ε,把f(x) < ε的样本判定为异常。ε值需根据实际情况动态调整,默认可设定ε = f(μ- 3σ)。

把这个模型初步应用于点击流异常检测时,效果还不错,但在进一步实施过程中碰到一个棘手问题:样本中最重要的一个特征是操作码,当前操作码在微信后台的取值范围是[101,1000],每个操作码的请求次数是模型的基础输入,对900个特征计算概率密度再相乘,非常容易导致结果下溢出,以致无法计算出精度合适的概率密度值。这个现象被称为维度灾难(Dimension Disaster)。

解决维度灾难的一个常见做法是降维,降维的手段有多种,这里不展开讨论了。在点击流分析的实践中,降维的效果并不好,主要原因有两个:

1, 正常用户和恶意用户的访问模式并不固定,导致很难分解出有效的特征矩阵或特征向量;

2, 降维的本质是有损压缩,有损压缩必定导致信息丢失。但在本例中每一维的信息都是关键信息,有损压缩会极大破坏样本的有效性。

高斯分布模型的维度灾难在本例中较难解决,只能再尝试其他模型了

13 Isolation Forest

Isolation Forest,可翻译为孤异森林,该算法的基本思想是:随机选择样本的一个特征,再随机选择该特征取值范围中的一个值,对样本集做拆分,迭代该过程,生成一颗Isolation Tree;树上叶子节点离根节点越近,其异常值越高。迭代生成多颗Isolation Tree,生成Isolation Forest,预测时,融合多颗树的结果形成最终预测结果。Isolation Forest的基础结构有点类似经典的随机森林(Random Forest)。

这个异常检测模型有效利用了异常样本“量少”和“与正常样本表现不一样”的两个特点,不依赖概率密度因此不会导致高维输入的下溢出问题。提取少量点击流样本测试,它在900维输入的情况下也表现良好,最终选择它作为系统的模型。

2 工程优化

工程实现经历了单机训练、分布式训练、单机异步化训练3个方案,下面内容介绍实现过程中碰到的问题和解决方法。

21 单机训练

整个系统主要包括收集数据、训练模型、预测异常、上报结果四个部分。

211 收集数据

刚开始尝试该模型时,是通过手工方式从mmstreamstorage获取样本的:

1,通过logid 11357,得到手工登录成功用户的uin和登录时间;

2,利用mmstreamstorage提供的接口,得到用户登录后10分钟的点击流;

但这样做有两个缺点:

1,上述步骤1是离线手工操作的,需要做成自动化;

2,mmstreamstorage的接口性能较差,只能提供2万/min的查询性能,上海IDC登录的峰值有9万/min。

改进办法是复用点击流上报模块mmstreamstorage,增加一个旁路数据的逻辑:

1,手工登录时在presence中记录手工登录时间,mmstreamstorage基于该时间旁路一份数据给mmguardstore。由于mmstreamstorage每次只能提供单挑点击流数据,所以需要在mmguardstore中缓存;

2,mmguardstore做完数据清洗和特征提取,然后把样本数据落地,最后利用crontab定期将该数据同步到Hadoop集群中。

最终的数据收集模块结构图如下所示:

点击流数据提供了IP、平台、版本号、操作码等特征,经过多次试验,选定用户手工登录后一段时间内操作码的访问次数作为模型的输入。

上面我们提到过点击流的操作码有900个有效取值,所以一个显然的处理方法是,在mmguardstore中把用户的点击流数据转化为一个900维的向量,key是cgi id,value是对应cgi的访问次数。该向量刻画了用户的行为,可称为行为特征向量。

212 训练模型

初起为了控制不确定性,只输入1万/分钟的样本给模型训练和预测。系统的工作流程是先从Hadoop加载上一分钟的样本数据,然后用数据训练Isolation Forest模型,最后用训练好的模型做异常检测,并将检测结果同步到tdw。

在1万/分钟输入下取得较好的检测结果后,开始导入全量数据,全量数据数据的峰值为20万/分钟左右。出现的第一个问题是,一分钟内无法完成加载数据、训练模型、预测结果,单加载数据就耗时10分钟左右。这里先解释下为什么有“一分钟”的时间周期限制,主要原因有两个:

1, 想尽快获取检测结果;

2, 由于点击流异常检测场景的特殊性,模型性能有时效性,需要经常用最新数据训练新的模型。

解决性能问题的第一步是要知道性能瓶颈在哪里,抽样发现主要是加载数据和训练模型耗时较多,预测异常和上报结果的耗时并没有随数据量的增加而快速上涨。

加载数据的耗时主要消耗在网络通信上:样本文件太大了,导致系统从Hadoop同步样本数据时碰到网络带宽瓶颈。但由于样本是文本类数据,对数据先压缩再传输可极大减少通信量,这里的耗时比较容易优化。

训练模型的耗时增加源于输入数据量的增加。下图是1万样本/min的输入下,系统个阶段的耗时:

其中:

加载程序: 2s

加载数据: 6s

训练模型:11s

分类异常: 2s

保存结果: 4s

单轮总耗时:25s

需处理全量数据时,按线性关系换算,“训练模型”耗时为:11s 24 = 264s,约为44分钟,单机下无法在1分钟内完成计算。

最先想到的优化训练模型耗时的办法是分布式训练。

22 分布式训练

由于scikit-learn只提供单机版的Isolation Forest实现,所以只能自己实现它的分布式版本。了解了下目前最常用的分布式训练方法是参数服务器(Parameter Server,PS)模式,其想法比较简单:训练模型并行跑在多机上,训练结果在PS合并。示意图如下所示:

分布式训练对算法有一定要求,而Isolation Forest正好适用于分布式训练。

然后尝试在TensorFlow上实现Isolation Forest的分布式训练版本。选择TensorFlow的原因有主要两个:

1, TensorFlow已经实现了一个分布式训练框架;

2, TensorFlow的tfcontriblearn包已经实现的Random Forest可作参考(Isolation Forest在结构上与Random Forest类似),只需对Isolation Forest定制一个Operation即可。

写完代码测试时,发现了个巨坑的问题:TenforFlow内部的序列化操作非常频繁、性能十分差。构造了110个测试样本,scikit-learn耗时只有0340秒,29万次函数调用;而TensorFlow耗时达207831秒,有248亿次函数调用。

TensorFlow性能抽样:

Scikit-learn性能抽样:

从TensorFlow的性能抽样数据可以看到,耗时排前排的函数都不是实现Isolation Forest算法的函数,其原因应该与TensorFlow基于Graph、Session的实现方式有关。感觉这里坑比较深,遂放弃填坑。

也了解了下基于Spark的spark-sklearn,该项目暂时还未支持Isolation Forest,也因为坑太深,一时半会搞不定而放弃了。

23 单机异步化训练

没搞定分布式训练,只能回到单机场景再想办法。单机优化有两个着力点:优化算法实现和优化系统结构。

首先看了下scikit-learn中Isoaltion Forest的实现,底层专门用Cython优化了,再加上Joblib库的多CPU并行,算法实现上的优化空间已经很小了,只能从系统结构上想办法。

系统结构上的优化有两个利器:并行化和异步化。之前的单机模型,加载数据、训练模型、预测异常、上报结果在单进程中串行执行,由此想到的办法是启动4个工作进程分别处理相应的四个任务:异步训练模型、预测异常和上报结果,并行加载数据。工作进程之间用队列通信,队列的一个优势是容易实现流量控制。

写完代码测试,却发现YARD环境中的Python HDFS库在多进程并发下直接抛异常。尝试多个方法发现这个问题较难解决,暂时只能想办法规避。经测试发现,直接从Hadoop同步所有压缩过的样本数据只需2秒左右,由此想到规避方法是:先单进程同步所有样本数据,再多进程并发解压、加载和预测。

按上述想法修改代码测试,效果较好,处理所有样本只需20秒左右,达到了1分钟处理完所有样本的要求。然后提交YARD作业线上跑,处理所有样本耗时却达到200~400秒:

咨询YARD侧同学,得知YARD对提交的离线作业有CPU配额的硬限制,分时段配额如下表:

00:00~09:00 80%

09:00~19:00 50%

19:00~23:00 15%

23:00~24:00 50%

晚高峰时段的配额只有15%。

与YARD侧同学沟通,他们答应后续会支持scikit-learn库的在线服务。目前通过手工方式在一台有scikit-learn的mmguardstore机器上运行在线服务,晚高峰时段处理全量数据耗时为20秒左右。

最终的系统结构图如下图所示:

模型训练进程定期训练最新的模型,并把模型通过队列传给预测进程。预测进程每分钟运行一次,检查模型队列上是否有新模型可使用,然后加载数据、检测异常,将检测结果通过上报队列传给上报进程。上报进程block在上报队列上,一旦发现有新数据,就根据数据类型执行上报监控、上报tdw等操作。

24 评估性能

安全侧将异常用户分为以下几类:盗号、LBS/加好友、养号、欺诈、外挂/多开等。由于这些分类的异常打击是由不同同学负责,不便于对Isolation Forest的分类结果做评估,因此需要在Isolation Forest的基础上,再加一个分类器,标记“异常样本”的小类。利用操作码实现了该分类器。

接入全量数据后,每天准实时分析1亿量级的样本,检测出500万左右的异常,精确分类出15万左右的恶意请求。恶意请求的uin、类型、发生时间通过tdw中转给安全侧。安全侧通过线下人工分析和线上打击,从结果看检测效果较好。

25 持续优化

再回过头观察点击流数据,我们使用的Isolation Forest模型只利用了操作码的统计数据。可以明显看到,点击流是一个具备时间序列信息的时序数据。而自然语言处理(Natural LanguageProcessing,NLP)领域已经积累了非常多的处理时序数据的理论和实战经验,如LSTM、word2vec等模型。后续期望能引入NLP的相关工具挖掘出更多恶意用户。

长短期记忆(LSTM)网络是一种循环神经网络(RNN),能够捕获顺序数据中的长期依赖关系。它们对于语言翻译、语言建模等任务以及需要模型长时间记住过去信息的其他任务特别有用。

LSTM能够通过引入额外的“存储单元”来实现这一点,这些“存储单元”可以长时间存储信息,并使用“门”来控制进出单元的信息流。这些门允许 LSTM 有选择地存储和检索信息,并忘记不再需要的信息。

与传统 RNN 相比,LSTM 的主要优势之一是它们能够处理长期依赖关系。在传统的RNN中,给定时间步的隐藏状态通常是前一个时间步的隐藏状态和当前时间步的输入的函数。这意味着模型捕获长期依赖项的能力受到隐藏状态大小的限制,这使得捕获跨越多个时间步的依赖项变得困难。

相比之下,LSTM 能够通过使用其存储单元来存储与较长时间相关的信息来捕获长期依赖关系。这使他们能够更好地捕获数据中对手头任务很重要的模式和关系。

总体而言,LSTM 是一个强大的工具,适用于需要模型长时间记住过去信息的任务,并且已经在广泛的任务上取得了成功,包括语言翻译、语言建模和语音识别。

以我对蓝海大脑边缘计算服务器的了解,具有以下几个特点:

⌄1、支持DNN、CNN、RNN、LSTM 等神经网络分析编译和调整

2、支持云端推送应用、更新算法云端统一设备管理固件升级

3、与私有云、公有云协同一体化服务等等

4、支持搭配多种显卡,如:英伟达NVIDIA显卡、英特尔Intel显卡、AMD显卡等

5、静音声噪小于35分贝。启动速度快。

6、适用于信息学大数据、疾病建模、冷冻电镜、高性能计算、反洗钱、机器识别、视觉识别、行为识别、深度学习、小分子、数字建模、地质遥感、元宇宙、自动驾驶、人工智能等领域。

推荐使用蓝海大脑。他家的深度学习服务器有低功耗省电的特点。令我惊讶的是,他的家庭服务器也可以快速部署在主流模式,如DNN,CNN,RNN,LSTM等。,主要用于元宇宙、数据分析、数据挖掘、大数据、基因时代、智能制造、机器识别、AI绘画等领域。

模型dynamic预测通常是指动态时间序列预测,也称为非平稳时间序列预测。在动态时间序列预测中,模型输出的预测结果与时间和已知数据相关。预测结果在每个时间步长都将更新,并且在每个时间步长都基于最新的可用数据进行计算。

要查看模型dynamic预测的结果,可以参考以下步骤:

1 根据模型生成的预测结果,创建一个时间序列图表,横轴为时间,纵轴为预测结果。

2 将模型预测的结果与真实数据进行对比。可以在同一时间序列图表上显示真实数据和预测结果,以便进行比较。

3 使用误差指标(如均方误差、平均绝对误差等)来评估模型预测的准确性。可以计算模型预测和真实数据之间的误差,并将其绘制在另一个图表上,以便更直观地了解预测误差的情况。

4 可以考虑使用其他技术(如滑动平均、指数平滑等)来进一步提高模型的精度和准确性。

需要注意的是,动态时间序列预测是一项非常复杂的任务,其预测结果的准确性和精度受到许多因素的影响,包括模型选择、数据质量、模型参数、预测长度等等。因此,需要结合专业的知识和经验,以及实际情况进行分析和判断。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » PHP开发工程师岗位职责

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情