Skip to content

Removes duplicate outlines processors #6900

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions tests/entrypoints/openai/test_guided_processors.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@
# tests/test_guided_decoding directory.
import pytest
import torch
from outlines.processors import JSONLogitsProcessor, RegexLogitsProcessor
from transformers import AutoTokenizer

from vllm.entrypoints.openai.protocol import CompletionRequest
from vllm.model_executor.guided_decoding import (
get_guided_decoding_logits_processor)
from vllm.model_executor.guided_decoding.outlines_logits_processors import (
JSONLogitsProcessor, RegexLogitsProcessor)


def test_guided_logits_processors(sample_regex, sample_json_schema):
"""Basic unit test for RegexLogitsProcessor and JSONLogitsProcessor."""
tokenizer = AutoTokenizer.from_pretrained('HuggingFaceH4/zephyr-7b-beta')
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceH4/zephyr-7b-beta", )
regex_LP = RegexLogitsProcessor(sample_regex, tokenizer)
json_LP = JSONLogitsProcessor(sample_json_schema,
tokenizer,
Expand Down Expand Up @@ -41,10 +40,10 @@ def test_guided_logits_processors(sample_regex, sample_json_schema):
@pytest.mark.parametrize("backend", ["outlines", "lm-format-enforcer"])
async def test_guided_logits_processor_black_box(backend: str, sample_regex,
sample_json_schema):
tokenizer = AutoTokenizer.from_pretrained('HuggingFaceH4/zephyr-7b-beta')
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceH4/zephyr-7b-beta")
token_ids = tokenizer.encode(
f"Give an example IPv4 address with this regex: {sample_regex}")
regex_request = CompletionRequest(model='test',
regex_request = CompletionRequest(model="test",
prompt=token_ids,
guided_regex=sample_regex)
regex_lp = await get_guided_decoding_logits_processor(
Expand All @@ -59,7 +58,7 @@ async def test_guided_logits_processor_black_box(backend: str, sample_regex,
token_ids = tokenizer.encode(
f"Give an employee profile that fits this schema: {sample_json_schema}"
)
json_request = CompletionRequest(model='test',
json_request = CompletionRequest(model="test",
prompt=token_ids,
guided_json=sample_json_schema)
json_lp = await get_guided_decoding_logits_processor(
Expand Down
25 changes: 16 additions & 9 deletions vllm/model_executor/guided_decoding/outlines_decoding.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
from re import escape as regex_escape
from typing import Tuple, Union

from outlines.processors import (CFGLogitsProcessor, JSONLogitsProcessor,
RegexLogitsProcessor)
from pydantic import BaseModel
from transformers import PreTrainedTokenizerBase

from vllm.entrypoints.openai.protocol import (ChatCompletionRequest,
CompletionRequest)
from vllm.model_executor.guided_decoding.outlines_logits_processors import (
CFGLogitsProcessor, JSONLogitsProcessor, RegexLogitsProcessor)


class GuidedDecodingMode(Enum):
Expand Down Expand Up @@ -52,8 +52,8 @@ class GuidedDecodingMode(Enum):


async def get_outlines_guided_decoding_logits_processor(
request: Union[CompletionRequest,
ChatCompletionRequest], tokenizer: PreTrainedTokenizerBase
request: Union[CompletionRequest, ChatCompletionRequest],
tokenizer: PreTrainedTokenizerBase,
) -> Union[JSONLogitsProcessor, RegexLogitsProcessor, CFGLogitsProcessor,
None]:
"""
Expand All @@ -72,9 +72,14 @@ async def get_outlines_guided_decoding_logits_processor(
max_workers=2)
loop = asyncio.get_running_loop()

return await loop.run_in_executor(global_thread_pool,
_get_logits_processor, guide, tokenizer,
mode, request.guided_whitespace_pattern)
return await loop.run_in_executor(
global_thread_pool,
_get_logits_processor,
guide,
tokenizer,
mode,
request.guided_whitespace_pattern,
)


def _get_guide_and_mode(
Expand Down Expand Up @@ -110,8 +115,10 @@ def _get_guide_and_mode(


def _get_logits_processor(
guide: str, tokenizer: PreTrainedTokenizerBase, mode: GuidedDecodingMode,
whitespace_pattern: Union[str, None]
guide: str,
tokenizer: PreTrainedTokenizerBase,
mode: GuidedDecodingMode,
whitespace_pattern: Union[str, None],
) -> Union[JSONLogitsProcessor, RegexLogitsProcessor, CFGLogitsProcessor]:
if mode == GuidedDecodingMode.JSON:
return JSONLogitsProcessor(guide, tokenizer, whitespace_pattern)
Expand Down
195 changes: 0 additions & 195 deletions vllm/model_executor/guided_decoding/outlines_logits_processors.py

This file was deleted.

Loading