Skip to content

Commit ed3dba4

Browse files
committed
+ ner online
Signed-off-by: wang.yuqi <noooop@126.com>
1 parent d0078ec commit ed3dba4

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

examples/online_serving/ner.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3+
"""
4+
Example online usage of Pooling API.
5+
6+
Run `vllm serve <model> --runner pooling`
7+
to start up the server in vLLM. e.g.
8+
9+
vllm serve boltuix/NeuroBERT-NER
10+
"""
11+
12+
import argparse
13+
import pprint
14+
15+
import requests
16+
import torch
17+
18+
19+
def post_http_request(prompt: dict, api_url: str) -> requests.Response:
20+
headers = {"User-Agent": "Test Client"}
21+
response = requests.post(api_url, headers=headers, json=prompt)
22+
return response
23+
24+
25+
def parse_args():
26+
parser = argparse.ArgumentParser()
27+
parser.add_argument("--host", type=str, default="localhost")
28+
parser.add_argument("--port", type=int, default=8000)
29+
parser.add_argument("--model", type=str, default="boltuix/NeuroBERT-NER")
30+
31+
return parser.parse_args()
32+
33+
34+
def main(args):
35+
from transformers import AutoTokenizer, AutoConfig
36+
api_url = f"http://{args.host}:{args.port}/pooling"
37+
model_name = args.model
38+
39+
40+
tokenizer = AutoTokenizer.from_pretrained(model_name)
41+
config = AutoConfig.from_pretrained(model_name)
42+
label_map = config.id2label
43+
44+
text = "Barack Obama visited Microsoft headquarters in Seattle on January 2025."
45+
46+
prompt = {"model": model_name, "input": text}
47+
pooling_response = post_http_request(prompt=prompt, api_url=api_url)
48+
49+
outputs = pooling_response.json()["data"]
50+
51+
for output in outputs:
52+
logits = torch.tensor(output['data'])
53+
predictions = logits.argmax(dim=-1)
54+
55+
inputs = tokenizer(text, return_tensors="pt")
56+
57+
# Map predictions to labels
58+
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
59+
labels = [label_map[p.item()] for p in predictions]
60+
61+
# Print results
62+
for token, label in zip(tokens, labels):
63+
if token not in tokenizer.all_special_tokens:
64+
print(f"{token:15}{label}")
65+
66+
67+
if __name__ == "__main__":
68+
args = parse_args()
69+
main(args)

0 commit comments

Comments
 (0)