SGLang의 Transformers 폴백

SGLang의 Transformers 폴백 (Transformers Fallback in SGLang)

이 페이지는 sglangtransformers에서 사용 가능한 모델로 폴백하는 기능을 설명해요. 대부분의 디코더 스타일 언어 모델에서 동작하며, 비전-언어 모델 지원은 곧 제공될 예정이에요.

출처: 문서

본문

sglangtransformers에서 사용 가능한 모델로 폴백할 수 있어요. 이는 대부분의 디코더 스타일 언어 모델에서 동작하며 비전-언어 모델 지원은 곧 제공될 예정이에요!

예시 실행 명령 (Example launch Command)

기본적으로 사용 가능하면 sglang 구현을 사용해요. 그렇지 않으면 transformers 구현으로 폴백해요. 하지만 --model-impltransformers로 설정해 구현을 전환할 수 있어요.

python3 -m sglang.launch_server \
  --model-path meta-llama/Llama-3.2-1B-Instruct \
  --host 0.0.0.0 \
  --port 30000 \
  --model-impl transformers

지원 기능 (Supported features)

양자화 (Quantization)

Transformers 폴백은 SGLang에서 사용 가능한 대부분의 양자화를 지원해요(GGUF 제외). SGLang에서 지원되는 양자화에 대한 자세한 내용은 Quantization page를 참고해 주세요.

원격 코드 (Remote code)

이 폴백은 또한 허브에서 transformerstrust_remote_code=True와 함께 사용할 수 있고 어텐션을 올바르게 구현한 모든 모델을 프로덕션에서 사용할 수 있게 해줘요!

모델은 다음 두 가지만 있으면 돼요:

from transformers import PreTrainedModel
from torch import nn

class MyAttention(nn.Module):

  def forward(self, hidden_states, **kwargs): # <- kwargs are required

    ...
    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. 구성(config)이 로드돼요
  2. auto_map에서 MyModel Python 클래스가 로드되고, 모델 _supports_attention_backend를 확인해요.
  3. TransformersModel 백엔드가 사용돼요. /srt/models/transformers를 참고하세요. self.config._attn_implementation = "sglang"을 활용하므로 ALL_ATTENTION_FUNCTIONS 사용이 필요해요.

그게 전부예요!

더 알아보기