TensorGateLabs/TensorGate
GitHub: TensorGateLabs/TensorGate
TensorGate是一个生产级ASP.NET Core中间件,通过本地ONNX推理实时检测和净化大语言模型流量中的提示注入攻击。
Stars: 0 | Forks: 0
# TensorGate
**生产级 ASP.NET Core AI 安全中间件** — 一款零分配的 YARP 反向代理,内置本地 ONNX 推理,用于实时 LLM 负载检测、提示注入识别与语义净化。
[](LICENSE)
[](https://dotnet.microsoft.com/)
[](https://www.nist.gov/artificial-intelligence)
## 概述
TensorGate 是一个独立的、容器化的旁路服务,能够实时拦截、评估和净化大语言模型 (LLM) 的网络流量。
它作为 YARP 反向代理部署在你的应用程序和上游 LLM 服务提供商之间,运行本地 INT8 量化的 ONNX 分类模型,旨在严格的亚 50 毫秒延迟内(纯 CPU 硬件)检测提示注入和对抗性负载。
### 核心设计原则
- **零分配流水线** — 从原始 HTTP 字节流到 ONNX 张量计算,热路径使用 `Span`、`ArrayPool` 和 `Utf8JsonReader`/`Utf8JsonWriter` 避免托管堆分配,消除高并发下的 GC 停顿。
- **纯 CPU 推理** — INT8 静态量化的 `all-MiniLM-L6-v2` 模型通过 AVX-512 VNNI 实现 8–12 毫秒的分类延迟,模型完全驻留在 L3 缓存中(约 23 MB)。
- **SSE 流保持** — 透传 `text/event-stream` 响应而不进行缓冲,维持从上游提供商实时进行的 token 流式传输。
- **无锁热重载** — 通过 `RefCountDisposable` 模式的原子引用计数模型替换,实现零停机的权重更新,避免竞态条件或访问冲突。
- **符合 NIST AI RMF** — 架构直接映射到 NIST AI 600-1 的治理、映射、测量和管理支柱。
## 架构
```
┌─────────────┐ ┌──────────────────────────────────────────┐ ┌──────────────┐
│ Application │────▶│ TensorGate Sidecar │────▶│ LLM Provider │
│ (Internal) │◀────│ │◀────│ (Upstream) │
└─────────────┘ │ ┌────────┐ ┌───────────┐ ┌─────────┐ │ └──────────────┘
│ │ YARP │─▶│ Tokenizer │─▶│ ONNX │ │
│ │ Proxy │ │ (Zero- │ │ Runtime │ │
│ │ │ │ Alloc) │ │ (INT8) │ │
│ └────────┘ └───────────┘ └─────────┘ │
└──────────────────────────────────────────┘
```
### 流水线流程
1. **网络拦截** — YARP 通过 `AddRequestTransform` 捕获出站的 LLM API 流量。
2. **零分配 JSON 解析** — `Utf8JsonReader` 状态机直接从字节流中提取提示字段。
3. **分词** — `Microsoft.ML.Tokenizers` (BertTokenizer/WordPiece) 在 `ReadOnlySpan` 上进行编码,无需中间字符串分配。
4. **张量绑定** — 从 `ArrayPool` 租用的缓冲区被固定并绑定到 `OrtValue.CreateTensorValueFromMemory`。
5. **分类** — 单次前向传播通过 INT8 量化 MiniLM,在 8–12 毫秒内得出安全/恶意概率。
6. **决策门** — 恶意负载被同步阻止;安全负载原样流式传输。
## 技术栈
| 层级 | 技术 | 用途 |
|:------|:-----------|:--------|
| 反向代理 | [YARP](https://github.com/microsoft/reverse-proxy) | 流量拦截与 SSE 流转发 |
| JSON 处理 | `Utf8JsonReader` / `Utf8JsonWriter` | 零分配负载解析 |
| 分词 | [Microsoft.ML.Tokenizers](https://github.com/dotnet/machinelearning) | 无分配 BPE/WordPiece 编码 |
| 推理 | [ONNX Runtime](https://github.com/microsoft/onnxruntime) | INT8 量化 CPU 推理 |
| 模型 | [all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) | 序列分类 (2270 万参数) |
| 并发 | `Interlocked` / `Volatile` / CAS 循环 | 无锁引用计数 |
| 验证 | [HarmBench](https://github.com/centerforaisafety/HarmBench) | 对抗性红队评估 |
## 性能目标
| 指标 | 目标 | 实现机制 |
|:-------|:-------|:----------|
| 端到端延迟 | < 50 毫秒 | INT8 量化 + AVX-512 VNNI |
| 推理延迟 | 8–12.3 毫秒 | 静态量化,L3 缓存驻留 |
| 堆分配 | 热路径 0 字节 | `Span`, `ArrayPool`, `Utf8JsonReader` |
| 模型内存 | 约 23 MB | INT8 权重压缩 |
| 模型热重载 | 零停机 | 原子 `RefCountDisposable` 双缓冲 |
## 项目状态
Sprint 1 基础架构正在构建中:解决方案已可构建,YARP 将 `/v1/*` 代理到可配置的 OpenAI 兼容上游,并暴露 `/health` 端点用于编排探测。
```
cd ~/TensorGate
./scripts/setup-local-dev.sh
./scripts/smoke-yarp.sh # mock upstream on :9090, proxy on :8080
dotnet run --project src/TensorGate.Proxy
```
该项目遵循结构化的冲刺节奏进行积极开发:
| 冲刺 | 重点 | 周期 |
|:-------|:------|:---------|
| 冲刺 1 | 基础架构与代理机制 | 第 1–14 天 |
| 冲刺 2 | 内存优化与推理引擎 | 第 15–28 天 |
| 冲刺 3 | 并发、热交换与验证 | 第 29–42 天 |
在 [TensorGate 项目看板](https://github.com/orgs/TensorGateLabs/projects/1) 上跟踪进度。
## 入门指南
```
# 克隆仓库
git clone https://github.com/TensorGateLabs/TensorGate.git
cd TensorGate
# 构建
dotnet build
# 运行测试
dotnet test
# 运行 sidecar
dotnet run --project src/TensorGate.Proxy
```
## 许可协议
本项目采用 MIT 许可协议 — 详情请参阅 [LICENSE](LICENSE) 文件。
## 参考资料
- [NIST AI 600-1 风险管理框架](https://www.nist.gov/artificial-intelligence)
- [面向 LLM 应用的 OWASP Top 10](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
- [HarmBench:自动化红队评估的标准化框架](https://github.com/centerforaisafety/HarmBench)
- [Microsoft YARP 文档](https://microsoft.github.io/reverse-proxy/)
- [ONNX Runtime C# API](https://onnxruntime.ai/docs/get-started/with-csharp.html)
标签:AI安全, ASP.NET Core, AVX-512, Chat Copilot, CPU-only推理, DLL 劫持, HTTP中间件, INT8量化, Linux系统监控, NIST AI RMF, ONNX, YARP, 侧车容器, 反向代理, 大语言模型, 实时检查, 机器学习推理, 模型安全, 流式传输, 网络安全, 语义消毒, 负载检查, 隐私保护, 零分配, 零日漏洞检测