DLsys - Needle 源码剖析
NEEDLE: Necessary Elements of Deep LEarning
Needle是一个微型的深度学习框架,是一个由 CMU 10-414/714 课程而提出的实验性质的框架。
该深度学习框架具备一个深度学习框架所需的基本要素,比如:以 CPU 和 CUDA 为后端的张量运算,动态计算图,模块化的神经网络编程组件,自动微分工具,经典模型实现等等。
笔者发现互联网上关于 Needle 的相关资料非常少,想着自己写一下源码剖析。
Needle 概览Needle 本质上是一个实验课的大作业,这里我给出一个完成品的参考实现
Needle 的代码框架如下图所示
12345678910Needle├── 3rdparty # 一些外部依赖库,如 pybind11├── CMakeLists.txt # Cmake 编译脚本文件├── LICENSE├── README.md├── apps # Needle 的案例演示├── data # 数据存放处├── figures # 相关图片├── ...
Pytorch - Tiny-cuda-nn 环境配置
Tiny-cuda-nn 环境配置Tiny-cuda-nn,一个轻量级的神经网络算子加速库,可用于 Pytorch 扩展
研究其代码后,发现其主要依靠 Pytorch 内置的 Cpp_extension 功能来编译为用户扩展算子。相关 Pytorch 特性可以查看下方链接
Pytorch 自定义 C++ 和 CUDA 扩展
下文介绍如何配置 Tiny-cuda-nn 环境
环境配置参照 Tiny-cuda-nn 环境配置官方文档
检查 CUDA 环境
首先检查全局 CUDA 环境是否安装,一般查看是否存在路径 /usr/local/cuda 即可
其次检查全局的 nvcc 编译器版本是否匹配,通过命令 nvcc -version 查看 nvcc 版本,与 CUDA 版本进行比对,确保大版本号一致
准备 Python 环境
依据官方文档,使用 Pytorch 的 2.0.0 版本,Python 版本无限制,此处以 Python 3.11 版本演示
123conda create -n env_name python=3.11conda activate env_namepip i ...
以头抢墙尔
以头抢墙尔
穷其道者,殊途同归
无序2024.8.3 下午,我与高中密友再会,时隔一年未见,彼此交谈很多。
我找了一处歇息,自认为惬意,在 Youtube 上看起了 T1 与 Gen.G 的 LCK 夏季赛常规赛对决。
第一局 T1 很有赢面,却依旧输了 —— 我对此并不惊讶,而 Faker 赛后的自责与自残行为让我无言许久。
在高中密友的房间里游荡,发现了许多曾经的事物出现在眼前,想起了许多事。
沾灰的魔方、生锈的铁夹礼物、泛黄的亲笔信件以及曾经的复习资料……
两年前的记忆涌现,两年前的回忆提醒着我大学两年的变化之大
我在脑中持续重播着这两年的“努力”,想着我当年多么“认真”地学习 C++,想着我当年多么“认真”地学习课外技术
渐渐地我重播多了,便真的认为我如今的成就是当年的“努力”带来的
然后自大自傲,然后“恃才傲物” —— 尽管也许并没有“才”
可这些我在乎的过往名利、 Faker 却不在乎,哪怕他已四冠加身,他依然渴望着下一个冠军,他不像一部分夺冠的职业选手一样登顶后过起悠闲日子,他始终保持着一线技术水平,无论他的队伍处于巅峰还是低谷。Faker 已然在 2022 和 20 ...
OS - 修复 Ubuntu 物理机下的 Nvidia 显卡驱动问题
写在前面
配置使用 Nividia 独显的 Ubuntu 物理机时遇到显卡驱动问题是 N 卡之魂的重要组成部分,用 N 卡用的,不可不品
本文仅针对 Ubuntu 开机卡在 /dev/nvme0n1p2: clean, xxxxx/xxxxxxx files, xxxxxx/xxxxxxxxx blocks,一直进入不了图形界面进行修复,这应该是 Ubuntu 系统中的Nvidia 显卡驱动掉了。在 Ubuntu 自动更新内核后,Nvidia 驱动常常会发生突然消失的现象。
解决的办法是重装 Nvidia 驱动。这个时候电脑上原来的 Nvidia 驱动还在,但是由于某种原因系统不能识别,导致无法工作,所以需要将之前的驱动重装。
进入 Ubuntu 系统界面
重启电脑,开机时按 shift,进入 grub 界面。
进入 grub 界面后,选中第一个 Ubuntu 选项,按 e 键进入 edit 操作。
发现有一段内容为 ro quiet splash $vt_handoff,将其修改为 rw quiet splash nomodeset $v ...
You're Carried By The Time.
You’re Carried By The Time.
如果有机会提前了解你的人生,知道青春也不过只有这些日子,不知你是否还有重来的勇气。
在华农的春天里2023 年的春天,我去了很多次华农 —— 那里有非常不错的春景,那里有让我开心的东西。
记得有一次是跟很多高中朋友一起去的,因为个人原因,我并不喜欢跟他 Ta 们待在一块,礼貌性地跟 Ta 们打完招呼后,便独自一人撑着伞来到了华农的后山处。
找到了一条小道,一边是古朴的亭楼、一边是洒着阳光的小山包,双向二车道的泊油路一直通向池塘,我在人行道上踩着树叶,心中却很是焦躁。
为什么焦躁,无非是作业没写好、考试没考好、知识没学懂、刚刚那帮高中的朋友太聒噪罢。
深吸一口气,我试图用长呼吸来减缓我的焦虑,但似乎不是很见效。
泊油路上的人变多了,是赶上下课了吗? 我看着他们的精神面貌,有的背着书包蹦蹦跳跳 —— 也许是大一新生、有的悠闲、有的面容紧锁。
我突然想到我高中班主任提到的一个理论,你可以从脚步上区分高一和高三的学生。
那也许也可以从精神面貌上区分大一和大四的学生?
大四的学生精神面貌是怎么样的呢? 我开始幻想起来 —— 我失败了,因为 ...
Pytorch - Pytorch Profiler Usage
此处演示如何使用 Pytorch Profiler
官方教程
pytroch Profiler位于torch.autograd.profiler, 目前支持的功能:
CPU/GPU 端 Op 执行时间统计
CPU/GPU 端 Op 输入Tensor的维度分析
Op 的内存消耗统计
使用环境 Python=3.11.6 torch=2.1.2+cu121
Import123import torchimport torchvision.models as modelsfrom torch.profiler import profile, record_function, ProfilerActivity
Resnet model以 resnet 为例。创建 resnet 模型实例,初始化一个 input
12model = models.resnet18()inputs = torch.randn(5, 3, 224, 224)
Using profiler in CPU12345678910111213141516import tor ...
DLsys - Terox DevLog-0
写在前面以下内容引用自 Minitorch Write Up,本博客相关的工程实现在 https://github.com/Tokisakix/Terox/。
大二上的时候,我就在构思怎么样去写一个类似 Pytorch 的软件。当时大概把三大学习都学的差不多了,就想着自己去实现一些 AI 的组件,渐渐的便想着去了解一下 Pytorch 的代码及其背后的运行原理,只可惜因为时间安排和自身能力的原因而不能立刻着手去学习。
期末后剑圣跟我说到华为那边编写深度学习框架底层算子的事情,寒假时间多了,那确实可以把这件事情捡起来。摸索后我发现国外有两个 Lab 可以来帮助学习深度学习框架,一个是 CMU 的公开课程,一个是 Minitorch。
CMU 的公开课程是 CMU 在 2022 年 9 月开设的一门课程,讲师是 J.Zico Kolter 和陈天奇。这是一门注重实践的课程,课后作业主要是逐步实现一个类似于PyTorch的深度学习框架(类似 Pytorch 和 TensorFlow)。
Minitorch是一个 Torch API 的纯 Python 重新实现,展示了从零开始构建一个张 ...
DLsys - Minitorch
写在前面大二上的时候,我就在构思怎么样去写一个类似 Pytorch 的软件。当时大概把三大学习都学的差不多了,就想着自己去实现一些 AI 的组件,渐渐的便想着去了解一下 Pytorch 的代码及其背后的运行原理,只可惜因为时间安排和自身能力的原因而不能立刻着手去学习。
期末后剑圣跟我说到华为那边编写深度学习框架底层算子的事情,寒假时间多了,那确实可以把这件事情捡起来。摸索后我发现国外有两个 Lab 可以来帮助学习深度学习框架,一个是 CMU 的公开课程,一个是 Minitorch。
CMU 的公开课程是 CMU 在 2022 年 9 月开设的一门课程,讲师是 J.Zico Kolter 和陈天奇。这是一门注重实践的课程,课后作业主要是逐步实现一个类似于PyTorch的深度学习框架(类似 Pytorch 和 TensorFlow)。
Minitorch是一个 Torch API 的纯 Python 重新实现,展示了从零开始构建一个张量和自动微分库。最终得到的库能够运行类 Torch 代码。项目创建者为康奈尔大学副教授(pre-tenure)Alexander Rush,这是一门硕士课 ...
做出选择就是成长的最大养分
恍惚之间我至今都记得我选择人工智能作为我未来方向的那个时刻
那是在 2022 年的五月份,我所在的那个高中 —— 惠州中学承办的一场高三生活动上。那个活动叫梦想胶囊,大意是即将奔赴高考的学子们将自己的梦想写进信封,信封会被校方留存在地下十年,十年之后再打开信封,让大家再回顾曾经的梦想…
那个活动被学生调侃为留着发霉的梦想,因为在那个时候有梦便是稀少,还闲的没事投入到这个活动中的人更是少之又少
很不巧,我就是投入其中的那个人,我至今都记得我信封上的内容 —— 那上面记下了我高考前对未来的畅想
刀剑神域刀剑神域的第三季的作者是这样子去培育人工智能的,先创造一个“光立方”,它可以模拟人脑的所有活动,然后创造一个虚拟的元宇宙世界,在这个世界中创造四个智能体,这四个智能体的光立方通过复制真人婴儿的人脑活动得到,于是我们有了一个模拟的人类世界和四个虚拟的人类婴儿
实现这个人工智能培育计划的组织叫做 RaTH,它们的工作人员进入到虚拟世界中,抚养那四个婴儿长大,然后便终止所有外界干涉,让这个原始人类社会自行发展
电信号的模拟是极快的,半年时间里人类社会已经演化了千年,里面的虚拟人类的行为已经跟正常人 ...
FPGA - 在 ZYNQ-ZYBO-Z710 开发板上运行 Ubuntu 23.04 LTS
FPGA - 在 ZYNQ-ZYBO-Z710 开发板上运行 Ubuntu 23.04 LTS本博客介绍如何使用 Petalinux 2022.4 在 Zynq ZC7010 开发板上安装 Ubuntu 23.04 LTS。以下说明将帮助您设置环境并成功在 Zynq ZC7010 开发板上安装 Ubuntu
前置准备在开始安装过程之前,请确保具备以下先决条件:
Zynq ZC7010 开发板
Petalinux 2020.1
Ubuntu 23.04 LTS 安装文件
SD 卡 (8GB 或更大)
能够运行 Linux 系统的主机(最好是 Ubuntu 系统)
Xillinx Vivado 2020.1,下载链接
Step1 - 配置软件
通过执行以下命令安装所需的依赖项:
123sudo dpkg --add-architecture i386sudo apt-get updatesudo apt-get install tofrodos iproute2 gawk gcc git make net-tools libncurses5-dev tftpd zlib1g-dev ...