语言,逆差
又睡不着,琢磨一段话: 多戲超人 @DoubleFakeCute: 文字很容易传播仇恨,但很难传递感动。 @yetone: 是的,换句话说文字传播感动是需要功底的,但是传播仇恨不用上完九年义务教育就可以 这句话背后揭示了一个道理:表达愤怒、抱怨、不满,似乎是语言最原始、最本能的用途。人类还未掌握完整的语法与修辞,就已学会了哭泣。 新生婴儿落地的第一声啼哭,正是一种天赋的语言——一种对环境提出抗议的表达。哲学家维特根斯坦说过:“语言的边界就是世界的边界。”在生命伊始,我们的语言边界,即是对苦痛的感知;我们最早学会的,是如何说“我不喜欢”。 相较之下,笑,是后天习得的,是在社会化过程中逐渐学会的回应。但当笑成为一种礼貌、成为一种职场的面具,它也就褪去了它的真实。于是我们在笑中疏离,在沉默中彼此冷漠,脸上..
更多

AI大模型笔记
Foreword 记录一些AI相关的流程或者是运行逻辑 AI Transform Transform的机制 Benchmark 做一个新模型的时候,最好先建立好一个Benchmark,用来评估当前模型的性能,从而有一个准确的优化方向 微调 微调的流程 微调的后期,要么是有一个专家模型负责评估,要么就是有一个RLHF的反馈环境,不断对模型进行微调,这样整个模型就在不断进化中,效果就能越来越好。 当这个累计到一定时间或者数据以后,就可以考虑直接全参数微调,变成一个新模型 RAG 某些应用既可以通过RAG实现,也能通过微调实现,RAG相当于是外挂一个知识给模型,比较灵活,但是RAG的实现细节也有很多东西要考虑。 Denoise 本质上Diffusion就是..
更多嵌入式内存溢出检测
Foreword 内存溢出,非常常见的错误,但是对于嵌入式软件而言稍微有点麻烦,因为出问题的时候不一定能被调试,能被追踪到,条件十分严苛。 借鉴前人的经验,做一次实践 内存溢出 笨方法 这个方法比较笨,但是可以防止程序产生更严重的问题,比如在做内存copy或者调用指针的时候,都做一次内存范围检测,如果发现范围溢出了,那么此时就记录一下具体溢出的位置,触发函数等等。 这种方式可以维持一个长期稳定,但是溯源上还是差一些,同时也会影响效率,特别是一些高频操作或者是时间敏感的操作。 canary 最简单的思路,在觉得可能会溢出的地方加上一个溢出标志,那么当溢出的时候就可以直接记录溢出点,然后就能追踪了 这样追踪到的是溢出点,但是如果是哪个地方溢出了,写到了别的内存的位置,这种办法就无法直接溯源,..
更多

AI模型生成对比
Foreword 研究一下如何把AI相关的AI设计产品融合到目前的艺术设计的工作流中,对比了一下当前模型生成相关的AI,发现区别还是挺大的 图片生成 Stable Diffusion https://github.com/AUTOMATIC1111/stable-diffusion-webui Stable Diffusion是一种图像模型,他背后是Stability AI Midjounery https://www.midjourney.com/ 模型生成 提示词,猫和老鼠中的老鼠,拿着一个烤串 # Core requirements Jerry from Tom and Jerry cartoon, holding a barbecue skewer, # Sty..
更多

如何写一个MCP Server
Foreword 看一下如何写一个MCP服务 FastMCP 翻了一下看到了MCP有一个快速的模式,这种方式不需要写那么多前置代码 # server.py from mcp.server.fastmcp import FastMCP # Create an MCP server mcp = FastMCP("Demo") # 通过注解快速加入一个工具命令 # Add an addition tool @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b # 这里还通过注解,加入了有一部分资源 # 这里的资源可以理解为一个文件或者一段信息,或者说一个特定的内容,这个可..
更多

