Blog
Page 3 - Showing 5 of 89 posts
本文针对PyTorch训练过程中显存爆炸的问题提供了两种解决方案:一是通过`torch.cuda.memory_allocated(device)`逐步骤监控显存占用情况以定位瓶颈;二是分析计算图累积机制,指出在循环中不当操作(如append/累加loss)会导致历史变量长期驻留内存,并强调需使用detach或item主动释放张量而非仅依赖no_grad()。文中还展示了自定义Trainer类的实现案例,说明如何避免hidden_states等中间结果被意外保留。
本文深入解析了Vercel推出的Fluid计算技术,该技术通过类似操作系统线程池的机制解决传统Serverless架构中的冷启动问题。其核心在于复用已创建的Node.js实例而非频繁新建,实现实时扩展、资源预占、按实际用量计费等特性,并支持流式传输和响应后处理等高级功能。文章指出这种设计模式与计算机操作系统的资源调度策略高度相似,体现了底层系统工程思想在云原生领域的创新应用。
本文详细介绍了Rust语言中的trait特性,包括其基本用法、继承与多继承操作、静态分发和动态分发机制。通过示例代码展示了如何定义和实现trait,以及使用Send和Sync约束实现者的能力。文章还对比了trait与接口的不同之处,解释了静态分发(编译时确定类型并生成高效代码)和动态分发(运行时查找具体实现)的原理及性能差异。
本文系统回顾了Rust语言的核心机制,包括所有权转移(通过赋值和into实现)、单线程共享的Rc智能指针、跨线程安全的Arc智能指针、互斥锁Mutex用于多线程数据保护、借用辅助函数as_ref/as_deref进行安全引用转换,以及Option/Result的错误处理模式和生命周期注解规则。重点解析了这些特性在内存管理、并发编程中的实现原理与应用场景。
本文详细讲解了如何在Next.js中实现搜索功能,包括前端的防抖设计和后端的数据库查询方案。前端通过自定义hook `useDebounce` 实现输入延迟触发搜索请求,避免频繁请求;后端初期采用Prisma直接对数据库进行模糊匹配查询,并指出未来可扩展为Elasticsearch以应对高并发场景。