Fix processor config loading for object-storage model paths (#31211)
Co-authored-by: Alex Nails <alex.nails@radixark.ai>
This commit is contained in:
co-authored by
Alex Nails
parent
980acd6eca
commit
dec0836302
@@ -153,6 +153,8 @@ def get_processor(
|
||||
|
||||
revision = kwargs.pop("revision", tokenizer_revision)
|
||||
tokenizer_name = resolve_runai_obj_uri(tokenizer_name)
|
||||
if model_name is not None:
|
||||
model_name = resolve_runai_obj_uri(model_name)
|
||||
|
||||
if is_mistral_model(tokenizer_name):
|
||||
config = load_mistral_config(
|
||||
|
||||
@@ -8,11 +8,12 @@ import inspect
|
||||
import tempfile
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from transformers import PretrainedConfig
|
||||
from transformers.image_processing_utils import BaseImageProcessor
|
||||
|
||||
import sglang.srt.utils.hf_transformers.processor as processor_utils
|
||||
from sglang.srt.utils import hf_transformers_patches
|
||||
from sglang.srt.utils.hf_transformers.common import (
|
||||
_is_deepseek_ocr2_model,
|
||||
@@ -31,6 +32,45 @@ from sglang.test.ci.ci_register import register_cpu_ci
|
||||
register_cpu_ci(est_time=6, suite="base-a-test-cpu")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# get_processor
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestGetProcessor(unittest.TestCase):
|
||||
def test_resolves_model_name_before_loading_config(self):
|
||||
remote_model = "s3://bucket/model"
|
||||
local_model = "/cache/model"
|
||||
config = SimpleNamespace(model_type="clip", auto_map={})
|
||||
loaded_processor = MagicMock()
|
||||
loaded_processor.tokenizer.chat_template = "template"
|
||||
auto_config = MagicMock()
|
||||
auto_config.from_pretrained.return_value = config
|
||||
auto_processor = MagicMock()
|
||||
auto_processor.from_pretrained.return_value = loaded_processor
|
||||
|
||||
def resolve_uri(path):
|
||||
return local_model if path == remote_model else path
|
||||
|
||||
with patch.multiple(
|
||||
processor_utils,
|
||||
resolve_runai_obj_uri=MagicMock(side_effect=resolve_uri),
|
||||
AutoConfig=auto_config,
|
||||
AutoProcessor=auto_processor,
|
||||
):
|
||||
processor = processor_utils.get_processor(
|
||||
"local-tokenizer",
|
||||
model_name=remote_model,
|
||||
)
|
||||
|
||||
self.assertIs(processor, loaded_processor)
|
||||
auto_config.from_pretrained.assert_called_once_with(
|
||||
local_model,
|
||||
trust_remote_code=False,
|
||||
revision=None,
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# _patch_image_processor_kwargs
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user