2025-02-02 14:58:18 -05:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
2025-06-03 11:20:17 -07:00
|
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
2025-02-02 14:58:18 -05:00
|
|
|
|
2024-09-29 14:59:45 +08:00
|
|
|
# Adapted from
|
|
|
|
|
# https://github.com/modelscope/ms-swift/blob/v2.4.2/swift/utils/module_mapping.py
|
|
|
|
|
|
|
|
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
2026-01-20 01:34:59 +08:00
|
|
|
class MultiModelKeys:
|
2025-05-15 06:06:50 +01:00
|
|
|
language_model: list[str] = field(default_factory=list)
|
|
|
|
|
connector: list[str] = field(default_factory=list)
|
2024-09-29 14:59:45 +08:00
|
|
|
# vision tower and audio tower
|
2025-05-15 06:06:50 +01:00
|
|
|
tower_model: list[str] = field(default_factory=list)
|
|
|
|
|
generator: list[str] = field(default_factory=list)
|
2024-09-29 14:59:45 +08:00
|
|
|
|
|
|
|
|
@staticmethod
|
2025-05-15 06:06:50 +01:00
|
|
|
def from_string_field(
|
|
|
|
|
language_model: str | list[str] = None,
|
|
|
|
|
connector: str | list[str] = None,
|
|
|
|
|
tower_model: str | list[str] = None,
|
|
|
|
|
generator: str | list[str] = None,
|
2024-09-29 14:59:45 +08:00
|
|
|
**kwargs,
|
|
|
|
|
) -> "MultiModelKeys":
|
|
|
|
|
def to_list(value):
|
|
|
|
|
if value is None:
|
|
|
|
|
return []
|
|
|
|
|
return [value] if isinstance(value, str) else list(value)
|
|
|
|
|
|
|
|
|
|
return MultiModelKeys(
|
|
|
|
|
language_model=to_list(language_model),
|
|
|
|
|
connector=to_list(connector),
|
|
|
|
|
tower_model=to_list(tower_model),
|
|
|
|
|
generator=to_list(generator),
|
|
|
|
|
**kwargs,
|
|
|
|
|
)
|