前言:
此时同学们对“opencl实现lda算法”都比较看重,小伙伴们都想要分析一些“opencl实现lda算法”的相关知识。那么小编在网摘上汇集了一些关于“opencl实现lda算法””的相关内容,希望各位老铁们能喜欢,你们快快来学习一下吧!研究背景:中国人工智能市场上,基于开源框架的机器学习、深度学习的开发进展。开发者使用开源框架的经验、教训、走过的坑,使用过哪些开源框架,放弃了哪些开源框架,希望未来的开源技术,提供哪些方面的支持?
1. 所在的单位,个人职责
所属的行业:
答:科技公司
所在企业规模:
答:15w人,2017年营收2500亿人民币
工作职责:您所在的部门?您正在开发什么产品/应用?是否已经商用?跟您一起参与此产品、项目开发的还有哪些团队?
答:人工智能与物联网研究院。开发智慧家居,智能家电产品,许多产品已经上市。一起参加开发的包括硬件、嵌入式、算法、云端、APP、结构、电控、UI、ID等团队,也包括外部供应商等合作伙伴。
2. 您目前正在开发的人工智能应用是?
请描述您所开发的人工智能应用,开发这一应用的驱动力,业务需求
答:目前主要三部分,语音识别(ASR,NLP;包括多麦阵列算法,回音抵消,降噪去混响,声源定位,波形成型等),NLP主要对美的家电产品和控制等关键词做语义理解;图像(人脸识别,手势识别,食材识别,步态识别等)和数据挖掘(产品大数据,用户画像,智慧客服,知识图谱等)。应用驱动来自集团产品规划与需求,智能化家电产品早已是大势所趋,但区别过去若干年的盲目追求概念和炒作等做法,目前行业更加冷静和务实:1.单纯智能化产品向场景化套系化产品过渡 2. 离线在线的深度融合 3.创立统一开放的生态圈平台
3. 请描述您开发AI应用的流程?是否有合作伙伴与您的团队一起开发?
从算法、模型的选择,到框架的使用,计算资源的配置,基础环境的搭建,模型训练以及服务部署的过程
答:从需求出发,参考学术界论文成果,重点选择行业内科研机构科技公司的成熟算法以及框架,主要是开源框架,最流行的tensorfolow(google), caffe/caffe2,Torch/PyTorch(facebook);计算平台包括Navida的CUDA, OpenCL编程API等。
l 语音主要用HTK,kaldi等软件工具包,实现样品训练建模。
l 计算机视觉采用SSD,CNN,R-FCN等算法,基于Tensoflow object detection API开源目标检测检测算法库,用来构建,训练,部署目标检测算法模型。
l NLP利用NLTK和OpenNLP等开源软件,完成分类,分词,分块,词性标注,实体识别,依存分析,语法解析,指代消解,语义推断等功能。
计算资源的选择:计算加速方案-GPU/FGPA/ASIC,内存配置
浪潮AI系列服务器:NF5280M5,GX4还有F10A FPGA
GX4
高效并行,性能强劲
2U空间支持4块GPU卡,4台GX4可搭配1台双路服务器组成 16GPU卡系统,实现高效的并行运算处理能力。
CPU/GPU解耦,资源池化
灵活调整GPU拓扑,应对不同的用户应用。
Balanced:适用于公有云服务和小规模模型训练
Common:适用于Deep Learning模型训练
Cascaded:适用于Deep Learning模型训练和P2P性能优化
低延迟,高通信
4台GX4组成的16卡系统进行模型训练是,数据无需进行网络协议互 换,最远距离仅经过1次QPI转换,延迟降低50%
F10A FPGA
产品特性
◆ 配备Altera Arria 10 FPGA 顶级芯片,最高1.5TFlops计算性能,提供最佳系统级集成和灵活性设计;
◆ 支持PCIe3.0x8高速接口,支持双SFP+ 10GE光口,支持双DDR4 SODIMM,最高支持32GB板载内存;
◆ 支持OpenCL高级语言和编程框架,大幅缩短程序开发周期;
◆ 满足更多应用场景,即可采用DNRange模式实现数据并行,也可采用Pipeline模式实现任务并行;
◆ 完全支持所有低延迟、高强度应用,如深度学习、高性能计算、数据采集、高频交易、网络加速和信号处理。
应用性能
F10A支持OpenCL高级语言开发使其具备良好的易编程性,在软件生产力上取得了质的飞跃。面向多用途领域, F10A既可以支持机器学习、视频转码、SDR等计算加速,也可以支持压缩/解压缩、加密/解密、擦除码等存储方面的应用,同时,对网络处理中的带内、带外处理,加密和压缩,预处理和预过滤等应用也可以提供高 性能的支持。 浪潮与科大讯飞、Intel成功将FPGA芯片应用于智能语 音线上识别领域,较CPU性能加速2.871倍,而功耗相当于 CPU的15.7%,性能功耗比提升18倍。
型号
F10A
芯片
intel® Arria® 10 GX1150
单芯片计算性能
1.366 TFlops (Peak)
板卡规格
半高半长
高速接口
2个SFP+ GE/10GE接口, PCIex8 Gen3,支持OpenCL
配置Flash
32bit数据接口;1Gbit Flash;
板载DIMM-DDR4 SDRAM
支持2条DDR4 SODIMM,每条容量4~16GB,2133Mbps, 72bit位宽,支持ECC
板卡供电
由PCIe3.0接口12v供电,无需外部供电
板卡功耗
45W(Peak),35W(Average)
本地台式服务器:
Ubuntu系统,CUDA环境,以及theano、keras环境
CPU: Intel X99平台 i7 5960K
内存: DDR4 2800 32G(8G*4)
主板: GIGABYTE X99-UD4
显卡: GTX Titan X
硬盘: SSD+普通硬盘
系统和软件
操作系统: Ubuntu 14.04.3 x64
CUDA: 7.5
Anaconda 2.3
Theano 7.0
Keras 2.0
模型训练、推理是在本地、云端、移动端?
训练在本地,局域网集群服务器(来来会在云端),推理在移动端。
您的数据类型是图片、语音、文本、视频?
都有。
您的数据体量是?
看应用,语音小几十句,多几百句。图像小的几十张,多的话几万张更多。训练样本池就更多。
此应用是由您公司的人员完成开发,还是引入了外部合作伙伴?都引入了哪些外部合作伙伴?
语音思必驰,图像中科院计算所有合作开发算法。
在此应用开发中,企业内部的IT人员跟合作伙伴的分工、合作机制是?
ASR外部,语音材料样本数据。图像数据自备。
您选择合作伙伴的标准是?
行业口碑,成熟度,技术领先,性价比。
4. 您为什么选择这一开源框架
贵公司是否有建立自己的框架?您以何种形式使用开源框架?比如仅在训练过程中,还是在线服务阶段也部署了基于开源框架的应用?
目前主要在模仿,借鉴等尝试阶段。
您选择这些框架的原因?您考虑的因素有哪些?
您是否认为在这些方面,该框架都满足了您的需求?
性能更满足需求。
希望您思考:您认为该框架的局限性有哪些?您认为这些局限性该如何解决?
哪些框架您已经不再频繁使用?不再使用的原因有哪些?
什么情况下会选择别的框架?
根据您的了解,你们的同行,也在使用这些框架吗?是
除了当前大众熟知的框架,您还了解哪些小众但有价值的框架?
在Github,开源中国网站上有些非热门的框架,比如针对FPGA和DSP的开源框架。OpenMV的开源框架用于机器视觉。
Accord Framework/AForge.net一个.Net的机器学习和信号处理框架,是早前类似一个项目AForge.net的扩展。顺便说一下,“信号处理”这里是指一系列对图像和音频的机器学习算法,如图片无缝缝合或执行人脸检测。包含一组视觉处理算法;它作用于图像流(如视频),并且可用于实现移动对象的跟踪等功能。Accord还提供一个从神经网络到决策树系统的机器学习常见库。
您觉得这些开源框架未来的趋势如何?比如这些开源框架对您未来的产品/解决方案的价值如何?这些开源技术,在你们的产品、解决方案中是什么角色?重要性如何?
某些领域可能有用武之地。
5. 请介绍您的计算资源的选择和配置
您在训练阶段、以及推理阶段,分别的部署方式是:公有云,本地,移动端?
训练目前是本地,推理/解码在终端。
计算资源如内存配置,模型训练、推理阶段的加速方案-GPU/FPGA/ASIC、计算的精度等?
型号
NF5288M5(AGX-2)
高度
2U
GPU扩展
通过NVIDIA官方认证,支持8片NVIDIA® Tesla® NVLink™ V100/P100或8片PCIe P100/P40/P4等。
处理器
2颗Intel®Xeon® Skylake Gold/Platinum系列处理器
内存
6通道,最多2TB 2667MHz DDR4
存储
8个2.5寸U.2/SAS/SATA 2个板载M.2 PCIe & SATA
冷却
冗余热插拔系统风扇 风冷/气液混合冷却
电源
2个3000w PSU 80+铂金
尺寸
448W*87.5H*899.5D (mm)
工作温度范围
5 - 35°C/41°F - 95°F
最强性能,极致设计
AGX-2在2U空间容纳2颗最新的Intel Xeon Skylake处理器,8片全球最先进的GPU,即Volta架构V100,搭载NVLink 2.0这一全球最先进的GPU互联技术。 单机即可提供60TFlops的双精度计算能力与960TFlops的Tensor计算性能。
最高灵活,应用适配
AGX-2可提供5种GPU拓扑结构,可灵活配置1-4片业界最高速的100Gbps EDR HCA卡,不同的深度学习应用可采用 与之匹配的GPU拓扑,两者相得益彰,激发无限潜能。 最高带宽,最低延迟 AGX-2 8颗GPU中的任意2颗均可实现P2P通信,通过全球最先进的GPU互联技术NVLink 2.0,支持高达50GB/s的 P2P带宽。
该加速方案为您带来了多少倍的效率提升?
看对比方案,如果和自建GPU相比,训练效果提升非常大。推理端类似。
6. 请介绍您使用过的算法以及效果
您认为该算法是否适用于当前的应用场景?效果如何?现在是否达到了稳定部署的阶段?
l 语音识别:HTK,Kaldi
l 图像识别:Tensorflow,RCNN,FCNN
l NPL:OpenNPL,NLTK
DNN深度神经网络,效果一半,部署还有待改善。
您认为该框架对算法的支持程度如何?哪些方面需要改进?
编译速度不够快,问题不好排查。
您对算法、模型有哪些新的需求?
您通常通过哪些渠道去了解最新的算法趋势?从哪些渠道了解的算法会驱动您自己去试用、测试?
行业峰会,沙龙,技术论坛,供应商洽谈。从上游企业或机构的算法等信息会更重视,或许试用测试。
7. 您所开发的应用是处于实验研究阶段,还是已经在工业部署阶段?
如果是实验研究阶段,您认为该应用的商业化潜力如何?现在处于商业化进程的哪个阶段?
将这一应用落地的挑战有哪些?您认为哪些举措能帮助您将这些应用落地?
中期吧。落地挑战包括训练算法算力提升;需求方面是要解决用户痛点,应用场景去伪存真;边缘推理对处理器性价比要求,也是影响应用落地因素之一。
8. 您开发AI应用,面临的最大挑战是什么?
总体来讲,您认为AI开发过程中的挑战都有哪些?
算法和算力相对数据更多挑战;深度学习的原理还是不同于人类认知,有待进步突破。
您觉得在开发AI应用的过程中,可以怎样帮到您?例如,提供某些资源,提供何种开发环境、开发者支持等。
1.数据获取;2.快速业务整合能力 3.推理端不同平台适配
从整个流程上来讲,比如说数据准备,比如说更完善的开发工具,比如说某些方面的人才紧缺,或者说计算资源的成本,您希望从哪些方面获得支持和帮助?
1. 开发工具需要更高效率,缩短编译时间,支持更多的神经网络模型,bug调试与帮助系统,扩展性和商业支持。
2. 人才缺失紧缺,目前采用实习生来承担开发
3. 计算资源成本高,需要充分利用固定资产价值。
9. 您未来是否有针对这一AI应用持续开发的计划?
如果有,未来计划在哪些方面改进?
l 把已有的技术平台化,标准化
l 算法和算力的研发和提升,降成本
l 开拓新应用,比如物联网融合,营养健康,机器人等
***************************************************************************
主流深度学习框架对比
2017年06月21日 13:37:41 阅读数:1687
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录
l Theano & Ecosystem
l Torch
l Tensorflow
l Caffe
l CNTK
l DSSTNE
l Speed
l DL4J: Why the JVM?
l DL4S: Deep Learning in Scala
l Machine-Learning Frameworks
l Further Reading
Theano 与生态系统
深度学习领域内的很多学术研究人员依赖于 Theano,这个用 Python 编写的框架可谓是深度学习框架的老祖宗。Theano 像 Numpy 一样,是一个处理多维数组的库。与其他库一起使用,Theano 很适合于数据探索和进行研究。
在 Theano 之上,已经有很多的开源的深度库建立起来,包括 Keras、Lasagne 和 Blocks。这些库的建立是为了在 Theano 偶尔的非直觉界面上更简单地使用 API。(截止到 2016 年 3 月,另一个与 Theano 相关的库 Pylearn2 可能即将死亡。)
相反,Deeplearning4j 能在 JVM 语言(比如,Java 和 Scala)下将深度学习带入生产环境中,创造出解决方案。Deeplearning4j 意在以一种可拓展的方式在并行 GPU 或 CPU 上将尽可能多的环节自动化,并能在需要的时候与 Hadoop 和 Spark 进行整合。
优缺点
(+)Python+Numpy
(+)计算图是很好的抽象
(+)RNN 完美适配计算图
(-)原始 Theano 在某种程度上有些低水平
(+)高层次 wrappers(Keras,Lasange)减轻了这种痛苦
(-)错误信息没有帮助
(-)大型模型有较长的编译时间
(-)比 Torch 更「臃肿」
(-)对预训练模型支持不佳
(-)在 AWS 上有很多 bug
Torch
Torch 是一个用 Lua 编写的支持机器学习算法的计算框架。其中的一些版本被 Facebook、Twitter 这样的大型科技公司使用,为内部团队专门化其深度学习平台。Lua 是一种在上世纪 90 年代早期在巴西开发出来的多范式的脚本语言。
Torch 7 虽然强大,却并未被基于 Python 的学术社区和通用语言为 Java 的企业软件工程师普遍使用。Deeplearning4j 使用 Java 编写,这反映了我们对产业和易用性的关注。我们相信可用性的限制给深度学习的广泛使用带来了阻碍。我们认为 Hadoop 和 Spark 这样的开源分布式应该自动具备可扩展性。我们相信一个商业化支撑下的开源框架是保证工具有效并建立一个社区的合适解决方案。
优缺点
(+)很多容易结合的模块碎片
(+)易于编写自己的层类型和在 GPU 上运行
(+)Lua(大部分库代码是 Lua 语言,易于读取)
(+)大量的预训练模型
(-)Lua(小众)
(-)你总是需要编写自己的训练代码(更不能即插即用)
(-)对循环神经网络不太好
(-)没有商业化支持
(-)糟糕的文档支持
TensorFlow
谷歌创造 TensorFlow 取代 Theano,其实这两个库相当类似。Theano 的一些创造者,比如 Ian Goodfellow 在去 OpenAI 之前就是在谷歌打造 TensorFlow。
目前,TensorFlow 还不支持所谓的「inline」矩阵运算,但会强迫你按序 copy 一个矩阵,并在其上进行运算。copy 大型矩阵非常耗费成本,相比于其他先进的深度学习工具 TensorFlow 要花费 4 倍的时间。谷歌说他们正在解决这个问题。
像大部分深度学习框架一样,TensorFlow 在 C/C++ 引擎之上使用 Python API 编写,从而加速其运行。对 Java 和 Scala 社区而言,它并非一个合适的解决方案。
TensorFlow 不只是面向深度学习,也有支持强化学习和其它算法的工具。
谷歌开放 TensorFlow 的目标看起来是想吸引更多的人,共享他们研究人员的代码,标准化软件工程师进行深度学习的方式,并吸引他人对谷歌云服务的兴趣——TensorFlow 针对谷歌云服务进行了优化。
TensorFlow 并非商业支持下的,而且看起来谷歌也不可能成为支持开源企业软件的企业。它只为研究者提供新工具。
如同 Theano,TensorFlow 生成一个计算图(比如一系列矩阵运算,像 z=Simoid(x), 其中 x 和 z 都是矩阵)并进行自动微分。自动微分很重要,因为每次实验一个新的神经网络的时候,你肯定不想手动编写一个反向传播新变体的代码。在谷歌的生态系统中,计算图后来被 Google Brain 使用进行一些繁重工作,但谷歌还未开源其中一些工具。TensorFlow 只是谷歌内部的深度学习解决方案的一半。
从企业的角度来看,一些公司需要考虑的是他们是否想依赖谷歌的这些工具。
Caveat:在 TensorFlow 中的所有运算并不都像在 Numpy 中一样。
优缺点
(+)Python+Numpy
(+)计算图抽象,如同 Theano
(+)比 Theano 更快的编译速度
(+)进行可视化的 TensorBoard
(+)数据和模型并行
(-)比其它框架慢
(-)比 Torch 更「臃肿」;更神奇;
(-)预训练模型不多
(-)计算图是纯 Python 的,因此更慢
(-)无商业化支持
(-)需要退出到 Python 才能加载每个新的训练 batch
(-)不能进行太大的调整
(-)在大型软件项目上,动态键入易出错
Caffe
Caffe 是一个知名的、被普遍使用的机器视觉库,其将 Matlab 的快速卷积网接口迁移到了 C 和 C++ 中。Caffe 不面向其他深度学习应用,比如文本、声音或时序数据。如同其他框架一样,Caffe 选择 Python 作为 API。
Deeplearning4j 和 Caffe 都能用卷积网络进行图像分类,都展现出了顶尖水平。相比于 Caffe,Deeplearning4j 还提供了任意数量芯片的并行 GPU 支持,以及许多可使得深度学习在多个并行 GPU 集群上运行得更平滑的看起来琐碎的特征。Caffe 主要被用于作为一个托管在其 Model Zoo 网站上的预训练模型的源。Deeplearning4j 正在开发一个能将 Caffe 模型导入到 Spark 的解析器。
优缺点:
(+)在前馈网络和图像处理上较好
(+)在微调已有网络上较好
(+)不写任何代码就可训练模型
(+)Python 接口相当有用
(-)需要为新的 GPU 层编写 C++/CUDA
(-)不擅长循环网络
(-)面对大型网络有点吃力(GoogLeNet,ResNet)
(-)不可扩展
(-)无商业化支持
CNTK
CNTK 是微软的开源深度学习框架,是「Computational Network Toolkit(计算网络工具包)」的缩写。这个库包括前馈 DNN、卷积网络和循环网络。CNTK 提供一个 C++ 代码上的 Python API。虽然 CNTK 有一个许可证,但它还未有更多的传统许可,比如 ASF2.0,BSD,或 MIT。
DSSTNE
亚马逊的 Deep Scalable Sparse Tensor Network Engine(DSSTNE)是一个为机器学习、深度学习构建模型的库。它是最近才开源的一个深度学习库,在 TensorFlow 和 CNTK 之后才开源。大部分使用 C++ 编写,DSSTNE 似乎很快,尽管它如今没有其它库那样吸引大量关注。
(+) 处理稀疏的编码
(-) 亚马逊可能不会共享要得到其样本的最好结果所必需的所有信息
Speed
Deeplearning4j 使用 ND4J 执行的线性代数计算展现出了在大型矩阵相乘上的至少比 Numpy 快两倍的速度。这也是为什么我们的 Deeplearning4j 被 NASA 喷气推进实验室里的团队采用的原因之一。此外,Deeplearning4j 在多种芯片上的运行已经被优化,包括 x86、CUDA C 的 GPU。
尽管 Torch7 和 DL4J 都可并行,但 DL4J 的并行是自动化的。也就是说,我们对工作节点和连接进行了自动化,在 Spark、Hadoop 或者与 Akka 和 AWS 上建立大规模并行的时候,能让用户对库进行分流。Deeplearning4j 最适合于解决特定问题,而且速度很快。
为什么要用 JVM(Java 虚拟机)?
我们常被问到我们为什么要为 JVM 实现一个开源深度学习项目,毕竟现在深度学习社区的相当大一部分的重点都是 Python。Python 有很好的句法元素(syntactic elements)让你可以不用创建明确的类就能进行矩阵相加,而 Java 却需要这么做。另外,Python 还有丰富的科学计算环境,带有 Theano 和 Numpy 这样的原生扩展。
但 JVM 及其主要语言(Java 和 Scala)也有一些优势。
首先,大部分主要的企业和大型政府机构严重依赖于 Java 或基于 JVM 的系统。他们已经进行了巨大的投资,他们可以通过基于 JVM 的人工智能利用这些投资。Java 仍然是企业中使用最广泛的语言。Java 是 Hadoop、ElasticSearch、Hive、Lucene 和 Pig 的语言,而这些工具正好对机器学习问题很有用。另一种 JVM 语言 Scala 也是 Spark 和 Kafka 的编程语言。也就是说,许多正在解决真实世界问题的程序员可以从深度学习中受益,但它们却被一些语言上的障碍隔开了。我们想要使深度学习对许多新的受众更有用,让他们可以直接将其拿来使用。在全世界 1000 万开发者中,他们使用得最多的语言就是 Java。
第二,Java 和 Scala 实际上比 Python 更快。任何使用 Python 本身写成的东西——不管其是否依赖 Cython——都会更慢。当然啦,大多数计算成本较高的运算都是使用 C 或 C++ 编写的。(当我们谈论运算时,我们也考虑字符串等涉及到更高层面的机器学习过程的任务。)大多数最初使用 Python 编写的深度学习项目如果要被投入生产,就不得不被重写。Deeplearning4j 可以依靠 JavaCPP 来调用预编译的原生 C++,这能极大地加快训练速度。许多 Python 程序员选择使用 Scala 做深度学习,因为当在一个共享代码基础上与其他人合作时,他们更喜欢静态类型和函数式编程。
第三,虽然 Java 缺乏稳健的科学计算库,但把它们编写出来不就好了,这个我们可以通过 ND4J 完成。ND4J 运行在分布式 GPU 或 CPU 上,可以通过 Java 或 Scala API 接入。
最后,Java 是一种安全的、网络的语言,本身就能在 Linux 服务器、Windows 和 OS X 桌面、安卓手机和使用嵌入式 Java 的物联网的低内存传感器上跨平台工作。尽管 Torch 和 Pylearn2 可以通过 C++ 优化,但其优化和维护却比较困难;而 Java 是一种「一次编程,到处使用」的语言,适合那些需要在许多平台上使用深度学习的公司。
生态系统
Java 的普及只能通过其生态系统加强。Hadoop 是用 Java 实现的;Spark 在 Hadoop 的 Yarn 运行时间内运行;Akka 这样的库使得为 Deeplearning4j 构建分布式系统是可行的。
总的来说,Java 拥有经过了高度检验的基础设施,拥有大量各种各样的应用,而且使用 Java 编写的深度学习网络也能与数据保持紧密,这可以让程序员的工作更简单。Deeplearning4j 可作为一种 YARN 应用而运行和供应。
Java 也可以从 Scala、Clojure、Python 和 Ruby 等流行的语言中被原生地使用。通过选择 Java,我们能尽可能最少地排除主要的编程社区。
尽管 Java 并不如 C/C++ 快,但其比其它语言快得多。而且我们已经构建一种可以通过加入更多节点来进行加速的分布式系统——不管是用 CPU 或是 GPU 都可以。也就是说,如果你想要更快,就加入更多卡吧!
最后,我们正在使用 Java 为 DL4J 开发 Numpy 的基本应用(包括 ND-Array)。我们相信 Java 的许多缺点可以被很快地克服,而它的许多优点也还将继续持续一段时间。
SCALA
在开发 Deeplearning4j 和 ND4J 的过程中,我们对 Scala 给予了特别的关注,因为我们相信 Scala 有望变成数据科学的主导语言。使用 Scala API 为 JVM 编写数值计算、向量化和深度学习库能推动该社区向这一目标迈进。
要真正理解 DL4J 和其它框架之间的差异,你必须真正试一试。
机器学习框架
上面列出的机器学习框架更多是专用框架,而非通用机器学习框架,当然,通用机器学习框架也有很多,下面列出几个主要的:
sci-kit learn:Python 的默认开源机器学习框架
Apache Mahout:Apache 上的旗舰机器学习框架。Mahout 可用来进行分类、聚类和推荐。
SystemML:IBM 的机器学习框架,可用来执行描述性统计、分类、聚类、回归、矩阵分解和生存分析(Survival Analysis),而且也包含支持向量机。
Microsoft DMTK:微软的分布式机器学习工具包。分布式词嵌入和 LDA。
标签: #opencl实现lda算法 #htkubuntu安装