Instructions to use li-ovo/NER_Game with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use li-ovo/NER_Game with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="li-ovo/NER_Game") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("li-ovo/NER_Game") model = AutoModelForCausalLM.from_pretrained("li-ovo/NER_Game", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use li-ovo/NER_Game with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "li-ovo/NER_Game" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "li-ovo/NER_Game", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/li-ovo/NER_Game
- SGLang
How to use li-ovo/NER_Game with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "li-ovo/NER_Game" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "li-ovo/NER_Game", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "li-ovo/NER_Game" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "li-ovo/NER_Game", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use li-ovo/NER_Game with Docker Model Runner:
docker model run hf.co/li-ovo/NER_Game
NER_Game — 多游戏语义单元抽取
本次更新为 r27-merged-20261013:基于 Qwen/Qwen3-4B 进行 LoRA 微调后,已将权重合并进基座。可直接使用 Transformers 加载,无需 PEFT 或单独加载 adapter。
- 面向多游戏品类的中文 UGC 信息抽取,不再限于旧版的三款游戏。未验证每一款游戏,不能保证覆盖所有品类或所有新游戏。
- 只做抽取,不做实体类型、事件类别或其他分类。
- 模型输出:
{"semantic_units":[{"mention":"原文片段","occurrence":1}]}。 - SDK 将
mention/occurrence定位为正文中的 Python Unicode 字符下标start/end,end为开区间。 - 合并权重为 BF16,约 8.06 GB / 7.51 GiB(含 tokenizer 与元数据);未量化。
- 默认关闭思考,生成结果直接为 JSON,不将结果放在思维链中。OpenAI 兼容服务应从
message.content读取最终输出,而不是reasoning_content。
快速使用
pip install -r requirements.txt
直接加载仓库根目录
import json
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "li-ovo/NER_Game"
tokenizer = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(
repo, torch_dtype=torch.bfloat16, device_map="auto"
).eval()
text = "孙悟空打野"
messages = [
{"role": "system", "content": "你是游戏 UGC 评论的语义单元抽取器。只判断连续字符片段的边界与出现序号,不做任何分类。只输出严格 JSON,不输出 Markdown、解释或思考过程。"},
{"role": "user", "content": (
'game_name: "王者荣耀"\n'
'context.parent_text(仅消歧,禁止从中输出 span): ""\n'
f"text: {json.dumps(text, ensure_ascii=False)}\n"
"请抽取 text 中的全部语义单元,输出 JSON:\n"
'{"semantic_units": [{"mention": "...", "occurrence": 1}]}\n'
"每个单元只能包含 mention 和 occurrence。occurrence 表示 mention 在当前 text 中从左到右精确、"
"区分大小写、非重叠出现的第几次,从 1 开始;禁止从 context 计数。"
"不要分类,不要输出任何分类字段或 start/end。没有语义单元时输出空数组。"
)},
]
prompt = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.inference_mode():
generated = model.generate(**inputs, do_sample=False, max_new_tokens=2048)
content = tokenizer.decode(
generated[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True
)
print(json.loads(content))
不要只发送普通聊天文本:应使用上面的抽取提示词,或使用随仓库提供的 SDK。
SDK 与旧目录兼容
hf download li-ovo/NER_Game --local-dir NER_Game
cd NER_Game
python example.py
import sys
sys.path.insert(0, "sdk")
from extraction_sdk import SemanticUnitExtractor
extractor = SemanticUnitExtractor("model", dtype="bf16")
result = extractor.extract(
"原神抽卡,原神更新后卡顿", record_id="demo", game_name="原神"
)
print(result)
仓库根目录和 model/ 中的模型文件同步更新且内容一致。旧代码使用 subfolder="model" 仍可加载同一 R27 权重。extract_batch 当前是逐条执行,不是连续批处理引擎。
契约与失败处理
| 契约 | 版本 |
|---|---|
| 提示词 | reasoningner-lite-sft-v5-extraction-only |
| 模型输出 | semantic-units-occurrence-v3-extraction-only |
| SDK 输出 | semantic-units-span-v3-extraction-only |
occurrence 从 1 开始,严格区分大小写,按正文中非重叠出现计数;上下文仅用于消歧,不能从中提取词。输出必须是原文连续片段,禁止纠错、标准化和生成不存在的词。
ok=False 表示格式、原文定位、重复单元或输出截断校验失败。此时 semantic_units 仅保留合法子集;不能将失败当作可靠空标签。业务应重试、降级或人工处理。
验证范围与评测说明
- 合并后的默认非思考模型在 8 条合成样本上均直接输出合法 JSON;与相同非思考输入下的基座加 LoRA 抽取结果 8/8 一致。
- 这只是冒烟测试,不能证明合并与解码配置变化在全量数据上完全等价。
- 历史 R27 离线结果:旧口径人工
old_dev(298 条)词面 F1 **76.41%**;Pro 银标seen_dev(418 条)词面 F1 **66.08%**;Pro 银标unseen_test(399 条有效参考)词面 F1 **63.98%**。 - 上述指标来自原 R27 adapter 离线预测,不是本次合并 release 的全量重评成绩。Pro 银标不是人工金标;没有已验证覆盖全品类的人工基准。
- 本版本未改用后续 v21 新抽取口径,不应混入不同版本的规则或使用旧标签宣称新口径成绩。
- 以往 R27 离线延迟门槛未通过,本次 release 的线上时延与吞吐仍需重新验收。
A10 部署起始配置
建议单张 A10、BF16、不量化、上下文上限 4096、初始 max_num_seqs=4、显存比例 0.85。这些是初始建议,不是 A10 实测保证。A10 显存、长文本峰值与 P95 延迟尚未验证。
可使用支持 Qwen3 的 vLLM,设置 temperature=0、max_tokens=2048、enable_thinking=False,不要启用将最终输出送入推理通道的 reasoning parser。最终结果从标准 content 读取。
T4 等不支持 BF16 的硬件须显式使用 FP16;精度转换和更换推理引擎都可能改变结果,需重新做一致性与质量验证。
训练与限制
- 基座:
Qwen/Qwen3-4B;LoRA rank 16、alpha 32、dropout 0.05,现已合并。 - 训练样本计数:19,003(包含锚点重采样,不代表同等数量独立样本),1 epoch、1,188 优化步。
- R27 训练包剔除了调用失败的教师标签;成功空标签保留。训练标注含教师银标,不代表全部由人工审核。
- 训练最大序列为 1,117 tokens;更长文本、多游戏长尾和跨领域效果需额外验证。部署上下文 4096 不等于长文本准确率已经验证。
- 本仓库不发布训练语料、评测正文、凭据或内部服务配置。
- 许可证:Apache-2.0,沿用 Qwen/Qwen3-4B 基座许可证。
版本细节见 RELEASE.md、manifest.json。文件完整性可用 SHA256SUMS.txt 校验。旧版可通过 Hugging Face 提交历史访问。
- Downloads last month
- 388