Skip to main content

· 4 min read
加菲猫

alt text

封面图:Safe by construction - Roberto Clapis

🌟 AI 相关

揭秘Continually Pretrain技巧,让你的chinese llama3模型更上一层楼

Phi-3:小模型,大未来!(附魔搭社区推理、微调实战教程)

图解MoE是什么,以及大模型为什么需要

【Milvus&向量搜索】落地文档搜索业务的探索

LLM能否依据角色的过去预测未来?一篇有趣的研究

微软 & 清华 | 提出LoRAs专家混合方法:MOLE,可动态、高效地组合多个LoRA!

使用 Dify 和 Moonshot API 做一个懒人 AI 阅读工具(二):轻量 RAG 应用

使用 Dify 和 Moonshot API 构建你的 AI 工作流(一):让不 AI 的应用 AI 化

大模型很厉害,但也有搞不定的事儿

摆脱CUDA,用垃圾显卡训练pytorch搭建的神经网络

一文看全提示工程有哪些套路

RAG开山之作:结合参数化与非参数化记忆的知识密集型NLP任务新解法

大语言模型对齐的四种方法!

LangChain 实战:Agent思维

开源大语言模型作为 LangChain 智能体

快速提升性能,如何更好地使用GPU(上)

RAT:融合RAG和CoT的高效多步推理任务解决方案

⭐️ Go & 云原生 & Rust 相关

Go 1.22 的新增功能系列之二:reflect.TypeFor

Go 1.22 的新增功能系列之一:cmp.Or

《Go语言编程技巧》 1.0 发布了

Effective Rust: item4 首选常用的 Error 变体

使用 GitHub Actions 构建 Golang PGO

从零到生产:Go在Google的历程

最具研读价值的 Go 源码之一:context 包

选择正确的Go Module Path

Go 最大挑战、AI 方向、内部优先级?2024 H1 开发者报告发布

Gopher的Rust第一课:Rust的那些事儿

《Go语言编程技巧》翻译项目和参与开源项目

📒 后端相关

这些年背过的面试题——Java基础及面试题篇

RocketMQ为什么这么快?我从源码中扒出了10大原因!

LeetCode的基础入门

Kafka 是什么

“打工人”的自我修养 - 如何在 30 秒内把“问题”讲清楚

📒 前端相关

前端 er 如何玩转音视频流-WebRTC 技术介绍

AI+Node.js x-crawl 爬虫:为何传统爬虫已不再是数据抓取的首选

字节三年,谈谈一线团队如何搞工程化一(全景篇)

· 4 min read
加菲猫

alt text

封面图:Safe by construction - Roberto Clapis

🌟 AI 相关

【AIGC篇】NLP任务入门:分词、词性标注与命名实体识别

【AIGC篇】文本表示方法比较:词袋模型 vs. 词向量

搞懂 NVIDIA GPU 性能指标 很容易弄混的一个概念: Utilization vs Saturation

张俊林:聊聊对LLAMA-3、大模型开源与闭源以及合成数据的看法

面向2026年的推荐算法前瞻

语义搜索与混合查询:Blended RAG如何提升检索准确性

行业巨变!Llama3来了

Blended RAG:IBM新研究,大幅超越传统RAG的新方案

融合RL与LLM思想,探寻世界模型迈向AGI/ASI的第一性原理反思和探索:RL×LLM×WM>AI4S>AGI>ASI「上篇」

使用Dask,SBERT SPECTRE和Milvus构建自己的ARXIV论文相似性搜索引擎

如何针对金融文档优化RAG系统

⭐️ Go & 云原生 & Rust 相关

Golang框架实战-KisFlow流式计算框架(11)-Prometheus Metrics统计

Effective Rust: item3 避免直接匹配Option和Result

Rust 高级特性:Traits 和泛型

充分利用每个字节:Go 的内存打包秘密揭晓!

Effective Rust: item 2 利用类型系统表达通用行为

Go 从版本 1.0 到 1.22的性能变化

"fusen-rs"正式发布一个Rust轻量级微服务框架,支持Dubbo与SpringCloud

Effective Rust: item1 利用类型系统表达你的数据结构

Go 新提案:返回值应该明确使用或忽略

Docker 是什么? 和 k8s 之间是什么关系

要么返回错误值,要么输出日志,别两样都做

Go 如何缓解来自软件依赖的恶意攻击

Go Tips #001 一行代码测量函数的执行时间

[小布去面试] 如何使用两个 goroutine 顺序输出 1-10

📒 后端相关

MVCC学习圣经:一文穿透MySQL MVCC,吊打面试官

Spring Boot + 事务钩子函数,打造高效支付系统!

MySQL索引你用对了吗

📒 前端相关

我早就看现在的工作流不爽了!- 前端使用 Jenkins

看过最简洁的 TSConfig 介绍

RSC 里如何处理 CSS-in-JS

基于源码的 Webpack 结构分析

Zustand 和 React Context

前端工程师应该如何正确面对 UI 组件视觉回归测试

· 14 min read
加菲猫

alt text

封面图:Go语言的TIOBE排名创历史新高

🌟 AI 相关

《干货 | 如何系统性地评价RAG系统》。这篇文章是对《LLM-auto-eval-best-practices-RAG》的翻译和解读,重点讨论了如何系统性地评价检索增强生成(RAG)系统。文章探讨了使用大型语言模型(LLM)作为RAG系统自动化评估工具的最佳实践,包括评分的一致性、通过少量示例来提高评估准确性、选择合适的评分尺度以简化解释过程、以及评估指标的通用性。作者通过一系列实验,提出应使用低精度评分,如0至3分或1至5分,定制RAG基准,并建议特定用例评估,以准确衡量模型性能。

《PromptKD: 基于Prompt的视觉语言模型蒸馏》。本文介绍了一个使用无监督Prompt蒸馏(PromptKD)方法,针对视觉-语言模型(VLMs),在prompt learning的11个基准数据集上达到了最佳状态(SOTA)。PromptKD通过引入一个更大的CLIP模型作为教师模型,通过三个主要步骤以提高模型效能:重用教师模型产生的文本特征用于学生模型的训练和推理,确保高质量文本特征的同时显著减少计算量;对齐学生和教师的logits,让大模型为小模型提供更准确的监督信号;使用大量无标签的域数据让学生模型学习更广泛的领域知识。实验结果表明,PromptKD在多个基准测试中均展示出卓越的性能,显示出这种方法在提高VLMs的表现上的有效性。

《大模型应用开发之业务架构和技术架构(从AI Embedded 到 Copilot,再到Agent)》。本文分析了大型语言模型(LLM)在应用开发中的业务架构和技术架构,讲述了从AI Embedded模式、AI Copilot模式到AI Agent模式的演变。AI Embedded指在某些传统应用环节中集成LLM,而AI Copilot代表广泛应用LLM进行串联集成的模式。AI Agent模式则更进一步,用户只需提出需求,AI则自动完成任务。文章还讨论了单Agent模式和多智能体系统(Multi-Agent)的定义,展示了这些体系的应用如何分解复杂任务、通过对话促进个体间的信息交流和协作。提出了基于大模型的Agent需要能够进行对话,接收和响应消息。最后,文章介绍了单Agent和Multi-Agent的应用开发框架,如LangChain和Autogen,并讨论了选择技术方案的思路。

《TensorRT-LLM初探(二)简析了结构,用的更明白》。文章深入探讨了TensorRT-LLM(一个深度学习优化推理库)的结构及其使用方法。介绍了TensorRT-LLM是基于FasterTransformer和TensorRT进行构建,用于优化大模型推理性能。文章概述了trt-llm的两个分支:Release branch和Dev branch。重点强调了trt-llm的多卡支持,包括Tensor Parallelism和Pipeline Parallelism。进一步探讨了In-flight Batching与动态KV Cache以及量化技术,比如INT8 weight-only、SmoothQuant、GPTQ和AWQ,用于提高效能。最后总结LTR-LLM在kernel性能及调度方面的优势及部分闭源代码限制。

《LLM微调技术指南:Prompt-Tuning,P-Tuning,Prefix-Tuning、Lora, IA3》。本文细致审视了大型语言模型(LLM)的多种参数效率微调(PEFT)技术,包括Prompt-Tuning、P-Tuning、Prefix-Tuning、LoRA和IA3。介绍了微调的概念及其在LLM中的重要性,尤其是当模型规模与复杂度日益增长时。文章还详细探讨了迁移学习和各种PEFT策略的工作机制,强调这些技术如何帮助提高LLM在特定任务上的性能,同时降低了训练成本。通过具体实例和详尽分析,文章展示了如何有效地微调模型,以适应迅速变化的数据和业务需求,并充分利用机器学习应用程序的潜力。

《纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了》。本文介绍了Andrej Karpathy发布的项目“llm.c”,这是一个使用不到1000行纯C语言代码即可实现在CPU/fp32环境下训练GPT-2模型的项目。它旨在简化大模型训练流程,去除对大型机器学习库的依赖。文中提到项目目前已完成几层核心代码的CUDA移植,以提高效率。而未来工作的方向包括实现更多新型架构支持、SIMD指令优化和更直接的CUDA实现。实验结果显示,尽管该方法仅用极少代码,依然能够与PyTorch实现相媲美,社区反响热烈。

《一键更改LoRA初始化!LoRA吃了披萨,效果起飞?》。文章提出了一种新型参数效率的微调方法PiSSA,该方法利用预训练模型权重的本质低秩性质,通过奇异值分解来构建适配器,实现少量参数的高效调整,而冻结大部分参数以保持模型原有能力,显著降低了训练成本。PiSSA与已知的LoRA方法在架构上一致,差别在于初始化技术,使PiSSA在多项模型训练任务中优于LoRA。本文还探讨了快速奇异值分解技术,以减少PiSSA初始化的计算成本。

《RAG中,无关信息的影响有多大?》。论文《How Easily do Irrelevant Inputs Skew the Responses of Large Language Models?》探讨了大型语言模型(LLMs)在处理相关但无关信息时的鲁棒性问题。研究构建了多种质量的无关信息,分析了LLMs在答案生成时的易受干扰性,并测试了不同模型对无关信息的处理能力。发现模型容易受到语义相关无关信息的误导,无关信息数量增加会减弱模型的判别能力,并指出问题格式显著影响模型鲁棒性。研究揭示了现有应对策略的局限,提供了提高LLMs处理无关信息鲁棒性的指导。

《Agent四大范式 | CRITIC:吴恩达力推Agent设计范式》。文章概述了CRITIC框架,它的目的是通过与外部工具交互,提高大型语言模型(LLMs)的效能和准确性。CRITIC作为一种交互式验证机制,可使模型像人类一样利用搜索引擎等工具进行自我修正,并提升模型的自我完善能力。研究结果表明,CRITIC能显著提高LLMs在问答、程序合成和内容安全性方面的性能,而且强调了持续外部反馈对于模型自我完善的重要性。文章还探讨了CRITIC的实用性和潜在局限性,强调了将这一范式应用于更广泛场景的可能性。

《Qwen1.5开源32B模型-将开源进行到底》。刘聪NLP介绍阿里巴巴开源的Qwen1.5机器学习模型,突出了其32B参数规模和支持长达32k长度的特点。该模型弥补了以往工作中30B规模模型的空缺,并且作为中间大小的模型,它在易用性和计算成本上相对于更大模型更为实用,同时在多任务评测指标上仍显示出色的性能。Qwen1.5-32B支持多语言,并在精确度和多样性方面具有竞争力,有助于推动机器学习领域的开源进程。

《剑桥团队开源:赋能多模态大模型RAG应用,首个预训练通用多模态后期交互知识检索器》。剑桥大学人工智能实验室开发并完整开源了PreFLMR模型,这是一个预训练的通用多模态知识检索器,旨在为多模态RAG(Retrieval-Augmented Generation)应用提供支持。PreFLMR基于NeurIPS 2023发表的FLMR(Fine-grained Late-interaction Multi-modal Retriever)框架改进,通过大规模多模态数据预训练,优化了知识检索性能。它支持多种检索任务,如文文、图文和知识检索,能从大规模知识库中高效提取相关信息,显著提升多模态大模型在专业知识问答任务上的表现。此外,项目还贡献了M2KR数据集,供通用知识检索器训练和评估使用。

⭐️ Go & 云原生 & Rust 相关

[并发专题] Golang 基于令牌桶算法实现简单的限速器

Golang 构建时的 ldflags 有什么作用

Go 工具链已经开始收集和上报使用数据!

RocketMQ 事件驱动:云时代的事件驱动有啥不同

Etcd 概述及运维实践

选择正确的Go Module Path

基于Golang的高性能游戏服务器框架

100 K8s Mistakes and How to Avoid Them - 上

类型安全的Pool

Go 标准库中的一个设计败笔:哨兵错误

深度解析消息队列服务|从 AWS SQS 到阿里云 MNS

当AWS账单超出预算时,如何自动化处理资源实例

微服务架构下的配置管理:Go 语言与 yaml 的完美结合

Select + Channels 实现定时任务与高效调度

使用 Select +Timer 时如何避免内存泄露

快速了解 Golang Rune 及其避坑指南

一文掌握 Golang Empty Struct 的所有用法

Golang 应用发布生产后想睡个好觉?推荐提前用 nilaway 扫雷!

Kubernetes中的事件收集以及监控告警

All in One:Prometheus 多实例数据统一管理最佳实践

Go 哪里没有做好?Rob Pike 深刻反思了

📒 后端相关

微服务架构中10个常用的设计模式,建议收藏!

如何优雅地记录操作日志?看看美团是怎么做的

两万字详解!InnoDB锁专题!

阿里终面:每天100w次登陆请求, 8G 内存该如何设置JVM参数

微服务难点剖析 | 服务拆的挺爽,问题是日志该怎么串联起来呢

引入缓存竟然会带来这么多问题??!

📒 前端相关

MDH Weekly 125 - 《小丑牌》

· 29 min read
加菲猫

alt text

封面图:Go 1.22.2 刚刚已发布,修复 http2 多个 header 导致的连接关闭

🌟 AI 相关

《人工智能机器学习算法总结--2.逻辑回归算法》。这篇文章详细介绍了逻辑回归算法,这是一种处理二分类问题的机器学习算法。文章概括了逻辑回归的定义、目标及应用,并解释了其与线性回归的不同之处。底层结构清晰地描述了逻辑回归包括的组成部分,如输入层、权重、线性组合、激活函数(Sigmoid函数)、输出层、损失函数(如交叉熵损失函数)及优化算法(如梯度下降法)。文章还阐述了数据准备、代价函数、梯度计算与模型评价的完整过程,包括特征映射、判定边界的绘制等,并提出防止过拟合的正则化技巧。

《CMAT: 与GPT3.5相媲美的1.8B Agent模型和框架》。本文主要介绍了一种与 GPT3.5 性能相匹那的1.8B Agent 模型和框架。提出了 TinyAgent 模型和多代理合作调整 (CMAT) 框架,通过环境反馈驱动的权重调整,增强了语言代理的能力。尤其突出了 TinyAgent-7B模型,虽然参数量不多,但是其性能达到了与 GPT-3.5 相当的水平,显示出大型语言模型在精效方面的巨大进步。同时,文章还详解了 CMAT 框架的运行机制和优势,利用高质量数据集进行训练和 LoRA 方法进行优化,显著提升了模型的性能和应用创新。

《谷歌更新Transformer架构,更节省计算资源!50%性能提升》。Google更新了Transformer架构,发布了Mixture-of-Depths(MoD),它通过动态分配计算资源来跳过不必要的计算,大幅提高了模型的训练效率和推理速度。论文展示了使用MoD的模型在减少每次向前传播所需的FLOPs的同时,步进速度可提高50%。这种方法不仅节约了资源,更在提升性能方面展现出巨大潜力,特别是在大模型的训练和推理中,使得计算资源的分配更为精确和高效。这项研究由DeepMind和麦吉尔大学共同开展,主要贡献者是David Raposo和Adam Santoro。

《人工智能机器学习算法总结--1.线性回归算法(单变量及多变量)》。本文作者深入介绍了线性回归算法的原理和步骤,从数据准备、模型假设、模型建立、模型评估到预测,涵盖单变量和多变量线性回归。详述了如何通过特征缩放、增加假设函数中的截距项、以及梯度下降法等技术来优化回归模型。同时,探讨了代价函数的计算和模型参数的优化过程,包括正规方程和梯度下降法的对比以及正则化的应用,以提高模型泛化能力,防止过拟合。

《RAG实践中的关键模块解析》。文章细致解析了在检索增强生成(RAG)的实践中关键的模块和技术,包括挑战分析和系统架构讨论。论文深入探讨了在复杂查询的理解、检索模型的挑战与架构、生成模型的策略和技术、以及如何通过RAG改进语言模型(LM)的查询响应质量。同时,分析了如何通过改写查询、分解问题、重构查询和其他技术来处理特定挑战,诸如用户输入的复杂性、语义歧义和模型在生成回答时的过度依赖检索内容等。还讨论了基于演示检索的上下文学习的插件,以及评估RAG系统性能的方法。

《用扣子/Coze 揭秘吴恩达的4种 AI Agent 设计模式》。本文作者在介绍了吴恩达教授提出的四种AI Agent设计模式:Reflection(反思修正输出)、Tool Use(使用工具执行操作)、Planning(任务分解执行)和Multiagent Collaboration(多个Agent协作)。文章利用扣子/Coze 特性来说明如何应用这些模式,结合具体案例如汽车行业调研助手和旅行规划助手,阐述了如何快捷实施这些模式以及相应的工作流和效果。这些设计模式旨在提升AI Agent的自主性,效率和协同工作能力,为未来AI应用提供更为精准和灵活的操作方式。

《国内首个AI程序员入职阿里云:专属工号AI001,KPI是一人写完公司20%代码》。在这篇文章中,讲述了“通义灵码”作为国内首个AI程序员入职阿里云的故事。AI001拥有过万亿量级代码训练出的能力,精通200多种编程语言。它不仅大大提高了编写、测试和维护代码的效率,甚至在API测试开发中实现了大幅度的时间缩短。AI技术的不断成熟似乎预示了行业的转型,而通义灵码的入职体现了AI在编程领域的实际应用和效能,标志着AI和人类程序员将共同推动软件开发的未来。

《2024年大模型的发力点:大模型Agent,分享6篇最新LLM Agent研究成果》。本文详细介绍了六篇关于大型语言模型(LLM)Agent的研究成果。涵盖了数据科学、复杂规划和推理、3D场景生成、GitHub代码仓库互动、动作迭代学习及代码文档自动生成等多个方面的创新应用。这些研究表明,大模型Agent在处理复杂任务和提升自身能力方面具有显著潜力和广泛应用前景,例如DS-Agent在数据科学领域的自主操作,以及LearnAct框架在动作学习上的进步。文章还讨论了LLMs的局限性和未来的发展方向,指出构建能力强大的Agent是大模型技术发展的关键所在。

《每日论文速递 | InsCL: Data-efficient 持续指令学习》。文章介绍了InsCL(基于指令的持续学习)新模式,重点在于提升大型语言模型(LLMs)在持续学习中的数据效率和减少灾难性遗忘。InsCL采用任务相似性动态重放前数据,使用Wasserstein距离计算任务间相似度来指导选择重放内容。引入指令信息度量(InsInfo)定量指令复杂性和多样性,并基于此优化数据重放质量。丰富的实验表明,InsCL相对随机重放和无重放分别实现了3.0和27.96的性能增益,显著改善了持续学习能力。

《基于LLM的多Agent框架在金融市场数据的应用》。论文提出了一个基于大型语言模型(LLM)的多智能体框架,专门用于金融市场数据的异常检测。通过建立一个AI智能体的协作网络,涵盖数据转换、深度专家分析、知识应用及报告整合等,框架可实现财务数据异常的全自动验证和解读。运用标准普尔500指数数据展示了框架的有效性,证明它可以提高市场监控的效率、准确性,并减少人力需求,是金融市场监控支持领域的有力工具。

《Python实现 8 个概率分布公式及可视化》。文章介绍了序列化在 Python 中实现并可视化八种概率分布:均匀分布、高斯分布、对数正态分布、泊松分布、指数分布、二项分布、学生t分布和卡方分布。分布分别关联不同类型的随机过程和数据集。使用如 NumPy、matplotlib、SciPy 等库提供数学计算和可视化支持,这对于数据科学和机器学习中统计学与概率的应用至关重要。

《今日arXiv最热NLP大模型论文:Github万星!北航发布零代码大模型微调平台LlamaFactory》。北航发布了LlamaFactory,一个零代码、可对100多种语言模型进行微调的平台。该平台提供模型加载、数据处理、模型训练等模块,支持高效微调技术,并通过Web界面简化用户操作。LlamaFactory旨在降低微调大模型的技术要求,并提高训练效率。论文在GitHub获超过13,000星,实验证明了其在任务适应性和训练效率上的有效性。

《大模型记忆可以不使用向量数据库实现吗?图数据库是一个候选》。Brandon Kynoch、Hugo Latapie 和 Dwane van der Sluis提出了一种脱离传统使用向量数据库的大型语言模型(LLM)长期记忆机制。他们的研究通过构建知识图谱来存储信息,使用指定的数据结构、Cypher查询语句以及NLP工具来自动更新知识图谱。该论文详细介绍了如何更新和扩展知识图谱,并且还展示了如何使用知识图谱执行推理和长期记忆功能。尽管有局限性,如缺乏指代消解能力,该工作对于理解和实施LLM的长期记忆功能是一个重要的步骤。

《Ollama 本地开源大模型聊天应用》。文章详述如何使用Ollama在本地部署和运行开源大模型以及如何通过API调用。介绍了Ollama为前端开发者提供的Python和JS开发包,并且介绍了一些基本的使用场景和指令。以及就如何结合Streamlit这个Web框架与Ollama来快速开发一个类似ChatGPT的聊天应用,提供了嵌入式代码示例和操作步骤。总结了Ollama部署大模型的可靠性和便捷性,同时强调了结合Streamlit快速搭建Web的能力。

⭐️ Go & 云原生 & Rust 相关

《探索 Go 的 Fan-Out/Fan-In 模式:让并发更 easy》。本文来自 Go Official Blog,目的在于引导读者理解如何在 Go 中利用扇出(Fan-Out)和扇入(Fan-In)模式简化并发操作。扇出是指单个 goroutine 将任务分发给多个工作 goroutine;扇入则是多个工作 goroutine 完成任务后,将结果汇总到一个通道。文章解释了这种模式的优势,包括提升程序性能、简化任务管理,并使并发更易于维护。同时,文章通过代码示例展示了在 Go 应用程序中如何实施 Fan-Out/Fan-In 并发模式。

《Go 是社区驱动吗?哪种模式更好》。作者煎鱼对 Go 语言是否为社区驱动的模式进行了深入探讨。文章基于 Chris Siebenmann 的观点,讨论了 Go 的发展受 Google 影响较大,且社区的声音在关键决策中并不占主导地位。举例说明了 Go Module 的引入过程如何背离社区开发的依赖管理系统。同时文章讨论了社区驱动与企业所有的开发模式差异,及其对开源项目命运的影响,指出虽然许多顶尖的开源项目背后有企业影子,但实际上可能没有一种模式是绝对优于另一种的。

《Rust 多线程开发:scoped thread》。本文由Pomelo_刘金撰写,讨论了Rust语言中scoped thread的概念和优势。Scoped thread是一种生命周期和创建它的作用域绑定的线程,与标准的std::thread::spawn函数创建的线程相反,不需要将数据拥有权移至线程中,允许更安全地共享父作用域的数据。文章比较了普通线程和scoped thread的特点和生命周期管理,并通过代码示例展示如何在Rust中创建和用scoped thread安全地并发处理数据。这种线程是处理Rust并发时非常有价值的模式,尤其是在多个线程间安全共享数据时。

《Rust 解码 Protobuf 数据比 Go 慢五倍?记一次性能调优之旅》。文章作者v0y4g3r总结了如何通过性能调优把Rust在解析Protobuf数据时的速度从原先比Go慢五倍提升到仅慢33.3%。作者首先利用池化技术减少内存分配释放的耗时,再尝试用Bytes数据类型来实现零拷贝,但遇到了性能退步。通过火焰图分析,确定了性能瓶颈:BytesAdapterBuf的转换开销和Bytes::slice的内存安全开销。最后,作者通过一些unsafe操作优化了slice和类型特化,获得了显著的性能提升。文章强调Rust的内存安全机制和底层实现对性能调优的影响,同时提醒重点关注代码热点路径的底层开销。

《Go 1.22.2 刚刚已发布,修复 http2 多个 header 导致的连接关闭》。文章作者详细报道了Go语言最新版1.22.2的发布情况,主要介绍了此版修复的关键安全问题。Go 1.22.2修复了影响http2协议的安全漏洞CVE-2023-45288,该漏洞允许攻击者在不影响服务器性能的情况下发送大量header数据,从而导致连接的关闭。此补丁通过添加额外的安全检查和连接关闭逻辑来防止此类攻击,并修复了其他一些已知问题。发布说明强调此次更新的重要性以及Go社区对安全性的持续承诺。

《分布式系统编程 - 多数投票(Majority Quorum)》。文章作者介绍了分布式系统中多数投票(Majority Quorum)的概念和其在一致性中的作用。多数投票是确保分布式系统在服务器崩溃后仍能提供结果可用性的一种机制,通过在集群中复制结果来实现。文章讨论了如何确定法定数量(quorum),这是集群节点多数确认更新的数量,以确保系统的活性和安全性。通常,一个节点数为n的集群,法定数量为n/2+1。介绍了法定数量在数据更新和领导者选举中的应用,并对比了与比特币中基于工作量证明的共识机制不同的处理方式。最后指出,在一些特定场景下,系统可能采用拜占庭容错算法以增强一致性和容错能力。

《分布式系统模式 - 心跳(HeartBeat)》。文章作者探讨了在分布式系统中,心跳机制如何作为一种关键措施来确保服务器集群的服务连续性和及时故障检测。心跳能帮助监控每个服务器的状态,确保集群中每一台机器都按预期工作。文中详述了设置合理的超时时间和心跳间隔的重要性,以及如何通过共识算法和八卦协议等不同策略在不同规模的集群中实施心跳监控。举例说明了如etcd集群使用Raft算法维持节点状态同步的心跳实现,以及TCP keepalive在保持TCP连接活性方面的作用。

《可以不需要第三方路由了:Go1.22 的路由增强功能》。文章作者详细介绍了Go语言在1.22版本中对net/http路由功能的增强,新增了方法匹配和通配符功能。现在用模式表达常见路由比以前更简单,无需编写Go代码。作者讨论了优化多模式匹配规则的挑战,以及如何采取优先级规则以处理模式冲突问题。新的路由机制考虑到了向后兼容,减少了对第三方Web框架的依赖,但复杂路由需求仍可选用第三方框架。这些变化显示了Go社区对简化开发者工作并促进语言自身改善的承诺。

《推荐 10 个非常有用的 Golang Libraries》。作者分享了10个有用的Go语言库,包括用于增强测试比较的cmp、协议缓冲区实现的protobuf、跨平台文件系统通知的fsnotify等。文章提供了每个库的简介和示例,解释了它们的优势和应用场景。例如,cmp库能强力替换reflect.DeepEqual进行更安全的值比较;fsnotify适用于文件系统变更监测。介绍中强调了这些库在特定情况下编程实践中的高效性和便利性。

《分布式系统模式 - 主从复制模式(Leader and Followers)》。本文作者讲解了分布式系统中的主从复制(Leader and Followers)模式,即如何在服务器集群中复制数据以达到容错目的,并保证客户端数据的一致性。文章详述了Leader选举机制,及其在小型和大型集群中的应用,包括如何避免选举时的分裂投票(split vote)。主从复制决定了整个集群的决策及其传播,保证了系统在领导者存在时才处理请求,从而提高了数据一致性和集群决策的质量。文中对Zab和Raft这两个共识算法的选举过程进行了比较,解释了“最新状态”服务器选举为Leader的标准和流程。

《Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性》。这篇由frank撰写的文章介绍了在Go 1.22版本中对slices包的更新。新增了Concat函数以更优雅的方式链接多个切片,同时对既有函数如Delete, DeleteFunc, Compact, CompactFunc, ReplaceInsert实施了性能优化。重点改进了将不再使用的切片元素设置为零值,以及增强了边界检查,当索引超界时会触发panic,这些变化旨在提高Go语言的稳定性和开发效率。

📒 后端相关

《三种方式模拟两个线程抢票》。本篇文章作者介绍了如何在Java中模拟两个线程竞争抢票的场景,详细阐述了三种并发控制策略:SynchronizedReentrantLockSemaphore。通过具体代码示例展示了每种方法的实现和优缺点。Synchronized通过关键字实现同步,一次只允许一个线程访问资源;ReentrantLock提供了比Synchronized更加灵活的锁定机制;而Semaphore则是通过信号量控制资源的并发访问。文章还演示了利用抽象工厂模式优化线程安全的代码创建过程,提升代码的维护性和可扩展性。最终,根据具体场景选择最适合的策略来保证程序的正确运行。

《https安全性 带给im 消息加密的启发》。文章作者探讨了https安全性对即时通讯(IM)消息加密的启发。详细阐述了TLS1.2和TLS1.3协议的手握过程和安全特性,特别是数字证书的验证原理以及通过ECDHE算法实现前向安全性的密钥交换。随后,提出了应用于IM系统的加密和防篡改方案,包含采用对称加密(如AES)保护信息,使用消息摘要算法(如md5、sha256)检测篡改,以及设计hmac算法进行消息认证。作者强调,在IM消息系统中,与https使用数字证书不同,可以设计私有密钥实施hmac认证,以确保消息来自可信客户端。

《支付系统的心脏:简洁而精妙的状态机设计与核心代码实现》。文章作者介绍了状态机在支付系统中的重要性,并提供了详细的状态机设计原则、常见错误及最佳实践。作者阐明了状态机(Finite State Machine, FSM)是行为建模的一种方式,对于支付系统来说,它能确保交易的生命周期按照正确的流程进行管理,提升系统的鲁棒性和交易处理的效率。文章还详细讲述了怎样用Java实现状态机,包括如何定义状态和事件、如何通过事件驱动状态变化以及如何记录状态转换,最后讨论了在并发环境中维护状态幂等性的方法。

《遇到个MySQL索引长度限制的问题》。本文作者探讨了MySQL中索引长度限制的问题,分析了在不同MySQL版本和存储引擎下索引长度的限制规则。文章详细介绍了MyISAM和InnoDB两种存储引擎对单列索引和联合索引长度的限制,并解释了如何通过开启innodb_large_prefix参数或使用前缀索引来解决超出长度限制的问题。作者还讨论了字符集对索引长度的影响,尤其是utf8utf8mb4编码在不同行格式下对索引长度的限定。最后给出了一些解决MySQL索引长度限制问题的建议,如调整字段的字符长度或考虑前缀索引的使用。

📒 前端相关

《NPM 依赖管理的复杂性》。文章深入讨论了开源环境下NPM依赖管理的挑战及对软件工程的影响,指出依赖管理在开发过程中的重要性,并探讨了依赖的概念、NPM的自动化依赖处理、合理依赖版本选择等核心议题。详解了多级依赖结构带来的问题如幽灵依赖、依赖冲突、循环依赖等,并提出了策略性的处理建议,包括依赖审查、定期清理无用依赖和使用新型包管理器等,最后给出了几个管理最佳实践,以助于开发者更好地管理和维护NPM包依赖。

· 28 min read
加菲猫

alt text

封面图:Safe by construction - Roberto Clapis

🌟 AI 相关

《独家 | 生成式AI的设计模式:一份全面的指南》。这篇文章详细介绍了针对生成式AI的几种设计模式,以协助解决成本、延迟和准确性等挑战。包括分层缓存策略的模型微调,专家小组式的多路复用AI代理,多任务大语言模型微调,规则导向和生成模型的结合,以知识图谱增强的大语言模型,AI代理群的集体智慧,模块化大语言模型的可组合性,以记忆认知构建的大语言模型,以及红蓝双模型的协作评估。这些模式不仅可以缓解实施中的问题,也是智能系统未来发展的构架。

《深度学习在时间序列预测的总结和未来方向分析》。本文作者Isaac Godfried总结了2023年时间序列预测领域深度学习的发展,并分析了2024年可能的趋势。文章回顾了多个深度学习模型例如SAN、BasisFormer、Inverted Transformer、Crossformer的创新应用和改进,并探讨概念如用大型预训练语言模型进行零样本时间序列预测。文中还指出,多模态时间序列预测、归一化技术、及其与其他数据类型如图像的结合将是未来发展的重要方向。此外,文章批评了TimeGPT评估方法的不足,指出多元时间序列预测中协变量之间依赖关系学习的重要性。

《面向业务开发的 Coze 使用指南》。文章作者详细介绍了 Coze,一个一站式 AI Bot 开发平台,强调了它的易用性与功能强大,适合各类问答 Bot 的开发和部署至社交平台。通过举例说明如何使用 Coze 迅速搭建 AI 智能体和 RAG 问答系统,展示其插件库丰富性和沟通插件的效果。文章还讨论了 Coze 长期记忆的实用性,通过对话创建数据库并进行 CRUD 操作,以及如何实现长期记忆。最后,作者分析了 Coze 与其他 AI 开发工具的差异和适用场景,为读者提供了一个 Coze 实现原理和使用方式的深入指南。

《Qwen1.5-MoE模型:2.7B的激活参数量达到7B模型的性能》。文章介绍了阿里巴巴开源的 Qwen1.5-MoE模型,它在总参数量14.3B的基础上,每次激活8个专家,激活参数量仅为2.7B,并且与7B模型性能相当。突破性的是实现了约75%的训练成本降低和1.74倍推理速度提升。作者描述了模型的结构改进,例如细粒度专家细分、模型初始化优化,以及共享路由机制。此外,文章还评估了模型在不同领域如MMLU、GSM8K、HumanEval和多语言领域的任务表现,并与7B模型进行对比。通过这些测试表明,即使在较低的激活参数量下,Qwen1.5-MoE-A2.7B模型也获得了卓越的性能,有效降低了训练与推理成本。

《港大 | 提出高效大模型微调方法:LISA,性能碾压LoRA,甚至可超全参数微调!》。这篇文章讨论了港大研究者提出的新型大模型微调方法:LISA。该方法通过分层重要性采样(Layerwise Importance Sampled Adam)优化少数关键层,进而以更少的GPU内存消耗实现了性能超越低秩适应(LoRA)的微调,并有潜力超越全参数微调。LISA 方法在微调大规模语言模型上显著降低了资源消耗,在多种下游任务表现突出,优于传统微调,解决资源限制下的大模型训练挑战,对提升大模型训练的可行性和效率具有重大意义。

《LLM训练要不要过采样/训多个epoch?》。本文作者探讨了在数据资源紧缺的情况下,循环使用数据(即过采样或多次epoch训练)对大型语言模型(LLM)训练的影响。通过实验发现,重复使用数据会导致模型性能下降和过拟合风险。文章讨论了几个主要问题:重复训练(repeat)导致得分降低、即便少量重复也存在过度拟合的风险、以及LLM在不同个体的数据下受重复影响的程度不同。分析显示,重复会让模型在生成响应时更依赖早期输出而非指令与输入。文章最后提及,数据量和质量对缓解过拟合的影响,以及如何通过适当策略(例如使用dropout)对抗过拟合现象。

