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 不同,Deco ...
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 source.
modelscope an ...
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 们打完招呼后,便独自一人撑着伞来到了华农的后山处。
找到了一条小道,一边是古朴的亭楼、一边是洒着阳光的小山包,双向二车道的泊油路一直通向池塘,我在人行道上踩着树叶,心中却很是焦躁。
为什么焦躁,无非是作业没写好、考试没考好、知识没学懂、刚刚那帮高中的朋友太聒噪罢。
深吸一口气,我试图用长呼吸来减缓我的焦虑,但似乎不是很见效。
泊油路上的人变多了,是赶上下课了吗? 我看着他们的精神面貌,有的背着书包蹦蹦跳跳 —— 也许是大一新生、有的悠闲、有的面容紧锁。
我突然想到我高中班主任提到的一个理论,你可以从脚步上区分高一和高三的学生。
那也许也可以从精神面貌上区分大一和大四的学生?
大四的学生精神面貌是怎么样的呢? 我开始幻想起来 —— 我失败了,因为 ...