tinydl.exe是什么文件,tinydl一般占用网络多少

首页 > 数码 > 作者:YD1662024-06-08 00:14:18

tinydl.exe是什么文件,tinydl一般占用网络多少(1)

本文主要以一个Java工程师视角,阐述如何从零(无任何二三方依赖)构建一个极简(麻雀虽小五脏俱全)现代深度学习框架(类比AI的操作系统)。

本文主要以一个Java工程师视角,阐述如何从零(无任何二三方依赖)构建一个极简(麻雀虽小五脏俱全)现代深度学习框架(类比AI的操作系统)。这里的背景部分主要回答两个经常会碰到的灵魂之问:一、为什么要做;二、你做和别人做有什么区别?

为什么要写一个深度学习框架?

1.1. 学习拥抱AI

AI是大趋势,是长赛道,这次不一样。在双拐点下Javaer的困境需要转型适应这个变化。在之前的文章《关于AIGC在互动上的若干实践》的最后我讲了下感受:

近年来市场与技术环境出现了双拐点:一方面消费互联网的发展已经完全进入存量博弈时代增量红利不再,降本增效成为主旋律;另一方面AI技术的最新发展取得重大突破,在很多方面的效率和成本已经明显超越人类。 新时代新形势下也迫使像我这样的Javaer不得不去转型拥抱新技术。

对于技术上有两条新方向:一条以3D为代表的元宇宙相关技术,例如区块链,XR等技术的转型;另外一条是以大模型为代表的AI方向的转型。最近开始学习深度学习相关的东西,于是作为Java码农为了能看懂CNN,DNN,RNN等网络模型,现在还在恶补线性代数和微积分以及PyTorch。虽都说“人生苦短,我用python”,可是想通过看源代码,来学习深度学习框架的实现来了解原理的Javaer,Python天马行空的风格,确实让我觉得人生苦短(这里没有任何语言论战之意)。

大物理学家费曼说,“凡我不能创造的,我就不能理解 ”。我想他大概是对的吧,于是我也想试一试。

1.2. just for fun,向linux-0.01 致敬

1991年9月17日,21岁的芬兰学生林纳斯在网上发布了开源操作系统Linux-0.01[1],代码整洁,目录清晰。本着东施效颦的做法,我也特意将版本号成0.01, TinyDL-0.01(Tiny Deep Learning)[2], 也算向linux-0.01 致敬了。分享给对AI有兴趣Javaer,可以从底层工程角度了解深度学习的原理以及简单的实现,有兴趣的小伙伴可以一起相互学习。

2. 与别人的有什么不同?

深度学习框架有很多,比较多用python编写的(底层是C/C ) 例如 TensorFlow,PyTorch以及MXNet等。Java实现的深度学习框架比较知名的有两个:一个是DeepLearning4J[3]由于Eclipse开源社区维护, 还有一个DJL[4]是AWS的开源的深度学习 Java 框架。

DeepLearning4J是一个全栈的实现,过于复杂庞大的技术栈(65%Java 69.7w行,24%C ,3.4%Cuda等)且依赖过多复杂科学计算的三方库,显然很难通过代码来学习。

DJL只是一套面向深度学习的Java高层次的接口,并没有任何真正的实现,最终是运行在TensorFlow或PyTorch深度学习引擎上的。

TinyDL-0.01[5]如它的名字一样,是一个最小化实现的轻量级深度学习框架(Java实现)。相比与其他实现:1)极简,基本上零二三方依赖(为了不想引入Junit,我有了不写单测的理由了);2)全栈,从最底层的张量运算到最上层的应用案例,3)分层易扩展,每一层的实现都包括了核心概念和原理且层边界清晰。当然不足之处更明显:功能简陋性能较差。

TinyDL-0.01虽然只是一个tony级别的框架,但它尝试具有现代深度学习框架的基本特性(动态计算图,自动微分,多优化器,多类型网络层实现等),主打一个简单明了,主要用于入门学习使用。如果想通过看PyTorch等框架的代码来深度理解深度学习,那基本直接劝退。

一、整体架构

深度学习框架主要解决的是深度网络训练和推理的工程问题,包括多层神经网络组成的复杂性问题,大量的矩阵运算和并行计算的计算效率问题,以及支持在多个计算设备的扩展性问题等等。常用的深度学习框架包括:TensorFlow,由Google开发的开源框架;PyTorch,由Facebook开发的开源框架;MXNet,由Amazon开发的开源框架等等。经过多年的发展,它们的架构和功能都慢慢趋同,先看下一个现代深度学习框架的通用能力有哪些。

1. 深度学习通用架构是什么样的?

先来看下chatGPT是如何回答这个问题的:

tinydl.exe是什么文件,tinydl一般占用网络多少(2)

这里也具体参考当下最流行的深度学习框架PyTorch,大体分成四层(来自知乎):

tinydl.exe是什么文件,tinydl一般占用网络多少(3)

2. TinyDL的整体架构是什么样的?

TinyDL的秉承简洁分层清晰的原则,并参考了通用的分层逻辑,整体的结构如下:

tinydl.exe是什么文件,tinydl一般占用网络多少(4)

首页 12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.