post

阅读全文

MLX 框架浅析

最近Apple 新发布了一个MLX的DL框架,这是继 ML Compute 可用于在 Mac 上进行 TensorFlow 模型的训练,PyTorch 在 M1芯片后可使用 Metal Performance Shaders (MPS) 作为GPU 加速的 PyTorch 机器学习模型训练之后,进一步的尝试。 与MLX同时开源的还有数据读取的框架MLX-da...

阅读全文

从向量数据库到 ANN search

LLM的模型的爆火,意外带动了向量数据库的热度。之前名不见经传的一些初创公司也突然备受追捧。最近在分析端侧LLM场景的时候也分析了相关的一些向量数据库的相关知识。 GPT的缺陷chatgpt在对话过程中表现出的能力包括了一定的上下文检索能力。但这个能力是基于LLM本身的上下文理解能力完成的,但受限于多数模型是基于kv cache结构的记忆历史对话信息的,kv...

阅读全文

L1 data 缓存为什么一般只有32K或者64K

L1 data缓存为什么一般只有32K或者64K?为什么不能更大一点?更大不是更好吗? 至少有这么两个原因。L1缓存因为会频繁被访问,所以优化目标是hit time,缓存size越大,hit time越长。另外现代CPU普遍采用virtually index physically tagged(VIPT)的L1缓存,所以L1数据缓存的大小实际上就是page ...

阅读全文

ndk std_thread 获取pid

最近在解决tvm绑核问题时,发现android下绑核只有sched_setaffinity函数,这导致无法使用标准库中的td::thread::native_handle_type thread 进行绑核操作。虽然在ndk 21以上的版本提供了pthread_gettid_np函数获取线程相应的pid,但在较低版本中,还是没办法直接使用。 看下ndk 中 s...

阅读全文

了解LLM——LLM&& SD 基本概念

Causual LM这里以llama模型为例,通常在执行用户输入之前会有一个[[文章/LM basic知识#Prefill]]的过程。然后根据用户promts 得到输出。 Perfix LM这里以GLM为例介绍,展示了基本的流程。 prefix LM和causal LM的区别attention mask不同,prefix LM的pref...

阅读全文

了解LLM —— LoRA

论文链接:link code: github 什么是LoRALoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,是一种PEFT(参数高效性微调方法),这是微软的研究人员为了解决大语言模型微调而开发的一项技术。当然除了LoRA,参数高效性微调方法中实现最简单的方法还是Pro...

阅读全文

TVM-MLC LLM 调优方案

LLM 等GPT大模型大火以后,TVM社区推出了自己的部署方案,支持Llama,Vicuna,Dolly等模型在iOS、Android、GPU、浏览器等平台上部署运行。 https://github.com/mlc-ai/mlc-llm 本文在之前作者介绍的基础上,简要介绍一下mlc的调优部署方案。 pipeline在正式介绍TVM mlc.ai部署LLM方...

阅读全文

TVM 源码阅读PASS — VectorizeLoop

VectorizeLoop这个PASS就是对标记为ForKind::kVectorized的For循环做向量化处理,并对For循环中的语句涉及到的变量,替换为Ramp,以便于在Codegen的过程中生成相关的向量化运算的指令。 VectorizeLoop这个PASS的入口函数如下,只有在打开enable_vectorize=true的情况下载才会被启用,否则...

阅读全文

SVE特性以及寄存器

SVE对比NEON有几个新增的地方。 变长的向量 支持Gather-load && Scatter-store 可以由P寄存器控制向量通道的计算 由软件控制的向量切分。 基于First Fault 寄存器完成的,加载不合法内存页的时候,会有记录 扩展浮点和位运算的水平缩减 SVE 寄存器 Scalable vector...

阅读全文