牛逼的开源机器学习框架知多少

这篇文章是从36dsj转载过来的,写的很不错

 

449

机器学习毫无疑问是当今最热的话题,它已经渗透到生活的方方面面,在移动互联网中混不懂点机器学习都不好意思,说几个能看的到的,经常用邮箱吧,是不是感觉垃圾邮件比N年前变少了,无聊了和siri聊过天不,想坐一下无人驾驶汽车吗,手累了用脸解个锁,智能化产品推荐是不是让你更懒了。看不到的就更多了:信用卡欺诈监测保证你的交易安全,股票交易/量化投资(知道你的高收益理财怎么来的吗?),手势识别(用过海豚浏览器的手势吗),还有医学分析等等,巨头们为了在未来占领先机,前仆后继的开源他们的机器学习框架,加速了人类进入智能时代的步伐(说什么,机器人?)

Facebook:用于Torch的模块库fbcunn (2015-01-17 开源)

fbcunn可以替代Torch的默认模块,它们构建在Nvidia的cuFFT库(一个基于CUDA的库,用于深度神经网络)之上,可以在更短的时间内训练更大规模的神经网络模型,它对NVIDIA的GPU进行了优化。一部分可以用来训练大型计算机视觉系统。部分模块也可以用来训练处理不同类型数据的模型。既可以进行文本识别、图像识别,也能用于语言模型的训练。部分模块将大型卷积神经网络模型的训练速度提升了23.5倍。

fbcunn基于Fast Training of Convolutional Networks through FFTs这篇论文中的想法构建了这些模块,FAIR(Facebook人工智能实验室)的主任Yann LeCun是论文的合著者之一。与cuDNN相比,在卷积核较小的情况下(3×3),fbcunn的速度提升可达1.84倍;而在卷积核较大的情况下(5×5),速度提升可达23.5倍。

Torch和fbcunn的最早的用途之一:图片分类,它分类过ImageNet的120万张图片,可以参考这个地址:https://github.com/soumith/imagenet-multiGPU.torch

参考: >

https://github.com/torch/

https://github.com/facebook/fbcunn

https://research.facebook.com/blog/879898285375829/fair-open-sources-deep-learning-modules-for-torch/

微软:DMTK(2015-11-16 开源)

DMTK由参数服务器和客户端SDK两部分构成。参数服务器支持存储混合数据结构模型、接受并聚合工作节点服务器的数据模型更新、控制模型同步逻辑;客户端SDK负责维护节点模型缓存(与全局模型服务器同步)、本地训练和模型通讯之间的流水线控制以及片状调度大模型训练。它包含DMTK框架、LightLDA和分布式词向量(Word Embedding)三个组件。

DMTK采用了传统的客户端/服务器架构,有多个服务器实例运行在多台机器上负责维护全局模型参数,而训练例程(routines)则使用客户端API访问并更新这些参数。为了适应不同的集群环境,DMTK框架支持两种进程间的通信机制:MPI和ZMQ。应用程序端不需要修改任何代码就能够在这两种方式之间切换。DMTK支持Windows和Linux两种操作系统。

DMTK则是使用C++编写的,提供了一个客户端API和SDK。 DMTK的官网 对DMTK框架、LightLDA、分布式词向量的应用场景、下载、安装、配置、运行以及性能等方面都做了详尽的介绍(见参考部分)。

DMTK主要用于自然语言处理方面,比如:文本分类与聚类、话题识别以及情感分析等

参考:

http://www.dmtk.io

https://github.com/Microsoft/DMTK

Google:TensorFlow(2015-11-10 开源)

TensorFlow 是一个用来编写和执行机器学习算法的工具。计算在数据流图中完成,图中的节点进行数学运算,边界是在各个节点中交换的张量(Tensors–多维数组)。TensorFlow负责在不同的设备、内核以及线程上异步地执行代码,目前支持CNN、RNN和LSTM等图像、语音和自然语言处理(NLP)领域最流行的深度神经网络模型。

Google已将TensorFlow用于GMail(SmartReply)、搜索(RankBrain)、图片(生成图像分类模型–Inception Image Classification Model)、翻译器(字符识别)等产品。

TensorFlow能够在台式机、服务器或者移动设备的CPU和GPU上运行,也可以使用Docker容器部署到云环境中。在处理图像识别、语音识别和语言翻译等任务时,TensorFlow依赖于配备图像处理单元(GPU)的机器和被用于渲染游戏图像的芯片,它对这些芯片依赖度比想象中的高。当前开源的版本能够运行在单机上,暂不支持集群。操作系统方面,TensorFlow能够运行在Linux和MacOS上。

TensorFlow的核心是使用C++编写的,有完整的Python API和C++接口,同时还有一个基于C的客户端API。

参考:

https://www.tensorflow.org

https://github.com/tensorflow/tensorflow

IBM:SystemML (2015-06 开源)

SystemML是灵活的,可伸缩机器学习(ML) 语言,使用Java编写。可实现 可定制算法(述性分析、分类、聚类、回归、矩阵分解及生存分析等), 多个执行模式(单独运行、Hadoop 和 Spark ), 自动优化。它由 IBM 的 Almaden 实验室花了近 10年开发而成的机器学习技术。

SystemML语言,声明式机器学习 (DML)。SystemML 包含线性代数原语,统计功能和 ML 指定结构,可以更容易也更原生的表达 ML 算法。算法通过 R 类型或者 Python 类型的语法进行表达。DML 通过提供灵活的定制分析表达和独立于底层输入格式和物理数据表示的数据显著提升数据科学的生产力。

SystemML 运行环境支持 Windows、Linux 及 MacOS,可支持单机和分布式部署。单机部署显然有利于本地开发的工作,而分布式部署则可以真正发挥机器学习的威力,支持的框架包括 Hadoop 和 Spark

众所周知的IBM AIWaston融入了不少SystemML技术(不了解的同学可以看下《Jeopardy!》节目,来领教到沃森的威力)

参考:

http://systemml.apache.org

https://github.com/apache/incubator-systemml

三星:VELES

VELES 是分布式深度学习应用系统,号称:用户只需要提供参数,剩下的我来搞,VELES使用 Python 编写,使用OpenCL 或者 CUDA,利用基于Flow 的编程方式。

参考:

https://velesnet.ml

https://github.com/Samsung/veles

百度:期待ING。。。

巨头之所以开源自己耗时多年打造的机器学习框架,是希望能够加速在人工智能方面的部署,在人工智能日益重要的未来抢占更多的主导权。而对于机器人创业公司来说,当这么多巨头将机器学习平台开源后,还有什么理由做不好机器人。

End.

Xenserver 快速安装debian

回首看看过去一年写过的博文,我真为我自己的语言水平感到汗颜。。我自己都读的不通顺。。。

回归正题,之所以有在Xenserver上安装debian的需求,完全是因为我有几台online.net的服务器,说起online.net, 真是对他又爱又恨。。。爱他是因为他的网络真心的稳定,价格便宜实惠而且网络又好。。。恨他是因为他家独有的float IP。。。让玩Xen 虚拟化的人吃劲了麻烦。。。尤其是在服务器的主IP 和 failover IP 不在一个/16的IP 段的时候,你就基本上不能使用net install 来安装centos 和 debian 了

但是没有想到今天无意间看到一篇关于在xenserver 上创建 SR 的文章, 通过本地的local SR,可以直接添加centos 和 debian 的minimum instal ISO file

过程如下:

步骤一: 直接ssh 登录你的xenserver 服务器,创建如下目录

mkdir -p /var/opt/xen/iso_import

步骤二: 创建 local SR ( storage repository)

xe sr-create name-label=LocalISO type=iso device-config:location=/var/opt/xen/iso_import device-config:legacy_mode=true content-type=iso

这个时候你就可以在xencenter 上看到这个local SR 了

步骤三: 将你的想用的iso 直接wget 到/var/opt/xen/iso_import 这个目录下面, 比如说centos mini iso, debian netinst iso 等等,在xencenter 上点击rescan 就可以啦

这样在你安装新的centos 和 debian 的时候,就可以直接选择这些iso 啦

 

 

作为一个爱折腾的人,以后台式机千万不能再买

5月初刚回到国内,比较着急,也懒得自己去泡论坛调整搭配了。。随便在网上看了Dell的商务机,就跑去当地的电脑城去买了个Dell Optiplex 9020MT,花了小一万块钱,因为把内存升级到了32G,加了一个西数2TB的黑盘。。。在家加两个Dell 的U2414H

最近发现机箱突然之间发出巨大的声响.

虽然我对于硬件基础白痴。。。但是我还是打开了机箱。。。刚开始认为是机箱风扇的问题。。拔下来清晰干净后插上。。还是不行。。这个时候才把问题定位到电源风扇上面。。。

幸亏qq里面有各种硬件大神的帮助。。。nnd。。。dell 的商务机 optiplex 9020MT 的电源和主板都是dell 特殊定制的。。只有4针插CPU 和 8针插主板。。。而市面上卖的电源,基本都是24针插主板的。。也就是说,电源坏了只能去dell 售后才可以。。。

两个解决方案,一个是淘宝买个dell工厂流出来的电源,另外一个是自己把电源上的风扇给换掉。。。

现去淘宝买也来不及了。。。没有办法,就直接上手吧。。。给电源风扇清洗以后还是比较简单的。。

清洗完以后把机器在组装好了。。开机一看。。风扇也不响了。。。

 

 

回首2015,展望2016

2015 年还有一个多小时就要过去了.

2015 年,对我来说,是人生的一个巨大的转折,也是一个巨大的惊喜。

首先在四月底的时候决定了离开加拿大回到国内创业。回国了就是爽啊,干什么都是很方便,除了人与人之间的交际以及各种政府官僚主义和自大主义者让我有点不是很适应,自己也在不断的激励自己,活在哪个国家就要适应哪个国家的活法。按照中国古人的话来说,就是上得厅堂,下得厨房。

其次就是在9月20号,我结婚啦~ 2009 ~ 2015, 几年的跨国爱情,在任何人的眼里都是不可能的事情,在我们两个人的身上确发生了,就是这份爱情也值得我回来,让我继续努力呵护这份来之不易的爱情吧。

再次,就是学会了脸皮要厚,尤其实在国内各种流氓公司不要脸的情况下。在这里有点怀念加拿大的公司了。。。也许这就是国内的公司文化吧,要学会努力去适应并且学会反击。。。

2015年,说短也不短,说长也不长,自己的身上仍然提现着各种不足。养气的功夫仍然欠缺,需要在2016年好好的学习一下。

Cheers!

superbock

Nginx 配置参数中文说明

这是在一篇博客上看到的,写的很不错,转过来作为reference

更详细的内容可以参考这篇文献: http://nginx.org/en/docs/

#定义Nginx运行的用户和用户组
user www www;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

#进程文件
pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;

更多

Linux的chattr与lsattr命令详解

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。

这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的
属性。

+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

应用举例:

1、用chattr命令防止系统中某个关键文件被修改:
# chattr +i /etc/resolv.conf

然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf

# lsattr /etc/resolv.conf
会显示如下属性
----i-------- /etc/resolv.conf

2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
# chattr +a /var/log/messages

Nginx 301 转向 Redirect non-www to www

现在我也随着大流。。很少使用cpanel了。。。开始投入nginx 的怀抱了。。

那么以后常见的问题就是,如何做301转向,把non-www转向到www, 或者把www转向到non-www.

刚才仔细的看了一下目前网上的做法,大部分都是被nginx 官方不推荐的。。。

在这里做个记录,以后方便我查找

Redirect non-www to www:

server {
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}

 

Redirect www to non-www:

server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}