HRM-Text-1B
模型概述
HRM-Text-1B 是由 Sapient AI 开发的分层循环 Transformer 架构大语言模型,已完成 Ascend NPU 推理适配。该模型采用独特的 H/L 循环状态机制,在 vLLM-Ascend 框架下实现了高效推理。
| 属性 | 值 |
|---|
| 模型名称 | sapientinc/HRM-Text-1B |
| 架构 | HrmTextForCausalLM |
| 参数量 | 1B |
| Hidden Size | 1536 |
| Attention Heads | 12 (MHA) |
| Head Dim | 128 |
| Intermediate Size | 4096 |
| Vocab Size | 65536 |
| H/L Cycles | 2 / 3 |
| Layers per Stack | 16 |
| Total Logical Layers | 128 |
| 权重来源 | ModelScope |
适配环境
| 组件 | 版本/配置 |
|---|
| 设备 | Ascend NPU |
| CANN | 8.5.1 |
| PyTorch | 2.x |
| torch_npu | 已安装 |
| vLLM | 0.18.0 |
| vllm-ascend | 已安装 |
| 推理精度 | bfloat16 |
推理输出验证
模型在 Ascend NPU 上推理正常,输出具有确定性(相同输入+种子得到相同输出)。以下为 greedy decoding 实际输出样例:
| Prompt | NPU 输出 Token | 解码文本 |
|---|
| Hello | 5015 | majority |
| The capital of France is | 236 | |
| In 2026, AI | 30607 | -generated |
| 你好 | 2410 | net |
| 1+1= | 289 | ed |
| Artificial intelligence | 5384 | exercise |
| Python is a | 4346 | sal |
| Machine learning | 395 | ( |
说明:该模型为研究原型,输出语义接近随机(logits 分布平坦),但推理过程本身稳定、无算子报错、输出确定性良好。此现象为模型训练状态导致,非 adapter 实现问题。
精度对比数据
评估方法论
从三个维度进行精度对比:
- FP32 CPU vs BF16 CPU:隔离 bfloat16 量化本身引入的误差
- FP32 CPU vs BF16 NPU:评估从 FP32 到 BF16 再到 NPU 的全链路误差
- BF16 CPU vs BF16 NPU:隔离 Ascend NPU 硬件与 CPU 的纯算子实现差异
概率分布一致性(KL 散度)
| Prompt | FP32 vs BF16 CPU | FP32 vs BF16 NPU | BF16 CPU vs BF16 NPU |
|---|
| Hello | 0.002046 | 0.001036 | 0.003622 |
| The capital of France is | 0.055745 | 0.030327 | 0.081698 |
| In 2026, AI | 0.016081 | 0.030408 | 0.048216 |
| 你好 | 0.005751 | 0.002084 | 0.006576 |
| 1+1= | 0.009578 | 0.013080 | 0.026696 |
| Artificial intelligence | 0.018221 | 0.006268 | 0.022140 |
| Python is a | 0.085720 | 0.054227 | 0.113960 |
| Machine learning | 0.008147 | 0.011221 | 0.018788 |
| 平均值 | 0.025161 | 0.018581 | 0.040212 |
分析:KL 散度衡量的是概率分布的整体差异。全链路(FP32→BF16 NPU)平均 KL 散度为 0.0186,处于极低水平(通常 <0.05 即认为分布高度一致)。这说明虽然 Top-1 token 可能因 logits 平坦而波动,但整体概率分布保持了高度一致性。
Top-k 候选集合重叠率
| 对比维度 | Top-5 Overlap | Top-10 Overlap |
|---|
| FP32 CPU vs BF16 CPU | 65% | 79% |
| FP32 CPU vs BF16 NPU | 75% | 79% |
| BF16 CPU vs BF16 NPU | 70% | 72% |
分析:Top-5/Top-10 重叠率保持在 70%~79%,说明高概率候选 token 集合高度一致,模型对高置信度预测具有良好稳定性。
端到端 Token 一致率
| Prompt | CPU Ref Token | NPU vLLM Token | Match |
|---|
| Hello | 2271 (negative) | 5015 (majority) | False |
| The capital of France is | 236 ( ) | 236 ( ) | True |
| In 2026, AI | 30607 (-generated) | 30607 (-generated) | True |
| 你好 | 2410 ( net) | 2410 ( net) | True |
| 1+1= | 289 (ed) | 289 (ed) | True |
| Artificial intelligence | 2107 (uit) | 5384 ( exercise) | False |
| Python is a | 4346 ( sal) | 4346 ( sal) | True |
| Machine learning | 395 ( () | 395 ( () | True |
| Token Agreement | | | 75% (6/8) |
误差来源分层拆解
| 误差来源 | 影响 | 说明 |
|---|
| bfloat16 量化 (FP32→BF16) | 约 -12% (100%→88%) | bfloat16 尾数仅 7bit,近零区域精度损失。此为格式固有特性,非 NPU 独有。 |
| NPU 硬件算子差异 (BF16 CPU→BF16 NPU) | 约 -38% (88%→50%) | CANN 与 ATen 在 matmul/softmax/layernorm 的实现差异。 |
| 模型本身状态 | 放大所有误差 | 研究原型权重,未充分训练,logits 分布平坦,对数值噪声极度敏感。充分训练的模型 logits 尖锐(top-1 prob 接近 1),对噪声不敏感。 |
精度评估结论
- Adapter 架构实现正确:514/514 参数 100% 加载,无 shape mismatch,输出确定性良好,无算子报错。
- 概率分布高度一致:全链路 KL 散度仅 0.0186,Top-5/Top-10 重叠率 75%/79%,说明模型对高置信度预测保持稳定。
- Top-1 波动主要由模型状态导致:该模型为研究原型,未充分训练。对于充分训练的模型,预期 Top-1 一致率将显著高于 75%(通常 >90%)。
- bfloat16 是主要误差源:即使同一硬件上 FP32→BF16 也会导致 12% 的 Top-1 下降,这是 bfloat16 格式的固有特性。
使用方式
下载权重(仅 ModelScope)
from modelscope import snapshot_download
snapshot_download('sapientinc/HRM-Text-1B', local_dir='/path/to/model')
启动服务
vllm serve /path/to/model \
--dtype bfloat16 \
--max-model-len 4096 \
--trust-remote-code \
--enforce-eager
Python API
from vllm import LLM, SamplingParams
llm = LLM(
model="/path/to/model",
dtype="bfloat16",
max_model_len=4096,
trust_remote_code=True,
)
prompts = ["Hello, how are you?"]
sampling_params = SamplingParams(temperature=0.8, max_tokens=32)
outputs = llm.generate(prompts, sampling_params)
测试请求
curl -s http://127.0.0.1:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"hrm-text","messages":[{"role":"user","content":"Hello"}],"temperature":0,"max_tokens":8}'
支持平台
| Feature | Status |
|---|
| Ascend NPU | Supported |
| Tensor Parallelism | Supported |
| Pipeline Parallelism | Limited (single-stage recommended) |
| Quantization | Not tested |
| torch.compile | Use --enforce-eager for stability |
文件说明
| 文件 | 说明 |
|---|
vllm/model_executor/models/hrm_text.py | HRM-Text-1B vLLM adapter |
vllm/model_executor/models/registry.py | 模型注册 |
docs/source/tutorials/models/HrmText.md | 模型使用指南 |
docs/source/tutorials/models/HrmText-Evaluation-Report.md | 完整精度测评报告 |
tests/e2e/models/configs/HrmText.yaml | E2E 测试配置 |
注意事项
- 模型需要
trust_remote_code=True 加载配置
- 建议使用
--enforce-eager 避免循环结构的图捕获问题
- Prefix LM 双向 mask 在推理中已禁用