Awesome Open Source
Awesome Open Source
                      _   ___ ___                   ___        _   
                     /_\ |_ _/ _ \ _ __  ___ _ _   | __|_ _ __| |_ 
                    / _ \ | | (_) | '_ \/ -_) ' \  | _/ _` (_-<  _|
                   /_/ \_\___\___/| .__/\___|_||_| |_|\__,_/__/\__|
                                  |_|                              

目录结构

  • data:数据:数据集、数据区块链、数据采集方法(Hadoop、Spark等)。

  • algorithm:算法:包括监督/无监督学习、深度学习、训练框架、模型、迁移学习、联邦学习、强化学习等。

  • power:算力:GPU、TPU、OpenStack、K8S、docker等。

  • applications:AI应用:各行业应用,如自动驾驶、人脸识别、声纹提取和识别、语音处理、知识图谱、自然语言处理(NLP)等。

  • others:一些未分类的资源,学习资源(包括深度学习、区块链、node.js、go、python编程语言等)。


目录导航


            _   ___ ___                    ___                  _            
           /_\ |_ _/ _ \ _ __  ___ _ _    / _ \__ _____ _ ___ _(_)_____ __ __
          / _ \ | | (_) | '_ \/ -_) ' \  | (_) \ V / -_) '_\ V / / -_) V  V /
         /_/ \_\___\___/| .__/\___|_||_|  \___/ \_/\___|_|  \_/|_\___|\_/\_/ 
                |_|                                                  

内容目录


AIOpen简介

(↑返回目录)

AIOpen是一个按人工智能三要素(数据算法算力)进行AI开源项目分类的汇集项目,项目致力于跟踪目前人工智能(AI)的深度学习(DL)开源项目,并尽可能地罗列目前的开源项目,同时加入了一些曾经研究过的代码。通过这些开源项目,使初次接触AI的人们对人工智能(深度学习)有更清晰和更全面的了解。

AI(人工智能)包括目前比较热门的深度学习、机器学习和与机器智能相关的技术。总体来说,人工智能包含了机器学习,机器学习包含了(神经网络)深度学习。它们之间的关系如下图:


AI三要素

(↑返回目录)

人工智能的三要素:数据(data)、算法(algorithm)和算力(computing power);三者之间的关系如下图:

  • 数据(data):包括了数据集、数据获取(数据爬虫、数据区块链等)、数据存储、数据集群等;数据按来源可以分为三种:

    • 来自政府、大公司(google、BAT等)自上而下的公共数据集,如:MNIST,ImageNet,Kaggle等。
    • 来自企业的非公开数据,属于数据孤岛。联邦学习可以使企业间数据不出库地训练模型,解决数据共享问题。
    • 使用区块链技术的自下而上的数据,如个人病例数据,个人基因数据,小企业数据,如果这方面技术成熟,DataBC(data blockchain:数据区块链)将是未来发展的方向。更多内容请访问:区块链技术
  • 算法(algorithm):包括了深度学习方法(DNN、CNN、RNN、LSTM、GAN、联邦学习、迁移学习、强化学习等)、训练框架(TensorFlow、Theano、Keras、Caffe、Touch等)、模型(VGG、RestNet等);

  • 算力(computing power):包括了基础设施(GPU、FPGA)、容器技术(Dockker、Kubernetes)、Openstack等;


AI开源全栈图

(↑返回目录)

下图是AI开源全栈图,本项目依据此图进行分类,每个分类均有对此分类的说明,请仔细阅读。


深度学习流程

(↑返回目录)

下图是深度学习工作流程:

典型案例分享

(↑返回目录)

1)数据

下图是大数据平台常见开源工具:

  • BDCloud BDCloud是使用Docker实现的Hadoop集群技术,目的是实现对终端设备的监控信息进行采集、处理、存储、分析。其流程是终端采集信息->django处理信息->Kafka->Flume->HDFS->Spark分析信息。

  • CDH CDH是Cloudera最成型的发行版本,拥有最多的部署案例。提供强大的部署、管理和监控工具。Cloudera开发并贡献了可实时处理大数据的Impala项目。拥有强大的社区支持,当出现一个问题时,能够通过社区、论坛等网络资源快速获取解决方法。

  • HDP HDP是Hortonworks公司的发行版,它使用了100%开源Apache Hadoop(不拥有任何私有、非开源代码)的唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元数据服务特性的提供商。并且,它们的Stinger开创性地极大地优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Server和Windows Azure在内的Microsft Windows平台上本地运行,相比于CDH只能运行在Linux系统中。

下图是CDH和HDP的特性比较:

2)算法

  • EcoSystem EcoSystem是Tensorflow的生态系统,通过ecosystem可以方便地使tensorflow与docker、hadoop、spark集成分布式计算。

  • Tensorflow on Yarn TonY(Tensorflow on Yarn)是LinkedIn的开源项目,允许用户在单个节点或大型 Hadoop 集群上构建基于 YARN 的 TensorFlow 应用程序解决方案。 TonY 的工作方式就像在 Hadoop 中的 MapReduce,执行 Pig 和 Hive 脚本的方法类似,为 TensorFlow 任务提供第一级支持。 TonY 由三个主要组件组成,客户端,ApplicationMaster 和 TaskExecutor。 它提供了 GPU 调度,精确资源请求,TensorBoard 支持和容错的四个主要功能。

  • Spark on Yarn 一般的Spark部署模式是Spark的standalone运行模式。在Spark的生产环境中,主要部署在Hadoop集群中,是以Spark On YARN模式运行,依靠yarn来调度Spark,比默认的Spark运行模式性能要好的多。 Spark on Yarn分为client和cluster两种模式。

3)算力

  • 算力中心:

    • 硬件:

      • GPU服务器: 20台高性能的GPU服务器,包含60张GPU卡,1280G内存,95T空间
      • 服务器机架:500台2U刀片服务器架
      • 高性能服务器:40台高性能服务器,2304G内存,207T的空间
      • 交换机:10个以上的万兆交换机
    • 软件:

      • 资源池虚拟化软件系统(OpenStack)
      • 网络管理系统
      • 监控软件系统
  • 家用:

    • 硬件:
      • CPU:3.5 GHz Intel Core i7
      • 内存:128 GB HDDR 4 3000 MHz
      • 硬盘:3 TB Fusion Drive(1TB SSD + 2TB HDD)
      • GPU:4块 GTX 1080Ti
    • 软件:
      • Ubuntu16.04
      • anaconda2
      • tensorflow(1.3.0)
      • keras(2.1.4)

4)应用

  • 知识图谱 下图是知识图谱技术总览(包括AI技术):

术语解释

(↑返回目录)

A

AGI:Artificial General Intelligence,通用人工智能。 AI:Artificial Intelligence,人工智能。 Algorithm:人工智能算法,目前最主流的是深度学习。 Ambari:Apache Ambari是一个基于Web的工具,支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。 ANN:Artificial Neural Networks,人工神经网络 APU:Accelerated Processing Unit,加速处理器,是把CPU和GPU做到一块硅芯上。 Awesome:在Github上寻找好资源的关键字。比如:awesome deep learning, awesome blockchain等。 Auto Encoder:自动编码器,一种无监督学习方法

B

BC:Block Chain,区块链,是一种在多方无需互信的环境下,通过密码学技术让系统所有参与方协作,共同记录和维护一个可靠的、不可撤销的分布式数据块链的技术。 BDCloud:大数据云平台。https://github.com/bdcloud BPU:Brain Processing Unit, 大脑处理器。 BOTs:虚拟(聊天)机器人,是一种通过自然语言来模拟人类对话的程序。

C

Caffe:Convolutional Architecture for Fast Feature Embedding,是一种常用的深度学习框架,在视频、图像处理方面应用较多 Cassandra:是一套开源分布式NoSQL数据库系统。 它最初由Facebook开发,用于储存收件箱等简单格式数据。 CM:Cloudera Manager, 提供易用特性、易于升级和安装组件等最有价值的功能。CM也可以在几分钟之内建立集群主节点的高可用性(high availability)及其他功能,例如,Hive,Pig,Impala,Flume和Spark等。 CNN:Convolutional Neural Networks,卷积神经网络 CNTK:Computational Network Toolkit,微软开发的深度学习商业工具包。 CTC:Connectionist Temporal Classification。这个算法是用来解决时序类数据的分类问题。

D

DBN:Deep Belief Networks,深度置信网络 DL:Deep Learnging,深度学习 DNN:Deep Neural Networks,深度神经网络 Docker:容器 DPU:Deep learning Processing Unit, 深度学习处理器。

E

EcoSystem(tensorflow):Tensorflow的生态系统,通过ecosystem可以方便地使tensorflow与docker、hadoop、spark集成分布式计算。 ElasticSearch:是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 EEG:Event Evolutionary Graph,事理图谱,是一个事理逻辑知识库,描述事件之间的演化规律和模式。

F

Federated Learning联邦学习,通过该技术算法加密建造的模型,能够在较高程度保持数据完整性的同时,保障数据隐私。 Flume:一个分布式、可靠和高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写入各种数据接受方(可定制)的能力。 FPGA:Field-Programmable Gate Array,现场可编程门阵列

G

GAN:Generative Adversarial Networks,生成式对抗网络,一种最具前景的无监督学习方法 GDPR:General Data Protection Regulation,通用数据保护条例。 GMM:混合高斯模型 GPU:Graphics Processing Unit,图形处理器

H

Hadoop:是一个山寨google的分布式文件系统 Hazelcast:是一个高度可扩展的数据分发和集群的开源平台,提供了高效的、可扩展的分布式数据存储、数据缓存。 在分布式技术方面,Hazelcast提供了十分友好的接口供开发者选择,如Map,Queue,ExecutorService, Lock和Jcache。 HBase:建立在Hadoop文件系统之上的分布式面向列的数据库 HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),提供高吞吐量的数据访问,适合大规模数据集方面的应用。 HE:Homomorphic Encryption(同态加密),是一种加密形式,它允许对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。 Hive:基于Hadoop的一个数据仓库工具 HMM:隐马尔可夫模型 Hue:提供了Fusion Insight HD应用的图形化用户Web界面。Hue支持展示多种组件,目前支持HDFS、YARN、Hive和Solr。

I

Impala:是基于HDFS的SQL工具,cloudera开发,现开源。 IPFS:InterPlanetary File System,星际文件系统,是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。 IPNS:InterPlanetary Named System,是一个分布式的命名系统,将难于记忆的数据哈希值映射为易于记忆的字符串。这可以类比于域名与IP地址的映射关系。

K

Kafka:A Distributed Streaming Platform,是一种高吞吐量的分布式发布-订阅消息系统 K8S:Kubernetes Keras:是一款基于Tensorflow、Theano、CNTK为后端的深度学习高级框架 Kettle:是一个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。作为Pentaho的一个重要组成部分,现在在国内项目应用上逐渐增多。其数据抽取高效稳定。 KG:Knowledge Graph,知识图谱,旨在描述客观世界的概念、实体、事件及其之间的关系。 Kubernetes:容器集群

L

LSTM:Long Short-Term Memory,长短期记忆网络

M

MapReduce:提供快速并行处理大量数据的能力,是一种分布式数据处理模式和执行环境。 Matplotlib:基于Python的数据可视化工具 MFCC:梅尔倒谱系数 ML:Machine Learning,机器学习 MLP:多层感知器 MongoDB:NoSQL数据库 MSE:均方误差 MXNet:是亚马逊(Amazon)的深度学习库。

N

NLP: Natural Language Processing,自然语言处理,是人工智能(AI)的一个子领域。 NPU:Neural network Processing Unit,神经网络处理器。 Numpy:基于Python的基础数据工具

O

OpenStack:一个开源的云计算管理平台项目 Oozie:提供了对开源Hadoop组件的任务编排、执行的功能。以Java Web应用程序的形式运行在Java servlet容器(如:Tomcat)中,并使用数据库来存储工作流定义、当前运行的工作流实例(含实例的状态和变量)。

P

PCA:Principal Component Analysis,主成分分析 Pandas:Python Data Analysis Library,一个基于Python的数据处理工具 PySpark:一种基于Python的Spark编程接口 Python:一种解释型、面向对象、动态数据类型的高级程序设计语言 PyTorch:一个基于Python的深度学习框架

R

RBM:Restricted Boltzmann Machines,受限玻尔兹曼机 RL: Reinforcement Learning,强化学习 RNN:Recurrent Neural Networks,循环神经网络 ROS:Robot Operating System,是一个机器人软件平台 RPA:Robotic Process Automation,机器人过程自动化

S

Scala:是一门多范式的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。 Slim:Tensorflow的一个辅助工具 SNN:Spiking Neural Networks,尖峰神经网络/脉冲神经网络,是三代神经网络模型,属于计算神经科学,动物的神经网络大多是脉冲神经网络。 Spark:基于内存的分布式计算引擎 Solr:一个高性能,基于Lucene的全文检索服务器。Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文检索引擎。 Sqoop:是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库,学习使用Sqoop对关系型数据库数据和Hadoop之间的导入有很大的帮助。 Storm:基于流的分布式计算引擎

T

TFF:TensorFlow_Federated,tensorflow联邦学习。 TF-Slim:Tensorflow的一个辅助工具 Theano:用于深度学习的框架,基于Python Tensorflow :Google的一款用于深度学习的框架,基于Python TPU:Tensor Processing Unit,向量处理器,是google的一款高性能处理器

Y

Yarn:资源管理系统,它是一个通用的资源模块,可以为各类应用程序进行资源管理和调度。

Z

zookeeper:提供分布式、高可用性的协调服务能力。 帮助系统避免单点故障,从而建立可靠的应用程序。


参考资料

(↑返回目录)

优秀的全栈资源列表(有关 Deep Learning、Blockchain、BigData、Datasets、Python 等)

人工智能

机器学习和深度学习资料汇总

Building Deep Learning Applications for Big Data

使用 Pycharm + Docker,打造深度学习的炼丹炉

深度学习500问

Guide to Open Source AI: Projects, Insights, and Trends

迁移学习简明手册

人工智能标准化白皮书(2018)

深度学习教程【李宏毅】

Natural Language Processing

“世界模型”代码,实现无监督方式快速训练

区块链

区块链技术

2018中国区块链产业白皮书

企业以太坊客户端规范1.0

以太坊(Ethereum)白皮书

超级账本Hyperledger白皮书

区块链行业词典

区块链教程【黑马程序员120天全栈区块链开发开源教程】

大数据

大数据标准化白皮书(2018)

2018年中国大数据发展调查报告

其它

国密算法规范-SM2/SM3/SM4/SM9


联系我们

(↑返回目录)

欢迎任何反馈、建议和贡献


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
jupyter-notebook (6,321
deep-learning (3,991
docker (2,921
tensorflow (2,161
kubernetes (1,772
keras (773
ai (473
gpu (370
lstm (266
theano (76
blockchain-technology (38