A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 14, 05:30 UTC
[Docs] Fix warnings in mkdocs build (continued) (#24791)
Signed-off-by: Zerohertz <ohg3417@gmail.com>
Hyogeun Oh (오효근) committed
Sep 13, 2025 at 16:13 UTC
9a8966bcc207036e9b65bd7951e808254ffba542
27 files changed
+102
-110
vllm/distributed/eplb/eplb_state.py
+4
-4
@@ -337,11 +337,11 @@ class EplbState:
337
Args:
338
model (MixtureOfExperts): The MoE model.
339
is_dummy (bool): If `True`, this is a dummy step and the load
340
- metrics recorded in this forward pass will not count. Defaults
341
- to `False`.
340
+ metrics recorded in this forward pass will not count. Defaults
341
+ to `False`.
342
is_profile (bool): If `True`, perform a dummy rearrangement
343
- with maximum communication cost. This is used in `profile_run`
344
- to reserve enough memory for the communication buffer.
343
+ with maximum communication cost. This is used in `profile_run`
344
+ to reserve enough memory for the communication buffer.
345
log_stats (bool): If `True`, log the expert load metrics.
346
347
# Stats
vllm/distributed/eplb/rebalance_algo.py
+3
-3
@@ -102,14 +102,14 @@ def rebalance_experts_hierarchical(
102
num_groups: int,
103
num_nodes: int,
104
num_gpus: int,
105
-):
105
+) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
106
"""
107
Parameters:
108
weight: [num_moe_layers, num_logical_experts]
109
num_physical_experts: number of physical experts after replication
110
num_groups: number of expert groups
111
- num_nodes: number of server nodes, where the intra-node network
112
- (e.g, NVLink) is faster
111
+ num_nodes: number of server nodes, where the intra-node network
112
+ (e.g, NVLink) is faster
113
num_gpus: number of GPUs, must be a multiple of `num_nodes`
114
115
Returns:
vllm/distributed/kv_transfer/kv_connector/v1/base.py
+3
-2
@@ -149,7 +149,7 @@ class KVConnectorBase_V1(ABC):
149
150
@abstractmethod
151
def start_load_kv(self, forward_context: "ForwardContext",
152
- **kwargs) -> None:
152
+ **kwargs: Any) -> None:
153
"""
154
Start loading the KV cache from the connector to vLLM's paged
155
KV buffer. This is called from the forward context before the
@@ -182,7 +182,8 @@ class KVConnectorBase_V1(ABC):
182
183
@abstractmethod
184
def save_kv_layer(self, layer_name: str, kv_layer: torch.Tensor,
185
- attn_metadata: "AttentionMetadata", **kwargs) -> None:
185
+ attn_metadata: "AttentionMetadata",
186
+ **kwargs: Any) -> None:
187
"""
188
Start saving a layer of KV cache from vLLM's paged buffer
189
to the connector. This is called from within attention layer to
vllm/distributed/kv_transfer/kv_connector/v1/lmcache_connector.py
+3
-2
@@ -30,7 +30,7 @@ class LMCacheConnectorV1(KVConnectorBase_V1):
30
# Worker-side methods
31
# ==============================
32
def start_load_kv(self, forward_context: "ForwardContext",
33
- **kwargs) -> None:
33
+ **kwargs: Any) -> None:
34
"""
35
Start loading the KV cache from the connector to vLLM's paged
36
KV buffer. This is called from the forward context before the
@@ -61,7 +61,8 @@ class LMCacheConnectorV1(KVConnectorBase_V1):
61
self._lmcache_engine.wait_for_layer_load(layer_name)
62
63
def save_kv_layer(self, layer_name: str, kv_layer: torch.Tensor,
64
- attn_metadata: "AttentionMetadata", **kwargs) -> None:
64
+ attn_metadata: "AttentionMetadata",
65
+ **kwargs: Any) -> None:
66
"""
67
Start saving the a layer of KV cache from vLLM's paged buffer
68
to the connector. This is called from within attention layer to
vllm/distributed/kv_transfer/kv_connector/v1/p2p/p2p_nccl_connector.py
+4
-3
@@ -91,7 +91,7 @@ class P2pNcclConnector(KVConnectorBase_V1):
91
# ==============================
92
93
def start_load_kv(self, forward_context: "ForwardContext",
94
- **kwargs) -> None:
94
+ **kwargs: Any) -> None:
95
"""Start loading the KV cache from the connector buffer to vLLM's
96
paged KV buffer.
97
@@ -212,7 +212,8 @@ class P2pNcclConnector(KVConnectorBase_V1):
212
return
213
214
def save_kv_layer(self, layer_name: str, kv_layer: torch.Tensor,
215
- attn_metadata: "AttentionMetadata", **kwargs) -> None:
215
+ attn_metadata: "AttentionMetadata",
216
+ **kwargs: Any) -> None:
217
"""Start saving the KV cache of the layer from vLLM's paged buffer
218
to the connector.
219
@@ -278,7 +279,7 @@ class P2pNcclConnector(KVConnectorBase_V1):
279
280
def get_finished(
281
self, finished_req_ids: set[str],
281
- **kwargs) -> tuple[Optional[set[str]], Optional[set[str]]]:
282
+ **kwargs: Any) -> tuple[Optional[set[str]], Optional[set[str]]]:
283
"""
284
Notifies worker-side connector ids of requests that have
285
finished generating tokens.
vllm/distributed/kv_transfer/kv_connector/v1/p2p/tensor_memory_pool.py
+3
-2
@@ -218,8 +218,9 @@ class TensorMemoryPool:
218
219
return addr
220
221
- def load_tensor(self, addr: int, dtype: torch.dtype,
222
- shape: tuple[int, ...], device) -> torch.Tensor:
221
+ def load_tensor(self, addr: int, dtype: torch.dtype, shape: tuple[int,
222
+ ...],
223
+ device: torch.device) -> torch.Tensor:
224
"""Loads a tensor from pinned host memory to the specified device.
225
226
Args:
vllm/distributed/kv_transfer/kv_connector/v1/shared_storage_connector.py
+4
-3
@@ -3,7 +3,7 @@
3
import hashlib
4
import os
5
from dataclasses import dataclass
6
-from typing import TYPE_CHECKING, Optional
6
+from typing import TYPE_CHECKING, Any, Optional
7
8
import safetensors
9
import torch
@@ -90,7 +90,7 @@ class SharedStorageConnector(KVConnectorBase_V1):
90
logger.info("Shared storage path is %s", self._storage_path)
91
92
def start_load_kv(self, forward_context: "ForwardContext",
93
- **kwargs) -> None:
93
+ **kwargs: Any) -> None:
94
"""Start loading the KV cache from the connector buffer to vLLM's
95
paged KV buffer.
96
@@ -191,7 +191,8 @@ class SharedStorageConnector(KVConnectorBase_V1):
191
return
192
193
def save_kv_layer(self, layer_name: str, kv_layer: torch.Tensor,
194
- attn_metadata: "AttentionMetadata", **kwargs) -> None:
194
+ attn_metadata: "AttentionMetadata",
195
+ **kwargs: Any) -> None:
196
"""Start saving the KV cache of the layer from vLLM's paged buffer
197
to the connector.
198
vllm/distributed/kv_transfer/kv_pipe/pynccl_pipe.py
+2
-2
@@ -251,8 +251,8 @@ class PyNcclPipe(KVPipeBase):
251
"""
252
Receives a tensor and its metadata from the source rank. Blocking call.
253
254
- Args:
255
- tensor: The received tensor, or `None` if no tensor is received.
254
+ Returns:
255
+ The received tensor, or `None` if no tensor is received.
256
"""
257
if self.transport_thread is None:
258
self.transport_thread = ThreadPoolExecutor(max_workers=1)
vllm/model_executor/models/interfaces.py
+1
-1
@@ -823,7 +823,7 @@ class SupportsEagle3(Protocol):
823
824
Args:
825
layers: Tuple of layer indices that should output auxiliary
826
- hidden states.
826
+ hidden states.
827
"""
828
...
829
vllm/model_executor/models/keye.py
+3
-9
@@ -1520,15 +1520,9 @@ class BaseKeyeModule(nn.Module):
1520
batch.
1521
**NOTE**: If mrope is enabled (default setting for Qwen2-VL
1522
opensource models), the shape will be `(3, seq_len)`,
1523
- otherwise it will be `(seq_len,).
1524
- pixel_values: Pixel values to be fed to a model.
1525
- `None` if no images are passed.
1526
- image_grid_thw: Tensor `(n_images, 3)` of image 3D grid in LLM.
1527
- `None` if no images are passed.
1528
- pixel_values_videos: Pixel values of videos to be fed to a model.
1529
- `None` if no videos are passed.
1530
- video_grid_thw: Tensor `(n_videos, 3)` of video 3D grid in LLM.
1531
- `None` if no videos are passed.
1523
+ otherwise it will be `(seq_len,)`.
1524
+ intermediate_tensors: Intermediate tensors from prior forward pass.
1525
+ inputs_embeds: Optional tensor of input embeddings.
1526
"""
1527
if intermediate_tensors is not None:
1528
inputs_embeds = None
vllm/model_executor/models/keye_vl1_5.py
+6
-5
@@ -58,17 +58,18 @@ def split_thw(grid_thw: torch.Tensor) -> torch.Tensor:
58
return torch.cat([ones, h_w], dim=1).repeat_interleave(t, dim=0)
59
60
61
-def get_num_patches(grid_thw: torch.Tensor, num_frames: Union[list[int],
62
- torch.Tensor]):
61
+def get_num_patches(grid_thw: torch.Tensor,
62
+ num_frames: Union[list[int], torch.Tensor]) -> list[int]:
63
"""
64
Return num_patches per video.
65
66
Args:
67
- t: tensor with shape [N, ...] where each item is a list/tensor
68
- cu_seqlens: list indicating the boundaries of groups
67
+ grid_thw: Tensor with shape [N, 3] containing temporal, height, width
68
+ dimensions
69
+ num_frames: List or tensor indicating the number of frames per video
70
71
Returns:
71
- list of ints representing the sum of products for each group
72
+ List of ints representing the number of patches for each video
73
74
Examples:
75
>>> # Suppose there are 2 videos with a total of 3 grids
vllm/model_executor/models/llava.py
+3
-1
@@ -732,7 +732,9 @@ class LlavaForConditionalGeneration(nn.Module, SupportsMultiModal, SupportsPP):
732
Args:
733
input_ids: Flattened (concatenated) input_ids corresponding to a
734
batch.
735
- pixel_values: The pixels in each input image.
735
+ positions: Position indices for the input tokens.
736
+ intermediate_tensors: Intermediate tensors from prior forward pass.
737
+ inputs_embeds: Optional tensor of input embeddings.
738
739
Info:
740
[LlavaImageInputs][]
vllm/model_executor/models/llava_next.py
+3
-2
@@ -535,8 +535,9 @@ class LlavaNextForConditionalGeneration(nn.Module, SupportsMultiModal,
535
Args:
536
input_ids: Flattened (concatenated) input_ids corresponding to a
537
batch.
538
- pixel_values: The pixels in each grid patch for each input image.
539
- image_sizes: The original `(height, width)` for each input image.
538
+ positions: Position indices for the input tokens.
539
+ intermediate_tensors: Intermediate tensors from prior forward pass.
540
+ inputs_embeds: Optional tensor of input embeddings.
541
542
Info:
543
[LlavaNextImageInputs][]
vllm/model_executor/models/mistral3.py
+3
-1
@@ -578,7 +578,9 @@ class Mistral3ForConditionalGeneration(nn.Module, SupportsLoRA,
578
Args:
579
input_ids: Flattened (concatenated) input_ids corresponding to a
580
batch.
581
- pixel_values: The pixels in each input image.
581
+ positions: Position indices for the input tokens.
582
+ intermediate_tensors: Intermediate tensors from prior forward pass.
583
+ inputs_embeds: Optional tensor of input embeddings.
584
585
Info:
586
[Mistral3ImagePixelInputs][]
vllm/model_executor/models/mllama4.py
+4
-5
@@ -387,11 +387,10 @@ class Llama4VisionEncoder(nn.Module):
387
) -> torch.Tensor:
388
r"""
389
Args:
390
- inputs_embeds (`torch.FloatTensor` of shape
391
- `(batch_size, sequence_length, hidden_size)`):
392
- Optionally, instead of passing `input_ids` you can choose to
393
- directly pass an embedded representation. This is useful if you
394
- want more control over how to convert `input_ids` indices into
390
+ hidden_states: Input tensor of shape
391
+ (batch_size, sequence_length, hidden_size).
392
+ Hidden states from the model embeddings, representing
393
+ the input tokens.
394
associated vectors than the model's internal embedding
395
lookup matrix.
396
"""
vllm/model_executor/models/moonvit.py
+14
-4
@@ -70,11 +70,15 @@ def multihead_attention(
70
v: torch.Tensor,
71
q_cu_seqlens: Optional[torch.Tensor] = None,
72
k_cu_seqlens: Optional[torch.Tensor] = None,
73
-):
73
+) -> torch.Tensor:
74
"""Multi-head attention using flash attention 2.
75
76
Args:
77
- q, k, v: tensor of shape (batch_size, seqlen, num_heads, head_dim),
77
+ q: Query tensor of shape (batch_size, seqlen, num_heads, head_dim),
78
+ or (tot_seqlens, num_heads, head_dim) if packing.
79
+ k: Key tensor of shape (batch_size, seqlen, num_heads, head_dim),
80
+ or (tot_seqlens, num_heads, head_dim) if packing.
81
+ v: Value tensor of shape (batch_size, seqlen, num_heads, head_dim),
82
or (tot_seqlens, num_heads, head_dim) if packing.
83
q_cu_seqlens (torch.Tensor): cumulative sequence lengths of q.
84
The first element should be 0 and the last element should be q.shape[0].
@@ -123,8 +127,14 @@ def sdpa_attention(
127
"""SDPA attention.
128
129
Args:
126
- q, k, v: tensor of shape (batch_size, seqlen, num_heads, head_dim),
130
+ q: Query tensor of shape (batch_size, seqlen, num_heads, head_dim),
131
+ or (tot_seqlens, num_heads, head_dim) if packing.
132
+ k: Key tensor of shape (batch_size, seqlen, num_heads, head_dim),
133
+ or (tot_seqlens, num_heads, head_dim) if packing.
134
+ v: Value tensor of shape (batch_size, seqlen, num_heads, head_dim),
135
or (tot_seqlens, num_heads, head_dim) if packing.
136
+ q_cu_seqlens: Optional cumulative sequence lengths of q.
137
+ k_cu_seqlens: Optional cumulative sequence lengths of k.
138
"""
139
seq_length = q.shape[0]
140
attention_mask = torch.zeros([1, seq_length, seq_length],
@@ -387,7 +397,7 @@ class MLP2(nn.Module):
397
def __init__(self,
398
dims: list[int],
399
activation,
390
- bias=True,
400
+ bias: bool = True,
401
prefix: str = "",
402
use_data_parallel: bool = False):
403
super().__init__()
vllm/model_executor/models/phi4_multimodal.py
+2
-2
@@ -374,8 +374,8 @@ class Phi4MMAudioMeanVarianceNormLayer(nn.Module):
374
Typically used as a very first layer in a model.
375
376
Args:
377
- input_size: int
378
- layer input size.
377
+ config: [Phi4MultimodalAudioConfig](https://huggingface.co/docs/transformers/model_doc/phi4_multimodal#transformers.Phi4MultimodalAudioConfig)
378
+ object containing model parameters.
379
"""
380
381
def __init__(self, config: Phi4MultimodalAudioConfig):
vllm/model_executor/models/qwen2_vl.py
+3
-9
@@ -1372,15 +1372,9 @@ class Qwen2VLForConditionalGeneration(nn.Module, SupportsMultiModal,
1372
batch.
1373
**NOTE**: If mrope is enabled (default setting for Qwen2-VL
1374
opensource models), the shape will be `(3, seq_len)`,
1375
- otherwise it will be `(seq_len,).
1376
- pixel_values: Pixel values to be fed to a model.
1377
- `None` if no images are passed.
1378
- image_grid_thw: Tensor `(n_images, 3)` of image 3D grid in LLM.
1379
- `None` if no images are passed.
1380
- pixel_values_videos: Pixel values of videos to be fed to a model.
1381
- `None` if no videos are passed.
1382
- video_grid_thw: Tensor `(n_videos, 3)` of video 3D grid in LLM.
1383
- `None` if no videos are passed.
1375
+ otherwise it will be `(seq_len,)`.
1376
+ intermediate_tensors: Intermediate tensors from prior forward pass.
1377
+ inputs_embeds: Optional tensor of input embeddings.
1378
"""
1379
1380
if intermediate_tensors is not None:
vllm/model_executor/models/siglip2navit.py
+8
-19
@@ -390,12 +390,9 @@ class Siglip2EncoderLayer(nn.Module):
390
position_embeddings: torch.Tensor) -> tuple[torch.FloatTensor]:
391
"""
392
Args:
393
- hidden_states (`torch.FloatTensor`):
394
- Input to the layer of shape `(batch, seq_len, embed_dim)`.
395
- output_attentions (`bool`, *optional*, defaults to `False`):
396
- Whether or not to return the attentions tensors of all
397
- attention layers. See `attentions` under
398
- returned tensors for more detail.
393
+ hidden_states: Input tensor of shape (batch, seq_len, embed_dim).
394
+ cu_seqlens: Cumulative sequence lengths tensor.
395
+ position_embeddings: Position embeddings tensor.
396
"""
397
residual = hidden_states
398
@@ -534,19 +531,11 @@ class Siglip2Encoder(nn.Module):
531
) -> torch.Tensor:
532
r"""
533
Args:
537
- inputs_embeds (`torch.FloatTensor` of shape
538
- `(batch_size, sequence_length, hidden_size)`):
539
- Optionally, instead of passing `input_ids` you can choose to
540
- directly pass an embedded representation. This is useful if
541
- you want more control over how to convert `input_ids` indices
542
- into associated vectors than the model's internal embedding
543
- lookup matrix.
544
- grid_thws (`torch.LongTensor`):
545
- grid shape (num_patches, 3)
546
- output_hidden_states (`bool`, *optional*):
547
- Whether or not to return the hidden states of all layers. See
548
- `hidden_states` under returned tensors for more detail.
549
- return_dict (`bool`, *optional*):
534
+ inputs_embeds: Input tensor of shape
535
+ (batch_size, sequence_length, hidden_size).
536
+ Embedded representation of the input tokens.
537
+ grid_thws: Grid tensor of shape (num_patches, 3)
538
+ containing grid dimensions.
539
Whether or not to return a [`~utils.ModelOutput`] instead of
540
a plain tuple.
541
"""
vllm/model_executor/models/ultravox.py
+5
-4
@@ -597,10 +597,11 @@ class UltravoxModel(nn.Module, SupportsMultiModal, SupportsPP, SupportsLoRA):
597
with the `input_ids`.
598
599
Args:
600
- audio_features: A batch of audio input chunks [B, N, 80, M].
601
- audio_lens: Length of audio frames for each audio chunk [B].
602
- audio_token_len: Length of audio tokens for each audio chunk [B'].
603
- Note: batch dim is different from batch dim in audio chunks.
600
+ input_ids: Flattened (concatenated) input_ids corresponding to a
601
+ batch.
602
+ positions: Position indices for the input tokens.
603
+ intermediate_tensors: Intermediate tensors from prior forward pass.
604
+ inputs_embeds: Optional tensor of input embeddings.
605
606
"""
607
vllm/model_executor/models/zamba2.py
+2
-2
@@ -909,8 +909,8 @@ class Zamba2ForCausalLM(nn.Module, HasInnerState, IsHybrid):
909
prefix: Optional prefix for parameter names
910
911
Raises:
912
- AssertionError: If prefix caching is enabled
913
- (not supported by Mamba)
912
+ AssertionError: If prefix caching is enabled
913
+ (not supported by Mamba)
914
"""
915
config = vllm_config.model_config.hf_config
916
cache_config = vllm_config.cache_config
vllm/transformers_utils/config.py
+7
-6
@@ -679,20 +679,21 @@ def get_hf_file_to_dict(file_name: str,
679
680
681
@cache
682
-def get_pooling_config(model: str, revision: Optional[str] = 'main'):
682
+def get_pooling_config(model: str,
683
+ revision: Optional[str] = 'main') -> Optional[dict]:
684
"""
685
This function gets the pooling and normalize
686
config from the model - only applies to
687
sentence-transformers models.
688
689
Args:
689
- model (str): The name of the Hugging Face model.
690
- revision (str, optional): The specific version
691
- of the model to use. Defaults to 'main'.
690
+ model: The name of the Hugging Face model.
691
+ revision: The specific version of the model to use.
692
+ Defaults to 'main'.
693
694
Returns:
694
- dict: A dictionary containing the pooling
695
- type and whether normalization is used.
695
+ A dictionary containing the pooling type and whether
696
+ normalization is used, or None if no pooling configuration is found.
697
"""
698
699
modules_file_name = "modules.json"
vllm/transformers_utils/configs/jais.py
+4
-4
@@ -74,10 +74,10 @@ class JAISConfig(PretrainedConfig):
74
use_cache (`bool`, *optional*, defaults to `True`):
75
Whether or not the model should return the last key/values
76
attentions (not used by all models).
77
- scale_attn_by_inverse_layer_idx (`bool`, *optional*,
78
- defaults to `False`):
79
- Whether to additionally scale attention weights by
80
- `1 / layer_idx + 1`.
77
+ scale_attn_by_inverse_layer_idx
78
+ (`bool`, *optional*, defaults to `False`):
79
+ Whether to additionally scale attention weights
80
+ by `1 / layer_idx + 1`.
81
reorder_and_upcast_attn (`bool`, *optional*, defaults to `False`):
82
Whether to scale keys (K) prior to computing attention
83
(dot-product)
vllm/transformers_utils/configs/ultravox.py
-4
@@ -37,10 +37,6 @@ class UltravoxConfig(transformers.PretrainedConfig):
37
The initialization value for the layer normalization.
38
projector_act (`str`, *optional*, defaults to `"swiglu"`):
39
The activation function used by the multimodal projector.
40
- text_model_lora_config (`LoraConfigSimplified`, *optional*):
41
- The LoRA configuration for finetuning the text model.
42
- audio_model_lora_config (`LoraConfigSimplified`, *optional*):
43
- The LoRA configuration for finetuning the audio model.
40
projector_ln_mid (`bool`, *optional*, defaults to `False`):
41
Whether to apply layer normalization at the middle of the
42
projector or at the end. Versions v0.4.1 and below
vllm/transformers_utils/processors/deepseek_vl2.py
+4
-5
@@ -25,6 +25,7 @@
25
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
27
import math
28
+from typing import Any
29
30
import torch
31
import torchvision.transforms as T
@@ -178,17 +179,15 @@ class DeepseekVLV2Processor(ProcessorMixin):
179
prompt: str,
180
images: list[Image.Image],
181
inference_mode: bool = True,
181
- **kwargs,
182
+ **kwargs: Any,
183
):
184
"""
185
186
Args:
187
prompt (str): the formatted prompt;
187
- conversations (list[dict]): conversations with a list of messages;
188
images (list[ImageType]): the list of images;
189
inference_mode (bool): if True, then remove the last eos token;
190
- system_prompt (str): the system prompt;
191
- **kwargs:
190
+ **kwargs: Additional keyword arguments.
191
192
Returns:
193
outputs (BaseProcessorOutput): the output of the processor,
@@ -259,7 +258,7 @@ class DeepseekVLV2Processor(ProcessorMixin):
258
text: str,
259
images: list[Image.Image],
260
inference_mode: bool = True,
262
- **kwargs,
261
+ **kwargs: Any,
262
):
263
"""
264
vllm/transformers_utils/runai_utils.py
+1
-3
@@ -33,7 +33,6 @@ def list_safetensors(path: str = "") -> list[str]:
33
34
Args:
35
path: The object storage path to list from.
36
- allow_pattern: A list of patterns of which files to pull.
36
37
Returns:
38
list[str]: List of full object storage paths allowed by the pattern
@@ -54,8 +53,7 @@ class ObjectStorageModel:
53
dir: The temporary created directory.
54
55
Methods:
57
- pull_files(): Pull model from object storage to the temporary
58
- directory.
56
+ pull_files(): Pull model from object storage to the temporary directory.
57
"""
58
59
def __init__(self) -> None:
vllm/transformers_utils/s3_utils.py
+3
-3
@@ -2,7 +2,7 @@
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4
import fnmatch
5
-from typing import Optional
5
+from typing import Any, Optional
6
7
from vllm.utils import PlaceholderModule
8
@@ -26,7 +26,7 @@ def _filter_ignore(paths: list[str], patterns: list[str]) -> list[str]:
26
]
27
28
29
-def glob(s3=None,
29
+def glob(s3: Optional[Any] = None,
30
path: str = "",
31
allow_pattern: Optional[list[str]] = None) -> list[str]:
32
"""
@@ -51,7 +51,7 @@ def glob(s3=None,
51
52
53
def list_files(
54
- s3,
54
+ s3: Any,
55
path: str,
56
allow_pattern: Optional[list[str]] = None,
57
ignore_pattern: Optional[list[str]] = None