自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(250)
  • 收藏
  • 关注

原创 《AI系统》分布式优化器精讲

本文系统讲解了分布式优化器的核心技术与演进路线。重点分析了ZeRO技术的三级优化策略(ZeRO-1/2/3)及其内存降幅与通信开销,介绍了突破物理限制的ZeRO-Infinity异构内存管理方案。对比了LOMO即时更新技术与传统方法的差异,并提供了技术选型指南。文章指出当前分布式训练正向"万亿参数+千卡规模+90%效率"的目标发展,涉及通信压缩、异构计算等前沿趋势。通过分而治之的思想,这些技术实现了用通信换内存的优化目标,支持了超大规模模型的训练。

2025-07-07 19:28:05 664

原创 《AI系统》数据并行详解

数据并行技术通过分配训练数据到多个设备加速模型训练,主要包括数据并行(DP)、分布式数据并行(DDP)和异步并行三种模式。DP实现简单但存在通信瓶颈;DDP采用多进程和高效通信算法,扩展性更强;异步并行无需同步但可能影响收敛稳定性。前沿技术如ZeRO优化内存占用,支持超大规模模型训练。实际应用中需根据硬件条件和模型规模选择合适方案,DDP通常是首选,异步并行适合异构设备,而混合并行技术可进一步提升训练效率。

2025-07-07 19:09:01 390

原创 《AI系统》单设备高效训练

在学习分布式训练之前,我们需要了解一些单个设备高效训练的实用技术,包括等。这些技术通过优化内存利用率、加快训练速度或两者兼而有之来提高模型训练效率。即使在拥有多块设备的机器上,这些方法仍然有效,还可以结合分布式训练的其他方法进一步优化训练过程。

2025-07-07 16:53:07 920

原创 GGUF、Safetensors、ONNX三种格式

参考:https://github.com/karminski/one-small-step/blob/main/20250122-how-to-run-gguf-LLM-model/how-to-run-gguf-LLM-model.md。总而言之,GGUF 是一种重要的 LLM 文件格式,它通过提高存储效率、加载速度和兼容性,简化了 LLM 的使用和部署,并有望成为未来大模型文件标准格式之一。(图片来自 ultralytics.com)

2025-07-04 18:27:38 612

原创 RAG、向量嵌入、向量数据库

RAG技术、向量嵌入与向量数据库的关系,如同“翻译官+智能仓库+指挥官”:向量嵌入将世界翻译为机器可理解的数字语言,向量数据库高效存储并快速调取知识,RAG则指挥大模型基于实时知识生成智能回答。三者的协同,让AI系统从“记忆型智能”进化为“检索型智能”,成为企业落地AI应用的核心技术路径。

2025-07-04 18:09:16 735

原创 多模态和表示空间简介

是什么:一个"数学翻译层",把不同形式的数据(文本/图片/音频)都转换成统一格式的向量(一串数字),让计算机能比较和处理。关键特点跨模态可比:比如"狗"的图片向量和"狗"的文字向量在空间里位置接近语义计算:支持向量加减(如:国王 - 男 + 女 ≈ 女王)维度统一:所有模态的向量长度相同(如512维)类比:像货币兑换——把人民币、美元、黄金都换成"标准货币"(向量),才能直接比较价值。

2025-07-04 17:46:35 159

原创 大语言模型优化:微调、蒸馏与量化

微调、蒸馏与量化构成了大型语言模型优化落地的"三驾马车",理解它们的核心原理适用边界以及组合潜力,是AI从业者在实践中做出合理技术选型的基础。随着技术的不断发展,这三种方法将继续演化并产生更多创新的结合方式,为不同场景下的模型部署提供更加丰富和高效的解决方案。在实际应用中,没有"放之四海而皆准"的最佳选择,只有最适合特定需求和约束的技术组合。明智的工程师应当根据业务目标、资源限制和性能要求,灵活搭配这些技术,打造出既高效又专业的语言模型应用。

2025-07-04 17:17:47 614

原创 大模型微调:从理论到实践的全方位指南

微调是指在预训练好的大型语言模型基础上,使用特定领域或任务的数据集对模型进行进一步训练的过程。与从头训练相比,微调具有数据效率高计算资源需求相对较少和灵活性高等显著优势。微调是将通用大模型转化为专业工具的关键技术。通过理解其核心原理、掌握最佳实践、避免常见陷阱,开发者可以高效地创建出满足特定需求的AI解决方案。记住,成功的微调不是简单的技术实现,而是数据、算法和评估体系的有机结合。随着技术的进步,微调的门槛将不断降低,但其战略价值将愈发重要。

2025-07-04 17:05:59 1084

原创 微调——什么是LoRA

这种低秩适应有效的深层原因是:模型在不同任务间的知识迁移主要发生在低维子空间,通过调整这些关键方向就能实现高效适应。这些矩阵W是模型在预训练阶段(如GPT在海量文本上训练)学习到的参数,承载了通用语义理解能力。(如d=hidden_size=768,k=hidden_size=768)。,即ΔW可通过两个小矩阵的乘积近似表示。

2025-07-04 16:54:59 942

原创 数据库基础——事务隔离级别

隔离级别隔墙厚度问题解决存在问题读未提交透明玻璃无脏读读已提交薄墙解决脏读不可重复读可重复读厚墙解决脏读、不可重复读幻读串行化实心墙解决所有问题性能差。

2025-07-03 18:27:01 392

原创 数据库基础——SQL基础查询

