JPEG 压缩预处理引发的混合精度训练 Loss Nan 问题排查

最近在训练一个图像篡改检测网络时,为了提升模型的鲁棒性,我对数据集进行了随机 JPEG 压缩作为预处理手段。本以为这只是一个常规的数据增强操作,没想到却引发了一场艰难的 Debug 之旅——模型训练过程中 Loss 突然变成了 NaN

经过一系列常规排查无果后,最终锁定了混合精度训练与数据分布之间的问题。在此记录下排查思路和解决方法。

训练设置:我使用MMSeg框架的自动混合精度AmpOptimWrapper

阅读更多

代理模式、外观模式和中介者模式区别

1.代理模式:

代理模式通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介,负责将客户端的请求转发给目标对象,同时可以在转发请求前后进行额外的处理。

使用场景:
  • 当需要在访问一个对象时进行一些控制或额外处理时。
阅读更多

设计模式中的代理模式

1 理论体系背景

1.1 问题域

​ 某些场景下,我们在直接访问对象时可能遇到问题,例如,当需要访问的对象位于远程机器上时,或者某些对象的创建开销很大,又或者某些操作需要安全控制,直接访问这些对象可能会给使用者或系统结构带来诸多不便。代理模式能够处理远程访问、创建开销高、访问安全控制等问题,实现灵活的系统结构

阅读更多

Server-Sent Events (SSE) 实现流式输出

在 ChatGPT 出现之前,大部分 Web 接口都是“请求-响应”模式:用户发一个请求,服务器处理完(可能需要几秒),然后一次性把结果扔回来。但在大模型时代,生成一段长文本可能需要 10 秒甚至更久。如果让用户盯着空白屏幕等 10 秒,体验会非常糟糕。于是,SSE (Server-Sent Events) 再次回到了聚光灯下。它允许服务器一边生成内容,一边通过长连接把数据“推”给前端,也就是我们看到的“打字机效果”。

1.什么是 SSE?

SSE(Server-Sent Events)是一种基于 HTTP 的单向通信机制。

阅读更多

实现页面级权限控制

方案:后端返回完整路由结构,前端动态组件映射

1. 设计思路
  1. 初始状态: 路由表中只有“登录页”、“404”等基础静态路由页面。
  2. 登录: 用户登录,获取 Token。
  3. 获取权限: 前端拿着 Token 请求后端接口,后端返回该用户的菜单树(路由表)
阅读更多