Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
change
sglang
Commits
e5db40dc
Unverified
Commit
e5db40dc
authored
Oct 17, 2024
by
Michael Feil
Committed by
GitHub
Oct 17, 2024
Browse files
ORJson. Faster Json serialization (#1694)
parent
b1709305
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
7 deletions
+13
-7
python/sglang/srt/server.py
python/sglang/srt/server.py
+13
-7
No files found.
python/sglang/srt/server.py
View file @
e5db40dc
...
...
@@ -28,7 +28,9 @@ import os
import
threading
import
time
from
http
import
HTTPStatus
from
typing
import
Dict
,
List
,
Optional
,
Union
from
typing
import
AsyncIterator
,
Dict
,
List
,
Optional
,
Union
import
orjson
# Fix a bug of Python threading
setattr
(
threading
,
"_register_atexit"
,
lambda
*
args
,
**
kwargs
:
None
)
...
...
@@ -192,14 +194,18 @@ async def generate_request(obj: GenerateReqInput, request: Request):
"""Handle a generate request."""
if
obj
.
stream
:
async
def
stream_results
():
async
def
stream_results
()
->
AsyncIterator
[
bytes
]
:
try
:
async
for
out
in
tokenizer_manager
.
generate_request
(
obj
,
request
):
yield
f
"data:
{
json
.
dumps
(
out
,
ensure_ascii
=
False
)
}
\n\n
"
yield
b
"data: "
+
orjson
.
dumps
(
out
,
option
=
orjson
.
OPT_NON_STR_KEYS
)
+
b
"
\n\n
"
except
ValueError
as
e
:
out
=
{
"error"
:
{
"message"
:
str
(
e
)}}
yield
f
"data:
{
json
.
dumps
(
out
,
ensure_ascii
=
False
)
}
\n\n
"
yield
"data: [DONE]
\n\n
"
yield
b
"data: "
+
orjson
.
dumps
(
out
,
option
=
orjson
.
OPT_NON_STR_KEYS
)
+
b
"
\n\n
"
yield
b
"data: [DONE]
\n\n
"
return
StreamingResponse
(
stream_results
(),
...
...
@@ -260,13 +266,13 @@ async def openai_v1_chat_completions(raw_request: Request):
return
await
v1_chat_completions
(
tokenizer_manager
,
raw_request
)
@
app
.
post
(
"/v1/embeddings"
)
@
app
.
post
(
"/v1/embeddings"
,
response_class
=
ORJSONResponse
)
async
def
openai_v1_embeddings
(
raw_request
:
Request
):
response
=
await
v1_embeddings
(
tokenizer_manager
,
raw_request
)
return
response
@
app
.
get
(
"/v1/models"
)
@
app
.
get
(
"/v1/models"
,
response_class
=
ORJSONResponse
)
def
available_models
():
"""Show available models."""
served_model_names
=
[
tokenizer_manager
.
served_model_name
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment