QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

360 开源 XDML,超大规模数据与超高维特征机器学习计算平台

  • 2018-12-29
  • 本文字数:1480 字

    阅读完需:约 5 分钟

360开源 XDML,超大规模数据与超高维特征机器学习计算平台

在大数据时代,需要处理的数据都是 TB 级或 PB 级以上,机器学习模型的规模也在不断地增大,机器学习模型的参数的规模可以达到百亿甚至是千亿的级别,如此大的参数规模给现有的机器学习平台带来了前所未有的挑战。同时,高维稀疏数据对于模型的构建也带来了巨大的挑战。


人工智能取得了前所未有的发展,机器学习、深度学习中算法数量也在不断的增加。但是也带来了很多的问题:


  • 特征分析和变换中,工作量大、性能差、成本高等;

  • 难以处理超高维稀疏数据,超规模参数调优难度很大;

  • 目前业界实现的机器学习平台都有各种各样的问题,例如和 Hadoop 生态圈衔接较差,无法很好的与其衔接起来。这些问题一直阻碍着开发者的前行,亟需解决。


针对超大规模机器学习的场景,360 开源了内部的超大规模机器学习计算框架 XDML。XDML 是一款基于参数服务器(Parameter Server),采用专门缓存机制的分布式机器学习平台。它在 360 内部海量规模数据上进行了测试和调优,在大规模数据量和超高维特征的机器学习任务上,具有良好的稳定性,扩展性和兼容性。


GitHub 地址:https://github.com/Qihoo360/XLearning-XDML



XDML 架构设计图

XDML 特性

1. 提供特征分析与变换等功能模块


在现有的机器学习模型的构建中,特征生产与业务和数据高度相关,高度定制,工作量很大。特征分析与变换处理粒度过小,在大数据情形下性能较差,且缺乏一站式的特征分析与变换工具。XDML 能够最大程度地挖掘并行度,结合样本并行+特征并行+算子并行/融合/OnePass 化,显著提升特征工程的性能,支持 TB 级数据 10min 级分析,并且遵循 spark 标准接口。在包含数千个特征的稠密 benchmark 上进行特征分析与变换测试,性能较 Spark MLlib 提升 1000 多倍;XDML 也能很好地适应稀疏数据特征分析。


2. 实现常用的大规模数据量场景下的机器学习算法


超高维度的参数优化,对于开发者算法能力要求较高,而且工作量较大,需要大量的时间和精力进行调参工作。XDML 内化学界最新研究成果,引入南京大学李武军老师提出的全新优化算法 SCOPE,并重构了准线性模型,在效果保持稳定的同时,大幅加速收敛进程,显著提升模型与算法的性能。在 Benchmark 上,相比 LBFGS 性能提升 10 倍左右,相较于 SGD 性能提升 50 多倍。同时,XDML 还对接了一些优秀的开源成果和 360 公司自研成果,站在巨人的肩膀上,博采众长。


3. 充分利用现有的成熟技术,保证整个框架的高效稳定


在互联网领域,技术框架更新迭代十分迅速,XDML 可以与业界成熟的技术无缝衔接,整个框架具有高效的稳定性。


4. 完全兼容 hadoop 生态,和现有的大数据工具实现无缝对接,提升处理海量数据的能力


在 XDML 设计之初,就将与 Hadoop 生态无缝衔接作为其设计目标,解决了大规模高维数据的存储。XDML 具有与目前 Hadoop、Spark 等大数据框架无缝对接的能,同时替换 Spark 原生能力的性能/效果瓶颈,提供更好的大数据框架使用体验,将开发者从繁杂的工作中解脱出来,不必为数据、模型的存储大费周章。


5. 在系统架构和算法层面实现深度的工程优化,在不损失精度的前提下,大幅提高性能


