Skip to content

Commit

Permalink
[DOCS] Improve Framework
Browse files Browse the repository at this point in the history
  • Loading branch information
andyyehoo committed Aug 15, 2017
1 parent 9b4e404 commit 16f93cc
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
46 changes: 35 additions & 11 deletions docs/overview/design_philosophy.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,55 @@
# Angel的设计理念

----

## PS Service
Angel设计之时,Spark风头正盛,MR大势已去,TensorFlow初生牛犊。Petuum也渐渐衰落。因此,Angel的设计,走了一条颇为另类的路。

Angel支持两种运行模式:`ANGEL_PS` & `ANGEL_PS_WORKER`
Angel设计,开发,重构之时,从这5方面,对整体进行了改进和设计,并在它们之间进行了平衡。这5个方面包括:

1. 灵活性
5. 性能
2. 扩展性
3. 易用性
4. 稳定性

Angel设计之处,并没有特地为深度学习量身定做。但是在开发之时,深度学习日渐火爆,而PS模式,也是深度学习实现多机多卡的必由之路。Angel后续也会加入更多对深度学习的针对性优化。

## 灵活性

Angel在设计上,考虑到现有的机器学习框架众多的问题,提供了2种模式。Angel支持两种运行模式:`ANGEL_PS_WORKER` & `ANGEL_PS_SERVICE`。通过这2种方式结合,Angel本身的Worker模式,追求最大化的性能优势,主打速度。而PS-Service模式,主打对接,可以接入Spark,TensorFlow,Torch等平台,主打生态,从而实现最大程度的灵活性。

* **ANGEL_PS**: PS Service模式,在这种模式下,Angel只启动Master和PS,具体的计算交给其他计算平台(如Spark,Tensorflow)负责,Angel只负责提供Parameter Server的功能。

* **ANGEL_PS_WORKER**:启动Master,PS和Worker,Angel独立完成模型的训练。

## 同步协议
* **ANGEL_PS_SERVICE**: PS Service模式,在这种模式下,Angel只启动Master和PS,具体的计算交给其他计算平台(如Spark,TensorFlow)负责,Angel只负责提供Parameter Server的功能。

* 支持多种同步协议:除了通用的**BSP**(Bulk Synchronous Parallel)外,为了解决task之间互相等待的问题,Angel还支持**SSP**(Stale Synchronous Parallel)和**ASP**(Asynchronous Parallel)

## 良好的可扩展性

* **psf(ps function)**:为了满足各类算法对参数服务器的特殊需求,Angel将参数获取和更新过程进行了抽象,提供了psf函数功能。用户只需要继承Angel提供的psf函数接口,并实现自己的参数获取/更新逻辑,就可以在不修改Angel自身代码的情况下定制自己想要的参数服务器的接口。

* **自定义数据格式**:Angel支持Hadoop的InputFormat接口,可以方便的实现自定义文件格式。
## 性能

* **自定义模型切分方式**:默认情况下,Angel将模型(矩阵)切分成大小相等的矩形区域;用户也可以自定义分区类来实现自己的切分方式。
2. **同步协议**

* 支持多种同步协议:除了通用的**BSP**(Bulk Synchronous Parallel)外,为了解决task之间互相等待的问题,Angel还支持**SSP**(Stale Synchronous Parallel)和**ASP**(Asynchronous Parallel)

## 易用性
* **训练数据和模型自动切割**:Angel根据配置的worker和task数量,自动对训练数据进行切分;同样,也会根据模型大小和PS实例数量,对模型实现自动分区。
* **易用的编程接口**:MLModel/PSModel/AngelClient

## 容错设计和稳定性

## 扩展性

* **psFunc**:为了满足各类算法对参数服务器的特殊需求,Angel将参数获取和更新过程进行了抽象,提供了psf函数功能。用户只需要继承Angel提供的psf函数接口,并实现自己的参数获取/更新逻辑,就可以在不修改Angel自身代码的情况下定制自己想要的参数服务器的接口。

* **自定义数据格式**:Angel支持Hadoop的InputFormat接口,可以方便的实现自定义文件格式。

* **自定义模型切分方式**:默认情况下,Angel将模型(矩阵)切分成大小相等的矩形区域;用户也可以自定义分区类来实现自己的切分方式。


## 稳定性

Angel在稳定性上,做了大量的工作,保证在机器学习过程中,单个Worker和PS挂掉,都不会影响整个作业的进度,而且能最快的找到备用的机器,快速启动,加载模型或者数据,继续训练过程。


* **PS容错**

Expand All @@ -37,7 +61,7 @@ Angel支持两种运行模式:`ANGEL_PS` & `ANGEL_PS_WORKER`

* **Master容错**

Master定期将任务状态写入hdfs,借助与Yarn提供的App Master重试机制,当Angel的Master挂掉后,Yarn会重新拉起一个Angel的Master,新的Master加载状态信息,然后重新启动Worker和PS,从断点出重新开始计算。
Master定期将任务状态写入HDFS,借助与Yarn提供的App Master重试机制,当Angel的Master挂掉后,Yarn会重新拉起一个Angel的Master,新的Master加载状态信息,然后重新启动Worker和PS,从断点出重新开始计算。

* **慢Worker检测**

Expand Down
2 changes: 0 additions & 2 deletions docs/tutorials/angel_ps_quick_start.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,6 @@

前面,我们定义了LR模型,实现了它的训练过程。现在,还需要实现Runner类将训练这个模型的任务提交到集群。

定义myLRRunner类继承MLRunner,在train方法中提交我们的myLRModel的模型类、和myLRTrainTak训练类就可以了。


```Scala

Expand Down

0 comments on commit 16f93cc

Please sign in to comment.