mirror of
https://github.com/open-compass/opencompass.git
synced 2025-05-30 16:03:24 +08:00
122 lines
4.0 KiB
Python
122 lines
4.0 KiB
Python
from opencompass.datasets.evalplus.provider.base import DecoderBase
|
|
|
|
|
|
def make_model(
|
|
model: str,
|
|
backend: str,
|
|
dataset: str,
|
|
batch_size: int = 1,
|
|
temperature: float = 0.0,
|
|
force_base_prompt: bool = False,
|
|
# instruction model only
|
|
instruction_prefix=None,
|
|
response_prefix=None,
|
|
# non-server only
|
|
dtype="bfloat16",
|
|
trust_remote_code=False,
|
|
# vllm only
|
|
tp=1,
|
|
enable_prefix_caching=False,
|
|
enable_chunked_prefill=False,
|
|
# openai only
|
|
base_url=None,
|
|
# hf only
|
|
attn_implementation="eager",
|
|
device_map=None,
|
|
# gptqmodel only
|
|
gptqmodel_backend: str = 'auto',
|
|
gguf_file: str = None,
|
|
) -> DecoderBase:
|
|
if backend == "vllm":
|
|
from evalplus.provider.vllm import VllmDecoder
|
|
|
|
return VllmDecoder(
|
|
name=model,
|
|
batch_size=batch_size,
|
|
temperature=temperature,
|
|
dataset=dataset,
|
|
force_base_prompt=force_base_prompt,
|
|
tensor_parallel_size=tp,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
trust_remote_code=trust_remote_code,
|
|
enable_prefix_caching=enable_prefix_caching,
|
|
enable_chunked_prefill=enable_chunked_prefill,
|
|
dtype=dtype,
|
|
gguf_file=gguf_file
|
|
)
|
|
elif backend == "hf":
|
|
from evalplus.provider.hf import HuggingFaceDecoder
|
|
|
|
return HuggingFaceDecoder(
|
|
name=model,
|
|
batch_size=batch_size,
|
|
temperature=temperature,
|
|
dataset=dataset,
|
|
force_base_prompt=force_base_prompt,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
attn_implementation=attn_implementation,
|
|
device_map=device_map,
|
|
trust_remote_code=trust_remote_code,
|
|
dtype=dtype,
|
|
gguf_file=gguf_file,
|
|
)
|
|
elif backend == "openai":
|
|
from evalplus.provider.openai import OpenAIChatDecoder
|
|
|
|
assert not force_base_prompt, f"{backend} backend does not serve base model"
|
|
return OpenAIChatDecoder(
|
|
name=model,
|
|
batch_size=batch_size,
|
|
temperature=temperature,
|
|
base_url=base_url,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
)
|
|
elif backend == "anthropic":
|
|
from evalplus.provider.anthropic import AnthropicDecoder
|
|
|
|
assert not force_base_prompt, f"{backend} backend does not serve base model"
|
|
return AnthropicDecoder(
|
|
name=model,
|
|
batch_size=batch_size,
|
|
temperature=temperature,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
)
|
|
elif backend == "google":
|
|
from evalplus.provider.google import GeminiDecoder
|
|
|
|
assert not force_base_prompt, f"{backend} backend does not serve base model"
|
|
return GeminiDecoder(
|
|
name=model,
|
|
batch_size=batch_size,
|
|
temperature=temperature,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
)
|
|
elif backend == "bedrock":
|
|
from evalplus.provider.bedrock import BedrockDecoder
|
|
|
|
assert not force_base_prompt, f"{backend} backend does not serve base model"
|
|
return BedrockDecoder(
|
|
name=model,
|
|
batch_size=batch_size,
|
|
temperature=temperature,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
)
|
|
elif backend == "gptqmodel":
|
|
from evalplus.provider.gptqmodel import GPTQModelDecoder
|
|
|
|
return GPTQModelDecoder(
|
|
name=model,
|
|
dataset=dataset,
|
|
force_base_prompt=force_base_prompt,
|
|
instruction_prefix=instruction_prefix,
|
|
response_prefix=response_prefix,
|
|
trust_remote_code=trust_remote_code,
|
|
gptqmodel_backend=gptqmodel_backend,
|
|
)
|