SGLang 中的 Transformers 后备方案#
sglang 可以回退到使用 transformers 中可用的模型。这适用于大多数解码器风格的语言模型,对视觉-语言模型的支持即将推出!
示例启动命令#
默认情况下,如果可用,我们将使用 sglang 实现。否则,我们将回退到 transformers 实现。但是,您可以通过将 --model-impl 设置为 transformers 来切换实现。
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.2-1B-Instruct \
--host 0.0.0.0 \
--port 30000 \
--model-impl transformers
支持的功能#
量化#
Transformers 后备方案已支持 SGLang 中大多数可用的量化方法(除 GGUF 外)。有关 SGLang 中支持的量化方法的更多信息,请参阅量化页面。
远程代码#
这种后备方案还意味着,任何可以在 transformers 中通过 trust_remote_code=True 使用并正确实现了 attention 机制的中心模型都可以投入生产使用!
模型只需要以下两个条件:
from transformers import PreTrainedModel
from torch import nn
class MyAttention(nn.Module):
def forward(self, hidden_states, **kwargs): # <- kwargs 是必需的
...
attention_interface = ALL_ATTENTION_FUNCTIONS[self.config._attn_implementation]
attn_output, attn_weights = attention_interface(
self,
query_states,
key_states,
value_states,
**kwargs,
)
...
class MyModel(PreTrainedModel):
_supports_attention_backend = True
以下是后台发生的情况:
加载配置
从
auto_map中加载MyModelPython 类,并检查模型是否_supports_attention_backend。使用
TransformersModel后端。请参阅/srt/models/transformers,它利用self.config._attn_implementation = "sglang",因此需要使用ALL_ATTENTION_FUNCTIONS。
就是这么简单!