自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 InternVL3-8B 量化

量化建议使用 hf 格式,因为笔者所使用的模型为基于 Github 格式微调过的,所以要先将其转为 hf 格式再量化。下面均以量化 InternVL3-8B-hf 为例,仅量化 LLM 模块,如需量化 LLM + VIT, 将。这里采用FP8 W8A8 + FP8 KV cache 的量化方案,注意这里的 ignore 的配置。InternVL 提供了两种模型权重的格式,包括和前几代权重格式一致的。下的文件拷贝过来,感觉脚本功能不完善。这里有个问题,转换后的。,修改 ds.map。

2025-11-05 09:34:27 710

原创 如何使用 VLMEvalKit评测VLM

VLMEvalKit 是专门用来评测大型视觉语言模型(LVLMs)的开源工具包。它对模型生成的结果有两种评测方式,一种是精确匹配,直接看模型答案和标准答案一样不一样;另一种是用另一个语言模型来提取答案,分析得更深入。本文以 Qwen2.5-VL-7B-Instruct 为例,介绍如何使用 VLMEvalKit。

2025-09-23 11:03:37 555

原创 火焰图初探

火焰图是由Brendan Gregg创建的层次数据可视化工具,用于分析软件的堆栈跟踪,以便快速准确地识别最频繁的代码路径。火焰图可以从许多不同的软件性能分析工具的输出生成,包括针对不同资源和事件类型的性能分析。本文从 CPU 性能分析开始,介绍如何生成、分析火焰图。

2025-08-11 09:22:00 772

原创 c++编译环境安装(gcc、cmake)

选择想要下载的版本,然后解压,查看 contrib/download_prerequisites 中的依赖。以我下载的 gcc-7.3.0 为例,

2025-08-07 19:25:11 375

原创 start of MNN

【代码】start of MNN。

2025-07-28 11:28:30 863

原创 FlashAttention 公式推导

这就是每个块softmax结果的递推过程了。有了当前的公式基础,我们可以开始FlashAttention的公式推导了。不难发现是我们上面推导的。是向量,且其余块的值都为。

2025-06-07 15:21:20 891 1

原创 Sanitizers

官方文档对每个点都有很详细的demo,可针对参考。Asan默认不会进行use-after-return 检测,需要设置ASAN_OPTIONS=detect_stack_use_after_return=1UBSan。

2025-05-20 11:15:42 1283

原创 手搓一个Transformer

本文来自. 一直以来,笔者对 transformer 的注意力机制、qkv的理解都浮于表面,当然也不是说我看完后理解有多深入,但确实加深了我对相关概念的理解,故搬运此文章,部分表述基于笔者的理解加以修改。手动制做一个Transformer来预测一个简单的序列,权重没有通过训练,而是手动分配。要完成这个Transformer,基本步骤为:1、选择一个任务2、设计模型3、设计位置嵌入和词嵌入矩阵4、设计一个transformer block。

2025-05-19 18:07:18 950

原创 gitlab迁移

需求:需要将A服务器上的 gitlab 迁移到B服务器上,均使用docker 部署。

2025-05-19 09:31:12 579

原创 vllm量化05—FP8 W8A8

本系列基于Qwen2.5-7B,学习如何使用,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。本文是该系列第6篇——FP8 W8A8。

2025-05-16 08:51:36 673

原创 vllm量化04—INT8 W8A8

本系列基于Qwen2.5-7B,学习如何使用,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。本文是该系列第4篇——INT8 W8A8。

2025-05-16 08:46:04 839 2

原创 vllm量化03—INT4 W4A16

本系列基于Qwen2.5-7B,学习如何使用,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。本文是该系列第3篇——INT4 W4A16。

2025-05-15 18:56:20 516

原创 vllm量化02—AWQ

本系列基于Qwen2.5-7B,学习如何使用,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。本文是该系列第2篇——awq量化。

2025-05-14 09:22:03 879

原创 vllm量化01—Qwen2.5-7B

本系列基于Qwen2.5-7B,学习如何使用,并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。本文是该系列第1篇——初始模型。同时简单介绍如何编译 vllm 和如何使用 lm_eval。

2025-05-14 09:13:46 1205

原创 AWQ量化

[那么引出问题:如何挑选这些显著权重?这里激活值就是与权重矩阵作matmul运算的输入值。但随之而来的问题是,权重中既有fp16的数据,也有int4的数据,这种混合精度数据类型会使得系统实施变得困难,需要一种方式来保护重要的权重,而不实际地将它们保留为fp16。作者提出的方式是scaling。

2025-05-08 16:50:26 1048

原创 量化基础03—Weights Packing and Unpacking

本文主要参考课程,B站视频带中文字幕(),官方视频带jupyter。quantization-in-depth 系列视频主要分为三个部分:1、介绍量化的概念,实现对称量化、非对称量化,基于对称量化实现逐层、逐通道、逐组量化2、实现自己的量化器并量化开源模型3、介绍weights packing 和 unpacking本文主要涉及第三部分。

2025-04-18 14:12:32 356

原创 量化基础02—构建自己的量化器

本文主要参考课程,B站视频带中文字幕(),官方视频带jupyter。quantization-in-depth 系列视频主要分为三个部分:1、介绍量化的概念,实现对称量化、非对称量化,基于对称量化实现逐层、逐通道、逐组量化2、实现自己的量化器并量化开源模型3、介绍weights packing 和 unpacking本文主要涉及第二部分。

2025-04-17 19:01:16 495

原创 量化基础01—量化的基础概念

量化是将模型中的高精度(如float32)权重和激活值转换为低精度数值(如int8)表示。

2025-04-17 09:23:43 1236

原创 Gitlab CI/CD

Gitlab CI/CD是嵌入在Gitlab中的一套工具。CI:每次将代码改动push到仓库远程分支时,执行pipeline script来build, testCD:每次将代码改动push到仓库远程分支时,人工(delivery)或自动(deployment)将成果物发布到对应环境。

2025-04-15 11:12:23 400

原创 Docker内运行CICD

在Docker内运行CICD有两种方式:一是CICD运行和gitlab-runner在同一个docker内,这种方式适合不同的CICD任务环境配置相同。二是CICD运行和gitlab-runner不在同一个docker内。这种方式适合不同的CICD任务环境配置不同。这里介绍第二种方式。gitlab-runner执行在Docker内运行CICD的流程是:1、用指定的镜像创建容器2、拉取代码3、执行script。

2025-04-15 10:54:22 221

原创 code-server+nginx搭建

公司一批训练机器(N卡)不能连接外网,大家都是通过内部训练网站创建容器执行训练任务,但是由于跟本地开发网络不同,没法对容器进行操作,也没法对训练任务进行调试。如图:于是调研了支持vscode远程服务的工具,包括和。

2025-03-22 10:25:23 706

原创 Continue使用本地模型

公司一批训练机器(N卡)不能连接外网,在这些机器上使用 docker + code-server + nginx 的方案能够在个人PC上通过网页访问训练机器的code-server,从而实现类似于vs-code的功能。实现了基础的代码开发、调试后,想着在这批机器上部署个AI代码大模型,提高编程效率。调研了一通后,选择 code-server + Continue + llama.cpp + Qwen2.5-Coder-1.5B 的部署方案。

2025-03-18 19:22:34 1624

原创 记一次gitlab 500

显示很多 IOError (unmapped file),于是百度搜了一下,有回答说是 docker shm 不足导致,修改docker compose 文件,shm设为512MB 就解决该问题了。于是在容器中 df -h /dev/shm 显示64M确实用完了。进到gitlab 容器中。

2025-03-03 19:53:15 482

原创 memcpy和memmove

memcpy()和memmove()函数的区别是在于对内存重叠的情况的处理。memcpy()对内存重叠不做任何处理,而memmove()在内存重叠时采用从尾部复制。以上,是官方的解释,也是各个博客的解释。肯定没问题。先贴一下两个函数的实现。void* memcpy(void*dest, constvoid*src, size_tn){ char*dp = dest; ...

2019-09-10 21:12:36 308

原创 finally的执行

finally       finally作为异常处理的一部分,只能在try/catch语句中,并且附带一个语句块,标识这段语句最终一定被执行,经常用在释放资源的情况下。       关于finally的执行顺序——JVM规范中有:如果try语句里面有return,那么先将值保存到局部变量中,然后执行finally...

2018-11-26 11:32:53 345

原创 final修饰符

final       用于声明属性不可变、方法不可重载、类不可被继承。  &

2018-11-25 11:27:56 200

原创 ReentrantReadWriteLock解析

通常我们用的 Synchronized 和 ReentrantLock 都是独占锁,即在同一时刻只有一个线程获取到锁。然而在有些业务场景中,我们大多在读取数据,很少写入数据。这种情况下,如果仍使用独占锁,效率将及其低下。针对这种情况,Java提供了读写锁——ReentrantReadWriteLock。读写锁允许同一时刻被多个读线程访问,但是在写线程访问时,所有的读线程和其他的写线程都会被阻塞。...

2018-08-28 18:14:49 1735

原创 ReentrantLock源码分析

       ReentrantLock比Synchronized提供了更加灵活的加锁方式,可中古段一个正则等待锁的线程,实现指定时间的获取锁,实现公平与非公平锁等。构造器及lock() //默认构造非公平同步器 public ReentrantLock() { sync = new NonfairSync(); } //可构造公平或非公平...

2018-08-18 21:45:05 403

原创 Java的Object类的源码分析

Object类是Java中所有类的父类,所以对其的认识是十分重要的。下面是我对Object类中个方法的认识(结合了代码中的注释以及看过的一些书)public class Object { //其主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。函数的执行是在静态代码块中执行的,在类首次进行加载的时候执行。 private stati...

2018-08-07 11:40:40 3965

原创 String、StringBuilder、StringBuffer

StringBuilderStringBuilder的构造器,无论是默认的无参构造器,或是指定容量的,或是指定字符串的,最终都是继承自AbstractStringBuilder的构造方法。 AbstractStringBuilder(int capacity) { value = new char[capacity]; }主要看一下append()方法 ...

2018-08-06 10:47:32 164

翻译 RDMA介绍

这是对这篇文章的大致翻译:zcopy.wordpress.com/2010/10/08/quick-concepts-part-1-%E2%80%93-introduction-to-rdma/What is RDMARDMA is Remote Dynamic Memory Access which is a way of moving buffers between two app...

2018-07-27 17:58:48 3819

原创 和为S的连续正数序列 剑指offer

题目描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序  /** * 思路1:针对序列起始数字。 * 从start=1开始循环,假设序列的起始数字为start,那么用S逐渐减去start,start+1,star+2.... * 最后S会为0。若S最后为0,则说明以该start开始的序列是和为S的连续序列...

2018-07-23 15:43:48 218

原创 HashMap的put操作及扩容函数的源码分析 1.8

put操作步骤:  1、检查桶数组,如果数组为空,初始化HashMap;否则,执行2  2、根据带插入的key的hash找到在数组中的索引,如果该位置为空,直接插入;否则,执行3  3、根据该位置下的结构是链表或者红黑树选择相应的插入方式。红黑树的插入涉及去了解红黑树就知道了。链表的插入是在尾部插入。PS:HashTable的链表插入是在头节点插入,这也是两者不同之处。 fin...

2018-07-23 09:11:10 716

原创 二叉树的遍历

package algorithms;import util.TreeNode;import java.util.*;public class BinaryTree { ArrayList<TreeNode> list = new ArrayList<>(); /** * 二叉树的递归前序遍历: * 如果根节点为空,什么...

2018-07-23 08:54:44 171

原创 KMP算法

参考文档: http://jakeboxer.com/blog/2009/12/13/the-knuth-morris-pratt-algorithm-in-my-own-words/ http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html字符串模式匹配      ...

2018-07-18 22:48:05 331

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除