update README
XDML是一款基于参数服务器(Parameter Server),采用专门缓存机制的分布式机器学习平台。 XDML内化了学界最新研究成果,在效果保持稳定的同时,能大幅加速收敛进程,显著提升模型与算法的性能。同时,XDML还对接了一些优秀的开源成果和360公司自研成果,站在巨人的肩膀上,博采众长。 XDML还兼容hadoop生态,提供更好的大数据框架使用体验,将开发者从繁杂的工作中解脱出来。XDML已经在360内部海量规模数据上进行了大量测试和调优,在大规模数据量和超高维特征的机器学习任务上,具有良好的稳定性,扩展性和兼容性。
欢迎对机器学习或分布式有兴趣的同仁一起贡献代码,提交Issues或者Pull Requests。
针对超大规模机器学习的场景,奇虎360开源了内部的超大规模机器学习计算框架XDML。XDML是一款基于参数服务器(Parameter Server),采用专门缓存机制的分布式机器学习平台。它在360内部海量规模数据上进行了测试和调优,在大规模数据量和超高维特征的机器学习任务上,具有良好的稳定性,扩展性和兼容性。
XDML的核心参数服务器架构,包括以下组件:
XDML的配置包,包括对参数服务器的配置和对作业及模型相关的配置。包括以下组件:
XDML向PS提交的作业,包括拉取和推送。包括以下任务:
XDML模型的优化算法包。包括以下优化算法:
XDML中已经实现的部分机器学习模型。包括以下模型:
XDML中特征分析和特征处理模块。
特征分析
特征分析覆盖常见的分析指标,如数值型特征的偏度、峰度、分位数,与label相关的auc、ndcg、互信息、相关系数等指标。
特征处理
特征处理覆盖常见的数值型、类别型特征预处理方法。包括以下算子:
XDML中包含用南京大学李武军老师提出的Scope优化算法进行训练的线性模型,以及部分H2O模型的spark pipeline封装。具体包括以下模型:
Model:
XDML中作业提交实例,可以参考Example.
XDML是基于Kudu、HazelCast以及Hadoop生态圈的一款基于参数服务器的,采用专门缓存机制的分布式机器学习平台。
XDML基于Kudu,请首先部署Kudu。Kudu的安装部署请参考Kudu。
git clone https://github.com/Qihoo360/XLearning-XDML
mvn clean package -Dmaven.test.skip=true 编译完成后,在源码根目录的target目录下会生成:xdml-1.0.jar、xdml-1.0-jar-with-dependencies.jar等多个文件,xdml-1.0.jar为未加spark、kudu等第三方依赖,xdml-1.0-jar-with-dependencies.jar添加了spark、kudu等依赖包。
mvn clean package -Dmaven.test.skip=true
target
xdml-1.0.jar
xdml-1.0-jar-with-dependencies.jar
可以通过以下命令提交示例训练作业:
$SPARK_HOME/bin/spark-submit \ --master yarn-cluster \ --class net.qihoo.xitong.xdml.example.LRTest \ --num-executors 50 \ --executor-memory 40g \ --executor-cores 2 \ --driver-memory 4g \ --conf "spark.xdml.table.name=lrtest" \ --conf "spark.xdml.job.type=train" \ --conf "spark.xdml.train.data.path=$trainpath" \ --conf "spark.xdml.train.data.partitionNum=50" \ --conf "spark.xdml.hz.clusterNum=50" \ --conf "spark.xdml.model.path=$modelpath" \ --conf "spark.xdml.train.iter=5" \ --conf "spark.xdml.train.batchsize=10000" \ --conf "spark.xdml.learningRate=0.1" \ --jars xdml-1.0-jar-with-dependencies.jar \ xdml-1.0-jar-with-dependencies.jar
注:提交命令中的设置有$SPARK_HOME、$trainpath、$modelpath 分别代表spark客户端路径、训练数据HDFS路径、模型存储HDFS路径
$SPARK_HOME
$trainpath
$modelpath
XDML常见问题
XDML参考了学界及工业界诸多优秀成果,对此表示感谢!
Mail: g-xlearning-dev@360.cnQQ群:874050710
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
XDML是一款基于参数服务器(Parameter Server),采用专门缓存机制的分布式机器学习平台。 XDML内化了学界最新研究成果,在效果保持稳定的同时,能大幅加速收敛进程,显著提升模型与算法的性能。同时,XDML还对接了一些优秀的开源成果和360公司自研成果,站在巨人的肩膀上,博采众长。 XDML还兼容hadoop生态,提供更好的大数据框架使用体验,将开发者从繁杂的工作中解脱出来。XDML已经在360内部海量规模数据上进行了大量测试和调优,在大规模数据量和超高维特征的机器学习任务上,具有良好的稳定性,扩展性和兼容性。
欢迎对机器学习或分布式有兴趣的同仁一起贡献代码,提交Issues或者Pull Requests。
架构设计
针对超大规模机器学习的场景,奇虎360开源了内部的超大规模机器学习计算框架XDML。XDML是一款基于参数服务器(Parameter Server),采用专门缓存机制的分布式机器学习平台。它在360内部海量规模数据上进行了测试和调优,在大规模数据量和超高维特征的机器学习任务上,具有良好的稳定性,扩展性和兼容性。
功能特性
1.提供特征预处理/分析,离线训练,模型管理等功能模块
2.实现常用的大规模数据量场景下的机器学习算法
3.充分利用现有的成熟技术,保证整个框架的高效稳定
4.完全兼容hadoop生态,和现有的大数据工具实现无缝对接,提升处理海量数据的能力
5.在系统架构和算法层面实现深度的工程优化,在不损失精度的前提下,大幅提高性能
代码结构
1.ps
XDML的核心参数服务器架构,包括以下组件:
2.conf
XDML的配置包,包括对参数服务器的配置和对作业及模型相关的配置。包括以下组件:
3.task
XDML向PS提交的作业,包括拉取和推送。包括以下任务:
4.optimization
XDML模型的优化算法包。包括以下优化算法:
5.ml
XDML中已经实现的部分机器学习模型。包括以下模型:
6.feature
XDML中特征分析和特征处理模块。
特征分析
特征处理
特征处理覆盖常见的数值型、类别型特征预处理方法。包括以下算子:
7.model
XDML中包含用南京大学李武军老师提出的Scope优化算法进行训练的线性模型,以及部分H2O模型的spark pipeline封装。具体包括以下模型:
Model:
8.example
XDML中作业提交实例,可以参考Example.
编译&部署指南
XDML是基于Kudu、HazelCast以及Hadoop生态圈的一款基于参数服务器的,采用专门缓存机制的分布式机器学习平台。
环境依赖
Kudu安装部署
XDML基于Kudu,请首先部署Kudu。Kudu的安装部署请参考Kudu。
源码下载
git clone https://github.com/Qihoo360/XLearning-XDML编译
mvn clean package -Dmaven.test.skip=true编译完成后,在源码根目录的target目录下会生成:xdml-1.0.jar、xdml-1.0-jar-with-dependencies.jar等多个文件,xdml-1.0.jar为未加spark、kudu等第三方依赖,xdml-1.0-jar-with-dependencies.jar添加了spark、kudu等依赖包。运行示例
提交参数
提交命令
可以通过以下命令提交示例训练作业:
注:提交命令中的设置有
$SPARK_HOME、$trainpath、$modelpath分别代表spark客户端路径、训练数据HDFS路径、模型存储HDFS路径FAQ
XDML常见问题
参考文献
XDML参考了学界及工业界诸多优秀成果,对此表示感谢!
联系我们
Mail: g-xlearning-dev@360.cn

QQ群:874050710