![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AI
文章平均质量分 67
云帆@
自然语言处理工程师
展开
-
pageAttention学习
定义paged attention_v2 使用vllm 中 flash attention 代码xformer中flash attention 代码paged attention 、flash attention 比较nsight compute 分析paged attentionprofiler 分析paged attention二、实现定义paged attention_v2 使用vllm 中paged attention 是使用cuda 使用的,如下图。原创 2024-07-15 11:41:26 · 1117 阅读 · 0 评论 -
nsightcompute进阶
1 python 代码测试2 roofline analysis 屋檐模型分析3 summary 分析4 Speed of light throughput 分析5 带宽分析6 内存分析。原创 2024-07-12 14:57:56 · 1080 阅读 · 0 评论 -
python-torch加载c++与内核函数
python 在线加载.cu 文件python 加载.cu 文件方式2二、实现python 在线加载.cu 文件python 加载c++ 方法采用的是torch.utils.cpp_extension包的扩展方法。直接加载cu文件,则采用torch.utils.cpp_extension.load() 方法。"fused",sources=[],具体: fused_bias_act.cpp//scalar_t y;原创 2024-07-11 13:30:38 · 453 阅读 · 0 评论 -
模型优化Roof-line模型的使用
当模型的计算强度 I 大于计算平台的计算强度上限 Imax 时,模型在当前计算平台处于 Compute-Bound状态,即模型的理论性能 P 受到计算平台算力 π 的限制,无法与计算强度 I 成正比。当模型的计算强度 I 小于计算平台的计算强度上限 Imax 时,由于此时模型位于“房檐”区间,因此模型理论性能 P 的大小完全由计算平台的带宽上限 β (房檐的斜率)以及模型自身的计算强度 I 所决定,因此这时候就称模型处于 Memory-Bound 状态。---->计算、绘图。------>求模型的推理量。原创 2024-07-04 17:10:37 · 1103 阅读 · 0 评论 -
GGUF模型转换入门
1 定义2 案例。原创 2024-06-27 10:54:02 · 441 阅读 · 0 评论 -
llamafactory-llama3微调中文数据集
基准模型测试opencompass 离线测评数据准备微调训练合并测试人工审核对比。原创 2024-06-27 09:54:10 · 762 阅读 · 0 评论 -
强化学习-RLHF-PPO入门
强化学习微调分类RM模型 数据集格式训练流程Reward 模型训练流程(分类模型,积极为1,消极为0) AutoModelForSequenceClassificationReward 模型训练案例PPO模型训练流程PPO模型训练案例。原创 2024-06-25 20:12:41 · 477 阅读 · 0 评论 -
模型微调DPO入门
定义数据集格式llamafactory 训练案例入门文档阅读。原创 2024-06-25 14:49:09 · 594 阅读 · 0 评论 -
chatglm系列知识
prefixLM 是Encoder-Decoder模型的一个变型,在标准的encoder-decoder 中,encoder和decoder 各自使用一个独立的transformer。causal LM,因果语言模型,也成为自回归语言模型,根据之前生成的token预测下一个token,在生成文本时,模型只能根据已经生成的部分生成后续部分,不能访问未来的信息。prefix LM,前缀语言模型,在输入序列的开头添加一个可学习的任务相关的前缀,然后使用该前缀和输入序列一起生成输出。prefix LM 有前缀。原创 2024-06-24 19:50:17 · 1032 阅读 · 0 评论 -
ITREX大语言模型量化-优化工具
定义demo 案例。原创 2024-06-23 10:55:39 · 192 阅读 · 0 评论 -
llama系列模型学习
而使用强化学习方法,则可以通过定制奖励函数,将正确答案赋予非常高的分数,将放弃回答的答案赋予中低分数,将不正确的答案赋予非常高的负分,使得模型学会依赖内部知识选择放弃回答,从而在一定程度上缓解模型的幻觉问题。与Llama 1 一样,将所有数字拆分为单独的数字,并使用字节来分解未知的 UTF-8 字符。这主要原因是用于训练语言模型的大数据语料库在收集时难免会包含一些错误的信息,这些错误知识都会被学习,存储在模型参数中,相关研究表明模型生成文本时会优先考虑自身参数化的知识,所以更倾向生成幻觉内容。原创 2024-06-21 14:01:58 · 1211 阅读 · 0 评论 -
模型算子的理解与入门
对算子的理解算子检测指标与工具自定义cuda实现pytorch 算子(Taichi库、Numba库、Cupy库和PyTorch的cpp_extension模块)原创 2024-06-20 14:53:28 · 418 阅读 · 0 评论 -
awq激活感知权重量化
定义huggingface 格式量化案例 https://zhuanlan.zhihu.com/p/693348118awq 常用量化工具量化评估awq 量化加载方式。原创 2024-06-20 10:31:21 · 470 阅读 · 0 评论 -
llama-factory微调chatglm3
案例/多卡。原创 2024-06-19 16:06:32 · 528 阅读 · 0 评论 -
llama-factory微调工具使用入门
环境配置案例: https://zhuanlan.zhihu.com/p/695287607chatglm3 案例多卡训练deepspeedllama factory 案例Qwen1.5报错。原创 2024-06-19 16:03:31 · 1201 阅读 · 0 评论 -
onnx进阶算子优化
如何保证pytorch 模型顺利转为onnx. 前言pytorch 算子是如何与onnx 算子对齐的?Asinh 算子出现于第 9 个 ONNX 算子集。PyTorch 在 9 号版本的符号表文件中是怎样支持这个算子的?BitShift 算子出现于第11个 ONNX 算子集。PyTorch 在 11 号版本的符号表文件中是怎样支持这个算子的?算子在pytorch 中已经实现,onnx 算子也实现,缺少映射方法,自己注册,实现转换。自定义onnx 算子。构造onnx 模型,并测试。原创 2024-06-18 15:34:39 · 777 阅读 · 0 评论 -
模型部署onnx入门
1.定义2. 环境安装3. 案例4. 可视化界面5. 参考网址6. 推理引擎 onnx Runtime 进行单张图片推理,本地部署7. 推理引擎onnx Runtime 进行单张图片推理,调用摄像头获取画面8. 推理引擎onnx Runtime 进行图片推理,调用摄像头获取画面9. ModelInferBench 推理速度测试。原创 2024-06-18 11:27:35 · 691 阅读 · 0 评论 -
ollama模型CPU轻量化部署
ollama 定义环境部署demo加载本地模型方法基本指令关闭开启ollamaollama 如何同时 运行多个模型, 多进程ollama 如何分配gpu修改模型的存储路径。原创 2024-06-17 14:33:29 · 1315 阅读 · 0 评论 -
profiling模型性能分析与优化入门
profiler 作用入门pyproftorch.summary/torchinfo 模型参数量分析以及模型可视化profiling 参数分析-模型分析。原创 2024-06-12 14:51:50 · 482 阅读 · 0 评论 -
qwen-moe
qwen-moe 代码讲解, 代码qwen-moe与Mixtral-moe 一样, 专家模块qwen-moe 开源教程Mixture of Experts (MoE) 模型在Transformer结构中如何实现,Gate的实现一般采用什么函数?Sparse MoE的优势有哪些?MoE是如何提高模型容量而不显著增加计算负担的?原创 2024-05-31 17:29:23 · 392 阅读 · 0 评论 -
MOE模型入门
这主要是因为稀疏路由的原因,每个 token 只会选择 top-k 个专家进行计算。同时可以使用模型并行、专家并行和数据并行,优化 MoE 的训练效率。可以通过更大的 dropout (主要针对 expert)、更大的学习率、更小的 batch size。目前看到的主要是预训练的优化,针对 Fine-Tuning 的优化主要是一些常规的手段。可以通过混合精度训练、更小的参数初始化,以及 Router z-loss 提升训练的稳定性。7. MoE 为什么能够实现在低成本下训练更大的模型。原创 2024-05-31 17:26:02 · 470 阅读 · 0 评论 -
大模型模型大小与推理性能的关系-scale law
2.5 baichuan2 报告中,使用loss与flops的关系、模型参数量与flops的关系,预测大模型的性能loss、与数据量。3.2 假设输入X=(Batch,seq_len,hidden),Batch=b, seq_len=s,hidden=d, 求计算量?如: 根据参数量与flops 的关系,获取flops 的大小,再根据scale law,C=6ND, 获取训练tokens.根据scale law 定律,C=6ND, N~C^a, D~C^b, a+b=1。MLP 层 W1=R^d。原创 2024-05-20 11:08:17 · 780 阅读 · 0 评论 -
OpenCompass大模型离线测评
在opencompass 文件夹下执行 测试命令, 如 >>python run.py --models hf_llama_7b --datasets mmlu_ppl ceval_ppl。方式二、 配置文件中加载模型、加载数据集(配置文件必须放在configs 文件夹下,不然找不到路径),eval_demo.py, 无需单独去配置模型。下载数据集,解压并放于opencompass 文件夹下。3.2. 查看模型配置文件是否成功。3.3. 修改评估配置。原创 2024-05-16 11:27:30 · 519 阅读 · 0 评论 -
Flash attention入门
flashAtention其加速的原理是非常简单的,也是最基础和常见的系统性能优化的手段,即通过利用更高速的上层存储计算单元,减少对低速更下层存储器的访问次数,来提升模型的训练性能。首先,从HBM中读取完整的Q和K矩阵(每个大小为N x d),计算点积得到相似度得分S(大小为N x N),需要进行O(Nd + N^2)次HBM访问。将原始的注意力矩阵分解成更小的子矩阵,然后分别对这些子矩阵进行计算,只要这个子矩阵的大小可以在SRAM内存放,就可以在计算过程中只访问SRAM。原创 2024-05-15 17:49:12 · 1412 阅读 · 0 评论 -
vLLM推理服务库
定义与目的为什么Cache只存储K、V,而不存储Q?为什么vllm和HF推理结果不一致?vLLM 实现原理pagedAttention 实现原理模型部署demo。原创 2024-05-14 17:23:44 · 555 阅读 · 0 评论 -
大模型后量化类型比较与选取
由于权重很容易量化,而激活则较难量化,因此,SmoothQuant 引入平滑因子s来平滑激活异常值,通过数学上等效的变换将量化难度从激活转移到权重上。然而,模型的激活值往往存在异常值,直接对其做量化,会降低有效的量化格点数,导致精度损失严重,因此,激活值的量化需要更复杂的处 理方法(如 SmoothQuant)AWQ 量化过程中会跳过一小部分权重,这有助于减轻量化损失。4. s 取值: s是migration strength,为一个超参数,控制将多少激活值的量化难度迁移到权重量化,一般取值为0.5。原创 2024-05-13 11:05:13 · 1194 阅读 · 0 评论 -
TensorRT-llm入门
3. int8-kv-cache量化: KV Cache 量化是指将逐 Token(Decoding)生成过程中的上下文 K 和 V 中间结果进行 INT8 量化(计算时再反量化),以降低生成过程中的显存占用。最先进的量化方法,如SmoothQuant和AWQ,在量化造成的性能损失适中时,可以有效提升性能。1. 模型量化 参考:https://github.com/NVIDIA/TensorRT-LLM/tree/main/examples/qwen。对于伦理任务,小型模型对量化的敏感性更高。原创 2024-05-13 09:15:52 · 1289 阅读 · 0 评论 -
离线使用evaluate
【代码】离线使用evaluate。原创 2024-05-10 15:53:21 · 369 阅读 · 0 评论 -
deepspeed+transformers模型微调
微调代码: 参数定义—>数据处理---->模型创建/评估方式---->trainer 框架训练。,所以中需要进行文件配置,即可实现deepspeed的训练。注意: V100 显卡,不包括float16 精度训练。二、代码讲解,peft微调+trainer 实现。配置文件:ds_config.json。1、代码讲解,trainer 实现。transformers通。原创 2024-05-09 11:50:22 · 894 阅读 · 0 评论 -
deepspeed入门
4. 如果其他配置相同,ZeRO-3 可能会比 ZeRO-2 慢,因为除了 ZeRO-2 之外,前者还必须收集模型权重。4.1 deepspeed 配置主要包括:精度配置模块,优化器模块、零冗余优化器模块、预热调度器模块、batch_size/梯度等模块。2. ZeRO-1主要优化优化器的存储,ZeRO-2进一步优化模型参数和优化器状态的存储,而ZeRO-3还包括对激活的优化。1. ZeRO-1、ZeRO-2和ZeRO-3是递进的优化级别,每个级别都在前一个级别的基础上减少更多的内存冗余。原创 2024-05-09 11:45:57 · 1748 阅读 · 0 评论 -
Transformer优化加速--xformers
1 作用2 优化创新点3. 使用demo。原创 2024-05-08 15:51:32 · 532 阅读 · 0 评论 -
大模型外推能力
PoPE旋转位置编码具有远程衰减的特性,具体表现为:对于两个词向量,若它们之间的距离越近,则它们的内积分数越高,反之则越低。模型在训练时,只见过[0,(L-1)theta] 范围内的旋转弧度,未见过大于(L-1)*theta的旋转弧度,所以当推理长度大于L 时,模型难以理解新的旋转弧度,无法正确注入位置信息,导致模型性能下降。一类是事后修改,这类方法的特点是直接修改推理模型,无需微调就能达到一定的长度外推效果,但缺点是它们都无法保持模型在训练长度内的恒等性;各技术点,以及应用模型,优缺点。原创 2024-05-07 17:32:04 · 1056 阅读 · 2 评论 -
scaling law入门
然后可以进一步获得计算效率最优时,即同样计算量下性能最好的模型规模和数据大小的组合,模型大小与计算量的关系,以及数据大小与计算量的关系。确定了模型的框架以及期望训练的参数后,我们可以在多个比期望参数小的模型上做预训练,并且统计多个实验结果,如GPT3的图所示:随着训练的进行(计算量 C),小的模型出现收敛,大的模型loss也迅速下降。从图3和图4分别得到了模型性能与计算量的关系、计算量与模型大小的关系、计算量与训练的tokens之间的关系。2. 通过压缩定律,以及小模型,预测大模型的性能。原创 2024-04-29 14:27:26 · 1126 阅读 · 0 评论 -
大模型分布式推理ray
参考:https://zhuanlan.zhihu.com/p/647973148?1 框架:Ray:将一个模型拆分到多个显卡中,实现分布式预测、训练等功能。运行>> serve run test:deployment。案例:通过ray 实现分布式部署,分布式推理服务。4. 相关文档、案例阅读。文件名:test.py。原创 2024-03-22 13:55:17 · 1103 阅读 · 0 评论 -
大模型训练准备工作
模型的参数量和训练数据的 token 数之间也有个比例关系,这也很容易理解,只要把模型想象成数据的压缩版本就行了,压缩比总是有极限的。模型的参数量太小,就吃不下训练数据里面所有的知识;模型的参数量如果大于训练数据的 token 数,那又浪费,还容易导致 over-fitting。GPU峰值:每张卡每秒实际做的浮点运算数,一般在理论上限的50%以上,现在衡量计算速度的标准是TFLOPS。理论值网址:https://www.nvidia.cn/data-center/v100/5. epoch 选择经验。原创 2024-03-15 22:49:23 · 970 阅读 · 0 评论 -
模型内存计算
● fp32 精度,一个参数需要 32 bits, 4 bytes.● fp16 精度,一个参数需要 16 bits, 2 bytes.● int8 精度,一个参数需要 8 bits, 1 byte.内存分配: 1.模型参数 2. 梯度 3.优化器参数。int8 的 LLaMA-6B,AdamW 需要 6B。对于 fp32,LLaMA-6B 需要 6B。对于 int8,LLaMA-6B 需要 6B。4 bytes = 24GB内存。梯度:同上,等于参数量。原创 2023-12-08 09:00:43 · 792 阅读 · 0 评论 -
transformer参数推导
包含三个表示层+一个LayerNorm 层,表示层为wordembedding+tokentype_embedding+position_embedding。多头自注意力self_attention 参数计算: d_model* d_model + 3*(d_model* d_qkv*num_heads)2.多头自注意力self_attention 参数计算: d_model* d_model + 3*(d_model* d_qkv。segment_embedding 参数为:(2,hidden)原创 2024-03-11 16:49:59 · 564 阅读 · 0 评论 -
flash attention
【代码】flash attention。原创 2024-01-16 16:00:01 · 1151 阅读 · 0 评论 -
RAG词嵌入召回质量评估
4 微调sentence_transformer模型。5 评估sentence_transformer模型。3 采用gpt 生成词嵌入的训练集。2. Open Ai的key分享。2 Open Ai的key分享。1 采用官方评估器进行评估。1.采用官方评估器进行评估。原创 2024-01-15 15:35:25 · 672 阅读 · 1 评论 -
LLM大模型显存计算
1b(10亿)个模型参数,约占用4G显存(实际大小:10^9 * 4 / 1024^3 ~= 3.725 GB),那么LLaMA的参数量为7b,那么加载模型参数需要的显存为:3.725 * 7 ~= 26.075 GB。综上,int8 精度的 LLaMA-6B 模型部分大致需要 6GB+6GB+12GB+1.3GB = 25.3GB 左右。例如,如果显卡具有1280个核心,时钟速度为1400 MHz,每个核心具有两个浮点运算单元,则该显卡的算力为。int8 的 LLaMA-6B,AdamW 需要 6B。原创 2024-01-12 10:37:51 · 5338 阅读 · 0 评论