聊聊大模型推理加速:从数据到系统的技术概要
随着 LLMs 在各行各业的应用,如何在保证模型性能的前提下实现高效推理已成为重点挑战之一。前言主流的 LLMs 在算法架构上基于 transformer 的 decoder-only 架构,核心任务是 next token prediction,在推理过程中,模型需要依次生成每个 token,这种自回归生成的特点会增加推理延迟。并且从参数量上模型可分为不同规模,即使是小模型,其对计算资源和内存资源也有较高要求。为了应对这些挑战,学术界和工业界提出了多种优化方案。本文将介绍了若干 LLMs 的推理加速相关的关键技术。如有错误或不准确之处,欢迎指正。正文推理阶段概述推理阶段是模型接收输入并产生输出的过程。与训练阶段不同,推理阶段不需要计算梯度和更新参数,只需要完成前向传播计算。在推理过程中,由于自回归生成的..
更多用裸 git 仓库管理点文件的最佳方式
前些天在 Atlassian 的文档中看到一篇关于管理点文件(即.bashrc 之类以点开头的文件)的文章《Dotfiles: Best way to store in a bare git repository》,感觉很有参考价值,遂决定翻译出来,希望能帮到更多的人。 以下内容除特别注明外,皆翻译自原文。我亦不对内容做任何的担保,并不对任何可能产生的后果(包括但不限于文件丢失)负责。 免责声明:标题有些夸大其词了,而且针对这个问题也有其他好用的解决方案。但我确实觉得这也是一个优雅的技巧。 最近我在 Hacker News 中看到一篇帖子,是讨论人们怎么管理他们的点文件的。在这篇帖子中,用户 StreakyCobra 分享了一个他的很优雅的配置,而且我觉得非常的靠谱。正巧我也在开始用同样的技巧来管理..
更多在 TypeScript 的 catch 代码块中获取错误信息
最近在试着用 TypeScript 写点东西,在用 catch (error) {} 代码块处理异常的时候,看到了一个很难理解的错误 TS18046: error is of type unknown。网上一顿冲浪之后,看到了 Kent C. Dodds 的一篇博客 Get a catch block error message with TypeScript。我跟着文章的内容成功解决了这个问题,并且解答了我的疑惑,所以想要翻译出来帮助到更多的人。 以下内容除特别注明外,皆翻译自原文。我亦不对内容做任何的担保,并不对任何可能产生的后果(包括但不限于文件丢失或功能异常)负责。 好吧,咱们看看这个代码: 12345678910const reportError = ({ message }) =>..
更多

MCP下一代软件接口
Foreword MCP下一代软件接口,他可能是未来AI或者大模型发展所必须的一个中间件了 MCP https://github.com/modelcontextprotocol https://modelcontextprotocol.io/introduction MCP简单说就是一个开发的标准协议,他主要是约定了如何让普通程序把自己的内容或者接口暴露给LLM,从而可以让AI使用这个程序。 简单说之前遇到的Cursor读不了PDF,其实如果他会用转换工具,把PDF转换成网页或者txt之类的内容,他就又能重新读懂了,而MCP干的就是这个标准接口,告诉LLM通过什么方式可以达成什么结果。 有了MCP就可以做什么呢? 让AI去数据库帮我修改某个字段的信息,而不是让他给我..
更多

点阵字体合集
Foreword 曾几何时找个点阵字体还是非常麻烦的,如果只是平常LCD或者小屏幕上用的那种粗糙的点阵字体,那没问题。但是如果要追求一点美感,要精修过的点阵字体就有点费劲了。几年没关注,发现现在已经有不少商业化或者在自己宣传的点阵字体了,看起来还不错,比以前代代相传的字库强多了。 BitmapFont https://github.com/aguegu/BitmapFont 历史很久的点阵字库了,很多单片机或者嵌入式中手手相传的老子库, 但是这个字库字体有限,而且大小都设定的比较死,里面的字时高时低的,有些时候很别扭。 凤凰点阵体 https://timothyqiu.itch.io/vonwaon-bitmap 凤凰点阵字体是基于BitmapFont进行了..
更多