主页

AI-Driven SIMUL8 Modeling: Undocumented XML Semantics, Engine Quirks, and .RS8 Verification

The previous post examined SIMUL8’s XML structure and how to validate generated files against simul8_valid.xsd using lxml. Schema validation catches tag typos and structural errors so that the .xml file loads cleanly in the SIMUL8 desktop GUI. However, the gap between “the XML passes XSD validation and opens in the GUI” and “the model produces v...

阅读更多

Python 风控服务并发扩容:提高内存利用率,避免内存线性增长

风控服务的一次请求要完成宽表关联、特征计算和模型推理。这些计算依赖固定的关联宽表、词表和分箱字典。为了避免每次请求都重新读盘或访问外部存储,服务会在启动时把它们一次性加载到内存。这些工作以 CPU 计算为主,请求之间相互独立,通常可以通过增加计算进程提高并发能力。问题在于,磁盘上几百 MB 的静态数据,加载成 DataFrame 等 Python 对象后可能膨胀到数 GiB,每个进程再各自加载一份。在测试环境中,2 个进程处理轻请求时已经占用 6.3 GiB,3 个进程处理重请求时占用 8.7 GiB;继续增加并发,内存会先于 CPU 达到上限。 这次采用的办法是让 Gunicorn 主进程(master)先加载只读大对象,再 fork 出计算进程(worker)。借助 Linux ...

阅读更多

由依赖关系构建执行拓扑:风控决策引擎的依赖闭包与分层调度

一次信贷或反欺诈决策,往往要串起数十到上百个处理步骤:多源数据查询、特征衍生、模型打分。为了应对特征与模型的频繁迭代和严苛的时延要求(SLA),决策引擎普遍采用声明式依赖编排。本文记录如何由声明式依赖推导出分层执行拓扑,并对其中依赖闭包计算的两版实现做复杂度与实测对比(基准测试:全图规模 $\lvert V \rvert=256$,目标节点数 $\lvert R \rvert=24$,闭包构建耗时从 2,987 ms 降至 2.33 ms)。

阅读更多

SIMUL8 XML Internals: Understanding the XSD Schema for Programmatic Simulation

SIMUL8 is almost always used as a visual desktop tool. But under the hood, every .S8 simulation file can be exported to and imported from an XML format. Compared to manual GUI drag-and-drop, XML provides a programmatic interface to automate model construction, parameter tuning, and batch scenario generation. To build models this way, the offici...

阅读更多

JupyterHub 进阶实践:集成 Azure AD 实现企业级单点登录 (二期)

引言 前置文章:JupyterHub 极简部署实践:基于 SystemdSpawner 与本地 PAM 认证 (一期) 在一期部署中,我们成功搭建了基于 SystemdSpawner 与本地 PAM 认证的多用户 JupyterHub。随着团队规模的扩大,手动管理 Linux 用户、维护密码不仅繁琐,而且无法满足企业对单点登录(SSO)与多因素认证(MFA)的安全合规要求。 本期我们将 JupyterHub 升级为 Azure AD(Microsoft Entra ID)OAuth2 认证。由于一期已经严格遵循了统一的用户名规范,本次升级无需迁移已有用户数据,可以实现无痛过渡。

阅读更多

JupyterHub 极简部署实践:基于 SystemdSpawner 与本地 PAM 认证 (一期)

为什么选择 JupyterHub + SystemdSpawner 多用户 Jupyter 平台常见方案是基于 Kubernetes (Zero to JupyterHub) 或 Docker (DockerSpawner)。但对于中小团队或单机部署,Kubernetes 维护成本过高,DockerSpawner 存在数据权限映射和容器管理开销。 我们需要一个更轻量、贴合宿主机环境的方案。SystemdSpawner 是一个理想的选择:它能够利用 Linux 原生 systemd 服务的 cgroup 限制 CPU 和内存资源,且用户打开 Terminal 直接就是真实的宿主机 Shell,方便使用宿主机已安装的各种开发工具。这非常适合单机、多用户的高效共享开发服务器。

阅读更多

如何使用 NetBird 快速构建企业级安全内网

为什么选择 NetBird 随着企业业务的分布式发展和远程办公的普及,构建一个安全、高效且易于管理的内网变得至关重要。传统的 VPN 解决方案(如 OpenVPN、IPsec)配置繁琐,对客户端支持有限,且由于中心化架构容易产生网络瓶颈。 我们需要一个现代化的替代方案,它应该具备以下特质:部署简单、配置下发自动化、基于点对点直连(降低延迟),且拥有直观的管理面板。这就是我们选择 NetBird 的原因。它不仅满足上述所有需求,还完美地平衡了企业级安全需求与极简的运维体验。

阅读更多