The Luckiest
尖沙咀24 年冬,鲜有好消息,那段时间我经常因为家事请假,在多个城市间奔波 《进击的巨人》在我的高中生活中占据了很大的比重,所以当得知它即将环大陆上映时,我立刻把消息告知我的好朋友 有趣的是,那时我们都没办港澳通行证,而且因为期末考试还有托福上课的原因,能用来安排香港之行的窗口期只有短短的三天 换句话说,在我们把一切准备工作搞定后,还要每天刷新 imovies...
Reasoning AI - Llama.cpp 源码解析
Llama.cpp 源码解析 本文对 llama.cpp-release-b4371 的版本实现进行分析 llama.cpp 是一个轻量级的、用 C++ 编写的高效大模型推理引擎,旨在通过优化运行时性能来提供快速的推理速度,特别适用于运行大型语言模型(如 Meta 的 LLaMA)在不同硬件平台上的推理任务 具体来说,llama.cpp 是由社区开发并开源的一个项目,设计目标是使得 Llama 这类大型语言模型能够在没有专门硬件加速器(如 GPU)的情况下,在 CPU 上高效运行 llama.cpp 提供了一种统一的推理接口,允许不同的 LLM 遵循相同的 API 规范,同时行业内也大多采用 llama.cpp 的推理逻辑作为标准实现 张量运算llama.cpp 的张量运算的相关代码位于 ggml/ 文件夹下,完全使用 ggml 作为其底层的张量运算库 GGML 库GGML 是一个轻量且高效的张量库,主要用于机器学习模型的开发和训练 它在性能优化、资源管理以及跨平台支持方面具有优势,特别适合于需要高效计算但资源受限的场景 相比于大型框架,ggml...
Reasoning AI - Pre-train LLM 使用手册
Reasoning AI - Pre-train LLM 使用手册 此文不对 NLP 算法做过多解释,也不对各个工具的原理进行解释,主要是使用方式 Pre-train LLM 概览预训练的大语言模型(Pre-trained Large Language Model)是一种基于深度学习的 NLP 模型,它经过大规模文本数据的预训练,能够理解和生成自然语言文本 这些模型通常基于 Transformer 架构,通过处理海量的无监督文本数据,学习语义、句法和上下文关系 LLM 有以下三种工作原理: 自回归模型:持续预测下一个单词。例如 OpenAI 的 GPT 系列 自编码模型:掩盖部分文本,预测被掩盖的单词。例如 BERT 混合模型:结合两种方法,例如 Google 的 T5(Text-To-Text Transfer Transformer) 值得一提的是,现在常见且主流的 LLM 基本都是自回归模型 Decoder-Only 架构Decoder-Only 架构是 Transformer 模型的一种变体,主要用于自回归任务,如文本生成 与标准的 Transformer...
Gilgamesh
Gilgamesh 吉尔伽美什,见识过万物,足迹遍及天涯,遍尝人间苦乐,通晓一切真理 册亨民族中学2023 年夏,我组织了一场前往贵州册亨民族中学支教的活动,支教一共有两批人员,先后抵达并先后离开。但作为主要负责人的我,我在民族中学里生活了两周 仗着跟校长的关系,那几天我跟我的朋友们过起了舒爽的生活,我们 24h...
Michelangelo
Michelangelo 马克吐温曾说过,如果你是一个抱负不凡梦想登顶世界之巅的人,当你遇到米开朗基罗时,你会立刻陷入绝望 —— 你还能愚蠢到梦想与他争夺第一吗? MLsys/AIOps依稀记得最早接触 MLsys 是在大二下的时候,那时的我已经有了自己的学生一作顶会论文,可能是觉得自己还有精力吧,便开始钻研起了 MLsys 我属于是那种偏向工程性的,当时的第一反应是去把 Pytorch 的源代码看一遍,看看架构和设计模式啥的 啊,发现 Pytorch 根本看不懂 是对大二的我来说看不懂,那时的我欠缺太多的必要知识储备,换做现在如果有人跟我聊起 Pytorch 的架构和原理,我肯定能畅聊上几个小时 Pytorch 寄了,那就去看别的深度学习框架 Needle、minitorch、tinygrad 都是很轻量的深度学习框架,把这三个的源代码全部看了一遍后,我也变搞懂了深度学习框架的简易实现 当我再次回顾 Pytorch 的源码时,我发现已经可以做到畅读了 这是真的是一件很开心的事情 陈天奇在 CMU 录的那个 MLsys 公开课视频 ——...
LLM - A RAG impl based on modelscope and faiss
Before the blogI have used some useful LLM with RAG inferrence frameworks/software in the past, they were quite convenient and effective. Recently, I am working on a project that is closely related to both of these things, and I need to dive into the under implementation of LLM with RAG. That’s why I write this blog. Retrieval Augmented Generation (RAG) is a technology that assists a large language model (LLM) in generating answers by retrieving information from a data...
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...
以头抢墙尔
以头抢墙尔 穷其道者,殊途同归 无序2024.8.3 下午,我与高中密友再会,时隔一年未见,彼此交谈很多。 我找了一处歇息,自认为惬意,在 Youtube 上看起了 T1 与 Gen.G 的 LCK 夏季赛常规赛对决。 第一局 T1 很有赢面,却依旧输了 —— 我对此并不惊讶,而 Faker 赛后的自责与自残行为让我无言许久。 在高中密友的房间里游荡,发现了许多曾经的事物出现在眼前,想起了许多事。 沾灰的魔方、生锈的铁夹礼物、泛黄的亲笔信件以及曾经的复习资料…… 两年前的记忆涌现,两年前的回忆提醒着我大学两年的变化之大 我在脑中持续重播着这两年的“努力”,想着我当年多么“认真”地学习 C++,想着我当年多么“认真”地学习课外技术 渐渐地我重播多了,便真的认为我如今的成就是当年的“努力”带来的 然后自大自傲,然后“恃才傲物” —— 尽管也许并没有“才” 可这些我在乎的过往名利、 Faker 却不在乎,哪怕他已四冠加身,他依然渴望着下一个冠军,他不像一部分夺冠的职业选手一样登顶后过起悠闲日子,他始终保持着一线技术水平,无论他的队伍处于巅峰还是低谷。Faker 已然在 2022...
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...