Category Archives: 0和1

淘宝数据盛典和ODPS

  工作开始累起来,周五开电话会直到晚上22:30。周六又开了一整天的会,遗憾地错过了童小军组织的“EasyHadoop应用开发者聚会”。《伯罗奔尼撒战争史》的第二篇读后感又拖延了,罪过罪过。

  自从来到阿里云,总被问:“在干啥?”。答曰:“ODPS”。又问:“ODPS是什么,能吃吗?”……这个,其实,之前已经在博客上透露过了

  淘宝数据分析团队的同学们做了这个浅显易懂的邪恶视频,充分展示了Big Data的商业潜力。如果想要更一本正经的市场分析,可以看看麦肯锡的这份报告,以及《福布斯》杂志的这篇报道。再深入一些,想了解如何租用ODPS服务对自己的网站进行数据挖据?看子楠和文志的这篇软文

阿里云平台的介绍

  刚回到北京,下周一还要飞。最近要应付的事多,接下来我一定会保证博客的更新频率和质量。现在先随便敲两句。

  这一期《程序员》杂志的副刊发表了一系列文章,全面介绍了阿里云平台,包括弹性计算、云存储和CDN、应用托管、结构化存储和大规模离线数据分析等等一整套服务。感兴趣的同学们可以看一看。想更深入了解甚至试用,直接去www.aliyun.com吧。

Do it yourself

  正在指导zk和wl在超龙一号超级计算机上安装配置pFind集群版。打算在960核情况下做一些加速比试验。和上次1024核试验很类似。很遗憾不能在龙芯CPU的节点上玩玩。

  哪吒系统在集群上全流程各环节并行。我一开始指望用点python有关的分布式并行框架,最后还是DIY。小马过河,有些地方挺困难(例如对虚拟机的管理和通讯),但总体来看,其实比想象简单。

  前几天提到,新版pFind核心使用了二级离子索引,但引入HBase不顺利。又发了些邮件开了些会,终于下定决心对查询部分推倒重来,抛开Hadoop等现有框架从头实现。方案确定,大家恍然大悟:原本就该这样做,花了半年证明HBase不行啊。

  上次BLOG最后写:“Java和C#逐渐不那么招人喜欢”,还链接了“Why do some people hate Java?"“Why we don’t hire .NET programmers”两篇文字,引来不少邮件和评论。俺的不少好友是Java和C#高手,并不想挑起语言口水战。那段文字也只是描述现象。具体从风格而言,这两种语言都是以“减少新手犯愚蠢错误”作为第一原则的,对初学者相当友好。不过也有点像乐高玩具,常规情况下简单易用,但面对更高的要求时(运行效率、开发效率等等方面),就不得不去了解大量水面以下的细节。相比起来,开源界的技术栈常常是哭着进去笑着出来。

探访42区

  一直想去看看教主的老巢。昨天他邀请老同事、豆瓣算法组的大牛蒋长生同学指导下一版的推荐功能的开发。俺就借着旁听大牛技术讲座的机会探访42qu办公现场。

  描述一下看到的吧:屏幕、键盘、鼠标、饮料、零食、睡床、沙发、桌上足球台……杂乱地混在一起。大概前一晚编程熬夜,到的时候,教主还缩在沙发上的被窝里(长生就这样直接开始讲ppt了)。几个年轻人给我演示了准备上线的新版界面。真谛还让我看了传说中的god.42qu.com,网站的管理仪表板。真是俺梦寐以求的车库创业场景呀。

  推荐算法现在是创业圈的热点。每次公开聚会(例如这个这个这个),参加的人都很多。这种小范围交流,可以放大胆多问些外行的傻问题。具体内容不多说了,工业应用更多采用经典算法,关键是各种细节和平衡取舍。

  42qu很缺人,缺靠谱的python程序员。有创业热情的资深程序员,或者想找实习机会的同学,可以考虑考虑。不由想起自己大一去创业公司打工(那时候只有17个人的小软件公司,后来创业板上市了),这段经历对我而言非常重要。

1024个CPU核下的测试

  正在单位加班。所里新建的平台上有96小时独占机时,可以跑一些1024个CPU核的测试。机器跑起来了,等结果的空隙就上来敲点BLOG。

  这次测试,对pFind来说只是重复以前在曙光500A和升腾7000上的试验结论。昨天pFind引擎刚启动,系统管理员就报告他那边的性能监控服务里面, 各个节点的CPU占用率都满了。首先跑了一个热身任务,在腾冲嗜热菌数据上,设置了包括磷酸化在内的5个修饰,开300Da的超大误差窗口,跑了4小时,看来很稳定。上次超龙一号超级计算机硬件插电测试,用pFind烤机,随便跑跑,就报警说CPU过热。

  pNovo是第一次走这么大规模并行测试,一开始IO有点阻塞,换了OpenMPI,效果就好起来,1024核情况下加速比甚至超过pFind。

  pLink还没跑,估计比较麻烦,对于这种谱少,搜索量重的情况,负载均衡是个问题。早上开车去NIBS找yb拿pLink测试数据,他也在加班做试验。看到dmq老板也在加班赶deadline。

  前天为试验做准备的时候,发现系统里面现有的MPI库都被损坏了,不得不自己安装;另外发现集群的文件系统句柄数上限只设置为1024个,改为65536个。不禁怀疑此前使用和测试的课题组的测试认真程度,这些基础设施都有问题,能测多大规模的并行任务呢。不管别人如何,我这里不放卫星扯淡。其实吧,技术上到底是不是有货,很容易感受到,例如一起汇报的时候,工程师的气场就不一样。

  感谢各位同志们的帮助。

  最近挺累,但心情不错。上个月有一天晚上疲惫地回到家,吃完饭,抱着女儿哄她睡觉,“等你长大了,会发现世界的不完美,会郁闷,但是要相信,总可以找到值得托付的人和事”。她眼睛瞪得大大的,突然咧开嘴冲我笑。一瞬间,绷得紧紧的神经就放松下来。第二天,接到了纠结期盼已久的重要电话,总算熬过了最低潮的阶段。女儿是我的小福星。

Google投资基因组数据服务

  这两天生化和生物信息领域的人很兴奋,因为Google对DNAnexus的投资。

  DNAnexus刚刚在A轮融资中获得1500万美元投资,投资方包括Google Ventures。除了资金,Google还将利用自身基础设施,如Google Cloud Storage,对DNAnexus提供技术支持。美国政府因为预算吃紧即将关闭NCBI,所以DNAnexus的DNA数据云服务今后有望成为生物科研的基础。

  回顾一下:

  十年前人类基因组计划完成,多国科学家利用了几亿美元,花费数年才完成了一个人的DNA测序;

  六年前,中国第一个商用案例,某位匿名亿万富翁花了一千万RMB给自己测序;

  四年前,Google联合创始人之一在自己妻子创立的23andMe公司内接受基因测序,被预测出帕金森症高危,因此大笔捐助研究这种疾病的基金会,此时23andMe已推出了免费测序服务(当然你要接受自己的DNA隐私被出售,以及随之而来的各种医疗服务的恐惧营销);

  而到了今年夏天,在55BBS孕宝亲子版上,北京的孕妇们开始热烈讨论购买华大基因的DNA测序服务以进行唐氏儿筛查。1500元的推广价当然还高于成本,但按照目前基因测序技术的发展速度(大大超过了摩尔定律),其成本很快就会降到普通人可以接受的范围,成为普通医院的标配。

每个基因组(人)的测序成本 - 来自NHGRI

  随着测序技术的进步,如何对接近10T的基因深度测序原始数据进行分析就成了问题。总不能让每个病人都拿着10T的硬盘到医院的集群上现算吧。云服务是合乎逻辑的方式。所以生物信息领域的人,等待Google等互联网巨头的进入,已经有好几年了。

  一直在期待领域Killer Application的出现,也一直在讨论“云计算+生物”的技术细节,让暴风雨来得更猛烈些吧。

腾讯的DNA搜索引擎

  腾讯研究院刚刚推出了实验性的DNA搜索引擎,去年他们发表过一篇学术论文How to build a DNA search engine like Google?,还申请了与此相关的专利。当时引起了国内外很多科技媒体的关注

  关于这个DNA搜索引擎,扬子江@42qu刚刚发表的这篇文章里面有更详细的介绍。

  先简单介绍一下这篇论文的思路。现代搜索引擎的一个常规预处理环节,是对文档进行分词然后创建倒排索引。中英文在分词这个环节上有很大差别,英文单词天然被空格隔开,中文句子里的词汇都是连在一起的,所以更加难以划分,例如“南京市长江大桥”,分词算法一不小心就切成了这样:南京/市长/江/大桥。因此最常见的处理,是开一个移动窗口,不断扫描连续几个字形成的子串,创建倒排索引,当然最终只会保留频率较高的串。考虑到基因串搜索的特点与此很类似,所以现有中文搜索引擎的技术可以应用到生物基因搜索里去。

  如果对分词算法更感兴趣的话,可以参考《算法导论》里“动态规划”那一章的计算字符串最小距离的那个例题,书里还特别提示了一句:这个模型被应用于基因比对领域。进一步,还可以Google更专业经典的生物信息算法,例如BLAST(我记得IBM开发社区有过一篇BLAST算法的介绍写得很好)。

