Skip to content

cuber是一个集成学习框架,主要用于各种集成学习算法的开发,具有灵活动态可配置的特点。cuber主要由三大模块组成,控制引擎、计算引擎和调度引擎。控制引擎依托于networkx的有向无环图技术,需要以计算引擎和调度引擎为基础,运行时加载。计算引擎支持Ray,Dask;调度引擎支持Kahn算法。

License

Notifications You must be signed in to change notification settings

redblue0216/Cuber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cuber

shields_version shields_license shields_author shiedls_python

cuber_avatar

介绍

  • cuber是一个集成学习框架,主要用于各种集成学习算法的开发,具有灵活动态可配置的特点。cuber主要由三大模块组成,控制引擎、计算引擎和调度引擎。控制引擎依托于networkx的有向无环图技术,需要以计算引擎和调度引擎为基础,运行时加载。计算引擎支持Ray,Dask;调度引擎支持Kahn算法。

安装

  • Cuber采用Python开发,得益于Python良好的社区环境,安装支持Pythonic风格的各种管理器。
$ pip install cuber-0.1-xxxxxxxxxxxx.whl

快速指南

  • cuber使用主要分为三大步,首先初始化cuber实例,加载计算引擎和调度引擎,获取cuber控制器实例;然后使用装饰器注册目标节点的函数;最后调用cuber控制器执行

  • 以下是cuber主程脚本代码示例:

	### 载入程序包
	from cuber.interface import Cube
	import time


	### cuber实例创建
	cuber = Cube(cuber_runner='ray',
	             cuber_runner_address='ray://192.168.1.51:10001',
	             cuber_scheduler='kahn')


	### 创建cuber控制器
	cuber_controller = cuber.get_cuber_controller()


	### 注册目标函数到指定cuber控制器
	@cuber_controller.register(controller_obj=cuber_controller)
	def test_a():
	    time.sleep(10)
	    print(2)
	    return 'a'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_aa():
	    time.sleep(10)
	    print(2)
	    return 'aa'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_b():
	    time.sleep(10)
	    print(2)
	    return 'b'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_bb():
	    time.sleep(10)
	    print(2)
	    return 'bb'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_c():
	    time.sleep(10)
	    print(2)
	    return 'c'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_cc():
	    time.sleep(10)
	    print(2)
	    return 'cc'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_d():
	    time.sleep(10)
	    return 'd'


	### 注册目标函数依赖关系到指定cuber控制器
	test_a >> test_b >> test_c >> test_d
	test_aa >> test_b >> test_d
	test_bb >> test_c >> test_d
	test_cc >> test_d


	### 展示节点和边情况
	print('~~~~~~',cuber_controller.get_graph_obj())
	print('------',cuber_controller.show_nodes())
	print('======',cuber_controller.show_edges())


	### 使用二级统一API
	time_start = time.time()
	exec_result = cuber_controller.execute()
	time_end = time.time()
	print('============================== Parallel function running',time_end - time_start)


	### 串行函数运行
	time_start = time.time()
	test_a()
	test_aa()
	test_bb()
	test_cc()
	test_b()
	test_c()
	test_d()
	time_end = time.time()
	print('============================== Serial function operation',time_end - time_start)

设计

  • 大量使用元编程技术,提高代码灵活性、可读性和维护质量
  • 设计了控制引擎、计算引擎和调度引擎,实现灵活动态可扩展
  • 天然支持分布式
  • 三级API设计,使用方便,适应不同程度的使用人员
  • 技术列表
    • __new__技术
    • __init__技术
    • __prepare__技术
    • __call__技术
    • type元类
    • 描述符技术
    • Mixin
    • 装饰器技术
    • namedtuple
    • Networkx
    • FSM-transitions
    • 运算符重载
    • __slots__技术
    • Ray

About

cuber是一个集成学习框架,主要用于各种集成学习算法的开发,具有灵活动态可配置的特点。cuber主要由三大模块组成,控制引擎、计算引擎和调度引擎。控制引擎依托于networkx的有向无环图技术,需要以计算引擎和调度引擎为基础,运行时加载。计算引擎支持Ray,Dask;调度引擎支持Kahn算法。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages