|
这几天参加JRS比赛,这次比赛的样本不算大规模,10000个样本,维度高,训练集文件在500M左右。不大不小,普通台式机可以跑动,就是慢。
通过使用mulan和weka我们发现,他们最大的弱点是不支持多线程,因此我们的机器空有4核16G内存,事实上用不上。事实上,只有25%的CPU和1G的内存被消耗。
因此,我认为目前机器学习最需要解决的问题是如何并行化提高运算速度,合理利用资源。并行化可以有3个档次,分别是 多线程(任何机器都支持)、Cuda(需要Nvdia显卡)、Hadoop(需要机群)。显然,能力越来越强、但要求也越来越高。
各位都或多或少开发了自己的分类器,但各位的程序能否支持并行呢?或者可以并行到哪个程度呢?显然,把weka整个并行化或多线程化,是一个浩大的工程,依靠我们的力量完成不现实。但我们自己涉猎过的代码,能否修改一下支持多线程呢?这将是推动科学进步、真正有影响力的工作!
每位同学目前都有自己的工作,来做这件事情显然有些力不从心。我后面要安排专人来做这个工作,而且我会亲自参与、督阵。但目前各位同学已经开发过的代码,应该考虑自己进行修改。
比如:旭斌开发了svm的回归,自己能否考虑写一个支持多线程或cuda或hadoop的版本?
文瑞在搞基于hadoop的libsvm,能否加入多线程,毕竟有hadoop环境的人太少了,多线程的libsvm也很受欢迎啊,特别是grid优化参数的时候能否多线程?
每一位同学都熟悉weka,并且应该很喜欢这东西吧?我是因为weka而喜欢java和code的。建议大家学习一下mulan(http://mulan.sourceforge.net/ ),mulan的工作量不是很大,是在weka基础上开发的。我们应该学习他的思路,也仿照mulan的开发思路,开发出我们实验室自己的jar包,与weka不同的是:我们可能加入了自己的分类器(比如旭斌、邱诚之前开发的集成分类器)、加入了自己的可多线程(或cuda、hadoop)的分类器。
我认为这是一个真正有益于科学发展的工作,希望大家提出自己的想法和意见。如果可以,我们以后处理500M的数据,就不会出现要跑2天的尴尬情景了。 |
|