云网牛站
所在位置:首页 > Linux新闻 > 腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

2018-09-05 22:16:36作者:青源稿源:云网牛站整理

腾讯万亿级维度特性计算Angel 2.0已经面世,同时腾讯已携Angel 2.0加入了LF深度学习基金会,结合基金会成熟的运营,全面升级的Angel 2.0将与国际开源社区继续深入互动,致力于让机器学习技术更易于上手研究及应用落地的目标。关于腾讯加入LF深度学习基金会的新闻请看Linux基金会推出LF深度学习基金会,腾讯华为等加入

腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

 

Angel简介

腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

1.Angel是一个基于参数服务器(Parameter Server)理念开发的高性能分布式机器学习平台,它基于腾讯内部的海量数据进行了反复的调优,并具有广泛的适用性和稳定性,模型维度越高,优势越明显。 Angel由腾讯和北京大学联合开发,兼顾了工业界的高可用性和学术界的创新性。

2.Angel的核心设计理念围绕模型。它将高维度的大模型合理切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数,以及灵活的同步协议,轻松实现各种高效的机器学习算法。

3.Angel基于Java和Scala开发,能在社区的Yarn上直接调度运行,并基于PS Service,支持Spark on Angel,集成了部分图计算和深度学习算法。

 

初步了解Angel 2.0

1.Angel具有广泛的适用性和稳定性,模型维度越高时,平台便有越明显的优势。进入Angel 2.0,凭借参数服务器的支持,Angel可以轻松扩展到千亿级维度特性。同时,通过全面优化的算法,Angel 2.0将pulling/pushing子模型引入高维模型,在支持以高维度模型为代表的高性能数学库上,展现出优异的性能。

2.在兼容方面,Angel基于 Java 和 Scala开发,通过Yarn进行调度运行,提供了丰富的优化方法和机器学习算法实现。配套PS Service,Angel支持Spark 或其它图计算、深度学习框架。而Angel 2.0在深度学习的支持上也做出重要优化,如对DeepFM,PNN,Wide&Deep,NFM等常见深度学习框架的全面兼容,以及支持用户通过Json定义的网络。

腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

 

Angel 2.0特性介绍

一、万亿级维度特性计算

1)基于参数服务器,Angel可以轻松扩展到万亿级维度的模型

2)针对稀疏大模型的场景, Angel对底层数数学库进行了做了优化

3)Angel上的算法通过pulling/pushing子模型, 轻松训练万亿级维度的模型

二、高性能数学库

1)无泛型设计, 采用Java基础数据类型来加速计算

2)使用快速哈希方法,加速稀疏向量/矩阵运算

3)Long-Key索引和Compoent量向量/矩阵的引入, 使Angel支持超大模型

4)Execotor-Expression架构使其基础运算高效且易于扩展

三、计算图支持

1)基于层的轻量计算图

2)自动计算梯度

3)易于添加层以扩展系统

4)开箱即用的特征交叉层,有利于推荐系统算法开发

5)Angel和Spark on Angel共享统一的计算图

四、深度学习支持

1)推荐系统中常见的深度学习算法,如Deep And Wide, DeepFM,PNN,PNN,NFM都已支持

2)用户可以通过Json定义的网络

 

Angel编译指南

1.编译环境依赖

Jdk >= 1.8

Maven >= 3.0.5

Python >=3.6

如果要运行PyAngel

Protobuf >= 2.5.0

需与hadoop环境自带的protobuf版本保持一致。目前hadoop官方发布包使用的是2.5.0版本,所以推荐使用2.5.0版本,除非你自己使用更新的protobuf版本编译了hadoop

2.源码下载

git clone https://github.com/tencent/angel

3.编译

进入源码根目录,执行命令:

mvn clean package -Dmaven.test.skip=true

编译完成后,在源码根目录dist/target目录下会生成一个发布包:angel-${version}-bin.zip

4.发布包

发布包解压后,根目录下有几个子目录:

bin: Angel任务提交脚本

conf:系统配置文件

data:简单测试数据

lib:Angel的jar包 & 依赖jar包

python:Python相关脚本

 

本地运行模式

本地运行模式主要用于测试功能是否正确。目前本地运行模式仅支持一个Worker(可以有多个Task)和一个PS。可以通过配置选项angel.deploy.mode来使用本地运行模式。

1.运行环境准备

Java >= 1.8

Angel发布包 angel-<version>-bin.zip

配置好HADOOP_HOME和JAVA_HOME环境变量,解压Angel发布包,就可以以LOCAL模式运行Angel任务了。

2.LOCAL 运行例子

发布包解压后,在根目录下有一个bin目录,提交任务相关的脚本都放在该目录下。例如运行简单的逻辑回归的例子:

./angel-example com.tencent.angel.example.ml.LogisticRegLocalExample

 

Angel On Yarn运行

由于业界很多公司的大数据平台,都是基于Yarn搭建,所以Angel目前的分布式运行是基于Yarn,方便用户复用现网环境,而无需任何修改。

鉴于Yarn的搭建步骤和机器要求,不建议在小机器上,进行尝试该运行。如果一定要运行,最少需要6G的内存(1ps+1worker+1am),最好有10G的内存,比较宽裕。

1.运行环境准备

Angel的分布式Yarn运行模式需要的环境,其实也非常简单:

1].一个可以正常运行Hadoop集群,包括Yarn和HDFS

Hadoop >= 2.2.0

2].一个用于提交Angel任务的客户端Gateway

Java >= 1.8

可以正常提交Hadoop的MR作业

Angel发布包:angel-<version>-bin.zip

2.Angel任务运行示例

以最简单的LogisticRegression为例:

1].上传数据(如果用户有自己的数据可以略过本步,但是要确认数据格式一致)

找到发布包的data目录下的LogisticRegression测试数据

在hdfs上新建lr训练数据目录

hadoop fs -mkdir hdfs://my-nn:54310/test/lr_data

将数据文件上传到指定目录下

hadoop fs -put data/exampledata/LRLocalExampleData/a9a.train hdfs://my-nn:54310/test/lr_data

2].提交任务

在发布包的bin目录下有Angel的提交脚本angel-submit,使用它将任务提交到Hadoop集群

请务必注意提交集群中是否有充足的资源,如果按照下面的参数配置,启动任务至少需要6GB内存和3个vcore

```bsh

./angel-submit \

 --angel.app.submit.class com.tencent.angel.ml.core.graphsubmit.GraphRunner \

 --angel.train.data.path "hdfs://my-nn:54310/test/lr_data" \

 --angel.log.path "hdfs://my-nn:54310/test/log" \

 --angel.save.model.path "hdfs://my-nn:54310/test/model" \

 --action.type train \

 --ml.model.class.name com.tencent.angel.ml.classification.LogisticRegression \

 --ml.epoch.num 10 \

 --ml.data.type libsvm \

 --ml.feature.index.range 1024 \

 --angel.job.name LR_test \

 --angel.am.memory.gb 2 \

 --angel.worker.memory.gb 2 \

 --angel.ps.memory.gb 2

```

参数含义如下:

名称 含义
action.type 计算类型,目前支持"train"和"predict"两种,分别表示模型训练和预测
angel.app.submit.class 算法运行类
angel.train.data.path 训练数据输入路径
angel.log.path 算法指标日志输出路径
angel.save.model.path 模型保存路径
ml.model.class.name 模型类型
ml.epoch.num epoch 个数
ml.data.type 训练数据格式,默认支持两种格式libsvm和dummy
ml.feature.index.range 模型index范围
angel.job.name 任务名
angel.am.memory.gb Master所需内存大小
angel.worker.memory.gb 一个Worker所需内存大小
angel.ps.memory.gb 一个PS所需内存大小

3.观察进度

任务提交之后,会在控制台打印出任务运行信息,如URL和迭代进度等,如下图所示:

腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

打开URL信息就可以看到Angel任务每一个组件的详细运行信息和算法相关日志:

腾讯万亿级维度特性计算Angel 2.0面世,附特性介绍

目前的监控页面有点简陋,后续会进一步优化,围绕PS的本质,提高美观程度和用户可用度。

 

相关链接

angel下载地址

 

相关主题

腾讯成为Linux基金会的白金会员,贡献两大自主研发项目

精选文章
热门文章