- 博客(110)
- 收藏
- 关注
原创 从0构建深度学习框架——揭秘深度学习框架的黑箱
本文介绍了从零实现的轻量级深度学习框架Needle,其核心特点包括: 完整的自动微分系统:基于计算图实现反向传播,支持链式法则计算梯度 丰富的张量运算:包含元素级运算、矩阵运算等基本操作 多后端支持:可选择NumPy或自定义NDArray后端 神经网络组件:实现线性层、激活函数等基础模块 优化算法:支持SGD、Adam等常用优化器 Needle框架的设计目标不是替代主流框架,而是通过从零实现帮助开发者理解深度学习底层原理,特别是自动微分和计算图机制。框架代码结构清晰,适合作为学习深度学习核心原理的实践项目。
2025-12-07 20:53:42
946
原创 AI Agent 设计原则与最佳实践
关键信息提取:提取对话中的关键信息渐进式摘要:随着对话进行逐步更新摘要层次化摘要:按重要性层次组织摘要主题聚类:按主题对信息进行聚类压缩。
2025-12-05 19:24:14
942
原创 强化学习从入门到放弃 —— 跟着 OpenAI 学强化学习
简而言之,强化学习是关于智能体(agent)以及它们如何通过试错来学习的研究。它将这样一种理念形式化:对智能体的行为进行奖励或惩罚,会使它在未来更有可能重复或放弃该行为。强化学习方法近年来在多个领域取得了广泛的成功。例如:强化学习的主要角色是智能体和环境。环境是智能体所生活和交互的世界。在每一步交互中,智能体看到世界状态的(可能是部分的)观察,然后决定采取的行动。当智能体对环境采取行动时,环境会发生变化,但环境本身也可能自行变化。智能体还能从环境中感知到奖励信号,这是一个告诉它当前世界状态好坏的数字。智能体
2025-11-18 22:42:03
719
原创 从零实现 REINFORCE/GRPO —— 大模型推理强化微调实践
一文吃透:不依赖成熟 RL 库,如何实现 REINFORCE、REINFORCE-baseline 与 GRPO;数理推理模型的强化学习微调实践;训练/参考/采样模型的多卡调度。
2025-11-17 22:56:47
693
原创 手撸大模型的分布式训练:深刻理解大模型训练的“起飞”原理
仓库中的 parallel 目录提供了简洁而高效的分布式训练解决方案,通过桶式梯度同步和参数分片等技术,帮助开发者突破单设备限制,实现大规模语言模型的高效训练。无论是作为学习分布式训练原理的教学案例,还是作为实际项目中的性能优化工具,这个实现都具有很高的参考价值。如果你对分布式训练技术感兴趣,或者正在寻找优化大模型训练的方法,不妨亲自体验一下这个项目。项目的模块化设计和清晰注释,使其成为学习和应用分布式训练技术的理想资源。欢迎访问GitHub 仓库,探索更多关于 LLM 实现和优化的技术细节!
2025-11-17 22:52:16
933
原创 从0到1:揭秘LLM预训练前的海量数据清洗全流程
读完这篇文章,你将用监督微调(SFT)把一个 1.5B 规模的数学模型在 GSM8K 上的零样本推理正确率从,同时把输出格式遵循率从。我们将完整走通数据集下载、Prompt 架构、训练配置和评估方法,所有代码均来自本仓库 alignment 文件夹,保证可复现与透明。本文将深入剖析仓库中alignment模块,展示 SFT 的完整流程。
2025-11-17 22:46:17
810
原创 深入解析:使用 Triton 实现 Flash Attention2 - 让大模型训练飞起来
本文介绍了利用Triton框架实现Flash Attention2的方法,解决了传统注意力机制内存和计算效率低下的问题。文章首先分析了传统注意力机制的痛点:O(n²)的内存复杂度和频繁的内存访问导致长序列处理困难。Flash Attention2采用分块计算和在线更新策略,通过数学公式和流程图详细说明了其优化原理。重点讲解了基于Triton的核心实现,包括分块指针、在线softmax更新和主循环处理等关键代码逻辑,相比CUDA具有更高的开发效率和可读性。该方案显著降低了内存占用和计算复杂度,为大模型训练提供
2025-11-17 22:35:49
695
原创 从 1.56% 到 62.9%:SFT 推理微调优化实战
本文展示了如何通过监督微调(SFT)显著提升1.5B规模模型GSM8K数学推理能力,将零样本正确率从1.56%提升至62.9%,格式遵循率从18.9%提升到100%。关键点包括:采用R1风格模板强制结构化输出(<think>推理过程</think><answer>答案</answer>);只对回应部分计算损失;使用严格评估指标确保格式与答案正确性。文章提供了完整的可复现流程,涵盖数据准备、提示构造、训练配置和评估方法,所有代码均开放于alignment文件夹。
2025-11-16 14:48:48
589
原创 从 0 搭建 LLM 不再难!这个 PyTorch 项目帮你吃透大模型底层逻辑
摘要:GitHub开源项目llm-from-scratch提供了一套基于PyTorch的大语言模型(LLM)从零实现方案,专为教育设计。该项目特色包括:1)完全手工实现Transformer核心组件,包括注意力机制、归一化层等;2)集成了RMSNorm、RoPE等现代LLM技术;3)提供完整训练和推理流程;4)包含详尽的测试验证;5)中文文档支持。项目采用模块化设计,帮助开发者深入理解LLM底层原理,适合作为学习LLM的实践教程。通过该项目,用户可以从数据准备、模型训练到文本生成全流程实践LLM开发。项目已
2025-11-16 14:41:27
811
原创 深入解析:使用 Triton 实现 Flash Attention2 - 让大模型训练飞起来
这个优雅的算法不仅解决了传统注意力机制的内存瓶颈,更为大模型的训练和推理开辟了新的可能性。传统的注意力机制就像是一个极度健忘的读者:每次想要理解当前句子时,都需要把整本书的每一页都重新翻阅一遍,并且还要在桌子上摆满便签纸来记录每页的重要程度。欢迎在评论区分享你的经验和想法!Flash Attention2 的解决思路就像是一个聪明的图书管理员:与其把所有书页都摊在桌子上,不如一次只处理几页,并且巧妙地维护一个"重要性摘要"。:它提供了高级的抽象,让我们能够专注于算法逻辑,而不是底层的内存管理和线程同步。
2025-11-15 22:29:46
732
原创 从零实现 REINFORCE/GRPO —— 大模型推理强化微调实践
本文分享我从零实现的。模块,从零实现 REINFORCE、带基线的 REINFORCE 与 GRPO,把准确率稳定拉升到 63.4%,并把训练策略模型、参考模型与采样模型拆到不同 GPU 上高效协同。目标:设计严格且高召回的奖励函数,配合从零实现的策略梯度与 GRPO,逐步把 Qwen2.5-Math-1.5B 在 GSM8K 的 zero-shot 准确率提升到 63.4%。这里的“分组减均值”就是减少方差的经典做法:在一个小团队中,我们只关注“比团队平均更好/更差”的相对表现,从而让梯度更稳定。
2025-11-15 22:29:10
1097
原创 ubuntu交换caps和ctrl的方法
ubuntu交换caps和ctrl的方法对于一些用户(如Emacs党)来说,Ctrl键是一个经常需要使用的键,但是由于其位于键盘的两个角落,使用起来不是十分顺手。大小写锁定键Caps Lock在实际使用中并不是十分常用,大小写切换的功能可以通过配合Shift键完成,下面给出将Caps Lock键替换为Ctrl键的方法。方法在/etc/default/keyboard文件中添加XKBOPTIONS="
2017-03-23 20:32:38
3504
原创 ubuntu install google-pinyin
ubuntu google-pinsudo apt-get install fcitx-googlepinyinim-configClick through and select fcitx. Click through.Restart your computer. Click the keyboard in the top right corner. Press Configure Curren
2017-03-05 10:32:34
2730
转载 spacemacs latex
In theprevious post, I introduced several useful tips for editing LaTeX file using Vim. In a nutshell, there are shortcuts ( = and gq family), commands and plugins. In addition, I also introduced latex
2017-02-23 16:01:51
2563
原创 docker初探
本文以搭建 caffe,tensorflow,opencv,ubuntu-14.04-core docker镜像的过程,简要说明docker工作流和一些入门级知识.安装dockerlinux各发行版详细安装教程 https://docs.docker.com/engine/installation/linux/ubuntulinux/ ubuntu要求64位,内核版本高于3.10查看内核版本号un
2017-01-09 21:05:09
1291
原创 k近邻
K近邻是一种惰性分类算法,它不具有显示的学习过程,实际是使用数据集对空间进行划分来进行分类。算法有三要素:距离度量,k的选择,分类决策规则距离度量距离反应实例间的相似度。可以使用余弦距离或者 Minkowski 距离。cos distance实例 (x^1) 和 (x^2) 的 cos distance (L(x^1,x^2)=\frac{x^1*x^2}{|x^1||x^2|})Minko
2017-01-09 21:03:34
850
原创 朴素贝叶斯
朴素贝叶斯是基于贝叶斯定理和假设特征条件独立的分类方法。贝叶斯定理 (p(y|x)=\frac{p(x,y)}{p(x)}=\frac{p(y)*p(x|y)}{\sum_{y}{}p(y)*p(x|y)})条件独立 (p(X=x|Y=c_k)=\prod_{j=1}^{n}p(X^j=x^j|Y=c_k))朴素贝叶斯 (y=\arg \max_{c_k} \frac{p(Y=c_
2017-01-09 20:59:17
778
原创 感知机
感知机的学习目标在于求出分离数据的线性超平面,它是一个线性分类器,是神经网络和SVM的基础。感知机的定义感知机是一个二分类模型,假设对于输入向量X,输出Y满足 (Y\in { 1,-1 }).则对输入作如下预测 y=f(x)=sign(w*x+b)其中 (sign(x)) 为符号函数,(x \geq 0) 时返回1,否则返回-1. w叫权值向量,b为偏置。几何含义使用线性超平面w\*x+b
2017-01-09 20:55:12
501
原创 tensorflow examples
mnist之于机器学习,便如同hello world之于程序语言。code本文主要是代码汇总,不涉及具体理论。主要内容如下:1)线性回归2)logistic回归3)人工神经网络4)cnn5)双端lstm6)模型的保存和加载7)其他word2vechttps://github.com/fangpin/daily_programs/blob/master/python/tensorflow/wor
2017-01-09 20:51:56
2855
转载 Mac系统10.11及以上升级numpy、scipy等python包报错解决方案
发现一个问题。Mac系统自带的python无法更新第三方包numpy包,错误如下:Collecting numpyUsing cached numpy-1.10.2-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whlInstalling
2016-07-09 17:30:53
2371
原创 tensorflow MNIST机器学习入门
tensorflow MNIST机器学习入门MNIST数据集MNIST数据集的官网是Yann LeCun’s website。在这里,我们提供了一份python源代码用于自动下载和安装这个数据集。你可以下载这份代码,然后用下面的代码导入到你的项目里面,也可以直接复制粘贴到你的代码文件里面。import input_datamnist = input_data.read_data_sets("MNI
2016-06-30 14:48:46
9939
2
原创 mac 安装tensorflow
mac 安装tensorflow安装pip$ sudo easy_install pip # 如果还没有安装 pip安装virtualenv 创建一个隔离的容器sudo pip install --upgrade virtualenv接下来, 建立一个全新的 virtualenv 环境. 为了将环境建在 ~/tensorflow 目录下, 执行:$ virtualenv --system-si
2016-06-27 19:58:22
1922
转载 让 Terminal/vim 使用 Solarized 配色
让 Terminal/vim 使用 Solarized 配色2014年10月08日 ⁄ 综合 ⁄ 共 3820字 ⁄ 字号 小 中 大 ⁄ 评论关闭在终端里边启动vim,终端的配色会影响vim的配色;vim的配色是叠加到终端的颜色上的,所以很多时候对vim的配色都和设想的不一样。在线配色网址: http://bytefluent.com/devify/
2016-04-04 17:16:38
1315
转载 ubuntu14 配置java开发环境
怎样在Ubuntu 14.04中安装Java[日期:2014-09-11]来源:Linux中国 作者:Linux[字体:大 中 小]想知道如何在Ubuntu 14.04中安装Java?安装Java肯定是安装Ubuntu 14.04后首先要做的几件事情之一(见http://www.linuxidc.com/Linux/2014
2016-04-04 17:00:21
1189
原创 A implementation of a simple unix-like shell with pure c
A implementation of a simple unix-like shell with pure c#include #include #include #include #include #include #define MAXN 1000char* homePath,curPath[MAXN];char *newline="\n";char error_mes
2016-04-01 16:49:58
775
转载 lldb 和 gdb调试命令汇总
转自:http://lldb.llvm.org/lldb-gdb.htmlLLDB TO GDB COMMAND MAPBelow is a table of LLDB commands with the GDB counterparts. The built in GDB compatability aliases in GDB are also listed.
2016-03-28 23:07:56
1477
转载 ubuntu修改root密码
使用ubuntu的时候忘记了root密码该如何重置 先说进入grub的方法,ubuntu最近的版本默认进入grub的方法是刚开机的时候按住shift键。 我之前使用的版本ubuntu11.10修改root重置root密码的方法: #1、开机进入grub时(开机按住esc进入grub),用上下键移到第二行的恢复模式,按e(注意不是回车)
2016-03-28 18:06:11
484
原创 线段树代码整理
· 单点更新:最最基础的线段树,只更新叶子节点,然后把信息用PushUP(int r)这个函数更新上来o hdu1166敌兵布阵题意:O(-1)思路:O(-1)线段树功能:update:单点增减 query:区间求和/************************************************************************
2016-03-05 22:54:46
808
原创 tsp旅行商问题和高级搜索方法
一、 问题介绍中国邮递员问题tsp输入:中国144个城市数据输出:最短路径序列及路径长度1. 采用局部搜索算法实现2. 采用模拟退化算法实现二、 程序设计与算法分析1. 待解决的问题实际上是优化与组合优化问题。很多问题属于优化问题,或者可以转化为优化问题,如TSP问题,皇后问题等。2. 用一个城市的序列表示一个可能
2015-12-23 16:02:33
4383
原创 从皇后问题到图搜索
1. 采用递归策略实现N皇后问题,测试能够在短时间内找到解的最大N;2. 采用宽度优先算法实现N皇后问题,测试能够在短时间内找到解的最大N;3. 采用深度优先算法实现N皇后问题,测试能够在短时间内找到解的最大N。4. 利用位运算算法实现N皇后问题,测试能够在短时间内找到解的最大N。5. 采用爬山法实现N皇后问题,测试能够在短时间内找到解的最大N。
2015-12-08 18:45:49
1170
原创 [人工智能实践]爬山法,分支界限法求解皇后问题
皇后问题通常方法是回溯,但效率较低。另外一种方法是使用随机算法,利用分支界限法的思想作为启发函数。10000以内规模的问题效率不错。具体方法如下:用一维数组存储每一行所放皇后所在的列数,要保证所有皇后所在列均不同,只需要保证数组中无相同的值即可,也就是数组的值为一个n的全排列。因为随着n规模的增大,计算量增大的同时解的数目也增多,所以本算法采用随机生成的全排列来进行尝试。ru和rd
2015-09-30 14:27:35
1767
原创 poj 1077 八数码
用a*算法没有想到怎么优化每个节点状态需要复制上次状态的代价,导致tle。使用ida* ,但是bound上界是靠直观感觉,并没有想到合适的估算方法ida*// poj 1077 八数码 IDA*#include #include #include #include #include #include #include #include #include #inc
2015-09-24 12:15:22
668
原创 hdu 5430
hdu 5430 http://acm.hdu.edu.cn/showproblem.php?pid=5430#include #include #include #include #include #include #include #include #include #include #include using namespace std;int gcd(
2015-09-06 19:51:12
535
原创 hdu5428
Problem DescriptionThere is a sequence of n positive integers. Fancycoder is addicted to learn their product, but this product may be extremely huge! However, it is lucky that FancyCoder only ne
2015-09-05 23:31:26
783
原创 加密技术在信息安全领域的重要作用
方品101215401172015年6月24日加密技术在信息安全领域的重要作用随着信息科学技术的发展和近年来人们的安全意识和隐私意识逐步提高,大家也越来越关注网络中的信息安全问题。这其中密码编码学是对付各种安全威胁最强有力的工具,它能有效的保证数据的隐私性和和安全性,在近年来在信息安全领域被广泛使用。密码编码学要求很高的数学基础:群和域理论,计算复杂性和实时分析
2015-06-24 13:39:16
7178
原创 hdu5269 数据结构Trie
Memphis loves xor very musch.Now he gets an array A.The length of A is n.Now he wants to know the sum of all (lowbit(Ai xor Aj)) (i,j∈[1,n])We define that lowbit(x)=2k,k is the smallest integer sa
2015-06-13 22:30:42
778
原创 poj 1062 最短路
//// main.cpp// poj1062//// Created by Fangpin on 15/6/10.// Copyright (c) 2015年 FangPin. All rights reserved.//#include #include #include #include const int inf=0x6f6f6f6f;using name
2015-06-10 20:32:03
590
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