在高维稀疏数据场景中,如何处理千亿级参数训练,百亿乃至千亿级别样本训练中模型的存储、数据如何传输、模型的更新等问题一直是业界急需解决的问题。XDML 具有模型的快速存储能力,高效的数据传输,从多个角度提升了高维稀疏数据场景中,提升模型的训练速度提升整体的性能。

结语

“从开源社区来,并回到开源社区去”一直是开源社区的精神。360 此次开源的内部超大规模机器学习计算框架 XDML,能够为开发者节约学习和操作时间,提高模型训练效率,具有良好的稳定性和兼容性,为开源社区提供了一件利器。


2018-12-29 14:385061
用户头像

发布了 1459 篇内容, 共 694.1 次阅读, 收获喜欢 2484 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

【架构实战营】模块三

衣谷

架构实战营

Red5搭建直播平台,java淘宝客教程

Java 程序员 后端

Redis 变慢了?那你这样试试,不行就捶我,mybatis工作原理图

Java 程序员 后端

Netty权威指南:I-O-多路复用技术,java技术点总结

Java 程序员 后端

OpenYurt v0,linuxshell学习

Java 程序员 后端

P8级大佬整理在Github上45K+star手册,吃透消化,java算法面试题及答案pdf

Java 程序员 后端

Netty案例介绍-群聊案例实现,java架构师教程百度云

Java 程序员 后端

Nginx服务不行了怎么办,网商银行java面试

Java 程序员 后端

OpenFaaS实战之二:函数入门,mysql集群数据同步原理

Java 程序员 后端

MySQL 事务隔离级别,java面试常问的设计模式

Java 程序员 后端

Netty中序列化框架MessagePack的简单实现,java技术面试完了复试

Java 程序员 后端

Netty入门教程——认识Netty,今年最新整理的《高频Java面试题集合》

Java 程序员 后端

MySQL 5,java架构师成长直通车

Java 程序员 后端

MySQL 数据库开发入门(四),java高薪训练营百度网盘

Java 程序员 后端

Netty进阶:手把手教你如何编写一个NIO服务端,java集合容器面试

Java 程序员 后端

MySQL入门篇,java三层架构登录功能实现

Java 程序员 后端

MySql数据引擎简介与选择方法,和字节跳动大佬的技术面谈

Java 程序员 后端

Netty相关面试题汇总,java从入门到精通第五版电子书下载微盘

Java 程序员 后端

RabbitMQ不讲武德,发个消息也这么多花招,nginx实现负载均衡原理

Java 程序员 后端

MySQL数据库--几种数据迁移的方法详解都在这了!看完必懂

Java 程序员 后端

Navicat for MySQL 执行sql文件过程分析(导入数据),中软国际Java笔试题

Java 程序员 后端

Netty学习之旅------图说Netty线程模型,java项目面试难点

Java 程序员 后端

Nginx配置反向代理和负载均衡,疯狂java讲义pdf百度云

Java 程序员 后端

new-Object()到底占用几个字节,看完这篇彻底明白了!,springboot微服务架构书籍

Java 程序员 后端

Nginx + Tomcat 搭建负载均衡,大牛带你直击优秀开源框架灵魂

Java 程序员 后端

Netty进阶:手把手教你如何编写一个NIO服务端(1),Java笔试常见编程题

Java 程序员 后端

Oracle最新的Sql笔试题及答案,Java面试真题解析火爆全网

Java 程序员 后端

Peter-Java 8中的Lambda表达式,java领域的相关技术领域

Java 程序员 后端

MySQL 千万数据量深分页优化,mybatis从入门到精通pdf

Java 程序员 后端

MySQL最全整理(面试题+笔记,华为算法工程师面试经历汇总

Java 程序员 后端

MySQL:第一次看到有人把MYSQL主从复制讲解的这么清楚,mysql教程菜鸟

Java 程序员 后端

360开源 XDML,超大规模数据与超高维特征机器学习计算平台_AI&大模型_InfoQ 中文站_InfoQ精选文章