《视频生成新玩家:Sora 原理探索与效果对比》。文章由支付宝算法工程师杰凡撰写,介绍了 OpenAI 提出的视频生成模型 Sora 和其它主要视频生成玩家的比较。Sora 能够根据文本提示词,生成长达一分钟且质量极高的视频,而其他模型生成的视频时间要短得多。文章探究了 Sora 视频生成的原理,包括其视觉编码器/解码器结构、扩散模型等,并讨论了 Sora 生成的视频如何实现三维一致性、长序列连贯性以及与世界的互动。文章总结了 Sora 的技术特性并略提其局限性,指出 AIGC 竞赛不仅在模型结构上,还在大规模高质量训练数据、工程优化、训练技巧和经验上展开竞争。

《聊聊 MOE + LoRA 微调新方式》。这篇文章讨论了 MOE(Mixture-of-Experts)与 LoRA(Low-Rank Adaptation)相结合的新型微调方式。该方法利用 LoRA 技术只微调参数的一部分,并保持大语言模型(LLMs)的预训练参数不变。文章中详细介绍了 LLaVA-MoLE 模式,在此模式下,通过在 Transformer 层内为 MLP 层创建专门用于 LoRA 的专家组,使用 MoE 概念并根据路由函数自适应选择不同领域的输入令牌。实验显示,这种微调方法解决了多任务数据冲突问题,在保持计算成本相似的同时,提高了微调的效果和性能。

《32K上下文,Mistral 7B v0.2 基模型突然开源了》。本文介绍了 Mistral AI 最新开源的 Mistral 7B v0.2 Base Model。这个模型的更新包括扩展上下文限制至 32K、调整Rope Theta参数至1e6,以及去除了滑动窗口技术。这些改进使得 Mistral 7B 成为同规模模型中性能最好的之一,并为开发者提供了按需微调模型的可能。此外,文章还提到 Mistral AI 的未来目标是与 OpenAI 比肩,并已与微软 Azure 创建战略合作。最新的 Mistral Large 模型则直接针对 GPT-4 竞争,展现了 Mistral AI 从开源模式到优化商业模式的战略转变。

《原创 | 一文读懂K均值(K-Means)聚类算法》。本文详细介绍了K-Means聚类算法,一个广泛使用的无监督学习算法,它适用于聚集数据并发现数据内在的分布结构。文章解释了K-Means算法的基本原理,其中簇的数量K是预先确定的,且簇的中心或质心是通过算法迭代计算得出。算法过程包括随机选择初始质心、分配数据点到最近的质心、重新计算质心,并重复这个过程直到质心稳定。作者提供了一个手工计算的例子来说明K-Means如何工作,并详述了如何通过总簇内平方和的最小化来评估聚类效果。此外,文中对算法的时间复杂度、初始化问题以及优缺点都进行了讨论。

《大语言模型时代的聚类怎么做?哪种embedding算法和聚类算法最有效?》。本文研究在大语言模型(LLM)时代文本聚类的有效方法,对比各种文本嵌入方法及聚类算法。研究显示,LLM嵌入在抓取结构化语言特征上表现突出,特别是BERT在轻量级嵌入中卓越。使用多种验证指标(如F1分数、调整兰德指数等),结果推荐在正规文本聚类中配合k-means算法使用OpenAI嵌入方法。实验发现,在优化聚类质量时,应平衡嵌入维度、摘要技术等因素,避免一味追求维度增大。BERT由于较低维度和上下文理解力,在开源模型中效果最佳;而在LLM嵌入之间,Falcon-7b因混合语料库训练在多数数据集上超越LLaMA-2-7b。

《从长期记忆的角度谈Agent》。本文探讨了在构建自主智能体(Autonomous Agents)和智能体模拟器(Agent Simulations)时,长期记忆这一核心能力的重要性和实现。作者说明了大语言模型(LLM)在长期记忆上的局限性,并讨论了如何通过外部存储来辅助LLM的记忆。同时,介绍了几个流行的自主智能体项目,如Langchain、Visual-ChatGPT与HuggingGPT,并详细解析了如何结合短期和长期记忆管理,以及通过文档检索来增强LLM在处理增强记忆任务时的性能。此外,文中还讨论了如何使用向量搜索改进传统搜索,以及基于LLM的高阶逻辑链技术的潜力。

《从啥也不会到GPT-3和InstructGPT》。作者详细记录了从基本的机器学习原理起步,逐步学习NLP和大型语言模型(LLM)的心得。强调了深度递归学习方法,即遇到不懂的概念就立刻搜索学习的重要性。文章详细列出了学习大模型的顺序,包括预处理、分词、模型优化等,一直至对GPT-3和InstructGPT的理解。每一部分都有推荐文献和关键点说明,使读者可以按顺序阅读文档逐步理解。涉及多种模型的细节,像Transformer、BERT、T5和GPT系列,并且讨论了各种模型的原理和应用。

《ChainLM: CoTGenius 框架,专门用于自动生成高品质的 CoT 提示》。文章介绍了CoTGenius框架,它是设计来自动生成高品质Chain-of-Thought (CoT)提示的系统。通过三种策略(复杂化、多样化、具体化)和筛选机制(进化成功评判、正确性验证),它能生成更有挑战性和具体性的CoT问题。此外,文中提出“步级辩论法”,多个角色对推理步骤逐一讨论以确保正确性,增强了模型在复杂推理任务上的表现。相关数据集和代码也公开分享以进一步的社区研究和应用。

《Token预测的未来:大型语言模型的预训练后操作》。文章详细探讨了大型语言模型在预测单个Token功能之外的能力,如理解上下文、创造连贯文本和解决问题。强调了从基础预训练到指令微调和对齐的多层训练方法的重要性。开篇介绍了语言模型的基础组件和Transformers的token预测。之后,分析了OpenAI的InstructGPT如何创新非任务特定微调,提高模型对细腻指令的响应力。最后说明了精心设计的交互提示的重要性,以及如何使这些高度复杂的模型与人类指令和价值观更好地对齐。

⭐️ Go & 云原生 & Rust 相关

《分布式系统模式 - 低水位标记(Low-Water Mark)》。文章介绍了分布式系统中低水位标记(Low-Water Mark)机制,重点是如何管理日志文件的大小和保留时间以优化存储。探讨了两种低水位标记策略:基于快照的低水位标记和基于时间戳的低水位标记。文中以ZooKeeper和etcd为例,描述了周期性快照帮助确定可丢弃日志的边界,而Kafka则使用时间戳决定日志保留期。文章还深入讨论了etcd中快照和写前日志(WAL)如何结合使用以确保状态一致性,并对Kafka日志清理的基于时间和大小的策略进行了阐释。

《Go 1.22引入的包级变量初始化次序问题》。文章详述了Go 1.22版本对包级变量初始化顺序的改变。由于Go 1.22未在官方Release Note中提及变化,作者发现变量初始化顺序与文档描述相悖。经过详细分析和测试,作者推测Go 1.22将常量误视为未初始化变量,导致初始化次序变动。此问题被提交至Go官方GitHub(issue #66575),并获确认,修复计划已纳入Go 1.23版本。文章还讨论了Go语言规范与实际编译器行为的一致性问题。

《分布式系统模式 - 分段日志(Segmented Log)》。文章着重讲述了日志分割技术对于处理大体量日志的重要性,并介绍了如何通过日志分割来映射日志偏移量,优化读写性能。文中详细举例了Kafka、etcd和MySQL的实际应用案例,说明分割日志和维护索引如何帮助它们高效地处理日志数据。特别指出Kafka如何通过分段和索引机制处理日志分段,详述了etcd中的分段日志管理,以及MySQL二进制日志的组成和查询方式,体现了分段日志模式在现代分布式系统中的实践价值。

《Go singleflight 源码剖析》。本文深入分析了 Go 语言中singleflight包的源码,讲解其如何通过Group和call结构体来防止缓存击穿,保障相同资源的请求在同一时刻只执行一次。详细解释了其中的核心机制,包括请求的合并和结果的共享等。文章还探讨了如何通过Do、DoChan和Forget方法来处理请求,确保函数调用的唯一性及结果的正确分发。通过对Result和panicError结构体的剖析,作者清晰展示了singleflight提供的错误处理和结果传递功能。

《分布式系统模式 - Write-Ahead Log》。本文探讨了Write-Ahead Log (WAL)在分布式系统中的关键作用,尤其在保证数据一致性和服务持续性方面的应用。作者解释了WAL用于节点间复制数据、容错和状态机复制技术,以保障数据不因服务器故障而丢失。同时,文章讨论了刷新操作的性能考量,日志数据的校验和纠错机制,以及利用幂等操作处理可能的重复记录。特别指出etcd项目如何运用WAL进行数据持久化,证实了WAL技术的实际效益和在集群同步中的作用,进而强调了复制日志在提高系统复原力和可靠性方面的价值。

《Go 创始人 Rob Pike:我们做对了什么?》。文章由煎鱼撰写,回顾了Go语言创始人Rob Pike对Go的成功因素的思考。文章着重介绍了Go语言的设计理念,是为了提供一种更好的编写软件的方法,而不仅仅是一种新的编程语言。Rob Pike突出了Go的可爱吉祥物、强大的规范定义、出色的可移植性和兼容性、标准化的代码格式化工具Gofmt,以及强大的工具链等成功要素。文章还讨论了Go社区标准库的统一,以及多种编译器实现的可能性,这些因素共同促进了其现代编程环境的构建和业务发展。

《最具研读价值的 Go 源码之一:context 包》。这篇文章详细剖析了 Go 的 context 包源码,阐释了 Context 的回溯链和树形结构如何协同工作来实现级联取消操作。文章解读了 context 包如何在 Go 语言中为并发控制和超时控制等提供标准化做法,并展示了通过接口和几个关键结构体实现上下文管理。特别强调了 context 的四个主要方法:Deadline, Done, Err, Value 的实现以及使用场景,详细解说了使用 WithCancel, WithDeadline, WithTimeout, WithValue 方法创建和管理不同类型的 Context 对象,为理解并发请求管理提供了宝贵的视角。

《Go 负责人 rsc 翻车,决定追加 godebug 行》。煎鱼撰写的文章讨论了 Go 核心团队负责人 Russ Cox 提出的新提案,即从 go.mod 中分离 GODEBUG 默认设置的变更。新提案应对了 Go 语言兼容性机制导致的一些问题,例如 GODEBUG 设置在依赖项更新时造成的冲突。提案引入了新的设置 default=go1.X,让基础设置和 go 1.X 行分离,从而允许在 go.mod 和 go.work 文件中设置模块级别的 GODEBUG。这变更确保了使用不同 Go 版本的同时可以保持不同版本的 GODEBUG 语义,提升了灵活性和兼容性。预计从 Go1.23 版本开始这一变更将正式生效。

《抽象的艺术:Go 语言中的编程哲学》。文章深入探讨了在 Go 语言编程中抽象的概念和实践。抽象被描述为不仅仅是隐藏细节的技术,更是提升代码质量和理解性的哲学。文章通过一个将比赛胜者计算器程序作为例子,展示了如何通过合理的函数组织提高代码的抽象层次。这使得逻辑更清晰、代码更易于理解,并且每个函数都有明确的目的。文章最终强调,良好的抽象是找到简洁与表现力之间的平衡,是编程艺术中的核心。

[]byte与string的两种转换方式和底层实现》。小许在文章中深入探讨了 Go 语言中 []byte 与 string 数据类型的转换方式及其底层实现机制。文章首先介绍了两种数据类型的基础知识,随后解析了两种常见的转换方式:一种是标准库方法,另一种是使用 unsafe 和 reflect 包的强转换方法。重点解释了强转换是如何通过指针操作避免内存分配来提升性能(零拷贝),并且指出这种方法虽然更高效,但需要小心处理可能的安全隐患。最后,提供了对 fasthttp 使用优化转换方式的分析,说明这种情况下的应用场景和益处。

《图文讲透Golang标准库 net/http实现原理 -- 服务端》。本篇文章详细介绍了Go语言标准库net/http在服务端的实现原理。通过代码示例和流程图解析,作者阐释如何在Go语言中启动HTTP服务并处理接收的请求。重点包括http.HandleFunchttp.ListenAndServe的使用,以及ServerServeMux结构体的内部工作原理。文章详细解释了如何注册和匹配路由,以及如何通过Server的ServeHTTP方法处理客户端请求,达到理解Go语言http服务端核心处理流程和思路的目的。

《goroutine调度器揭秘 2》。本文是对Go语言goroutine调度器的深入解析,内容继续之前文章的讨论,对Go的调度器在运行时的各个阶段进行了详细的剖析。作者参考了Go 1.21.1版本,讲解了schedule函数的工作机制,包括其如何永不返回地循环调用和所涉及的“栈切换”技术。文中还详述了调度器的核心函数findRunnable的实现逻辑,包括它是如何寻找可执行的goroutine的,以及多种场景下可能会调用schedule函数的过程。作者通过解释不同的调用函数和它们的使用场景,帮助读者理解Go调度器的工作原理。最后,文章承诺补充内容关于抢占式调度,并引导读者关注公众号以获取最新文章。

📒 后端相关

这些年背过的面试题——Netty篇

云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测

技术领导力之路 - 正反馈

深度 | 一条查询SQL的前世今生 —— ClickHouse 源码阅读

看一遍就理解:IO模型详解

工作多年,如何从 CRUD Boy 转型为分布式系统架构师?解锁分布式系统的艺术:从零开始理解分布式系统架构与设计原理!

📒 前端相关

前端要学会自己写shell脚本,让你的项目看起来更优秀!

扩展你的前端知识库,毫无废话!【下】

从流程上讲,如何用AI为前端开发提效

如何使用 Router 为你页面带来更快的加载速度

GPT自动投简历,一周斩获三offer,开源分享!

一次给社区知名项目 Astro 的PR,如何点燃了我的开源之路

MDH Weekly 124 - 《Code Like a Pro》

· 46 min read
加菲猫

alt text

封面图:Go 1.22 发布第一个安全补丁

🌟 AI 相关

《Prompt engineering》。文章介绍了在使用Anthropic的Claude模型时,如何通过prompt engineering(提示设计)提升其性能。提示设计是一个经验科学,需要通过反复迭代和测试来优化提示的表现。文章建议定义清晰的任务和成功标准,并通过测试驱动的开发方法来优化提示。还包含了一些技术,比如清晰直白的指令、使用示例、赋予Claude特定角色、使用XML标记、分解复杂任务等,以提高输出质量和一致性。这些技巧帮助用户更好地利用Claude完成特定的用例。

《Transformer前馈神经网络--Y=Wx+b公式却是人工智能领域的核心》。这篇文章分析了Transformer模型中前馈神经网络的重要性,特别强调了其核心公式Y=Wx+b的重要作用。作者提到输入矩阵在经过multi-head attention机制和add&norm操作后,由前馈神经网络经历两次线性变换和一次ReLU激活函数处理。这一过程确保无论输入数据如何变化,输出数据的维度都保持不变,从而保持数据的一致性并方便模型分析。

《Devv AI 是如何构建高效的 RAG 系统的》。本篇文章探讨了Devv AI公司构建高效Retrieval Augmented Generation(RAG)系统的策略。RAG系统结合了语言模型、外部知识集合和特定场景所需知识,以提升搜索效能。作者提到,通过Go和Rust构建高并发架构、使用多种数据嵌入技术及优化召回机制来提高性能。文章指出,为了达到更高的效果,需要根据业务实际进行定制化优化,没有通用最佳实践,需要实际尝试和评估。

https://twitter.com/Tisoga/status/1731478506465636749?s=20

《OpenAI科学家Andrej Karpathy力荐,23年必读的大语言模型论文清单》。文章由OpenAI的科学家Andrej Karpathy推荐,是对大语言模型(LLM)领域重要文章的整理。这份清单涵盖LLM的训练、运行、应用和未来发展方向,包括安全挑战。清单提及重要论文如《Attention Is All You Need》(提出了Transformer架构)、《Language Models are Unsupervised Multitask Learners》(关于GPT-2)、《Training Compute Optimal Language Models》等,并探讨了如何在现实世界中安全地集成并使用LLM。清单强调了追踪当前研究与保持思维前沿性的重要性。

《阿里出品!7B最强多模态文档理解大模型mPLUG-DocOwl 1.5》。文章介绍了由阿里巴巴开发的mPLUG-DocOwl 1.5模型,这是一个7B参数级别的多模态大型语言模型(MLLM),专注于文档图片的结构化理解。模型通过统一的结构学习策略,在不同文档理解基准测试上取得了优异效果。文章提到了模型结构、训练策略、训练数据及其在多任务微调中的应用。mPLUG-DocOwl 1.5的性能在开源模型中处于领先地位,但与闭源模型相比在某些方面仍有差距。团队计划进一步优化并开源模型,促进社区的讨论与合作。

《Good Data is All You Need,训练LLM数据是关键》。本文探讨了在大型语言模型(LLM)训练中,数据的重要性、数据集的构成和数据质量。文章强调了高质量数据对模型性能的决定性影响,介绍了数据集应包含目标任务数据及相关迁移能力训练数据。文章详细讨论了在预训练、持续预训练和有监督微调阶段的数据混合策略,并指出避免“遗忘”问题的重要性。对于提升数据质量,建议提供丰富的任务信息和内逻辑,利于模型理解和泛化。最终,文章强调了结合数据多样性和解释性的必要性,以提升模型的学习效果和泛化能力。

《融合RL与LLM思想,探寻世界模型以迈向AGI》。本文深度分析了大型语言模型(LLM)与强化学习(RL)理论的结合,以及它们共同对人工通用智能(AGI)发展的影响。文章以AlphaGO、AlphaZero、AlphaDev这些模型为基础,讨论了深度学习和强化学习之间理论与实践的融合。重点探讨了Algorithm Distillation(AD)这一概念,这是将RL过程细粒度地嵌入到LLM中,使LLM能学习和压缩RL领域的深度洞察。此外,文章预测了AGI达到超人类智能(ASI)的潜在路径,并指出当前AI在LLM与RL层面上的缺失和未来发展的可能方向。

《高性能 LLM 推理框架的设计与实现》。文章从多个技术角度深入探讨了大型语言模型(LLM)的高性能推理框架设计。详细介绍了LLM推理的Prefill和Decoding两个阶段,以及测量推理性能的四个核心指标:吞吐量(Throughput)、首字延迟(First Token Latency)、延迟(Latency)和每秒请求数(QPS)。文章强调了Prefill阶段尽管计算量大但占比小,而Decoding阶段则数量庞大,是性能优化的关键。提出了多项优化策略,包括流水线前后处理、动态批处理和KV缓存量化等,有效提升系统的QPS和吞吐量。还讨论了包括FP8量化在内的多种硬件优化手段,旨在提供解决大模型高效推理的综合方案。

《超越 GPT-4V 和 Gemini Pro!HyperGAI 发布最新多模态大模型 HPT,已开源》。HyperGAI团队推出的多模态大模型HPT,在多项基准测试中胜过GPT-4V和Gemini Pro。HPT包含HPT Air和HPT Pro两个版本,强调多模态理解并支持开源。HPT框架整合了视觉编码器和大语言模型,通过其创新组件H-former实现视觉与语言的紧密对齐。H-former处理视觉输入,生成可与语言模型联用的视觉嵌入。HPT在多模态数据集上的训练显示了其出色的理解、推理和创造力,尤其在MMMU及其它多模态测试中表现突出,同时展现了良好的泛化能力,这表明多模态大模型研究进展显著。

《大模型推理核心技术:Continuous Batching详解》。文章深入探究了大模型推理中的Continuous Batching技术,从历史发展到现代架构进行了详尽的论述。阐释了在Transformer出现前后,Batching如何适应不同计算模型需求,特别是如何解决输入序列和批次大小变得可变的问题。分析了Continuous Batching的两种主要策略:ORCA框架的Iteration-level和Selective Batching,介绍了vLLM和FastGen等变种实现方法。通过对Continuous Batching在执行、资源管理、延迟均衡等方面的讨论,以及提及商汤LightLLM和TensorRT-LLM的应用案例,突出了该技术在推进AI服务效率的重要作用。

《第二篇:ChatGPT背后强大而神秘的力量:用最简单的语言讲解Transformer架构之Embedding》。文章深入浅出地解释了Transformer架构中词嵌入(Embedding)的概念,包括其两种实现方法:稀疏表示法(如词袋模型和TF-IDF)和密集向量表示法(如Word2Vec和GloVe)。作者还介绍了如何使用欧氏距离、曼哈顿距离、点积和余弦距离计算词嵌入相似度的方法,并通过易懂的例子和代码实现。文章旨在让读者理解词嵌入对于语义理解的重要性,以及它在各种自然语言处理(NLP)任务中如何起到了核心的作用。

《一文搞懂Transformer架构的三种注意力机制》。本文是系列讲解Transformer架构的第四篇,重点讲解了核心组件注意力机制的三种形式。文章首先解释了注意力机制的概念,然后详细阐述了Transformer注意力层的工作原理,包括基础知识、理解Q、K、V矩阵,以及交叉、全局自注意力、因果注意力层的不同作用。此外,还介绍了位置编码,解释了其对位置信息的编码方式,以及如何通过正弦波函数来实现。文章最后描述了多头注意力机制,分析了其优势和如何通过将矩阵拆分为多个"头"来同时关注序列的不同特征。通过深入理解和比较这些注意力层与机制,文章帮助读者进一步认识Transformer模型的强大功能与效率。

《TensorRT-LLM初探(二)简析了结构,用的更明白》。本文针对NVIDIA的TensorRT-LLM进行了深度解析,为使用者提供了一份快速入门指引。详细介绍了TensorRT-LLM的基本架构和组成,包含TensorRT库、FasterTransformer的设计以及其他组件,同时强调了大部分代码开源但包含一些闭源部分。还讨论了结合Triton Inference Server部署TensorRT-LLM的方式。文章解读了大模型推理过程中的动态batch(In-flight Batching)和Paged KV Cache技术,并提到了TensorRT-LLM对多卡支持的实现。最后,对于性能调优,还介绍了TensorRT-LLM独特的kernel性能优化以及量化策略。

《谈谈我对 AIGC 趋势下软件工程重塑的理解》。文章讨论了人工智能生成内容(AIGC)趋势对软件工程的影响,主要包括四个方面:AI作为软件开发不可或缺的部分、AI对软件研发的挑战和智能化机遇、企业实施软件研发智能化的策略与途径以及可落地的智能化软件研发工具。作者指出,在大模型时代,智能代码助手如Github Copilot显著提高了开发效率。AI的应用让开发者能专注于创新而非日常任务,而研发的智能化不仅改善了工作效率,还有助于处理软件本质的复杂性。文章还提到,利用AI工具如通义灵码可以增强个性化开发体验,并促进企业数字资产的增值。最终,作者建议采用分阶段方法实现软件研发智能化转型。

《如何通过Vec2Text提升RAG的可解释性》。这篇文章深入分析了Cornell University的研究团队发表的论文《Text Embeddings Reveal (Almost) As Much As Text》,介绍了一种名为Vec2Text的方法,它能从文本嵌入中恢复原始文本,有助于评估文本嵌入的隐私泄露风险。Vec2Text采用迭代修正的方式逐步重建文本,通过训练好的语言模型不断生成与目标嵌入更接近的文本。实验表明,Vec2Text在多个数据集和领域上能成功重建文本,显示出跨域文本恢复的有效性。同时,文章也探讨了Vec2Text的创新点、存在的不足,以及未来提高长文本恢复能力和减少嵌入模型查询次数的可能方向。

《Transformer扩散模型的先驱之作:DiT、PixArt、HDiT》。文章综合介绍了三个重要的Transformer扩散模型结构:DiT、PixArt与HDiT,并对各自的特点和贡献进行了阐述。DiT以其可扩展性受到关注,通过遵循标准的Transformer架构进行设计,继承并改进了ViT的设计思想。PixArt由华为诺亚方舟实验室提出,是一个高效的文本到图像扩散模型,通过优化训练策略和数据集构造,显著降低了训练成本。HDiT则为Stability AI公司提出的沙漏形扩散Transformer,同样关注于图像生成。文章详细分析了这些模型的构造、优化和应用效果,展示了它们在图像生成领域的先进技术和潜力。

《让 LLM 稳定输出 JSON》。文章探讨了如何使大型语言模型(LLM)稳定输出 JSON 数据的方法,以及这些模型如何在高层次上工作。LLMs(如 ChatGPT 和 GPT-4)通常是自回归的,通过逐字预测来生成文本。文章介绍了原型系统 ReAct,这是一个通过Prompts来引导LLM产生特定格式输出的工具。通过训练,ReAct 可以解析工具名称和参数,以及调用工具和重复续写过程,直至获得最终答案。文章通过 COND_DATA_PROMPT 实践展示了如何生成用户问题的 JSON 结构,证明了在正确设定下,LLM 能可靠地输出所需的 JSON 格式,利用大模型的续写能力完成复杂的数据处理任务。

《没等来OpenAI,等来了Open-Sora全面开源》。文章报道了Colossal-AI团队开源了一个类似OpenAI Sora视频生成模型的版本——Open-Sora 1.0,该模型包括完整的训练和数据处理过程。Open-Sora采用了Diffusion Transformer(DiT)架构,引入空间-时间注意力机制的STDiT模型。模型通过三个阶段:大规模图像预训练、大规模视频预训练和高质量视频数据微调,逐步提升生成质量。GitHub上提供的资源让AI爱好者可以轻松复现并生成视频内容,实现了在视频生成方面的成本节约与效率提升。团队承诺持续优化项目,实现更好的视频内容生成。

《刚刚!马斯克开源 Grok:参数量近 Llama 四倍,成全球最大开源模型》。本篇文章详述了马斯克通过其AI公司xAI开源了GroK-1,这是一个具有3140亿参数的混合专家系统模型,是迄今为止开源模型中最大的一个。它的参数量是Llama模型的四倍多,尽管如此,谷歌的switch transformer以1.6T参数保持公开记录。这次开源使用的是Apache-2.0许可,提供基本模型权重和网络架构,未针对特定应用进行微调。文章分析了开源背后的意图,其中包括与Meta保持一致、增加xAI在AIGC市场的吸引力,以及对于开源大型AI模

《一文掌握大模型提示词技巧:从战略到战术》。本文作者分享了在与大型语言模型合作时编写有效提示的战略和战术技巧。文章详述了如何制定清晰、具体和避免歧义的提示词原则、提供了详细示例,并讨论了用户输入完整性检查、结构化提示词及其优化等方面的技巧。作者强调了结构化的提示可以显著提高大模型的效能,使其输出更符合预期,还探讨了使用AI技术优化提示词的方法。

《详解常见的几种LLM fine-tuning算法》。本文详细解读了针对大型语言模型(Large Language Models, LLM)的几种微调(fine-tuning)算法,包括LoRA、QLoRA和AdaLoRA。文章讨论了各算法优化模型参数的方式,如LoRA通过低秩矩阵适应,QLoRA在此基础上增加量化优化和AdaLoRA通过奇异值分解的方式进行适配,以期在使用较少资源的情况下维持或提高模型性能。这些算法均旨在在保证效率和效果的同时,减少微调过程中的资源消耗。

《马斯克开源Grok-1:3140亿参数迄今最大,权重架构全开放,磁力下载》。本文报道了马斯克旗下的大模型公司xAI宣布开源大模型Grok-1及其全部权重和架构,Grok-1为迄今参数量最大的开源语言模型,包括3140亿参数的混合专家模型。Grok-1从未进行过针对特定任务的微调,展现出在编程及推理任务上的优异能力。开源模型为研究人员与技术社区提供强大工具,助力创新,尽管也存在潜在的数据污染和资源需求挑战。文章还提及xAI公司的长期目标和研究方向,反映出对开放科学和技术发展的致力。

⭐️ Go & 云原生 & Rust 相关

《Rust 中的 Clone-on-Write(Cow)类型:灵活的数据处理》。这篇文章详细介绍了 Rust 语言中的 Clone-on-Write(即 Cow)类型,它是一种优化内存使用的策略,极大提高了数据处理的灵活性和效率。文章阐释了 Cow 类型的概念、优势和具体用法,举例展示了如何在读取大型数据结构或需要效率高的场合使用 Cow,特别是在读多写少的情况下以减少不必要的复制开销。文章还讨论了 Cow 类型在多线程编程中的应用,如何通过减少锁的使用来提高性能。作者提供了一系列的 Rust 代码示例,帮助读者理解和掌握 Cow 类型的正确使用方法,对于追求效率与内存安全的 Rust 开发者来说,是一份实用的参考资料。

《K8s 无备份,不运维!》。本文详细介绍了Kubernetes集群的备份与恢复策略,强调备份作为投产前的必要步骤。文中介绍了两种备份方法:物理备份(etcd备份)和逻辑备份(velero备份)。物理备份执行简单,但只能整体恢复;逻辑备份提供内容选择性备份,允许细粒度控制。恢复流程中详细阐述了停止kube-apiserver,停止etcd,数据恢复,启动etcd及kube-apiserver的顺序步骤,保证了集群数据的稳定恢复。文章还提供了具体的备份恢复脚本和命令,并说明了它们在备份制定、执行和集群恢复中的应用。

《Go singleflight:防缓存击穿利器》。这篇由陈明勇撰写的文章讲解了如何使用Go语言的singleflight包来预防缓存击穿问题。文章阐述缓存击穿的定义,并介绍了mitigation策略,如使用永不过期的缓存键、互斥锁和提前更新策略。singleflight通过合并并发请求并共享单一结果来缓解这一问题,这样即使多个goroutine请求同一缓存键,数据获取的操作只会被执行一次。通过Group结构和Do方法,singleflight确保并发请求不会同时执行相同的数据获取,大幅降低数据库负载。文章还分享了使用例子和最佳实践,包括键设计和超时控制策略。

《Go 1.22 发布第一个安全补丁》。本文作者杨文介绍了Go团队发布的最新补丁版本Go 1.22.1和Go 1.21.8,这对Go 1.22系列而言是首个安全补丁。该补丁解决了包括html/template, net/http, net/http/cookiejar, net/mail, crypto/x509在内的5个安全问题,例如修复了使用未知公钥算法时的panic错误,以及net/http包在处理HTTP重定向时错误转发敏感信息的问题。文中也引用了相关的GitHub issues链接,并强调了更新的紧急性和重要性。

《运维人少,如何批量管理上百个微服务、上千条流水线?》。文章讲述了在微服务和云原生技术背景下,如何通过云效应用交付平台AppStack高效地管理大量微服务和流水线。平台提供了应用模板功能,让使用相同技术栈的应用可以快速初始化。通过两种方式:一是直接使用或按需修改提供的示例模板;二是企业自定义模板配置。此外,通过应用模板修改实现应用配置的批量升级,简化了部署流程和权限管理,大幅提升了运维效率,实现了“解放双手”的管理方式。文章还描述了实现这一批量管理的具体操作步骤。

《Go 团队近两年在做什么,AI 方面如何发力?》。煎鱼在文章中分析了Go团队近两年的发展动态及其在AI领域的规划。Go团队在增加泛型、提高向后/前兼容性、增强软件供应链安全性、完善标准库、提升性能、改进Go IDE等方面取得了显著成果,同时,Go正计划对生成式AI进行深入研究。重点探索提高Go代码生成质量、对已有代码的现代化处理、以及在VSCode IDE中如何有效提示Go代码。文章强调了Go团队依据社区反馈和与业内大客户的联系来进行决策,并对未来AI协助工具的发展抱有积极的态度。

《Goroutine调度器揭秘》。文章深入解析了Go语言中Goroutine调度器的工作原理,详细介绍了Goroutine(G)、机器线程(M)和逻辑处理器(P)如何交互,形成了高效的M:N调度模型。描述了Goroutine的三种状态:等待、可运行、正在运行,并讲述了它们的生命周期管理。其中,调度器通过“工作窃取”机制使线程(M)在处理器(P)间动态分配Goroutine,从而实现了高效的并发执行。同时,Network Poller负责网络 I/O 的异步处理,避免了阻塞操作。文章强调了Go语言在简化并发程序设计上的优势,尤其是在Goroutine的轻量和调度策略方面。

《golang sync.Map之如何设计一个并发安全的读写分离结构?》。文章解析了Go语言sync.Map的并发安全的读写分离设计结构。详述了sync.Map采用的读优先策略和"懒惰"同步机制,使用只读的read map和写入的dirty map通过原子操作和锁机制实现高效的读操作和写入的安全性。读操作优先从read map读取,降低锁的竞争;写操作更新dirty map,并根据读miss次数决定何时将dirty更新为readsync.Map适用于读多写少场景,写多的场景下性能会下降,因为频繁同步和上锁操作会增加开销。

《Kubernetes HPA 的三个误区与避坑指南》。文章针对Kubernetes水平弹性扩容(HPA)存在的三个认知误区进行了深入分析,并提供了避免错误的指南。第一误区是HPA的扩容死区,第二是利用率计算方法误解,第三是弹性行为的滞后性。作者明确了HPA操作的工作原理、度量源、指标计算方法,和扩缩的行为策略,着重强调合理配置和理解HPA可以最大化其效率和效果。文章以用户在使用HPA时的常见问题为基础,提供实践中的有效“避坑”策略,有助于改善服务的弹性管理和资源利用。

《容器运行时-Containerd容器管理》。本文详细讲解了Containerd容器管理的基础命令和操作过程,包括创建静态容器、查看容器、操作容器任务以及容器的启动和删除。特别指出,静态容器需要通过ctr tasks启动成为动态容器,以及如何查看容器进程和资源使用情况。文中还解释了使用exec进入容器进行操作的步骤,并展示了如何利用ctr task命令来管理容器的生命周期,如启动、暂停、恢复和删除容器进程,为Containerd容器运行时的用户提供了实用的管理指南和技巧。

《更强大的Go执行跟踪能力》。文章探讨了Go中runtime/trace包的功能强化,详细介绍了跟踪工具的最新进展。其中包括对执行跟踪开销的降低,现在大多数应用的CPU开销已减至1-2%,以及执行跟踪的扩展性提升。介绍了“飞行记录”技术,持续收集跟踪数据至关键事件发生,当发生错误时能够回溯。同时,分享了一个新的实验性跟踪读取器API,使得程序执行跟踪的分析更加容易和高效。这些进展旨在解决过去跟踪中遇到的问题,如高开销和可扩展性问题,提高Go程序的诊断能力。

《某些情况下,合理使用指针将大大提升程序的运行效率》。本文由老貘撰写,探讨了通过合理使用指针来提升Go程序性能的策略。文章讨论了如何避免在循环中进行不必要的数组空指针检查,这是Go编译器v1.18的一个缺陷,通过代码示例展示如何将性能优化至最佳。进一步,文中还讨论了当数组指针是一个结构体字段时的特殊情况,提供了不同的方法和基准测试结果,指出了编译器优化的局限性,最后建议在可能的情况下使用切片来提高性能。文章深入浅出,为开发者提供了Go语言性能优化的有效技巧。

📒 后端相关

《为什么不要在Spark中执行这个操作,详解DataFrame collect源码流程》。本文作者Tim分析了Spark中DataFrame的collect()操作的弊端及其源码执行流程。文章指出,大量使用collect()可能导致程序慢速运行或挂掉,这与处理大数据量、内存不足、网络延迟、分区数过多和数据倾斜等问题有关。通过深入解析collect()的执行细节,从withAction函数到DAGSchedulerrunJob方法再到TaskScheduler的任务调度,Tim详细阐述了该操作如何通过多个Spark组件协同工作完成作业的划分、调度和执行,进而指导开发者在合适的场景使用collect()操作以及可能的性能优化策略。

《大厂Spark面试题,搞懂这些绝对稳稳的》。文章由作者分享了一系列Spark面试题,并提供详细解答,帮助准备技术面试的人士深入理解Spark。内容涵盖了lineage理解、处理数据倾斜、Spark的DataFrame API、RDD的优缺点、不同缓存级别的使用时机、广播变量、内存管理、窄变换与宽变换的区别、数据序列化等核心概念,并深入讨论了如何解决大数据集处理、连接优化、数据倾斜问题、性能瓶颈诊断以及处理嵌套JSON数据等高级话题。对Spark RDD排序、内存管理、区别于Hive的Spark分区等高阶问题也进行了探讨,适合打算进入大厂或想要深化Spark知识的开发者阅读。

《腾讯文档收集表后台重构:改造一个巨石单体!》。腾讯技术团队分享了他们对腾讯文档收集表服务进行后台重构的经验。原系统为C++风格的巨石单体服务,存在严重的业务逻辑耦合、接口分离不足、稳定性差和可观测性不足等问题。在重构过程中,团队通过业务模块化、架构松耦合设计、存储隔离、性能提升和增强可观测性等措施,提高了系统的稳定性和开发效率。通过使用现代化的技术栈和架构模式,成功缩小故障爆炸半径,提升了业务稳定性和服务质量,实现了在保持业务不断线的情况下进行系统升级。

《这些年背过的面试题——JVM篇》。本文详细介绍了面试中经常问到的JVM相关问题和答案,涉及JVM内存划分、对象创建步骤、垃圾回收机制与算法、类加载过程和双亲委派机制等核心话题。文章深入探讨了JVM的内存区域、类加载机制、垃圾收集器类型与选择依据、以及JVM性能调优和新特性等内容。还提供了如何进行现场问题排查的实用建议,包括如何使用各种命令行工具查询JVM状态信息,至关重要的内存泄漏和性能瓶颈分析,以及解决故障的各个步骤。对于准备Java面试的求职者以及需要加深对JVM理解的Java开发者来说,本文是一篇宝贵的学习资源。

《Kafka Consumer 消费消息和 Rebalance 机制》。本文深入探讨了Kafka消费者的消费机制与Rebalance机制。解释了消费组的概念,以及消费者如何进行消息的消费操作,包括订阅主题、拉取消息、提交位移等步骤。重点讲解了Consumer客户端的配置参数,例如bootstrap.servers、group.id、auto.offset.reset、max.poll.records等。文章也详细分析了Rebalance机制的触发条件和分区分配策略。最后提供了一系列基于Kafka消费者的高频面试问题,如命令行工具的使用、Kafka Producer的执行过程、消息的有序性保证、线程安全性等,为Kafka用户和求职者提供了宝贵的参考信息。

《40 张图搞懂分布式追踪》。楼仔在本文中详述了分布式追踪系统的原理及应用实践,特别是在微服务架构中如何追踪请求调用路径与分析性能问题。文章介绍了OpenTracing标准规范、分布式追踪核心概念如Trace、Span、SpanContext,并绘制直观示意图说明整个分布式追踪机制如何运作。文中具体分析了SkyWalking框架的自动数据采集、context跨进程传递、traceId的全局唯一性保证和性能优化的关键技术与实现方式。通过实际案例,展示了如何整合SkyWalking到现有监控体系并进行个性化插件扩展,让读者深刻理解分布式追踪在微服务环境下的关键价值和技术细节。

《小红书离线数仓提效新思路,提升百倍回刷性能》。本文由黄猿、马尔科和凌波三位作者共同撰写,介绍了小红书为提升离线数仓的效率与性能,转而采用StarRocks数据仓库引擎替代Spark的部分任务。通过引入StarRocks,小红书成功将任务资源消耗大幅降低,数据产出时间提前,回刷时间及成本分别减少了90%以上。文中详细讲解了数仓分层设计、数据回刷机制、资源优化策略以及StarRocks的核心技术,包含向量化查询加速、物化视图、Colocation Join等。此外,文章还展望了未来探索StarRocks在湖仓一体和存算分离场景的应用。

《ElasticSearch常见用法,看这一篇就够了(文末送书)》。本文为ElasticSearch的入门教程,详细介绍了其基本概念和常用操作,如索引的创建、查询、删除以及文档的增删改查。特别强调了ElasticSearch的分布式特性、全文搜索能力及Query DSL的高级查询功能。文中通过具体的RESTful API示例,使读者能够快速掌握每个操作。此外,还涵盖了高亮查询、分页、排序等高级功能,文章用清晰的结构为读者提供了ElasticSearch实用性和灵活性的全面了解,并在文末提供了一本关于ElasticSearch的进阶书籍赠送。

📒 前端相关

《在 2023 年屌爆了一整年的 shadcn/ui 用的 Headless UI 到底是何方神圣?》。文章探讨了 shadcn/ui 这个在 2023 年大受欢迎的 React UI 组件库,及其基础——Headless UI 的概念和优点。Headless UI 是一种前端开发模式,将 UI 逻辑和样式分离,让开发者能够构建无样式但包含完整逻辑和功能的组件。文章讲解了 Headless UI 的起源、发展历程,以及为何在现代前端开发中变得如此重要。此外,作者分析了传统 UI 组件的限制和 Headless UI 的应用场景,强调了它的灵活性、定制性和轻量级特点,并提出在跨平台和定制化高的项目中,Headless UI 是非常适合的选择。

《年底了,聊聊在字节做了一学期工程化的心路历程》。该文章由一位在字节跳动实习并从事工程化工作的作者分享了他的实习经历和心得。文章讲述了作者如何从一名对工程化知之甚少的实习生,在mentor的引导下,通过实际项目实践,逐渐积累经验并在工程化领域取得了质的飞跃。具体的工作内容包括实现monorepo项目支持路径别名源码引用、主项目构建工具的升级、lint工具的升级以及新增CI卡点等。整个实习过程中,作者不仅学习到了如何实际应用工程化知识,还体会到了工作中的成就感与挑战,并鼓励其他开发者通过实践来提升自己的工程化能力。

《托文档搜索的福,我终于在实战中用上了AI!》。广州小井在文章中分享了他使用人工智能文本向量化技术来解决文档搜索中的“语义模糊”问题。文中详细讲述了ElasticSearch在处理关键词搜索时的局限性,并介绍了向量化搜索的原理和应用。作者首先阐述了向量化能够有效地处理自然语言的非结构化数据,然后通过Milvus向量数据库实现搜索功能,以便在类似情况下有效检索出内容相关的文档。此外,文章还讨论了如何通过NLP模型将文本转化为向量,并将这些向量嵌入数据库中,以改善搜索的精确度。

《云音乐会员支付链路优化实践》。云音乐团队展开了对会员支付链路的多方位优化实践,以应对营收业务增长带来的稳定性和支付效率挑战。优化包括对收银台性能的提升,采用RN离线包、拆包以及Hermes引擎优化页面加载速度,以及在IAP支付流程中预取数据和集成StoreKit 2 来降低错误率并提升支付成功率。此外,也通过支付SDK升级、动态导入等技术手段,改进RN应用加载时的性能。优化结果显示在技术指标和业务指标上有明显提升,提高了用户购买体验和订单转化率。

《Vue3中我是这样玩Echart的》。本文介绍了作者在Vue3和TypeScript环境下,如何使用ECharts库进行数据可视化图表的开发。作者详细描述了基础的ECharts图表设置与渲染流程,并介绍了如何通过自定义Hook useEcharts 来优化图表实例的处理。同时,文章还探讨了如何实现一键换肤功能,包括色彩主题的动态切换和自定义色彩选择,以及如何基于 tvision-color 库生成配色方案。这篇文章对于前端开发者在实现复杂的图表展示与交互功能时提供了实用的指南和技术参考。

· 52 min read
加菲猫

alt text

封面图:Safe by construction - Roberto Clapis

🌟 AI 相关

《首个AI软件工程师Devin完整技术报告出炉,还有人用GPT做出了「复刻版」》。该文章介绍了机器之心报道的 Cognition AI 团队发布的首个 AI 软件工程师 Devin。Devin 在不需要人类辅助的情况下,在 SWE-bench 基础测试中解决了 13.86% 的问题,远高于目前 SOTA 模型的解决率。SWE-bench 是一个复杂的软件工程系统自动化基准测试,用以测试系统解决现实世界代码库中问题的能力。文章还展示了 Devin 在多步规划和定性案例分析中的表现,并说明了其运行方式和评估标准。同时,报告了社区已经产生了复刻版的 Devin,展示了 AI 在软件工程领域的先进能力和潜在的行业变革。

《大模型基础应用框架(ReACT\SFT\RAG)技术创新及零售业务落地应用》。本篇文章由九数算法中台分享,探讨了在零售行业中融入大模型技术应用框架——ReACT、SFT(指令微调)、RAG(检索增强生成)的创新与实际应用。文章提出了这些大模型技术在解决特定领域知识不足、减少内容幻觉、确保数据安全等方面的挑战,并详述了如何通过有监督微调来提升大模型在零售领域的专业知识水平。同时,介绍了京东在多个业务试点应用自研的SFT框架和RAG技术,突显了大模型在零售业务中从理论到实践的转换,以及在多种复杂使用场景中的潜在价值。

《南洋理工发布多模态金融交易Agent,平均利润提高36%!》。本文介绍了南洋理工大学发布的多模态金融交易Agent,通过融合大语言模型(LLMs)和多模态数据处理,提高了金融交易的效益。传统基于规则的交易系统在适应市场波动方面存在不足,而基于强化学习的系统虽然适应性更好,但在处理多模态数据和可解释性方面仍面临挑战。该文中提出的FinAgent是一种先进的多模态基础代理,能够综合分析多种形式的金融数据,提供精确的市场趋势分析和决策支持。实验证明,使用FinAgent进行金融交易可以平均提高36%的利润。论文链接:https://arxiv.org/pdf/2402.18485.pdf

《大模型推理:A100/H100 太贵,何不用 4090?》。本文介绍了大模型推理时,为什么可以考虑使用4090显卡。相比于A100和H100显卡,4090在性价比上更高,尤其在极致优化的情况下,甚至可以达到H100的2倍性能。文章指出,A100、H100和4090在算力方面的差距并不大,最大的区别在通信和内存方面。由于大模型训练使用高性能的通信,4090通信效率相对较低,因此在大模型训练中并不适用。然而,在推理(inference/serving)方面,4090在性价比上有优势,尤其是相对于H100显卡而言。文章还提到了GPU的训练性能和成本对比,以及大模型训练所需的算力和GPU数量等问题。详细内容可参考文章链接。

《精度提升!南加大等 | 提出分治Prompt策略,提升LLM分辨力》。本文介绍了一种基于分治算法的Prompt策略,旨在提高大语言模型(LLM)的分辨力。现有的提示策略在处理涉及重复子任务和含有欺骗性内容的任务时存在一定限制。为了解决这个问题,研究人员提出了一种基于分治算法的提示策略,利用分治程序来引导LLM的求解过程。该策略将任务划分为子问题并分别求解,然后合并子问题的答案。通过实验证明,这种分治策略能够提升模型在大整数乘法、幻觉检测和新闻验证等任务中的性能,相比传统提示策略具有更好的准确率和性能指标。论文地址:https://arxiv.org/pdf/2402.05359.pdf

《开源版“Devin”AI程序员炸场:自己分析股票、做报表、建模型》。这篇文章介绍了一个基于MetaGPT的开源项目Data Interpreter,该项目旨在处理数据实时变化、任务之间的复杂依赖关系、流程优化需求以及执行结果反馈的逻辑一致性等挑战。通过演示,展示了Data Interpreter在分析股票、预测葡萄酒质量、自动抠图、预测疾病进展和预测机器运行状态等方面的能力。该项目由MetaGPT团队与多所高校合作推出,提供了一种自主进行数据分析和建模的开源工具。

《【原创】一文读懂RAG的来源、发展和前沿》。本文介绍了检索增强生成(RAG)技术,该技术结合了检索和生成过程,旨在提高机器生成文本的相关性、准确性和多样性。文章详细解释了幻觉问题的存在以及解决幻觉问题的几种常见方法。RAG利用外部数据源进行信息检索,将检索到的信息作为上下文输入到生成模型中,从而帮助生成正确的响应。讨论了RAG的核心部件,如向量数据库、查询检索和重新排序。同时介绍了RAG在知识图谱和树结构方面的拓展。

《万字长文解析:大模型需要怎样的硬件算力》。这篇文章探讨了大模型在算力、存储、通信等多个方面上硬件资源的挑战和瓶颈。文章分析了以Transformer结构为核心的大模型在算力瓶颈、显存瓶颈和通信瓶颈方面的困境,以及当前所采取的硬件资源优化技术。此外,文章还提供了对大模型参数量和算力需求的量化估算,为选择合适的硬件设备和评估资源需求提供了指导。

《什么是好的大模型训练数据?》。本文基于Lilian Weng的博客,讨论了大模型如LLM在训练过程中对高质量数据的需求。认为高质量数据来源于“高质量人类”产生的标注数据,并强调了数据处理的重要性,提到了数据标注、质量控制和错误修正的重要步骤。文章还讨论了用于评估数据质量的多种方法,如Influence Functions和Noisy Cross-Validation,并提出了专注于“搭建高质量的数据标注pipeline”的企业方向。最后指出,在AI时代大量产出的数据中维护数据质量,是一个值得关注的挑战。

《读过的最白话讲清楚RAG原理的文章》。这篇文章直观地阐释了检索增强生成(RAG)的概念和工作原理,它是一种结合检索和生成的问答系统。该系统首先通过检索步骤找到与用户问题最相关的知识库内容,然后将这些内容与问题共同输入大型语言模型(例如ChatGPT)以生成答案。文章详细介绍了如何利用嵌入模型对知识库文本进行索引,以便协助语言模型进行精确的检索。此外,它还探讨了语义搜索背后的核心原则和技术细节点,如何通过嵌入找到与用户输入最匹配的知识,以及如何格式化文档以供语言模型使用,以便获得更高效的回答。

《LLM推理算法简述》。本文介绍了用于提高大型语言模型(LLM)推理性能的关键技术与策略。内容涵盖显存优化方法,如KV Cache减少显存浪费、MQA和GQA减少KV-Cache数量、Page Attention进行显存管理,以及提高推理速度的FlashAttention改进。文章还探讨了算子融合技术,比如FasterTransformer和DeepSpeed Inference的应用,以及调度优化策略如Async Serving和Dynamic Batch,最后介绍了用于处理大模型的分布式并行技术。这些优化手段能显著提高LLM推理过程中的性能与效率。

《数学推理增强!微软 | 提出数据合成框架:KPDDS,微调Mistral-7B性能超34B模型!》。微软的研究团队为提升大型语言模型(Large Language Models, LLMs)在数学推理任务的性能,提出了关键点驱动的数据合成(KPDDS)框架。KPDDS利用真实数据源中的关键点和示例对生成高质量问答对来训练语言模型。研究者基于此框架创建了KPMath数据集,进一步结合推理密集型数据形成KPMath-Plus数据集。在MATH测试集上,微调后的Mistral-7B模型达到了39.3%的零样本通过率,超越了数量更多的34B模型,证明了KPDDS的有效性与创新性。这一成果标志着LLMs在数学推理方面的性能得到显著提升。

《首个AI软件工程师上线!已通过公司面试抢程序员饭碗,华人创始团队手握10块IOI金牌》。在这篇文章中介绍了由华人创立的Cognition AI公司开发出来的首个人工智能软件工程师Devin。与现有GPT-4等模型不同,Devin能够独立完成复杂的编程任务,并已成功通过人工智能公司的面试和在自由职业平台Upwork上接单。得益于Cognition AI在长期推理和规划方面的进步,Devin在做决策和执行任务时,能回想相关上下文、随时间学习并修复错误。这标志着人工智能在理解真实世界软件工程问题方面取得了突破,为AI领域迈向更高层级的自动化及监督性工作开辟道路。

《向数字世界AGI迈进!智能体已经从头开玩「荒野大镖客 2」了》。这篇文章展示了如何使用Cradle这一通用计算机控制智能体框架进行AI的研究与应用,在无需内部API支持下控制键盘和鼠标以及与各类软件交互。文章来源于北京智源人工智能研究院、新加坡南洋理工大学和北京大学的联合研究。Cradle由六大模块组成,包括信息收集、自我反思、任务推断、技能管理、行动计划和记忆模块。这些模块让智能体能够自主进行决策和任务执行。研究团队通过将Cradle部署于《荒野大镖客 2》这一复杂的3A游戏中证明其通用性,Cradle能够自主完成游戏主线和探索开放世界。智能体的这种通用能力标志着智能体研究向通用人工智能(AGI)迈进的重要一步。

《深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手》。文章深入讲解了LangChain工具箱及其如何赋能智能Agent,以构建更加智能的AI助手。LangChain利用大型语言模型如GPT-4,提供了一个开源软件框架,可助力开发者搭建基于语言模型的应用。它提供了六大类组件,如模型、提示模板、索引、文档加载器、文本分割器和向量存储,让GPT-4等模型不仅能处理语言,还能与外部API互动、管理用户上下文。文章以构建人脸技术问题排查助手为例,展示如何运用LangChain来协助问题诊断与智能交互,朝向自主、高效的智能应用发展。

《使用零一万物 200K 模型和 Dify 快速搭建模型应用》。本文详细介绍了如何使用零一万物的200K模型和Dify(LLM IDE)快速构建模型应用程序。作者首先对一个机器学习电子书进行翻译,并分享了源代码,然后引导读者如何申请和配置零一万物模型API。随后,作者说明了如何使用Dify IDE快速搭建和调试模型应用程序,以及如何使用Golang和AI模型自动化电子书的翻译过程。最后,作者总结了自动翻译程序的构建过程并展示了批量翻译内容的方法。整篇文章不仅是使用Dify的实操指南,还提供了一种效率化、自动化处理文本内容的示例,适合那些在寻找快速开发和集成大语言模型到应用中的开发者参考。

《一文看完多模态:从视觉表征到多模态大模型》。本文为读者系统梳理了图文多模态与多模态大模型领域的发展,尤其聚焦在视觉表征和视觉与文本融合方法上。文章从卷积神经网络(CNN)及其预训练方法开始讲起,从图像处理的视角介绍了多模态融合的初期方法,如LXMERT、VL-BERT和UNITER等。进一步,文章论述了Vision Transformer(ViT)及其预训练方案如MAE和BEIT,以及基于ViT的多模态对齐与预训练技术,如CLIP和VILT等。作者通过丰富的示例和对比,使读者能够理解这些模型在结构和功能上的不同与联系,为进一步研究提供了宝贵的资源和视角。

《浙大&中科院让Agent学会自我进化,玩德州扑克心机尽显》。Wenqi Zhang等研究者介绍了名为Agent-Pro的AI智能体,它使用大模型(GPT-4)为基础,配合自我优化的策略,能够运用虚张声势、主动放弃等复杂策略玩转德州扑克和21点等非完美信息博弈游戏。Agent-Pro的设计使其能够自我进化,适应复杂和动态的游戏环境,并通过策略层面的反思和世界模型的优化来提高自己的表现。该研究展示了AI在博弈领域的进步,同时为解决多agent现实世界问题提供了新策略。

《面向工业级推荐!“小”LLM也能做好推荐系统》。本文由蚂蚁集团AI创新研发部门NextEvo撰写,介绍了他们的论文《Can Small Language Models be Good Reasoners for Sequential Recommendation?》获得WWW 2024 (Oral)录用。文章针对大语言模型(LLM)在推荐系统应用时代价高昂的问题,提出了一种名为SLIM的基于蒸馏的大模型推荐框架。SLIM通过知识蒸馏技术,将大模型的知识和推理能力迁移到较小的模型上,从而达到用更少参数实现高效推荐的效果。论文强调SLIM在处理长尾物品和新用户推荐的优势,改进了传统基于交互数据的推荐系统偏差问题,并在保持推荐准确度和可解释性的同时降低资源消耗。

《AIOps 智能运维:有没有比专家经验更优雅的错/慢调用分析工具?》。本文介绍了阿里云应用实时监控服务 ARMS 最新推出的错/慢 Trace 分析功能。此功能不依赖专家经验,能对比分析错/慢 Trace 和正常 Trace 的每个维度,从而快速定位问题根源。针对生产环境下调用时延和错误调用的多种因素(如流量不均、单机故障等),ARMS 通过对错/慢 Trace 和正常 Trace 的对比,帮助用户发现异常的共同特征,从而定位到具体问题。这个工具提供了一种优于传统专家经验的快速、有效诊断系统问题的方法,并且附有最佳实践案例。文章最后提供了免登录的 demo 体验链接,引导用户了解和使用该功能。

《CUDA编程优化方法——Memory coalescing》。这篇文章对CUDA编程中的内存合并技术—— Memory coalescing进行了详细介绍。文章首先解释了全局内存的特点以及为何访问速度慢,并阐述了Memory coalescing的目的是通过合并内存访问操作来有效地利用带宽。通过对多维数组的存储方式及访问模式的解析,文章进一步讲解了Memory coalescing的具体实现细节,如何在多维数组访问和矩阵乘法中实现内存访问的合并。最后,文章提供了优化策略,以改进计算的内存访问模式,并提高CUDA内存传输的效率。

《扩散模型如何构建新一代决策智能体?超越自回归,同时生成长序列规划轨迹》。本篇文章介绍了扩散模型在强化学习中的多种应用场景,探讨了如何超越传统的自回归方法,同时生成长序列规划轨迹来模仿人类的决策过程。上海交通大学的团队所作的综述梳理了扩散模型在强化学习中的运用如轨迹规划、策略表征、数据合成,及其解决长序列规划误差累积、策略表达能力受限和数据稀缺等问题的巨大潜力。最终,文章对扩散模型未来的发展方向进行了展望,提出了生成式仿真环境、加入安全约束、检索增强生成及组合多种技能等多个研究方向。

《动手做一个最小RAG——TinyRAG》。本文由不要葱姜蒜指导读者如何一步步实现基于检索增强生成技术(RAG)的简化模型——TinyRAG。TinyRAG仅包含RAG核心功能,即Retrieval(检索)和Generation(生成)两个模块。文章详细介绍了RAG的基本结构,包括向量化模块、文档加载与切分模块、数据库和检索模块,以及如何根据检索内容生成回答。此外,还提供了对应的开源项目代码,助力理解语言模型与RAG的原理,并能够在实践中加以应用和拓展。

《聊一聊Transformer中的FFN》。这篇文章探讨了为什么Transformer的前馈神经网络(FFN)部分长期以来几乎没有大的改动。文章通过比较不同的激活函数,如ReLU、GeLU和Swish等,分析它们在Transformer中的应用效果和局限性。同时探讨了线性投影的必要性、参数量及其对模型容量和记忆力的影响。此外,文章还涉及了混合专家模型(Mixture-of-Experts,MoE)以提升Transformer的效率,并讨论了构建通用人工智能(AGI)所需要的结构特性,特别是放缩定律(Scaling Law)、上下文学习(In-Context Learning)、效率提升(Better Efficiency)和终生学习(Life-long learning)的重要性,最后对未来结构创新给出透彻见解。

⭐️ Go & 云原生 & Rust 相关

《More powerful Go execution traces》。Go的runtime/trace包提供了用于理解和排查Go程序的强大工具,允许对goroutine的执行进行跟踪。新版本Go大幅度降低了执行跟踪的运行时开销,从多数应用中的10-20% CPU下降到1-2%。文章介绍了如何通过将trace分割,从而使得trace可以扩展且保持低开销,还实现了飞行记录功能,使得即使在事件发生后也能从trace中获取信息。Go也提供了一个实验性的trace读取API,使程序性的跟踪分析成为可能。

《Go 和 Google、Cloud 融合的那么深,绝非偶然》。文章作者煎鱼分析了 Go 语言与 Google 和 Cloud 融合深度的背后原因。从 2010 年 Go 在 Google 起步,到 2013 年 Google SRE 团队采用 Go 替换 Python,以及 Go 与 Kubernetes、Docker、Etcd 等云原生技术的结合,文章追溯了 Go 成功的关键节点。2016 年至 2017 年,Go 在 Google 内部增长放缓后,团队提出将 Go 应用拓展至 Cloud 领域,并最终获得了管理层的支持。加入 Cloud 部门后,Go 成为了 Cloud 的一部分,得到了更多的发展机会。文章强调,Go 与 Google 的核心开发者亲自推广及高密度的人才对 Go 发展起到了关键作用。预计未来 Go 将在云原生生态中继续崭露头角。

《Uber 出了个代码静态分析工具 NilAway,还挺实用!》。文章介绍了 Uber 开发的新静态分析工具 NilAway,它专门用于在 Go 程序编译时捕获可能导致 nil panic 的问题,以减少生产中的潜在错误。NilAway 的特点包括完全自动化、快速性能和实用性,并且在大型代码库上也表现良好。通过具体代码例子,文章展示了 NilAway 如何识别出可能导致 nil panic 的代码,并提供了安装方式和使用方法。该工具基于 go/analysis 标准开发,未来有望与 golangci-lint 等工具集成,值得关注其更新和开发进展。

《Rust: 实现比特币的交易模型》。本文详细介绍了比特币的交易模型中的UTXO(未花费交易输出)模型,并使用 Rust 语言来实现和展示其运作过程。UTXO 模型与传统的账户余额模型不同,将用户的余额分散存储在多个UTXO中。每个UTXO代表比特币网络上一笔可用于未来交易的输出。文章解释了UTXO模型的工作原理、优势以及交易处理流程,包括选择输入、生成输出、签名交易和广播交易。接着,文章提供了一个 Rust 实现的简化示例,展示了如何定义交易结构体、输入、输出以及UTXO集合,并介绍了基本的操作方法。如果你对比特币交易模型和 Rust 编程感兴趣,可以阅读该文章了解更多细节。

《深入理解 Go Modules: 高效管理你的 Golang 项目依赖》。本文详细介绍了 Go Modules 在 Golang 项目中的使用方法和原理。文章首先回顾了 Go 依赖管理的历史,从 GOPATH、Go Vendor 到 Go Module 的演进过程。然后讲解了模块、包和版本的概念,包括模块路径、包路径以及版本的格式和语义。接着,文章介绍了 Go Modules 的环境配置,包括 go env 环境变量和依赖管理文件(go.mod 和 go.sum)的作用和使用方法。最后,文章提供了一些实用技巧和常见问题的解答,帮助读者更好地理解和应用 Go Modules。如果你对 Golang 项目的依赖管理感兴趣,可以阅读该文章了解更多详情。

《Kubernetes集群节点处于Not Ready问题排查》。当Kubernetes集群中的节点显示为"Not Ready"状态时,这篇文章提供了一系列的排查步骤。首先,通过运行特定的kubectl命令来确认节点的状态并获取节点详细信息,检查可能的错误消息或者警告。接着,进入节点系统查看各种系统日志,并使用相关命令如grep、cat或tail来辅助分析。文章还建议检查kubelet服务状态和配置文件,确认系统资源是否充足,试图解决可能存在的磁盘空间和网络问题。最后,通过使用诸如ping、traceroute等诊断工具确保节点能够与主节点通信,并检查重要的网络端口是否开放。确保Kubelet能正确连接到Kubernetes API,并使用Kubernetes的诊断工具如kubectl get componentstatus检查组件状态。通过这些步骤,可以系统地排查并解决"Not Ready"的问题,保持集群健康。

《Go 错误处理: 用 select-case 来解决这个历史难题?》。煎鱼在这篇文章中介绍了一个新的Go语言错误处理提案,这个提案尝试用select-case结构作为错误检查的替代。这个新语法允许在select关键字之后声明一个变量为“陷阱”,赋值给该变量时触发case检查,以减少传统的if err != nil检查的繁琐性。新提案保持了Go1代码的兼容性,尝试提供一个更简洁、向后兼容的错误处理方式,尽管目前社区内对此仍未达成共识。

《K8s蓝绿部署:优雅应对应用程序更新挑战》。本文详细探讨了使用Kubernetes(K8s)进行蓝绿部署的方法,以达到无缝更新应用程序并最小化宕机时间。蓝绿部署是一个运行两个相同生产环境的模式,能够在更新时切换流量,确认无误后便去除旧环境。文章指导了从创建命名空间、创建和应用部署、服务及其路由规则、执行蓝绿切换,到最后的验证和回滚过程。这一过程不仅优化了应用版本的滚动更新,也为开发者提供了快速回滚的方案,以应对可能出现的问题。

《Go 中的高速数据包处理:从 net.Dial 到 AF_XDP》。文章介绍了使用 Go 语言进行高速数据包处理的多种方法,包括 net.Dial、原始套接字、系统调用、pcap 和 AF_PACKET,直至最新的 AF_XDP 方式。作者详细对比了每种方法的性能,从简单的 net.Dial 模式演进到 AF_XDP,逐步提高数据包每秒处理数量,同时指出各方法的使用场合和限制。通过基准测试,发现使用 AF_XDP 可实现最高性能,处理速度是使用 net.Dial 方法的4倍多。这些技术探讨对于需要大量网络数据包处理的场景,如网络监控、性能评估等都是非常重要的。

《数据库不应放在容器中?- B站Kubernetes有状态服务实践(Elasticsearch/Clickhouse)》。文章探讨了在云原生时代下,有状态服务(如生产环境的数据库)是否适用于容器化并由Kubernetes进行管理的问题。以B站Elasticsearch和Clickhouse的容器化和Kubernetes编排实践为例,文章详细介绍了在容器环境中部署这些有状态服务的挑战和解决方案,包括控制器的选择、持久化存储、磁盘调度、调度器、容器网络、服务发现以及如何保证集群和数据的高可用性。作者分享了通过Operator管理有状态服务应用、使用本地盘PV提升性能、LVM技术的动态扩缩容方案以及通过macvlan进行容器间高效通信的技术细节。

《一文带您探索 Kubernetes 中的容器类型》。文章介绍了在 Kubernetes 系统中常见的四种容器类型:初始化容器(Init Container)、边车容器(Sidecar Container)、临时容器(Ephemeral Container)和多容器(Multi Container)。初始化容器用于运行 Pod 中主容器启动前的准备工作,而边车容器则与主应用容器并行运行,为其提供支持服务。临时容器主要用于故障排除,而多容器 Pods 允许并行运行多个容器,共享资源和数据。文章提供了每种容器的详细使用案例、配置方法和命令,并强调了各自的特点与应用场景。

《4 秒处理 10 亿行数据! Go 语言的 9 大代码方案,一个比一个快》。软件工程师Ben Hoyt挑战使用Go语言处理10亿行数据,并提出了9种解决方案,其中最快在4秒内完成。这些方案只使用Go标准库,包括简单但优化的map处理、并行化处理等。Ben的方案虽未最快,但展现了独立思考的价值。他的测试表明,彻底地数据处理和算法优化可显著提高性能,减少计算成本。

《Go arena 民间库来了,可以手动管理内存!》。文中作者煎鱼介绍了Go语言的一个新的第三方库ortuman/nuke,这个库允许开发者手动管理内存。文章首先回顾了Go官方对于arena手动内存管理提案的停滞现状,然后重点介绍了如何使用ortuman/nuke库进行内存管理,包括库的安装、使用案例以及如何在并发场景下保持线程安全。文章详细讲解了arena内存管理的优点,例如高效率和一次性释放,并对库的实际用法,如通过context在HTTP请求周期中管理内存,进行了展示。最后,基于性能考虑,文章还提供了并发与非并发业务场景下的基准测试结果以及性能差异。

Go 语言中如何大小端字节序?int 转 byte 是如何进行的

Go 中如何实现三元运算符?Rust 和 Python 是怎么做的

Go语言中 enum 实现方式有哪些?一定要绝对类型安全吗

Go 中如何打印结构体? 代码调试效率提升

《快看! Go 1.22 对for循环进行了两个大更新》。文章讨论了Go语言在 1.22 版本中针对for循环作出的两项主要更新:1. 每次迭代的for循环都将定义一个新的变量,不再共用同一个变量;2. 引入了对整数范围的循环迭代支持。这些更新解决了闭包在并发执行时共享变量带来的问题,同时也简化了循环结构,提高了编写对整数范围进行迭代代码的方便性。文中提供了详细的代码示例来展示新旧版本之间的差异,并说明了如何利用新特性来编写更高效的Go代码。

《从慢速到SIMD》聊Go边界检查消除》。本文讨论了Go语言中边界检查消除(BCE)的相关技巧和最佳实践。文章首先回答了为何在Go代码中优化时选择使用a[i:i+4:i+4]而不是a[i:i+4]的问题,指出前者能减少编译器工作量从而提高性能。然后,介绍了Go101提出的BCE技术详解与应用实例,以及如何使用编译命令来检测边界检查的存在。文中还全面梳理了Go BCE技术的发展历程,以及在不同场景下消除冗余边界检查的方法,包括利用循环变量、常量索引等策略来提高代码执行效率。最后,提供了多种编程技巧以及相关讨论和参考资料,针对遇到的编程问题提出解决方案。

📒 后端相关

《RocketMQ 流存储解析:面向流场景的关键特性与典型案例》。文章探讨了 RocketMQ 5.0 版本中流存储的关键特性,并针对流处理场景下的数据集成提供了详细解析。主要介绍了流存储访问模式与消息访问模式的区别,强调了流存储在大数据集成中起到异步解耦的作用。文章详细解释了 RocketMQ 5.0 版本对流存储弹性的新方案,包括静态 Topic 扩容模式和逻辑队列的引入,旨在解决传统弹性机制的限制。此外,文章还讲述了流场景对消息存储系统的高吞吐和状态维护要求,并举例了如何通过 CompactTopic 维护流状态。介绍了 Schema 概念的引入,以支持消息结构描述、提高类型安全并提升数据集成效率。最后,文章展示了流存储应用于日志采集和异构数据库同步的案例,以阐明其在实际数据架构中的作用。

《分库分表已成为过去式,使用分布式数据库才是未来》。本文讨论了随着Mysql数据库性能下降,分库分表的局限性及其所引发的问题,如性能、事务、数据迁移等,并提出使用分布式数据库作为解决方案。文章详细介绍了TiDB这款分布式数据库的架构、特性和优势,包括其金融级的高可用性、水平扩容能力、兼容性以及云原生设计。文章强调TiDB在处理大规模数据时的效率和可维护性,终结分库分表的做法,并通过性能测试展示了TiDB与MySQL在不同场景下的性能表现。最终总结,对于数据量大的应用场景,采用TiDB来适应未来数据存储的需求是一个更优的策略。

《手把手带你精简代码-京东零售后端实践》。本文分享了京东零售后端在面临代码库日渐庞大和腐化的问题时,采用的代码精简方法。文章分为背景介绍、代码精简步骤和实施方法三部分,着重介绍了使用IntelliJ IDEA自带工具和PMD插件进行静态代码检查的步骤、配置和优缺点,以及如何借助京东jacoco流水线进行动态代码检查。本文旨在降低代码维护成本、提升可理解性,并详细阐述了代码精简的实践过程和预期结果。

《跟着iLogtail学习无锁化编程》。文章探讨了在多线程情况下,如何通过无锁化编程优化软件性能。详细讲述了iLogtail在实现无锁高效日志采集时采取的策略,比如自旋锁的使用、原子操作、内存顺序、内存屏障等概念。还分析了不同类型的锁的适用场景与特点,包括互斥锁、递归互斥锁和读写锁等。此外,文章还描述了如何将大的锁细分为多个小锁,通过降低锁粒度提升并发性能,以及在iLogtail中如何通过双Buffer机制来读写分离,减少锁的争用。最终,通过无锁化编程提高了iLogtail的日志采集性能,实现了低资源消耗和高性能。

《MYSQL 是如何保证binlog 和redo log同时提交的?》。文章讨论了如何确保在MYSQL中binlog(备份和主从同步用的日志)与redo log(InnoDB引擎层的日志,用于崩溃恢复)同步提交,以及为什么这一点对于防止主从数据不一致至关重要。文中解释了事务处理中的两个关键参数:innodb_flush_log_at_trx_commitsync_binlog,这两个值设置为1时可以确保两种日志的同步提交。该文还介绍了MYSQL的两阶段提交机制如何工作,并提出了业务开发中两阶段提交逻辑的思考,指出在有依赖关系的服务操作中,通过预锁定资源、请求成功后递减资源来保持数据的最终一致性。

《这些年背过的面试题——分布式篇》。本文从分布式系统的基础概念、发展历程及核心问题出发,详细介绍了分布式系统设计中的关键技术点。文章涵盖了负载均衡、服务的拆分与集群、分布式事务、数据一致性问题以及分区容错性等话题,并探讨了CAP理论与BASE理论在实际应用中的权衡。同时,文中还详细解读了常见的一致性算法如2PC、3PC、Paxos、Raft的机制和用例。此外,作者针对如何实现分布式Session、如何确保分布式事务的一致性等常见面试题目提供了详尽的解答,适合做为面试备考资料。

《RocketMQ为什么这么快?我从源码中扒出了10大原因!》。这篇文章详细分析了RocketMQ高性能的10个关键因素:批量发送消息降低通信次数,消息压缩减少带宽和存储压力,基于Netty的高效网络通信模型,零拷贝技术优化磁盘读写性能,顺序写提高数据写入速度,高效数据存储结构,异步机制包括异步刷盘和异步主从复制提升存储效率,批量处理减少网络通信次数和资源消耗,锁优化以及线程池隔离提升并发处理能力。作者通过深入分析源码给出了RocketMQ快速处理和拉取消息的内在原因,并深入讨论了每种技术的优势和实现。

《领导叫我接手一个新业务系统,我是这样熟悉项目的!》。本文作者小许分享了接手新业务系统的熟悉流程和实践方法。包括与产品经理交流了解业务现状,绘制用例图、ER图以明确业务与数据模型,梳理后端模型和核心流程,并运用状态机流转图和时序图深度解析复杂逻辑。最后,还提到了绘制类图以理解代码结构。文章提供了一套系统性的工具和方法,目的是帮助新成员或负责新项目的开发人员快速掌握业务逻辑,有效推进项目进度。

📒 前端相关

《Tango 低代码引擎沙箱实现解析》。本文介绍了Tango低代码引擎的沙箱实现。Tango是一个用于快速构建低代码平台的低代码设计器框架,通过对源代码进行执行和渲染前端视图,实现了低代码可视化搭建能力。借助Tango构建的低代码工具或平台可以实现源码进出的效果,并与企业内部现有的研发体系进行无缝集成。Tango的设计器引擎部分已经开源,并提供了相应的开源代码库、文档和社区讨论组。欢迎加入社区参与到Tango低代码引擎的开源建设中。更多相关文章可以在文中提供的链接中找到。

《未来只需要 2% 的程序员?》。DHH在这篇文章中提出一个激进的观点,预测未来程序员的需求可能会大幅度减少。他比较了农业从97%的人口需求降至2%的变迁,暗示软件开发也可能面临着类似缩减。尽管这个行业曾经经历招聘热潮,但现在许多程序员面临职业前景不稳定。文章讨论了人工智能的发展给程序员职业带来的压力,同时也指出职业变革的不确定性。DHH认为,未来大多数程序员可能无需手动编程,但同时指出科技行业将更加融合进社会,并提高了它的价值。他鼓励程序员接受这一变化,并享受行业的黄金时代。

《前端智能化,扣子(coze.cn)能做什么?》。这篇文章探讨了扣子(coze.cn)平台如何通过提供一个简单的交互式界面来创建聊天机器人(Chatbot)。用户通过与扣子的对话,可以快速设置一个Chatbot,如自动化微信订阅号内容发布等。文章强调了平台的易用性和界面友好性,同时指出了一些潜在缺点,包括无法解决深度问题和偶尔遇到的技术故障。另外,通过知识库和数据库的集成,可进一步提升Bot的功能。作者对扣子的机器人创建过程、优势、建议和改进进行了详细介绍,并通过实操案例展示了前端智能化机器人的搭建过程。

· 35 min read
加菲猫

alt text

封面图:Understanding the Go runtime - Jesus Espino

🌟 AI 相关

《In-context Learning with Retrieved Demonstrations for Language Models: A Survey》。这篇题为 "In-context Learning with Retrieved Demonstrations for Language Models: A Survey" 的文章,主要讨论了语言模型,尤其是大型预训练语言模型如何通过获取的演示进行少量情景学习。这项技术能有效地改进学习过程的效率和可扩展性,并降低手动选择样例时的固有偏见。文章对此领域进行了广泛的研究回顾,对检索模型、检索训练过程和推理算法的不同设计选择进行了讨论和比较。

《碾压LoRA!Meta & CMU | 提出高效大模型微调方法:GaLore,内存可减少63.3%》。Meta和CMU合作提出了一种新的大模型微调方法——Gradient Low-Rank Projection(GaLore)。GaLore通过梯度的低秩投影代替权重的低秩适配,不仅支持全参数学习,而且显著降低了内存占用,减少了63.3%的内存需求。不同于LoRA的低秩权重更新,GaLore利用权重梯度的低秩特性,结合逐层权重更新和8位优化器,有效地优化了内存效率。此外,GaLore还引入了可调整的超参数,提高了其适应性。经实验验证,GaLore的表现优于LoRA,尤其是在预训练模型微调上表现更佳,为大模型训练提供了新的解决策略。

使用 GPT4V+AI Agent 做自动 UI 测试的探索 | 京东云技术团队

Gemini修bug神了!录网页视频把代码库甩给它就行,网友坐不住了:想要访问权限

一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务

《Yi技术报告细节分享》。该文章分享了Yi模型的具体实现细节和思路,强调了模型设计围绕模型规模、数据规模和数据质量。Yi模型的预训练阶段数据处理流程包括启发式过滤、学习式过滤、聚类过滤以及去重等步骤,以提高数据质量。微调阶段,Yi模型仅采用了10K数据进行模型微调,强调数据质量胜过数量。在分词器、模型结构及微调参数方面,Yi模型采用了一系列优化措施,包括Transformer-Decoder结构、Grouped-Query Attention等。总的来说,Yi模型通过优化数据处理流程、微调策略、调整模型结构和参数等多方面实现了高效的技术实现。

重新定义大模型推理!Google | 提出SELF-DISCOVER框架,大模型可自写推理结构!

《斯坦福 && 微软 | 发布前端代码生成大模型:Design2Code-18B,助力前端自动化!》。这篇文章主要介绍了一种新的前端代码生成大模型:Design2Code-18B,它可以将网页视觉设计转换成功能性代码。文章首先介绍了将网页视觉设计转换成功能性代码的挑战性和现有方法的局限性,然后提出了Design2Code基准和多模态提示方法,以激发多模态大型语言模型(如GPT-4V和Gemini)的潜力。接着,文章介绍了开源的18B微调模型Design2Code-18B,它基于CogAgent-18B,在多种数据集上进行了预训练,并使用了Huggingface发布的WebSight数据集进行微调。最后,文章展示了Design2Code-18B在Design2Code基准上的优越性能,并提供了一些未来研究方向。

可控文本生成新方法,人大&&南开 | 提出DATG架构,准确性提升19.29%,效率提升1倍

《Auto-Prompt | 大模型提示(Prompt)优化新方法IPC:可根据用户意图进行定向优化》。这篇文章提出了一种名为 Intent-based Prompt Calibration(IPC)的系统,主要目的是通过使用合成案例样本来优化大型语言模型的提示工程。它基于模型生成的数据集进行提示优化,以解决大语言模型对给定提示的敏感性等问题。这种方法的核心思想是根据用户意图迭代细化提示。同时,文章还对 IPC 系统的整体架构和实现流程进行了详细介绍,并展示了一些实验结果。

《更智能的 Agent,Plan-and-Execute Agents 计划和执行》。这篇文章介绍了几种新型的智能 Agent 设计方法,包括 Plan-and-Execute Agents、ReWOO Agent 和 LLMCompiler。Plan-and-Execute Agent 设计法通过明确规划来优化智能 Agent 功能。ReWOO Agent 设计法凭借变量分配功能使得不必对每个任务都使用 LLM。LLMCompiler 则通过任务格式化为 DAG 来提高工具调用的效率。这些新型设计都在不同程度上优化了智能 Agent 的工作流程,提高了工作效率。

《OpenAI Function Calling 与 LangChain Agent 工作原理及区别》。这篇文章介绍了OpenAI Function Calling 与 LangChain Agent的工作原理及它们之间的区别。文章首先列举了大型语言模型的限制,并解释了为何需要Agent。然后,文章介绍了React Agent的工作方式,通过“Reason Only”(向内求索)、“Act Only”(向外探索)和“ReAct”(内外兼修)三种模式优化模型的功能。此外,文章还以一个简单的实例,解释了如何利用ReAct Agent来解答一个包含搜索和计算两个步骤的问题,展示了其实际应用的流程。

《ReAct Agent 回答 RAG 系统中的复杂问题》。这篇文章主要讲述了“ReAct Agent 用于回答 RAG 系统中复杂问题的方式”。随着输入问题的复杂度升高,使用传统的聊天机器人已不能足够有效。于是,作者提出了利用 ReAct Agent,通过自然语言模型(LLMs)逐步规划并执行处理问题的步骤,并定义功能性工具(如时间计算、文本搜索、列表长度计算、百分比变化计算等)以辅助任务完成。这种方法能够更好地干预和控制问题的解决过程,从而提高任务的完成质量。

更智能的 Agent,Plan-and-Execute Agents 计划和执行

ChatGPT也能画图?教你一键生成时序图、类图、流程图、状态图以及用例图

三个被忽视的大模型提示

关于Sora和Stable Diffusion 3,你需要知道的一切

消费级显卡可用!李开复零一万物发布并开源90亿参数Yi模型,代码数学能力史上最强

详解大模型微调全流程

南大俞扬教授:什么是world models/世界模型

深入浅出LangChain与智能Agent:构建下一代AI助手

尤洋教授:开源完整的Sora复现方案来了!

《T-RAG=RAG+微调+实体识别》。这篇文章名为"T-RAG=RAG+微调+实体识别",主要介绍了T-RAG技术,这是一种将RAG架构与微调语言模型和实体树向量数据库相结合的方法,用于支持语境检索。它概述了在敏感文档的背景下如何保护数据隐私,以及如何在有限的计算资源和基于现有文档建立的小型训练数据集中保证用户提问的准确回答。文中还着重介绍了T-RAG的工作流程和实体树的作用。最后,还提出了一个新的评估指标“Correct-Verbose”,用以评价生成回复的质量。此研究不仅是理论研究,也是实践中LLM应用的经验总结,具有实际的指导意义。

《高级 RAG(Self-Reflective RAG)》。这篇文章名为"高级 RAG(Self-Reflective RAG)",主要介绍了Self-Reflective RAG的理念和工作流程。在基本的RAG pipeline中,我们的过程往往受限于被动的检索和生成,而实际操作中,我们需要根据生成的结果进行优化,如改变问题或筛选和排列内容。为了解决这个问题,文章介绍了一种新的自我修正框架,包括Corrective RAG(CRAG)和Self-Reflective RAG。这两种RAG都围绕着对检索和生成内容的评估和反馈进行自我修正,并通过特定标识进行调控。在一定条件下,进一步改进了RAG,使其产生更好的检索和生成效果。

RAG不够聪明?打造更强大的智能体

Anthropic发布Claude3,效果已超越GPT4

从0开始预训练1.4b中文大模型实践

《分类算法入门:以鸢尾花数据集为例》。这篇文章以鸢尾花数据集为例,全面而详细地阐述了机器学习中的分类算法基础知识。首先介绍了人工智能、机器学习和深度学习的基本概念,讲解了机器学习各种分类方法的理论背景。随后通过鸢尾花数据集,展示了如何使用 Python 工具(包括 pandas、sklearn、matplotlib 和 seaborn)进行数据处理、分析和可视化。文章详细讲述了决策树、逻辑回归、支持向量机、K近邻等经典的分类算法,并用图形化的方式展示了分类效果。最后,读者可以通过本文所提供的丰富学习资料来深化对机器学习分类任务的理解和应用。

《万字详解LLM Agents的现状,问题与未来》。这篇文章名为"写在跨年之前:聊聊LLM Agents的现状,问题与未来",主要涉及到LLM Agents的当前状态,面临的问题和未来的可能发展。文章探讨了包括全参微调、Prompt Tuning、LoRA、P-Tuning等在内的SFT(Selective Fine Tuning)范畴的各种技术。其中尤其强调了对于{prompt,response}的单轮问答对的微调是最简单的SFT实现方式。具体的内容细节大概需要阅读原文才能获得更深入的理解。

⭐️ Go & 云原生 & Rust 相关

《Robust generic functions on slices》。这篇文章名为"Robust generic functions on slices",主要探讨了Go的slices包如何提供对切片进行操作的通用函数。该文章首先介绍了如何通过类型参数,一次性为所有类型的切片编写类似slices.Index等函数,而无需针对每种不同的元素类型重新实现。随后,文章深入讲述了新的函数(如Insert, Replace,Delete等)如何修改切片,并通过详述切片在内存中的表现形式及其对垃圾回收器的影响,来帮助读者理解这些函数的工作方式和正确使用它们。文章特别指出,新的Delete函数提供了更清晰地表达程序员意图的方式,而且它不需要分配新的数组,这样就可以在适当时清除无用的元素,帮助垃圾回收。文章强调,调用这些函数后,必须认为原始切片已无效,因为底层数组已被修改。最后,文章还讨论了在处理内存泄漏和元素零值设置等问题时的策略和选项,它们在新版本Go给出的解决方案,以及这些改变可能导致的一些测试问题。此外,作者鼓励开发人员正确使用新功能,并尽量避免上述列举的陷阱。

《Routing Enhancements for Go 1.22》。这篇文章名为"Routing Enhancements for Go 1.22",主要介绍了 Go 1.22 版本中 net/http 包的路由器提供的新特性:方法匹配和通配符。这些新特性让你可以使用模式,而非 Go 代码,来表达常见的路由。这种新功能,尽管简单易懂,但要选择出多个匹配请求的最佳模式却是一项挑战。文章还详细阐释了如何在新版 Go 中使用这些新特性,以及这些引入的变化如何影响了 ServeMux 方法 handle 和 handleFunc 。此外,还描述了新模式如何更具优先级,并解释了其背后的原理。同时,为了保持新旧版本的兼容性,作者们也努力使新的模式语法能覆盖旧的,并使新的优先级规则能泛化旧的规则。总体上,这些改变是 Go 语言团队不断努力使 Go 成为构建生产系统的优秀语言的一个持续过程的一部分。

听GPT 讲Rust源代码--compiler(6)

使用Apache Kafka的Golang实践指南

《Go 为什么不支持从 main 包中导入函数》。这篇由煎鱼撰写的文章,题为 "Go 为什么不支持从 main 包中导入函数?",对于这个话题进行了深度解析。其首先提到,虽然Go的规范并没有明确禁止从main包中导入函数,但我们在实际运行中会被拒绝,提示main包是一个程序而非可以导入的包。这一现象的原因来自于经过多次变动的规定,如2011年移除了 "程序中的其他包都不能命名为 main" 的要求,然后在2015年又新增了限制。这样的变化主要是为了避免增加复杂度和不安全性。比如,一个函数可能会做出自己拥有完全控制权的假设,所以如果引入多个main包中的函数,可能会产生在初始化顺序、全局变量的注册等方面的冲突。这篇文章认为Go官方的做法在理论上可以解决复杂度和安全性问题,但对于有历史债务的项目,对于需要维护多个Go项目工程,相当于磨灭了一条道路,其实比较尴尬。

《fasthttp是如何做到比net/http快十倍的》。这篇文章讲解了fasthttp如何做到比net/http快十倍的原理。fasthttp相比于net/http在处理流程上有所差异,net/http是一个连接新建一个goroutine,当连接数非常多的时候会给系统带来一定的压力。而fasthttp则是建立了workerPool,每个workerChan在后台都会有一个Goroutine来处理其中的连接。此外,fasthttp的快速也得益于几个方面的优化:连接复用,大量使用了sync.Pool进行内存复用以及通过unsafe.Pointer指针进行[]byte和string转换来避免内存分配和拷贝的消耗。

《万字长文讲解Golang pprof 的使用》。这篇文章主要讲述了Golang的pprof工具的使用。pprof工具是Golang中用于性能分析的一个工具,它可以分析出cpu使用情况、内存占用、阻塞情况、线程和协程等信息。文章中详细阐述了如何使用此工具,主要有两种方式,一种是通过http接口的方式暴露出pprof的采集控制界面,另一种是在程序中通过代码来启动相应指标的采集示例。文章还详细介绍了如何解析通过这两种方式获取的输出信息。本文的主要目的是将pprof工具的使用方式用思维导图的形式展示出来,这样可以帮助读者更好地理解和使用pprof工具。

《一篇实用的关于云上K8s应用分账实践》。本文讲述云上Kubernetes(K8s)应用的成本分摊实践,涵盖了成本分摊的核心概念及阿里云ACK FinOps套件的应用。文中首先以前期预算为集群规划的依据,并讨论了随着业务发展对成本分摊精准度的提升需求。介绍了如何根据Pod的核/时成本,通过ACK集群、计算节点、命名空间和应用Pod这四个维度进行费用分摊。文章还分析了单资源和混合资源分摊模型,并讨论了如何设置Request和Limit来优化资源利用。对于多云和混合云场景,分享了如何通过ACK One实现统一管理和成本分析。针对复杂业务场景,讲述了自定义定价模版的使用方式,允许通过配置实现成本定制需求。对于追求细节管理和精细化运营的团队,这篇文章提供了宝贵的指导。

《如何使用 K8s 两大利器"审计"和"事件"帮你摆脱运维困境》。这篇文章主要讲述了如何使用 Kubernetes(K8s)的"审计"和"事件"功能来帮助进行日常集群运维工作。文章首先指出了运维工作中可能出现的一些问题,例如应用被删除、Apiserver负载突变、集群节点出现问题、节点自动扩容等。随后,文章进一步解释了 Kubernetes的审计和事件是如何运作的,强调了善用这两种工具可以提高集群的可观察性,为运维工作带来极大的便利。总的来说,这篇文章为运维人员提供了一种解决方案,通过使用 Kubernetes的审计和事件,可以更好地管理和监测集群的状态。

【Go 工具】竞态条件检测神器 Race Detector

使用Redis入门Golang

一道面试题: Top K 问题

《理解 Docker 容器中 UID 和 GID 的工作原理》。这篇文章详细解析了 Docker 容器中 UID 和 GID 的工作原理。首先,作者概述了用户名、组名、用户ID(UID)和组ID(GID)在容器内运行的进程与主机系统之间的映射对于构建安全系统的重要性。随后,文章分析了uid/gid在Linux系统的安全性,强调了单一内核概念以及uid/gid的分配方式。接着,作者运用实例解释了Docker运行的过程以及如何通过Dockerfile定义和启动不同用户。最后,文章讲述了如何掌控和控制容器的访问权限。在阐述以上内容的同时,文章也提供了一些实际示例来说明这些观点。

《如何基于Docker镜像逆向生成Dockerfile》。这篇文章介绍了如何将Docker镜像逆向生成Dockerfile。文章主要讲述了利用开源工具Dedockify的操作方法与工作原理。该工具通过Python脚本,利用存储在每个镜像层旁边的元数据,逐步遍历层级树,收集与每个层相关联的命令,重建镜像构建过程中执行的命令序列,从而得到近似的Dockerfile。不过,因为无法访问执行原始docker build命令时存在的构建上下文,如果使用了COPY或ADD指令,生成的输出可能不完全匹配原始的Dockerfile。

《通过多阶段构建减小Golang镜像的大小》。本篇文章主要介绍了如何通过多阶段构建减小Golang镜像的大小。首先,作者提出了一个通用的Dockerfile,并指出其生成的镜像大小超过300MB,主要因为包含了所有的Golang工具。然后,作者提出了多阶段构建的方法,它能从不同的基础镜像构建,有选择地将文件从一个阶段传递到下一个阶段,从而减小镜像大小。在本例中,通过二级构建,镜像大小已降至11.7MB。最后,还探讨了使用名为scratch的空白镜像进一步减小镜像大小的可能性,使得镜像最后降至6.34MB,但作者强调这需要慎重考虑,因为最后生成的镜像将完全没有任何工具。

《k8s 到底是什么,架构是怎么样的》。这篇文章主要讲述了 Kubernetes(K8s)的基本概念、架构和工作原理。Kubernetes,因单词过长,我们通常简化为k8s。k8s 是一种容器的协调工具,位于应用服务和服务器之间,能以策略的方式协调和管理多个应用服务。通过一个 yaml 文件的配置,可以定义应用的部署顺序等信息,自动部署应用到各个服务器上,还能让它们崩溃后自动重启,可以自动扩容和缩容。Kubernetes 的服务器分为两部分:控制平面和工作节点,前者负责控制和管理各个节点,后者则负责实际运行各个应用服务。k8s 的命令行工具为 kubectl,用于执行各类操作命令。

《Go 泛型有没有可能在后期改为 <> 尖括号》。这篇文章主要讨论了Go语言在处理泛型时,为何并没有采用类似Java和C++的 <> 尖括号表示法,而是选择了中括号 []. 首先,使用尖括号可能导致语义混淆,如 a, b := w < x, y > (z) 此句,如果使用尖括号,程序可能在编译阶段无法确定该行表达式的具体含义。其次,使用圆括号也会导致同样的问题,比如 func F(T any)(v T)(r1, r2 T), 无法快速准确判断出参数和返回值部分。此外,Go官方也不希望使用非ASCII的字符。作者还提到社区中对Go的处理方式存在一些争议,部分社区成员认为如果使得编译器解释尖括号不再困难,就可以采用这种符号。然而,总的来说,基于已有的实践和规范,Go语言在未来可能也不会改变其泛型的表示方式。

《Rust中channel的使用》。这篇文章主要介绍了Rust编程语言中Channel的用法。其中,Channel是Rust中用于在不同线程间传递信息的通信机制,实现了线程间的消息传递。每个Channel由发送端和接收端两部分组成,其设计理念是“通过通信来共享内存,而非通过共享内存来通信”,以此避免了数据竞争和共享内存的复杂性。该文章进一步详细介绍了如何在Rust中创建和使用Channel,并给出了相关代码示例。最后,文章阐述了多种Channel模型,包括Rust标准库中所使用的MPSC(多生产者,单消费者)模型。

K8s部署方式大全:从基础到进阶,一文带你掌握所有技巧

k8s从入门到精通 -- 更适合中国宝宝体质

📒 后端相关

《万字+33张图探秘OpenFeign核心架构原理》。本篇文章深入探讨了SpringCloud核心组件OpenFeign的核心架构原理。文章分为四个部分,首先解释原始Feign的使用和基于SpringCloud的进化过历程;然后详细讲解了Feign底层工作原理,依赖于JDK动态代理和核心组件如Contract、Encoder、Decoder等;接下来分析了SpringCloud是如何整合Feign的,并且讨论了OpenFeign的多种配置方式及其优先级;最后,文章通过丰富的图示和代码示例,使读者可以更好地理解并运用这一工具。这篇文章对于理解和运用OpenFeign非常有帮助,无论是对于初学者还是有经验的开发者。

《三万字长文:如何去排查JVM内存问题》。这篇文章是一份详尽的指导,讲述了如何排查JVM内存问题。文中首先定位了技术问题的范围,确定适用于JDK8至JDK11。接着,作者提出了系统化的排查原则,并提供了一步步的诊断流程,从基本信息收集、判断内存增长原因,到具体分析内存问题的可能来源。文章详细介绍了如何利用不同的命令和工具(如jmap、jstat、Arthas等)进行详细的分析,并根据内存使用情况,向读者展示了如何确定是堆内存问题还是堆外内存问题。总之,文章为那些需要深入理解和处理JVM内存问题的开发者和运维人员提供了宝贵的知识和技巧。

《如何避免MYSQL主从延迟带来的读写问题》。这篇文章讨论了如何处理在MySQL主从部署架构中普遍存在的主从同步延迟问题,以保持读写操作的一致性。文章首先介绍了主从延迟产生的场景及其对读写分离原则的影响。然后,详细解释了主从复制的原理,并提出了两种避免主从数据不一致的技术方案:一是使用select master_pos_wait函数来等待从库同步至特定的binlog位置点;二是在开启GTID模式的情况下,通过select wait_for_executed_gtid_set函数检查GTID集合是否已同步。这两种方法均旨在确保从库数据的准确性,从而整体上减轻主库的压力。总体上,文章为MySQL数据库管理员提供了缓解主从延迟导致的读写问题的具体实施方案。

《这些年背过的面试题——ES篇》。这篇文章是一篇针对Elasticsearch(ES)的面试指南,它涵盖ES基础知识点和面试过程中常见问题。内容包括ES的功能特性介绍(如分布式架构、全文搜索、数据分析等)、主要的使用场景描述、与其他搜索引擎的对比(Lucene和Solr)、以及ES的基本概念解释。文章还详细探讨了ES的高级特性,如映射、DSL查询、聚合分析和智能搜索建议器。此外,作者还分享了关于数据索引优化的实战技巧和策略,提供了写优化、读优化和索引重建的方案,这些方案对ES数据存储和查询的性能有显著影响,最后还对Deep Paging性能问题提供了解决方法。对正在准备面试或者希望巩固ES知识的读者而言,这篇文章是一个宝贵的资源。

《什么是MySQL锁?有哪些锁类型》。这篇文章详细地介绍了MySQL中的锁定机制及其类型。起初概述了锁的作用,即协调多进程或线程对资源的并发访问,在数据库环境下,锁对于保持事务的正确性与一致性至关重要。作者明确区分了MySQL中锁的级别,从全局锁、表锁(读锁、写锁)到元数据锁、意向锁,直到行锁的多种形式(记录锁、间隙锁和临键锁)。文中还探讨了AUTO-INC锁的作用和相关优化,举例说明了其在INSERT操作中的应用。此外,文章也涉及了如何根据不同的情况优化锁的使用以及如何避免由锁产生的性能瓶颈。这篇文章为理解MySQL的各种锁类型和锁机制提供了宝贵的信息,特别对于数据库管理员和那些需要管理并发数据访问问题的开发人员来说,具有很高的实用价值。

📒 前端相关

Vue 团队正式开源 Rolldown:基于 Rust 的超快 JavaScrip 打包工具!

打造舒适的vscode开发环境

相比于 Node.js,Deno 和 Bun 到底能带来什么

MDH Weekly 122 - 《招人》

· 4 min read
加菲猫

alt text

封面图:用 switch-case 来解决 Go 错误处理的难题

🌟 AI 相关

LangChain 实战:Agent思维

详解大模型RLHF过程(配代码解读)

PromptFlow高质量AI应用 - 基于LLM的文档QA机器人

图解大模型计算加速系列:Flash Attention V1,从硬件到计算逻辑

使用搭载骁龙 8 Gen 3 的安卓手机运行 AI 大模型

生成式 AI 的发展方向,是 Chat 还是 Agent

聊聊大模型Agent技术,及和具身智能又有什么异同

复旦NLP团队发布80页大模型Agent综述,一文纵览AI智能体的现状与未来

知识问答系统的优化实践:LLM与RAG的结合艺术

一文解构大模型RAG问答关键环节及与LLM微调对比总结

Mistral AI发布Mistral Large模型

Mistral AI新模型对标GPT-4,不开源且与微软合作,网友:忘了初心

大模型微调新范式:当LoRA遇见MoE

Mistral Large,Le Chat来了!Mistral AI连放两个大招!

探索2024年1月的AI研究前沿:模型合并、专家混合与小型LLM的崛起

⭐️ Go & 云原生 & Rust 相关

Cargo的自定义命令扩展功能

听GPT 讲Rust源代码--compiler(2)

元老与新秀:Go sort.Search()和sort.Find()

KisFlow-基于Golang的流式计算框架实战(6)-Connector

跳槽必看のMySQL索引:B+树原理揭秘与索引优缺点分析

听GPT 讲Rust源代码--compiler(1)

KisFlow-基于Golang的流式计算框架实战(5)

用 switch-case 来解决 Go 错误处理的难题

KisFlow-基于Golang的流式计算框架实战(4)

KisFlow-基于Golang的流式计算框架实战(3)

图文讲透Golang标准库 net/http实现原理 -- 客户端

使用docker init编写Dockerfile和docker-compose配置

Go语言中常见100问题-#完结撒花

KisFlow-基于Golang的流式计算框架实战(2)

golang 高性能无 GC 的缓存库 bigcache 是怎么实现的

📒 后端相关

从0到1构建一个稳定、高性能Redis集群

这些年背过的面试题——SpringCloud篇

如何设计订单超时自动取消

📒 前端相关

2024 AI & 前端:回首展望,光芒未至,破晓之前!

看完zustand源码后,我的TypeScript水平突飞猛进

ElTable 二次封装:我用 Vue3.3 新特性完美解决了列插槽数据无类型提示问题!!!

ECharts 迎来重大更新,运行时包体积可减少 98%!

FFmpeg前端视频合成实践

2024 使用 TS 搭建 Node.js 服务器 - 快速教程

前端食堂技术周刊第 113 期:Node 年终总结、Node 新吉祥物、Qwik 2.0、React Labs 工作进展

· 6 min read
加菲猫

🌟 AI 相关

Large Language Models for Data Annotation: A Survey

ACTIVERAG: Revealing the Treasures of Knowledge via Active Learning

关于Generative-Diffusion-Model的全面综述,可以作为了解sora的基础知识

云音乐 CMS 平台 AIGC 实践与新特性实现总结

云音乐D2C设计稿转代码建设实践

云音乐 AI Agent 探索实践

云音乐低代码 + ChatGPT 实践方案与思考

🦜🕸️ LangGraph:Plan-Execute Agents 实战

Pinecone总结一:大模型角度

使用 Hugging Face 微调 Gemma 模型

开源大语言模型作为 LangChain 智能体

200万上下文窗口创飞Gemini 1.5!微软来砸谷歌场子了(doge)

如何利用大模型进行数据标注与知识蒸馏:兼看ActiveRAG上下文去噪的大模型RAG问答范式

树形结构与RAG的完美结合:T-RAG方法在组织内部信息查询中的突破

领先99%小白的Sora关键信息!

AI, Machine Learning和 Deep Learning有什么差异

模型融合、混合专家、更小的LLM,几篇论文看懂2024年LLM发展方向

开源大模型王座易主!谷歌Gemma杀入场,笔记本可跑,可商用

关于Google开源Gemma的一些想法

LangChain原理学习笔记

工具增强型大模型:引领智能新时代

AI 实战:手把手教你使用「扣子/coze」来搭建个人blog知识库

大模型推理优化实践:KV cache复用与投机采样

NLP研究在大模型时代的创新飞跃

下一代RAG范式:RAG-Fusion

图解大模型计算加速系列:Flash Attention V2,从原理到并行计算

如何在小公司做大模型

机器学习简介: 寻找函数的艺术

OpenAl 视频生成模型 —— Sora技术报告解读

⭐️ Go & 云原生 & Rust 相关

etcd存储引擎之主干框架

Rust 高性能编程指南

Go map 加有序排序的一些挣扎

云音乐 GitOps 最佳实践

KisFlow-基于Golang的流式计算框架实战(1)

相同型号物理机,容器性能不如虚拟机

听GPT 讲Rust源代码--library/portable-simd

Go deadcode:查找没意义的死代码,对于维护项目挺有用!

通俗易懂剖析Go Channel:理解并发通信的核心机制

竟然是"你"偷走了那0.001的服务可用性

精心设计的 DNS Failover 策略在 Go 中竟然带来了反效果,发生了什么

Go语言中常见100问题-#100 Not understanding the impacts of running Go

《从慢速到SIMD》聊Go 边界检查消除

Go项目中的Labels

Go 更强的代码洁癖,可以把 gofmt 给换了!

Go 终于把这个傻缺特性去掉了,多少陈年老BUG都是因为它!

Go 1.22 slices 库的更新:高效拼接、零化处理和越界插入优化

Go 1.22中值得关注的几个变化

Go中最常用的数据校验库

📒 后端相关

美团面试:说说OOM三大场景和解决方案? (绝对史上最全)

(九)深入并发编程之并发容器:阻塞队列、写时复制容器、锁分段容器原理详谈

(八)深入并发之Runnable、Callable、FutureTask及CompletableFuture原理分析

四十五图,一万五千字!一文让你走出迷雾玩转Maven!

踩了一堆坑,终于把微服务系统全面升级 JDK17 和 SpringBoot3 了

奇思妙想的SQL|兼顾性能的数据倾斜处理新姿势

如何成为一线 Leader

ForkJoinPool:大任务拆分,让并行嗨起来!

写了这么多年DateUtils,殊不知你还有这么多弯弯绕!

这些年背过的面试题——Kafka篇

📒 前端相关

🤯 [性能优化] 浏览器跨域带来的一些性能问题

🧐 [跨端开发] 如何定位 Hybrid Web 页面中 Native 注入的 JS 代码

413 - 《读书笔记:A Philosophy of Software Design》

如何在泛型组件中使用 forwardRef

译:Hot Module Replacement 原理

MDH Weekly 121 - 《开工大吉》