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
Show 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
...
@@ -28,7 +28,9 @@ import os
import
threading
import
threading
import
time
import
time
from
http
import
HTTPStatus
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
# Fix a bug of Python threading
setattr
(
threading
,
"_register_atexit"
,
lambda
*
args
,
**
kwargs
:
None
)
setattr
(
threading
,
"_register_atexit"
,
lambda
*
args
,
**
kwargs
:
None
)
...
@@ -192,14 +194,18 @@ async def generate_request(obj: GenerateReqInput, request: Request):
...
@@ -192,14 +194,18 @@ async def generate_request(obj: GenerateReqInput, request: Request):
"""Handle a generate request."""
"""Handle a generate request."""
if
obj
.
stream
:
if
obj
.
stream
:
async
def
stream_results
():
async
def
stream_results
()
->
AsyncIterator
[
bytes
]
:
try
:
try
:
async
for
out
in
tokenizer_manager
.
generate_request
(
obj
,
request
):
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
:
except
ValueError
as
e
:
out
=
{
"error"
:
{
"message"
:
str
(
e
)}}
out
=
{
"error"
:
{
"message"
:
str
(
e
)}}
yield
f
"data:
{
json
.
dumps
(
out
,
ensure_ascii
=
False
)
}
\n\n
"
yield
b
"data: "
+
orjson
.
dumps
(
yield
"data: [DONE]
\n\n
"
out
,
option
=
orjson
.
OPT_NON_STR_KEYS
)
+
b
"
\n\n
"
yield
b
"data: [DONE]
\n\n
"
return
StreamingResponse
(
return
StreamingResponse
(
stream_results
(),
stream_results
(),
...
@@ -260,13 +266,13 @@ async def openai_v1_chat_completions(raw_request: Request):
...
@@ -260,13 +266,13 @@ async def openai_v1_chat_completions(raw_request: Request):
return
await
v1_chat_completions
(
tokenizer_manager
,
raw_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
):
async
def
openai_v1_embeddings
(
raw_request
:
Request
):
response
=
await
v1_embeddings
(
tokenizer_manager
,
raw_request
)
response
=
await
v1_embeddings
(
tokenizer_manager
,
raw_request
)
return
response
return
response
@
app
.
get
(
"/v1/models"
)
@
app
.
get
(
"/v1/models"
,
response_class
=
ORJSONResponse
)
def
available_models
():
def
available_models
():
"""Show available models."""
"""Show available models."""
served_model_names
=
[
tokenizer_manager
.
served_model_name
]
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