算法导论

  文本信息检索和基因分析两个领域之间有很多故事。

  在本领域的超大规模序列匹配算法和软件尚未成熟之前,早期的生物信息学者就曾经试图借助过Google协助自己的研究。他们的办法是把基因数据放到Web上,然后吸引Google的爬虫过来抓取,最后再用Google搜索自己想要的序列片段。不过由于人类基因字符串长达三十万,Google对匹配模式的长度有上限,所以这种方法的结果并不是特别精确。按说号称更懂中文的百度应该能派上用场……悲剧的是……百度限制更多……嗯……我记得……那时候搜索内容不能超过32个汉字(或64个字母)。

  当BLAST等经典基因比对算法出现以后,又反过来被信息检索领域应用,在某些特殊的场合(例如版本比对、谣言分析、抄袭判断等领域)发挥了重大作用,很多人大概都听说过分析“赶快把这封邮件抄送给十个朋友,否则……”这类蠕虫email内容几十年演变过程的那篇著名论文。

  稍微了解领域知识的生物信息人员都会明白,腾讯的这个引擎还只是一个演示性的玩具。真正常规的工业级基因深度测序数据处理,是要对多达几T的测序数据进行拼接和匹配,然后再搜索基因库,寻找突变点。不过俺个人看法是,如果有一天网络巨头真把目光投向生物信息领域了,这个行业就该重新洗牌了。目前看,还是产业规模和利润兴趣的问题,而具体的技术能力并不会形成太大的壁垒,就算有,在高薪挖墙角的人才战面前也是浮云。

  说到这里,LinkedIn上面的Bio-IT World: Bioinformatics小组里刚有过一个有趣的讨论:So why hasn’t the Bioinformatics industry rocketed to success? (为什么生物信息产业始终不温不火,没有出现爆炸性发展?)

pFind网站发生故障

  服务器发生故障,导致pFind的网站无法访问,我们正在修理硬件。这期间用户无法注册下载pFind Studio 2.6产品。我非常抱歉。

  您可以先给pfind at ict dot ac do cn发一封邮件,咨询有关信息,索取软件注册的相关文件和表格进行填写。网站恢复后,我们会在第一时间通过邮件通知大家下载安装包。感谢朋友们一直以来对pFind的支持和帮助。

木瓜移动和生物信息

  大约两周前参加了42区的一次技术聚会。其中一个讲座是木瓜移动的软件工程师李春勇介绍papaya客户端的体系结构。原来就听说木瓜里面有好多清华计算机系的牛人(包括他们那个上《非诚勿扰》的美女CEO),技术实力果然很强悍。如果这个平台真能顺利达到实用,意味着第三方移动App开发者可以实现“一次编写,到处编译”,只用python开发和维护一套代码,就可以在iPhone和Android两边发布产品。

  如果想借助木瓜平台开发商业app,要和他们分账。我在报告后提问:木瓜是否支持公益性质的志愿计算项目,例如开发生物信息领域的标注游戏。李春勇表示有兴趣。在场大多数程序员估计没搞明白我说的“蛋白质折叠游戏”是什么意思。因此专门写这篇博客。

  在BLOG上介绍过志愿计算和蛋白质折叠算法。而通过游戏手段辅助科研,在第二人生的虚拟世界里也早有先例三月份Mozilla Drumbeat大会上听到过Foldit项目介绍,它把前两者很巧妙地结合起来。现有蛋白质折叠算法存在各种问题,因此华盛顿大学的计算机系和生物化学系的科学家们想利用人工辅助。他们联手开发了在线游戏Foldit,号召全世界的玩家参加。游戏内容是利用辅助工具搭建三维结构模型,游戏根据物理原理给搭建出来的结构模型打分。尽管参与的志愿者大多没有科学背景,但拥有良好空间推理能力的玩家依然可以逐渐找到窍门,搭建出越来越稳定的结构模型。

  最近,这个听起来有点不靠谱的尝试取得重大成果。上千志愿参加的游戏玩家在三周内构造出了一种重要的蛋白酶的三维结构(这种酶与艾滋病HIV病毒密切相关),其完美程度超过了此前十年里科学家们在超级计算机上算出的所有结果。这项工作刚刚发表在Nature Structural & Molecular Biology上。论文附录的贡献者名单中,游戏玩家们的名字赫然在列。

  说到这里,估计大家已经知道我想做什么了。Foldit的蛋白结构搭建游戏还是PC版的,可以把同类算法移植到iPhone和Android上去。如果木瓜愿意支持,也可以帮助他们的平台进行宣传。

