sglang 0.4.2.post2__py3-none-any.whl → 0.4.2.post3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sglang/srt/function_call_parser.py +96 -69
- sglang/srt/layers/attention/double_sparsity_backend.py +1 -3
- sglang/srt/layers/attention/triton_backend.py +64 -16
- sglang/srt/layers/attention/triton_ops/double_sparsity_attention.py +337 -3
- sglang/srt/layers/attention/triton_ops/extend_attention.py +70 -42
- sglang/srt/layers/moe/fused_moe_triton/fused_moe.py +2 -2
- sglang/srt/layers/quantization/fp8_kernel.py +43 -10
- sglang/srt/models/llama.py +8 -3
- sglang/srt/speculative/build_eagle_tree.py +482 -102
- sglang/srt/speculative/eagle_utils.py +80 -50
- sglang/version.py +1 -1
- {sglang-0.4.2.post2.dist-info → sglang-0.4.2.post3.dist-info}/METADATA +2 -2
- {sglang-0.4.2.post2.dist-info → sglang-0.4.2.post3.dist-info}/RECORD +16 -16
- {sglang-0.4.2.post2.dist-info → sglang-0.4.2.post3.dist-info}/LICENSE +0 -0
- {sglang-0.4.2.post2.dist-info → sglang-0.4.2.post3.dist-info}/WHEEL +0 -0
- {sglang-0.4.2.post2.dist-info → sglang-0.4.2.post3.dist-info}/top_level.txt +0 -0
@@ -177,29 +177,21 @@ class EagleVerifyInput:
|
|
177
177
|
spec_steps: int,
|
178
178
|
num_verify_token: int,
|
179
179
|
):
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
tree_mask, position, retrive_index, retrive_cum_len = build_tree_kernel(
|
193
|
-
parent_list,
|
194
|
-
top_scores_index,
|
195
|
-
seq_lens,
|
196
|
-
seq_lens_sum,
|
197
|
-
topk,
|
198
|
-
spec_steps,
|
199
|
-
num_verify_token,
|
180
|
+
tree_mask, position, retrive_index, retrive_cum_len, draft_tokens = (
|
181
|
+
build_tree_kernel(
|
182
|
+
verified_id,
|
183
|
+
score_list,
|
184
|
+
token_list,
|
185
|
+
parents_list,
|
186
|
+
seq_lens,
|
187
|
+
seq_lens_sum,
|
188
|
+
topk,
|
189
|
+
spec_steps,
|
190
|
+
num_verify_token,
|
191
|
+
)
|
200
192
|
)
|
201
193
|
return cls(
|
202
|
-
draft_tokens
|
194
|
+
draft_tokens,
|
203
195
|
tree_mask,
|
204
196
|
position,
|
205
197
|
retrive_index,
|
@@ -258,39 +250,77 @@ class EagleVerifyInput:
|
|
258
250
|
return kv_indices, cum_kv_seq_len, qo_indptr, self.custom_mask
|
259
251
|
|
260
252
|
def verify(self, batch: ScheduleBatch, logits_output: torch.Tensor) -> torch.Tensor:
|
261
|
-
predict = torch.argmax(logits_output.next_token_logits, dim=-1)
|
262
|
-
predict = torch.cat(
|
263
|
-
[predict, torch.full([1], -1, dtype=torch.long, device="cuda")], dim=-1
|
264
|
-
)
|
265
253
|
draft_token = torch.cat(
|
266
|
-
[self.draft_token, torch.full([1], -1, dtype=torch.
|
254
|
+
[self.draft_token, torch.full([1], -1, dtype=torch.int32, device="cuda")],
|
267
255
|
dim=-1,
|
268
256
|
)
|
269
|
-
target_predict = predict[self.retrive_index]
|
270
257
|
candidates = draft_token[self.retrive_index]
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
self.retrive_index.
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
accept_length,
|
289
|
-
extract_index,
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
258
|
+
if batch.sampling_info.is_all_greedy:
|
259
|
+
# temp == 0
|
260
|
+
bs = self.retrive_cum_len.numel() - 1
|
261
|
+
predict = torch.argmax(logits_output.next_token_logits, dim=-1)
|
262
|
+
predict = torch.cat(
|
263
|
+
[predict, torch.full([1], -1, dtype=torch.int32, device="cuda")], dim=-1
|
264
|
+
)
|
265
|
+
target_predict = predict[self.retrive_index]
|
266
|
+
# logits = logits_output.next_token_logits[self.retrive_index]
|
267
|
+
# target_predict = torch.argmax(logits[:, :-1], dim=-1)
|
268
|
+
accept_mask = candidates[:, 1:] == target_predict[:, :-1]
|
269
|
+
|
270
|
+
accept_mask = (torch.cumprod(accept_mask, dim=1)).sum(dim=1)
|
271
|
+
max_draft_len = self.retrive_index.shape[-1]
|
272
|
+
accept_index = torch.full(
|
273
|
+
(bs, max_draft_len), -1, dtype=torch.int32, device="cuda"
|
274
|
+
)
|
275
|
+
accept_length = torch.empty((bs,), dtype=torch.int, device="cuda")
|
276
|
+
extract_index = torch.full((bs * 2,), 0, dtype=torch.int, device="cuda")
|
277
|
+
eagle_verify_retrive[(bs,)](
|
278
|
+
self.retrive_index.contiguous(),
|
279
|
+
accept_mask.contiguous(),
|
280
|
+
self.retrive_cum_len,
|
281
|
+
accept_index,
|
282
|
+
accept_length,
|
283
|
+
extract_index,
|
284
|
+
max_draft_len,
|
285
|
+
self.draft_token_num,
|
286
|
+
triton.next_power_of_2(max_draft_len),
|
287
|
+
)
|
288
|
+
else:
|
289
|
+
# temp > 0
|
290
|
+
bs = self.retrive_index.shape[0]
|
291
|
+
predict_shape = list(logits_output.next_token_logits.shape)[:-1]
|
292
|
+
predict_shape[-1] += 1
|
293
|
+
target_logits = logits_output.next_token_logits[self.retrive_index]
|
294
|
+
predict = torch.full(predict_shape, -1, dtype=torch.int32, device="cuda")
|
295
|
+
accept_index = torch.full(
|
296
|
+
(bs, self.spec_steps + 1), -1, dtype=torch.int32, device="cuda"
|
297
|
+
)
|
298
|
+
accept_length = torch.empty((bs,), dtype=torch.int32, device="cuda")
|
299
|
+
expanded_temperature = batch.sampling_info.temperatures.unsqueeze(1)
|
300
|
+
target_probs = F.softmax(target_logits / expanded_temperature, dim=-1)
|
301
|
+
draft_probs = torch.full_like(
|
302
|
+
target_probs, 0, dtype=torch.float32, device="cuda"
|
303
|
+
)
|
304
|
+
coins = torch.rand_like(candidates, dtype=torch.float32, device="cuda")
|
305
|
+
tree_speculative_sampling_target_only(
|
306
|
+
predicts=predict, # mutable
|
307
|
+
accept_index=accept_index, # mutable
|
308
|
+
accept_token_num=accept_length, # mutable
|
309
|
+
candidates=candidates.to(torch.int32),
|
310
|
+
retrive_index=self.retrive_index.to(torch.int32),
|
311
|
+
retrive_next_token=self.retrive_next_token.to(torch.int32),
|
312
|
+
retrive_next_sibling=self.retrive_next_sibling.to(torch.int32),
|
313
|
+
uniform_samples=coins,
|
314
|
+
target_probs=target_probs,
|
315
|
+
draft_probs=draft_probs,
|
316
|
+
threshold_single=global_server_args_dict[
|
317
|
+
"speculative_accept_threshold_single"
|
318
|
+
],
|
319
|
+
threshold_acc=global_server_args_dict[
|
320
|
+
"speculative_accept_threshold_acc"
|
321
|
+
],
|
322
|
+
deterministic=True,
|
323
|
+
)
|
294
324
|
|
295
325
|
new_accept_index = []
|
296
326
|
unfinished_index = []
|
sglang/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.4.2.
|
1
|
+
__version__ = "0.4.2.post3"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: sglang
|
3
|
-
Version: 0.4.2.
|
3
|
+
Version: 0.4.2.post3
|
4
4
|
Summary: SGLang is yet another fast serving framework for large language models and vision language models.
|
5
5
|
License: Apache License
|
6
6
|
Version 2.0, January 2004
|
@@ -239,7 +239,7 @@ Requires-Dist: xgrammar>=0.1.10; extra == "runtime-common"
|
|
239
239
|
Provides-Extra: srt
|
240
240
|
Requires-Dist: sglang[runtime_common]; extra == "srt"
|
241
241
|
Requires-Dist: cuda-python; extra == "srt"
|
242
|
-
Requires-Dist: sgl-kernel>=0.0.3.
|
242
|
+
Requires-Dist: sgl-kernel>=0.0.3.post2; extra == "srt"
|
243
243
|
Requires-Dist: torch; extra == "srt"
|
244
244
|
Requires-Dist: vllm==0.6.4.post1; extra == "srt"
|
245
245
|
Requires-Dist: flashinfer_python>=0.2.0.post2; extra == "srt"
|
@@ -10,7 +10,7 @@ sglang/global_config.py,sha256=fnT0U9vlHdGaQFKN9tYTnUF4-eVW4HYQURd5zvPtrg0,1286
|
|
10
10
|
sglang/launch_server.py,sha256=mDXfwha8LHpWQJekcCosR98QhCQsbmilsBlI5jAIgg0,420
|
11
11
|
sglang/llama3_eval.py,sha256=gWSboDchIGybIce88bJlrCG0yiLZ513mw4gcutJlzGM,10017
|
12
12
|
sglang/utils.py,sha256=7HpOrPBhMivWH719m7Dy1rjrAXOAsnqelpwNBBbvjqs,13319
|
13
|
-
sglang/version.py,sha256=
|
13
|
+
sglang/version.py,sha256=08dwZ-8Pb-Ir0QXBY3R8hBlzHyVuy4icqVMBMJri3oM,28
|
14
14
|
sglang/lang/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
sglang/lang/chat_template.py,sha256=v4SyYViPHX3i3XT46F7vlARn4UaSiP3PBpTGtzO6uRY,17006
|
16
16
|
sglang/lang/choices.py,sha256=-W1DVw9N9ZliVpvmWrzIXG4cswAah8eMQrHWzkS3D8o,6234
|
@@ -29,7 +29,7 @@ sglang/srt/_custom_ops.py,sha256=7jL5BTcoS8PmR56y2Qsa3q8emI-tmrJuV4hLTwLVFBE,504
|
|
29
29
|
sglang/srt/aio_rwlock.py,sha256=6LYtOdeTUY3hkfa1dmYkgsaF2ttrwIF3hUWz2AZ2fqw,2970
|
30
30
|
sglang/srt/conversation.py,sha256=USUoYiJf5DdHz7Ouclu30k3QSxMiem4WgZrA148MpSA,21695
|
31
31
|
sglang/srt/custom_op.py,sha256=M5oqlgh32vAVeStFCruydTUfi_blGFJihVTnQBEOvwo,1134
|
32
|
-
sglang/srt/function_call_parser.py,sha256=
|
32
|
+
sglang/srt/function_call_parser.py,sha256=YmagXt1BIuTbeiWmSleZwJFCFR5r5EFqVQqKnJDYXiE,19568
|
33
33
|
sglang/srt/hf_transformers_utils.py,sha256=_24uqCkZ4dvS9Uc5p2cCzX0Q8ShUzrh_Hp6mvg7hxHY,7729
|
34
34
|
sglang/srt/mm_utils.py,sha256=1ScBunw_x4W8ebM_AcJ62-1T2mfT8NlMJqdAhkF1lb0,12367
|
35
35
|
sglang/srt/model_parallel.py,sha256=eLXZhvJ4wG6dh0FontNCIdVZvHYdWgaeY-5cu7TD9tE,6078
|
@@ -76,14 +76,14 @@ sglang/srt/layers/sampler.py,sha256=FIkh6sh91Fh5R8QJ6x66bJ8Y-xl5EfT4XVPXGXJ1l7I,
|
|
76
76
|
sglang/srt/layers/torchao_utils.py,sha256=Ws24FdRBSkTpyeyA6bQrdDm-W5wfDxKvSIPUSahyMfA,4063
|
77
77
|
sglang/srt/layers/vocab_parallel_embedding.py,sha256=txcjkuSDa6gZwESKj8X-HSLhAnMmDXL0FmFWY9SKqik,22155
|
78
78
|
sglang/srt/layers/attention/__init__.py,sha256=KlQ0fl-o9v_NxBDhNZ4dPW2uQ2HeJjLm-0MTMWgaa28,2980
|
79
|
-
sglang/srt/layers/attention/double_sparsity_backend.py,sha256=
|
79
|
+
sglang/srt/layers/attention/double_sparsity_backend.py,sha256=4mVyFPfZxPTwkQHGNCfI_4hQ8CbsWXJfxz-IQW77gAc,9143
|
80
80
|
sglang/srt/layers/attention/flashinfer_backend.py,sha256=9BJEAQ5IcSMGvPfa6_D3cP9Gbo2XQ5GHBnF7cw2Rsng,42933
|
81
81
|
sglang/srt/layers/attention/torch_native_backend.py,sha256=KrcAqTLVZLtwgOmB0xhwUUsX32M-5LYZpNxaRNT4VuA,9252
|
82
|
-
sglang/srt/layers/attention/triton_backend.py,sha256=
|
82
|
+
sglang/srt/layers/attention/triton_backend.py,sha256=mtLs768rhtCF_BVAV_rmYac0U4R1_HHc-9ic4JratsY,10100
|
83
83
|
sglang/srt/layers/attention/vision.py,sha256=zLjKmzUlkgq1RFcP3b4EPArOAKovoaDLgYfM5SyB2wM,13181
|
84
84
|
sglang/srt/layers/attention/triton_ops/decode_attention.py,sha256=tcUAdacBWTpZmro7vZeRPasfwRWFlCR4bxfGpFOYgZ8,17831
|
85
|
-
sglang/srt/layers/attention/triton_ops/double_sparsity_attention.py,sha256=
|
86
|
-
sglang/srt/layers/attention/triton_ops/extend_attention.py,sha256=
|
85
|
+
sglang/srt/layers/attention/triton_ops/double_sparsity_attention.py,sha256=ztLWKeW-260EiIw3kCAbtUTUHHxAICz2mVxZJFes4oI,31167
|
86
|
+
sglang/srt/layers/attention/triton_ops/extend_attention.py,sha256=R6QgrcBf6XuLzQ1jamrILNypaPi3ynkMPTfjae0d3JA,12695
|
87
87
|
sglang/srt/layers/attention/triton_ops/prefill_attention.py,sha256=Y66gZ37u0GKMPtI8n5MbO6uOxRuGEmKIG0IPbJTOqAM,6213
|
88
88
|
sglang/srt/layers/moe/fused_moe_native.py,sha256=OEWpM93X5tJG4-rwz5qmdpTzEUR73zun29YRV3bZglY,4269
|
89
89
|
sglang/srt/layers/moe/topk.py,sha256=6A4W1ztlV2dQvkXcPJvFvAg0QEhE58Q7eE7iw8N36J4,7230
|
@@ -91,7 +91,7 @@ sglang/srt/layers/moe/ep_moe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
91
91
|
sglang/srt/layers/moe/ep_moe/kernels.py,sha256=wb_S2qLxoWWgQu9coXy0XLNGvHzdZSdwXr0PGy4QySg,10940
|
92
92
|
sglang/srt/layers/moe/ep_moe/layer.py,sha256=aS8t1XUvlTnO9IQaxGjW5bOXP4FrJDXzymEIvlIDMro,22603
|
93
93
|
sglang/srt/layers/moe/fused_moe_triton/__init__.py,sha256=h9yMFAL_bagUf-qBED8gSWdCOb7d8IdA-pE-L_nIg8E,842
|
94
|
-
sglang/srt/layers/moe/fused_moe_triton/fused_moe.py,sha256=
|
94
|
+
sglang/srt/layers/moe/fused_moe_triton/fused_moe.py,sha256=tWV490Ao5vIasPDBBY9ktuAZdWlONnnv3uPCifcTfpI,37241
|
95
95
|
sglang/srt/layers/moe/fused_moe_triton/layer.py,sha256=-49WRpq9OtRZocQjW-YNcB_ruK09nIJqGHKNa8CJsws,22691
|
96
96
|
"sglang/srt/layers/moe/fused_moe_triton/configs/E=1,N=14336,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json",sha256=iNGsE2ZeVnQEnN4A8UJ9Jv0d3hbRF2MJ9oBgjup5Szk,2737
|
97
97
|
"sglang/srt/layers/moe/fused_moe_triton/configs/E=1,N=14336,device_name=NVIDIA_A100-SXM4-80GB.json",sha256=JJN0hryyLr5Zv3dSS7C8cPFhAwTT6XxUVnBGMZvV6JA,2752
|
@@ -196,7 +196,7 @@ sglang/srt/layers/moe/fused_moe_triton/layer.py,sha256=-49WRpq9OtRZocQjW-YNcB_ru
|
|
196
196
|
sglang/srt/layers/quantization/__init__.py,sha256=_Sba1KQnmZNKGDKM1MfBs2T3uDqOHfeW6IHO2mTUvfs,4471
|
197
197
|
sglang/srt/layers/quantization/base_config.py,sha256=daK9p0aijMszLUm1W4Pc33FK87MdqYK1NoWFKif-j80,4599
|
198
198
|
sglang/srt/layers/quantization/fp8.py,sha256=ibttPVCUsCQ0LXy7FUb8wnzqGcGZQXQLqwCB4a2fai4,35160
|
199
|
-
sglang/srt/layers/quantization/fp8_kernel.py,sha256=
|
199
|
+
sglang/srt/layers/quantization/fp8_kernel.py,sha256=qlXXT9WO3TKxZv9r0rAdcDjO_jZYobtKnvTxmHDrfoo,16304
|
200
200
|
sglang/srt/layers/quantization/fp8_utils.py,sha256=7v-RNwuYXa-gPO3msRDB0Z3uajOQMYd2Cj0NMoq1hg4,4148
|
201
201
|
sglang/srt/layers/quantization/int8_kernel.py,sha256=t_BLVf8XjOyn7S3Lu3B4hXvw8DvTg4Anco7TNadL58U,1436
|
202
202
|
sglang/srt/layers/quantization/modelopt_quant.py,sha256=_VdVz77dTP-IczPeFrdH6Ttro2D26BZvMlZkCKWj_5o,6200
|
@@ -325,7 +325,7 @@ sglang/srt/models/granite.py,sha256=3HqQXJlfoKd11w1NCpTYmiPO9HlkA1jJqoAmuTzHuU0,
|
|
325
325
|
sglang/srt/models/grok.py,sha256=NXC0I5_wXmlQ0-gMWgiT-X9ebzOsrTJGcltAXkY6064,18030
|
326
326
|
sglang/srt/models/internlm2.py,sha256=INGGwSCYKoZRAokXJC78RKKde2fgHn9P4JG-N37Pfn0,12124
|
327
327
|
sglang/srt/models/internlm2_reward.py,sha256=8K26A9oIFFGx_9U2mF87j7FX8K87HGKMnVL3ht1Uc7I,2398
|
328
|
-
sglang/srt/models/llama.py,sha256=
|
328
|
+
sglang/srt/models/llama.py,sha256=hGBUo-70o0vLT6BI-v32qEv_g8Vr7ItEpqxAt1Mf9-0,22248
|
329
329
|
sglang/srt/models/llama_classification.py,sha256=DwboM1xHXdf3Fddf7xGnrfdOLJwXdiJs994cIpAPa2g,2984
|
330
330
|
sglang/srt/models/llama_eagle.py,sha256=88DzR54DKBIKJ1h-bkIa8mc1qJnlkdZ1eGYY3c5mpBY,4442
|
331
331
|
sglang/srt/models/llama_embedding.py,sha256=rh-AiczPY_pTpzcACHvSMVjh1hsV_MZBBwP0LQxPsGM,3130
|
@@ -365,9 +365,9 @@ sglang/srt/sampling/penaltylib/penalizers/frequency_penalty.py,sha256=1Zp2aL6dD6
|
|
365
365
|
sglang/srt/sampling/penaltylib/penalizers/min_new_tokens.py,sha256=_Nxv0XgUPirZjw2SEJYp_Cd9ZcLwmt7h6JE6J4hhFq4,3629
|
366
366
|
sglang/srt/sampling/penaltylib/penalizers/presence_penalty.py,sha256=5tOgCg7OvE9kSN9VMCpH1hwqo1YMxt9iS5PVpct9HpU,2468
|
367
367
|
sglang/srt/sampling/penaltylib/penalizers/repetition_penalty.py,sha256=l1DyU8kC8n_F4Z6Jd8mZKfF23buuLZ5dWuVfyqDWkUI,2968
|
368
|
-
sglang/srt/speculative/build_eagle_tree.py,sha256=
|
368
|
+
sglang/srt/speculative/build_eagle_tree.py,sha256=zWthboIgzPzSOXcGxDpDv0rBOQP55HYGrBKGqm2gWF0,20732
|
369
369
|
sglang/srt/speculative/eagle_draft_cuda_graph_runner.py,sha256=5ZCy6ndPA2p95xDgo2kXWD3zCtVaq4q5X0HBpAbB3Xs,7929
|
370
|
-
sglang/srt/speculative/eagle_utils.py,sha256=
|
370
|
+
sglang/srt/speculative/eagle_utils.py,sha256=BV89f2CTp9H0pSvJfK13WYvTL7LW3BtcplQfLngKihg,24451
|
371
371
|
sglang/srt/speculative/eagle_worker.py,sha256=4oROLwUBJIwEHNHNEfvsy74DqLQLVc4KfjdR-MrB1OM,12038
|
372
372
|
sglang/srt/speculative/spec_info.py,sha256=D7A27UU1iOwIBEjXTgAxZ7jdftbTiVlMCvK8GmYr2zg,488
|
373
373
|
sglang/test/few_shot_gsm8k.py,sha256=7yDbEQe49gZeJhz2wFFX-gf_59ThDKsCS1xwfogNc7k,4034
|
@@ -386,8 +386,8 @@ sglang/test/test_layernorm.py,sha256=IacByD5d-stXjzBz8Ypamc7povlcedpKPbb_4JLgo3c
|
|
386
386
|
sglang/test/test_programs.py,sha256=aUV9Ex_B714ph7ytv6W3J7sdGDKC6lGIhUy95Yg6AHQ,18878
|
387
387
|
sglang/test/test_utils.py,sha256=BU6lAX3bu3TNQZqVC9UPnyq3I7iV5kigHQKJx7UNlOQ,26192
|
388
388
|
sglang/test/srt/sampling/penaltylib/utils.py,sha256=CjxHgywh0hx_87iynzQt_ztHu6zBVuE-YrZ-XPmW6U4,12906
|
389
|
-
sglang-0.4.2.
|
390
|
-
sglang-0.4.2.
|
391
|
-
sglang-0.4.2.
|
392
|
-
sglang-0.4.2.
|
393
|
-
sglang-0.4.2.
|
389
|
+
sglang-0.4.2.post3.dist-info/LICENSE,sha256=FJXh51fvTQklojUFY89XVLsjxRcBqOxPs8XNy-2uZ0c,11346
|
390
|
+
sglang-0.4.2.post3.dist-info/METADATA,sha256=eVi6WuPieNGNX7TzNcBd8JolIIPQphw6609pqdALCUQ,23763
|
391
|
+
sglang-0.4.2.post3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
392
|
+
sglang-0.4.2.post3.dist-info/top_level.txt,sha256=yxhh3pYQkcnA7v3Bg889C2jZhvtJdEincysO7PEB09M,7
|
393
|
+
sglang-0.4.2.post3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|