SQL基础与分组查询核心要点 SQL基础查询部分介绍了常用操作:AS关键字起别名(仅改变显示不影响原表)、不等于运算符(<>或!=)、逻辑运算符优先级(AND高于OR)、IN/NOT运算符简化多条件查询,以及LIKE模糊查询(%匹配任意字符,_匹配单个字符)。 分组查询(Group By)是数据分析核心功能,需遵循关键规则: SELECT只能包含分组字段或聚合函数 执行顺序为FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY HAVING用于分组后过滤(可使用聚

2025-07-03 17:03:15 969

原创 产品背景知识——Region和Zone

摘要: Region和Zone是资源管理与地理划分中的层级概念。Region指大范围地理或逻辑区域(如云计算中的“亚太地区”),包含多个Zone(如独立的数据中心)。Zone是Region的子单元,具备独立基础设施,故障隔离性强。两者协同应用:Region用于宏观合规性选择(如数据存储地域),Zone用于微观资源部署(如多Zone容灾)。典型区别在于范围、隔离性与应用场景(如AWS的Region vs. Zone)。理解其关系有助于优化云计算、分布式系统等架构的高可用设计。

2025-07-02 10:28:02 444

原创 产品背景知识——在线推理和离线推理

摘要: 在线推理与离线推理是AI模型部署的两种主要方式,核心差异体现在数据处理、架构设计、模型更新和应用场景上。在线推理处理实时数据,强调低延迟(毫秒级响应),适用于电商推荐、金融风控等场景,需高并发架构支持;离线推理处理批量历史数据,时效性要求低(小时/天级),适合用户画像、广告评估等分析场景,依赖分布式计算框架。二者协同互补:离线训练模型供在线调用,在线反馈数据优化离线模型。实际应用中,企业通常混合使用两者,如离线生成候选集,在线实时排序。选择依据取决于业务需求:实时交互选在线,大规模分析选离线。(14

2025-07-02 10:27:00 728

原创 产品背景知识——API、SDK、Library、Framework、Protocol

API、SDK、Library、Framework和Protocol是软件开发中的核心概念。API是应用程序编程接口,提供标准化交互方式;SDK是包含API、工具和文档的开发工具包,用于简化开发。两者关系密切,SDK通常封装API并提供更友好的接口。开发者可根据API"手搓SDK",通过封装底层调用提供更高层抽象。Library是可复用代码模块,Framework是提供基础结构的开发框架,Protocol是数据交换规则。这些概念形成技术栈层级:协议→API→库→SDK→框架→应用。理解它

2025-06-30 21:44:26 882

原创 《Go语言高级编程》gRPC进阶

gRPC安全与截取器技术精要 TLS安全认证:gRPC通过TLS证书实现通信安全。单向认证(服务器验证)需配置服务器证书,双向认证(双向验证)需CA根证书进行互信验证,确保通信双方身份真实可靠。证书生成流程包括私钥创建、CSR请求和CA签名等关键步骤。 拦截器机制:作为gRPC中间件,拦截器在请求处理前后执行特定逻辑。典型应用包括: 认证鉴权 - 通过metadata验证token 异常处理 - panic恢复机制 日志记录 - 请求追踪 性能监控 - 耗时统计 技术实现要点包含上下文处理、元信息获取和链式

2025-06-30 20:51:53 1171

原创 产品背景知识——CIFS、SMB 和 Samba

本文介绍了三种网络文件共享协议/工具:SMB、CIFS和Samba。SMB是微软开发的网络协议,经历了多个版本演进;CIFS是SMB 1.0的公开扩展版本,已逐渐被取代;Samba则是开源的SMB协议实现,使Linux系统能与Windows共享资源。三者区别在于:SMB是不断发展的协议家族,CIFS是其早期扩展版本,Samba是开源实现工具。文章还指出CIFS存在安全隐患,建议使用较新的SMB版本,并提供了不同环境下的选择建议。

2025-06-30 17:54:30 660

原创 《Go语言高级编程》gPRC概述

gRPC 使用 Protobuf 来定义服务接口和消息格式。在你的例子中,文件定义了一个名为的服务,它包含一个方法Hello,该方法接收一个String消息并返回一个String消息。这类似于定义一个函数接口,但它是跨网络调用的。在.proto文件中,使用stream// 普通 RPC(一元)// 双向流 RPC这里的Channel客户端可以持续发送String消息服务器可以持续返回String消息// 发布消息// 订阅主题Publish是一个普通的RPC方法,用于发布消息。

2025-06-30 10:47:20 1064

原创 《Go语言高级编程》玩转RPC

异步调用:通过通道机制实现非阻塞 RPC 调用,提升客户端并发能力。Watch 机制:利用函数回调和通道,实现服务端数据变化的实时通知。反向 RPC:打破传统 C/S 模式,适用于内网服务主动对外提供能力的场景。上下文管理:基于连接绑定状态(如认证信息),实现定制化服务逻辑。

2025-06-28 11:00:12 417

原创 《Go语言高级编程》RPC 入门

RPC(Remote Procedure Call,远程过程调用)是分布式系统中不同节点间的通信方式,允许程序像调用本地函数一样调用远程服务的方法。Go 语言的标准库net/rpc提供了基础的 RPC 实现,基于网络(如 TCP)通信,支持服务注册、方法调用和数据编码。// 定义服务名、接口和注册函数,解耦服务实现与调用RPC 本质:封装网络通信,使远程调用像本地函数调用一样简单。Go RPC 关键组件服务注册绑定服务名与方法。编解码器:默认 gob,跨语言可用jsonrpc。连接处理。

2025-06-28 10:59:09 485

原创 产品背景知识:鉴权与认证

认证(Authentication)和鉴权(Authorization)是安全体系中两大核心机制。认证用于验证用户身份(如密码、指纹),确保“你是谁”;鉴权则决定用户权限(如角色权限分配),控制“你能做什么”。两者需协同工作,先认证后鉴权才能构建完整访问控制。常见技术包括多因素认证(MFA)、RBAC权限模型等。若缺少认证,系统无法识别身份;缺少鉴权则可能导致越权操作。最佳实践是将两者逻辑分离,并遵循最小权限原则,以提升整体安全性。

2025-06-25 18:29:27 636

原创 《Go语言高级编程》语言基础

其二,禁止包的环状依赖,依赖关系形成有向无环图,每个包可独立编译,还能并发编译,大幅提升编译并行度。其三,编译后包的目标文件,不仅记录自身导出信息,还记录依赖关系。综上,Go 语言的包机制,从初始化执行的有序流程,到模块化、封装带来的设计便利,再到高效编译支撑的开发效率,全方位为开发者打造了一套科学、实用的代码组织与管理体系,助力构建高质量 Go 语言程序。包导入遵循 “层层深入” 逻辑:当一个包被导入,若它还导入其他包,先将这些包包含进来,接着创建和初始化该包的常量、变量,再调用包里的。

2025-06-22 17:32:30 996

原创 《Go语言圣经》反射概述

Go 语言的reflect包是实现反射机制的关键工具,它允许程序在运行时检查变量的类型、值和结构,突破了静态类型语言的限制,为动态编程提供了可能。和,分别用于处理类型信息和值信息。

2025-06-22 16:14:08 619

原创 《Go语言圣经》Go并发调度器与G-P-M模型深度解析

Go的G-P-M模型通过三层架构实现了"轻量级并发"与"高性能调度"的完美平衡:Goroutine提供编程层面的极简并发抽象,Processor控制并发度并优化负载均衡,Machine对接操作系统资源。其工作窃取算法、抢占式调度和网络轮询器等设计,使其在高并发场景下兼具易用性和效率。理解G-P-M的底层机制,不仅能帮助开发者写出更高效的并发代码,还能在性能调优和故障诊断中精准定位问题。随着Go版本的迭代,调度器仍在持续进化,未来将更好地应对超大规模并发和复杂硬件架构的挑战。

2025-06-21 23:52:53 934

原创 《Go语言圣经》并发环境下的惰性初始化

惰性初始化(Lazy Initialization)是一种设计模式,指仅在需要时才初始化资源,而非在程序启动时提前加载。初始化过程耗时或耗资源(如数据库连接、大型配置加载)资源可能从未被使用(提升程序启动速度)典型场景// 错误示例:提前初始化所有资源var (db = connectToDatabase() // 启动时即连接数据库config = loadAllConfig() // 加载全部配置优化方案:惰性初始化// 需要时才初始化return dbsync.Once通过。

2025-06-21 23:47:45 683

原创 《Go语言圣经》数据竞争:危害、原理与解决方案

优先通信共享数据// 正确:通过Channel传递数据 ch <- data // 错误:直接共享数据 sharedData = dataGoroutine绑定三原则每个状态有且仅有一个守护goroutine数据通过Channel传递,所有权随之转移守护goroutine通过select处理所有请求互斥锁使用铁律始终使用确保锁释放最小化锁的持有时间避免嵌套锁,确保持锁顺序一致混合方案设计原则守护goroutine处理周期性任务互斥锁处理高频实时操作通过Channel解耦不同组件。

2025-06-21 23:44:57 669

原创 《Go语言圣经》Select多路复用

多路复用本质:同时监听多个channel的读写操作,哪个就绪就处理哪个执行规则所有case同时检查,哪个channel可操作就执行对应分支若多个case就绪,随机选择一个(保证公平性)有default时,若所有case都不就绪,立即执行default典型应用超时控制(time.After+select)取消操作(abort channel+select)非阻塞IO(default分支实现轮询)并发任务调度(分配不同channel处理不同任务)

2025-06-21 23:30:10 443

原创 《Go语言圣经》并发循环

(Embarrassingly Parallel)——这类问题适合通过并发提升效率。我们需要为多个图片文件生成缩略图,每个图片处理是独立的,属于。通道控制并发数,避免系统资源耗尽。

2025-06-21 23:19:54 604

原创 《Go语言圣经》关闭一个channel

关闭channel后,已发送的数据仍然会被接收:在你的例子中,即使naturals被关闭,Squarer协程仍然会接收并处理0到99的所有数据是处理channel的安全方式:它会自动处理关闭状态,确保所有数据都被处理这是Go语言并发模型的设计亮点:简洁、安全,避免了常见的并发错误。

2025-06-21 23:12:53 377

原创 《Go语言圣经》无缓存channel和带缓存channel

通过调整通道的缓冲大小,可以灵活控制并发程序的行为。无缓冲通道像“实时接力”,而有缓冲通道像“传送带”。无缓冲通道要求发送和接收操作必须同时准备好,否则会阻塞当前协程。有缓冲通道允许在缓冲区未满时进行非阻塞发送,在缓冲区非空时进行非阻塞接收。

2025-06-21 23:06:39 362

原创 《Go语言圣经》channel概述

chan<- T<-chan T这种限制可以提高代码的安全性和可读性,特别适合在函数参数中明确数据流向。

2025-06-21 23:06:05 267

原创 XJTUSE机器学习导论押题

线性模型核心考点摘要 线性回归求解方法: 梯度下降法(BGD/SGD/Mini-Batch GD)通过迭代优化参数,适合大规模数据;正规方程法直接求解闭式解 ( \theta^* = (X^TX)^{-1}X^TY ),要求 (X^TX) 可逆。 逻辑回归原理: 使用sigmoid函数将线性输出转为概率,通过最大化对数似然估计参数,决策边界为 ( \theta^Tx = 0 )。 多分类与评估: OvO(( m(m-1)/2 )个分类器)和OvR(( m )个分类器)解决多分类问题;评估指标包括MSE(回归

2025-06-21 14:11:40 834

原创 《Go语言圣经》通过接口解耦包依赖

各包可独立开发、测试和部署实现类型可灵活替换,无需修改调用方代码测试时可使用模拟实现,提升测试效率避免循环依赖,保持代码架构的清晰性这种设计模式在Go的标准库和优秀开源项目中广泛应用(如io包的接口设计、http包的处理器接口等),是Go语言“组合优于继承”思想的具体体现。

2025-06-20 14:50:35 419

原创 《Go语言圣经》利用结构体和接口实现更优雅的Go错误处理

使用结构化错误保留上下文通过类型断言精确识别错误提供便捷的检查函数遵循Go的错误处理哲学这种模式不仅适用于文件操作,也可以推广到网络、数据库等所有需要错误处理的场景,使代码更加健壮和可维护。

2025-06-20 14:46:35 317

原创 《Go语言圣经》类型断言应用:高效类型判断

很常用

2025-06-20 14:42:17 256

原创 《Go语言圣经》接口类型、动态类型、动态值、类型断言

概念确定时机是否可能为nil变化性典型用途接口类型编译时❌(类型本身)不可变定义方法契约动态类型运行时✅可随赋值改变方法分派/类型断言动态值运行时✅可随赋值改变存储实际数据设计哲学接口类型是编译期的"约束",动态类型和动态值是运行时的"实现",这种分离实现了Go的鸭子类型(Duck Typing)机制——只要行为匹配(接口类型满足),不在乎具体是什么类型(动态类型)。Animal操作原接口值状态断言结果新值状态具体类型断言成功(Dog, {旺财})

2025-06-20 14:36:13 528

原创 《Go语言圣经》结构体嵌入与接口组合

嵌入类型的所有字段被提升为外部结构体的字段,可直接访问。

2025-06-20 13:59:33 379

原创 《Go语言圣经》defer

利用defer在函数退出时执行的特性通过函数返回函数值(高阶函数)的方式,将"进入记录"和"退出记录"绑定在一起使用两层括号分别完成"调用追踪函数"和"调用返回的记录函数"记录函数执行日志测量函数执行性能资源释放(如关闭文件、数据库连接)错误处理上下文管理defer语句中的函数调用会在包围函数返回时执行,而trace函数的作用是生成这个延迟执行的函数。

2025-06-20 13:52:32 246

原创 《Go语言圣经》函数值、匿名函数递归与可变参数

在 Go 语言中,函数被视为第一类值(first-class values),这意味着它们可以像其他值一样被操作:拥有类型、赋值给变量、作为参数传递给其他函数或作为返回值。函数值的调用方式与普通函数相同。函数类型的零值是nil,调用值为nil函数值可以与nil。

2025-06-20 13:48:48 480

原创 《Go语言圣经》闭包

闭包是编程中允许函数捕获并记忆其外部作用域变量的特性。它由函数及其引用的外部变量组成,即使原作用域已结束仍保持变量状态,每次创建闭包都会生成独立变量副本。Go示例显示,闭包变量存储在堆上,通过逃逸分析实现。常见陷阱是循环中所有闭包共享同一变量,解决方法是在循环内创建变量副本。这种设计使闭包灵活但需开发者谨慎管理变量作用域,确保状态独立。

2025-06-20 08:49:09 753

原创 《Go语言圣经》Map和结构体

若结构体所有字段均可比较,则该结构体可直接使用。

2025-06-19 19:49:02 517

XJTUSE Python实验报告参看

XJTUSE Python实验报告参看

2024-11-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除