SGLang 中的 Transformers 后备方案

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

以下是后台发生的情况:

  1. 加载配置

  2. auto_map 中加载 MyModel Python 类,并检查模型是否 _supports_attention_backend

  3. 使用 TransformersModel 后端。请参阅 /srt/models/transformers,它利用 self.config._attn_implementation = "sglang",因此需要使用 ALL_ATTENTION_FUNCTIONS

就是这么简单!