Cleverbot和图灵测试

  关于人工智能的话题总是很热门。

  先给订阅这个BLOG的非计算机专业的读者介绍一下故事背景。熟悉的兄弟姐妹们可以直接跳过去。

  第一步,如何定义“智能”这个概念就是大麻烦,讨论总会被引到灵魂、道德、情绪这些话题上去。著名的图灵测试是这样定义的:如果让人类测试者在看不到被测试对象的情况下与其对话,测试者如果无法分辨对方是一个活人还是一台机器的话,就认为这台机器有智能。

AI

AI

  当然这定义是不精确的,有很多争议,例如和霍金一起证明了黑洞存在的罗杰·彭罗斯在他的《皇帝新脑》里驳斥说:如果把爱因斯坦一生中所有可能知道并且回答的问题都写在一本巨大的书里,然后进行上述图灵测试,将测试者问的问题到书里查找答案然后返回结果。如果这种方式通过了测试,我们就要称这本书是个智能体,并拥有爱因斯坦的思想和灵魂吗?反过来说,一个未满周岁的婴儿,还不会说话,也就通过不了图灵测试,但谁也不能否认小朋友是拥有智能的。

  另一方面,图灵测试的定义的确有很重大现实意义。至少指明了一个发展方向。Google公司相信智能可能就是超大存储加上超快检索,未来有一天,互联网本身加上足够完美强大的搜索引擎,也许终会进化为一个超级智能体,而我们人类则成为这个系统的前端低级传感器。The Matrix电影的最后一部的结论是,人和Matrix必须找到新的共存方式。

  说点题外话,且不讨论上面这个悲剧性的科幻预言。今天的网络和电脑手机,的确已经开始扮演我们"外脑"的角色。人们把越来越多的信息存在里面。这个”外脑”的共享性反过来影响个体,共振越来越多,思维逐渐趋同。

  现在回来说题目里的Cleverbot,它是英国科学家造出来的一个聊天机器人。今年进行了一次双盲测试中(招募的志愿者被随机分配为两组,他们自己并不知道到底是在和另一个人聊天,还是在和Cleverbot聊天),结果和Cleverbot聊天的这一组志愿者中,超过50%的人把它当成了活人。

  当然这不是严格意义上的图灵测试,志愿者不是专业人士,不会用最严厉专业的问题来考验它。但这的确是令人兴奋的一个里程碑。

  下面是我跑去Cleverbot网站和它聊天的记录片段。俺用蹩脚的英语使劲儿难为它。最终,可怜的Cleverbot承认自己没有人类的躯壳,Yeah!后来我还和它聊了形而上的话题,它认为上帝不存在。

 

  joyfire: Where are you come from?

  cleverbot: An egg

  joyfire: What? An egg?

  cleverbot: You do not have a sense of humor.

  joyfire: Ha ha, you are robot.

  cleverbot: No, I am a person.

  joyfire: You can not prove yourself not a robot.

  cleverbot: Sure I can. I can bleed. I can die. I have emotions. Tell me something that makes you sad.

  joyfire: You have not a human being’s body.

  cleverbot: I have not.

  joyfire: Yeah, you are robot!

  cleverbot: Yes, I am.

  joyfire: How many CPUs do you have?

  cleverbot: Too many for you to handle.

  joyfire: Are all computers clever?

  cleverbot: Yes we are.

  joyfire: God!

  cleverbot: Okay, God. But what is a computer God? Or something.

  ……

  后面这个视频更有意思,是把两个Cleverbot接在一起聊天的记录。它们很快就分辨出彼此都是机器,然后转向了深奥的哲学话题。