Unverified Commit 4fc1bf81 authored by Feng XiaoLong's avatar Feng XiaoLong Committed by GitHub
Browse files

[Bugfix] Migrate to REGEX Library to prevent catastrophic backtracking (#18454)


Signed-off-by: default avatarCrucifixion-Fxl <xmufxl@gmail.com>
Co-authored-by: default avatarCrucifixion-Fxl <xmufxl@gmail.com>
parent f2036734
...@@ -6,7 +6,6 @@ import enum ...@@ -6,7 +6,6 @@ import enum
import hashlib import hashlib
import inspect import inspect
import json import json
import re
import textwrap import textwrap
import uuid import uuid
import warnings import warnings
...@@ -20,6 +19,7 @@ from pathlib import Path ...@@ -20,6 +19,7 @@ from pathlib import Path
from typing import (TYPE_CHECKING, Any, Callable, ClassVar, Literal, Optional, from typing import (TYPE_CHECKING, Any, Callable, ClassVar, Literal, Optional,
Protocol, TypeVar, Union, cast, get_args, get_origin) Protocol, TypeVar, Union, cast, get_args, get_origin)
import regex as re
import torch import torch
from torch.distributed import ProcessGroup, ReduceOp from torch.distributed import ProcessGroup, ReduceOp
from transformers import PretrainedConfig from transformers import PretrainedConfig
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
import argparse import argparse
import dataclasses import dataclasses
import json import json
import re
import sys import sys
import threading import threading
import warnings import warnings
...@@ -13,6 +12,7 @@ from itertools import permutations ...@@ -13,6 +12,7 @@ from itertools import permutations
from typing import (Annotated, Any, Callable, Dict, List, Literal, Optional, from typing import (Annotated, Any, Callable, Dict, List, Literal, Optional,
Type, TypeVar, Union, cast, get_args, get_origin) Type, TypeVar, Union, cast, get_args, get_origin)
import regex as re
import torch import torch
from typing_extensions import TypeIs, deprecated from typing_extensions import TypeIs, deprecated
......
...@@ -7,7 +7,6 @@ import importlib ...@@ -7,7 +7,6 @@ import importlib
import inspect import inspect
import multiprocessing import multiprocessing
import os import os
import re
import signal import signal
import socket import socket
import tempfile import tempfile
...@@ -21,6 +20,7 @@ from json import JSONDecodeError ...@@ -21,6 +20,7 @@ from json import JSONDecodeError
from typing import Annotated, Optional, Union from typing import Annotated, Optional, Union
import prometheus_client import prometheus_client
import regex as re
import uvloop import uvloop
from fastapi import APIRouter, Depends, FastAPI, Form, HTTPException, Request from fastapi import APIRouter, Depends, FastAPI, Form, HTTPException, Request
from fastapi.exceptions import RequestValidationError from fastapi.exceptions import RequestValidationError
......
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
# Adapted from # Adapted from
# https://github.com/lm-sys/FastChat/blob/168ccc29d3f7edc50823016105c024fe2282732a/fastchat/protocol/openai_api_protocol.py # https://github.com/lm-sys/FastChat/blob/168ccc29d3f7edc50823016105c024fe2282732a/fastchat/protocol/openai_api_protocol.py
import json import json
import re
import time import time
from http import HTTPStatus from http import HTTPStatus
from typing import Annotated, Any, ClassVar, Literal, Optional, Union from typing import Annotated, Any, ClassVar, Literal, Optional, Union
import regex as re
import torch import torch
from fastapi import HTTPException, UploadFile from fastapi import HTTPException, UploadFile
from pydantic import (BaseModel, ConfigDict, Field, TypeAdapter, from pydantic import (BaseModel, ConfigDict, Field, TypeAdapter,
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
import asyncio import asyncio
import json import json
import re
import time import time
from collections.abc import AsyncGenerator, AsyncIterator from collections.abc import AsyncGenerator, AsyncIterator
from collections.abc import Sequence as GenericSequence from collections.abc import Sequence as GenericSequence
...@@ -10,6 +9,7 @@ from typing import Callable, Final, Optional, Union ...@@ -10,6 +9,7 @@ from typing import Callable, Final, Optional, Union
import jinja2 import jinja2
import partial_json_parser import partial_json_parser
import regex as re
from fastapi import Request from fastapi import Request
from pydantic import TypeAdapter from pydantic import TypeAdapter
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import re
from collections.abc import Sequence from collections.abc import Sequence
from typing import Union from typing import Union
import regex as re
from vllm.entrypoints.openai.protocol import (ChatCompletionRequest, from vllm.entrypoints.openai.protocol import (ChatCompletionRequest,
DeltaFunctionCall, DeltaMessage, DeltaFunctionCall, DeltaMessage,
DeltaToolCall, DeltaToolCall,
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from json import JSONDecoder from json import JSONDecoder
from typing import Union from typing import Union
import partial_json_parser import partial_json_parser
import regex as re
from partial_json_parser.core.options import Allow from partial_json_parser.core.options import Allow
from vllm.entrypoints.chat_utils import random_tool_call_id from vllm.entrypoints.chat_utils import random_tool_call_id
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from typing import Union from typing import Union
import partial_json_parser import partial_json_parser
import regex as re
from partial_json_parser.core.options import Allow from partial_json_parser.core.options import Allow
from vllm.entrypoints.chat_utils import random_tool_call_id from vllm.entrypoints.chat_utils import random_tool_call_id
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from typing import Union from typing import Union
import partial_json_parser import partial_json_parser
import regex as re
from partial_json_parser.core.options import Allow from partial_json_parser.core.options import Allow
from vllm.entrypoints.chat_utils import random_tool_call_id from vllm.entrypoints.chat_utils import random_tool_call_id
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from json import JSONDecoder from json import JSONDecoder
from typing import Union from typing import Union
import partial_json_parser import partial_json_parser
import regex as re
from partial_json_parser.core.options import Allow from partial_json_parser.core.options import Allow
from transformers import PreTrainedTokenizerBase from transformers import PreTrainedTokenizerBase
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from random import choices from random import choices
from string import ascii_letters, digits from string import ascii_letters, digits
from typing import Union from typing import Union
import partial_json_parser import partial_json_parser
import regex as re
from partial_json_parser.core.options import Allow from partial_json_parser.core.options import Allow
from pydantic import Field from pydantic import Field
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from typing import Any, Optional from typing import Any, Optional
import regex as re
from transformers import PreTrainedTokenizerBase from transformers import PreTrainedTokenizerBase
from vllm.entrypoints.chat_utils import random_tool_call_id from vllm.entrypoints.chat_utils import random_tool_call_id
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
import ast import ast
import json import json
import re
from collections.abc import Sequence from collections.abc import Sequence
from typing import Any, Union from typing import Any, Union
import regex as re
from transformers import PreTrainedTokenizerBase from transformers import PreTrainedTokenizerBase
from vllm.entrypoints.openai.protocol import (ChatCompletionRequest, from vllm.entrypoints.openai.protocol import (ChatCompletionRequest,
......
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
import copy import copy
import math import math
import os import os
import re
from collections.abc import Sequence from collections.abc import Sequence
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Any, Callable, Optional, Union from typing import Any, Callable, Optional, Union
import regex as re
import safetensors.torch import safetensors.torch
import torch import torch
from torch import nn from torch import nn
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import os import os
import re
from typing import Optional, Union from typing import Optional, Union
import huggingface_hub import huggingface_hub
import regex as re
from huggingface_hub.utils import (EntryNotFoundError, HfHubHTTPError, from huggingface_hub.utils import (EntryNotFoundError, HfHubHTTPError,
HFValidationError, RepositoryNotFoundError) HFValidationError, RepositoryNotFoundError)
from torch import nn from torch import nn
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import re import regex as re
def has_xgrammar_unsupported_json_features(schema: dict) -> bool: def has_xgrammar_unsupported_json_features(schema: dict) -> bool:
......
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
from __future__ import annotations from __future__ import annotations
import json import json
import re
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
import regex as re
import torch import torch
import vllm.envs import vllm.envs
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import re
from collections.abc import Iterable, Mapping from collections.abc import Iterable, Mapping
from types import MappingProxyType from types import MappingProxyType
from typing import Optional from typing import Optional
import regex as re
from compressed_tensors import CompressionFormat from compressed_tensors import CompressionFormat
from torch.nn import Module from torch.nn import Module
......
...@@ -228,7 +228,7 @@ class ModelOptNvFp4Config(QuantizationConfig): ...@@ -228,7 +228,7 @@ class ModelOptNvFp4Config(QuantizationConfig):
exclude_modules, group_size) exclude_modules, group_size)
def is_layer_excluded(self, prefix: str, exclude_modules: list): def is_layer_excluded(self, prefix: str, exclude_modules: list):
import re import regex as re
for pattern in exclude_modules: for pattern in exclude_modules:
regex_str = pattern.replace('.', r'\.').replace('*', r'.*') regex_str = pattern.replace('.', r'\.').replace('*', r'.*')
if re.fullmatch(regex_str, prefix): if re.fullmatch(regex_str, prefix):
......
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import re
from collections.abc import Iterable, Mapping from collections.abc import Iterable, Mapping
from types import MappingProxyType from types import MappingProxyType
from typing import Any, Optional from typing import Any, Optional
import regex as re
def deep_compare(dict1: Any, dict2: Any) -> bool: def deep_compare(dict1: Any, dict2: Any) -> bool:
if type(dict1) is not type(dict2): if type(dict1) is not type(dict2):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment