摘要: GPT-1 简介 2018年6月,OpenAI公司发表了论文"Improving Language Understanding by Generative Pretraining"(用生成式预训练提高模型的语言理解能力), 推出了具有 1.17亿个参数的GPT-1(Generative Pre-tr 阅读全文
posted @ 2024-11-03 22:28 牛犁heart 阅读(6) 评论(0) 推荐(0) 编辑
摘要: LLM本身基于Transformer架构 自2017年,Attention is all you need诞生起,原始的Transformer模型不同领域的模型提供了灵感和启发 基于原始的Transformer框架,衍生了一系列模型,一些模型仅仅使用encode或decoder,有些模型同时使用en 阅读全文
posted @ 2024-10-19 18:21 牛犁heart 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 论文:Attention is All You Need:Attention Is All You Need1. Transformer 整体结构首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构:可以看到transformer由Encoder和D 阅读全文
posted @ 2024-08-31 12:20 牛犁heart 阅读(34) 评论(0) 推荐(0) 编辑
摘要: ZeRO:一种去除冗余的数据并行方案 目前训练超大规模语言模型主要有两条技术路线: TPU + XLA + TensorFlow/JAX GPU + Pytorch + Megatron + DeepSpeed 前者由Google主导,由于TPU和自家云平台GCP深度绑定,对于非Googler来说并 阅读全文
posted @ 2024-08-04 19:24 牛犁heart 阅读(310) 评论(0) 推荐(1) 编辑
摘要: 打印栈回溯 #include "execinfo.h" #include "stdio.h" #include "stdlib.h" void print_stacktrace() { int size=128; void* array[128]; int stack_num = backtrace 阅读全文
posted @ 2024-07-11 21:16 牛犁heart 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 定义 算子融合 就是将多个计算单元合并到一个计算单元里完成计算,减少中间数据读写内存的操作,从而节省计算时间。 TVM中将算子融合分为四种: kElemWise:两个tensor之间按照元素逐个操作的算子,实际上所有的四则运算都是这种类型 kBroadcast:带有广播操作的算子 kInjectiv 阅读全文
posted @ 2024-04-27 21:46 牛犁heart 阅读(1318) 评论(0) 推荐(0) 编辑
摘要: 定义 TVM从Halide继承了计算与调度分离的思想,并在其内部重用了部分Halide的调度原语,也引入了一些新的调度原语,用于优化GPU和专用加速器性能。 先举个例子吧: import tvm from tvm import te n = 1024 dtype = "float32" A = te 阅读全文
posted @ 2024-04-14 22:39 牛犁heart 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 定义 移除无用函数,Remove Unused Function,顾名思义,就是删除Module中定义但未用到的函数 当然,它也是一个模块级的优化, 举例子: def get_mod(): mod = tvm.IRModule({}) fn1 = relay.Function([], relay.c 阅读全文
posted @ 2024-04-14 16:13 牛犁heart 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 定义(What) InferType,类型推断,顾名思义,给表达式进行类型的推断 直接上代码 import tvm from tvm import relay import numpy as np def get_demo_mod(): a = relay.var("a", shape=(2, 3, 阅读全文
posted @ 2024-04-07 20:31 牛犁heart 阅读(114) 评论(0) 推荐(0) 编辑
摘要: TVM 提供了详细日志记录功能,允许提交跟踪级别的调试消息,而不会影响生产中 TVM 的二进制大小或运行时。你可以在你的代码中使用 VLOG 如下: void Foo(const std::string& bar) { VLOG(2) << "Running Foo(" << bar << ")"; 阅读全文
posted @ 2024-04-06 14:54 牛犁heart 阅读(94) 评论(0) 推荐(0) 编辑