Transformers documentation

ExecuTorch

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ExecuTorch

ExecuTorch는 웨어러블, 임베디드 장치, 마이크로컨트롤러를 포함한 모바일 및 엣지 디바이스에서 온디바이스 추론 기능을 활성화하기 위한 엔드투엔드 솔루션입니다. PyTorch 생태계의 일부이며, 휴대성, 생산성, 성능에 초점을 맞춰 PyTorch 모델의 배포를 지원합니다.

ExecuTorch는 백엔드 위임, 사용자 정의 컴파일러 변환, 메모리 계획 등 모델, 장치 및/또는 사용 사례에 특화된 최적화를 수행하기 위한 명확하게 정의된 진입점을 제공합니다. ExecuTorch를 사용하여 엣지 장치에서 PyTorch 모델을 실행하기 위한 준비 과정의 첫 단계는 모델을 내보내는 것입니다. 이는 torch.export라는 PyTorch API를 사용하여 수행됩니다.

ExecuTorch 통합

🤗 Transformers를 torch.export를 사용하여 내보낼 수 있도록 통합 지점이 개발되고 있습니다. 이 통합의 목표는 내보내기를 활성화하는 것뿐만 아니라, 내보낸 산출물이 ExecuTorch에서 효율적으로 실행되도록 추가로 낮추고 최적화할 수 있도록 보장하는 것입니다. 특히 모바일 및 엣지 사용 사례에 중점을 둡니다.

class transformers.TorchExportableModuleWithStaticCache

< >

( model: PreTrainedModelbatch_size: int | None = Nonemax_cache_len: int | None = Nonedevice: typing.Optional[torch.device] = None )

PreTrainedModel을 torch.export로 내보낼 수 있도록 설계된 레시피 모듈입니다. 특히 decoder-only LM을 StaticCache로 내보내는 용도로 사용되며, 이 모듈은 내보낸 모델이 ExecuTorch에서 추가적인 lowering 및 실행과 호환되도록 보장합니다.

Note: 이 클래스는 torch.export를 사용하여 내보내기 프로세스를 지원하도록 특별히 설계되었으며, 모델이 ExecuTorch에서 추가로 낮춰지고 효율적으로 실행될 수 있도록 보장합니다.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor

매개변수

  • input_ids (torch.Tensor) — 모듈의 현재 입력 토큰 id를 나타내는 텐서.
  • inputs_embeds (torch.Tensor) — 모듈의 현재 입력 임베딩을 나타내는 텐서.
  • cache_position (torch.Tensor) — 캐시에서 현재 입력 위치를 나타내는 텐서.

반환값

torch.Tensor

모델에서 출력된 Logits.

ExecuTorch 런타임과 호환되는 모듈의 Forward pass입니다.

이 forward 어댑터는 두 가지 주요 목적을 수행합니다:

  1. 모델을 torch.export와 호환되게 만들기: 어댑터는 Cache와 같이 지원되지 않는 객체를 그래프 입력 및 출력에서 숨겨, torch.export를 사용하여 모델을 내보내는 과정에서 문제가 발생하지 않도록 합니다.

  2. ExecuTorch 런타임과의 호환성 보장: 어댑터는 executorch/extension/llm/runner의 시그니처와 모델의 forward 시그니처가 일치하도록 하여, 내보낸 모델이 ExecuTorch에서 바로 실행될 수 있도록 보장합니다.

transformers.convert_and_export_with_cache

< >

( model: PreTrainedModelexample_input_ids: typing.Optional[torch.Tensor] = Noneexample_cache_position: typing.Optional[torch.Tensor] = Nonedynamic_shapes: dict | None = Nonestrict: bool | None = None ) → Exported program (torch.export.ExportedProgram)

매개변수

  • model (PreTrainedModel) — 내보낼 사전 학습된 모델입니다.
  • example_input_ids (Optional[torch.Tensor]) — torch.export에서 사용되는 예시 입력 토큰 id입니다.
  • example_cache_position (Optional[torch.Tensor]) — torch.export에서 사용하는 현재 캐시 위치의 예시입니다.
  • dynamic_shapes(Optional[dict]) — torch.export에서 사용되는 동적 형태입니다.
  • strict(Optional[bool]) — torch.export에 dynamo를 사용하도록 지시하는 플래그.

반환값

내보낸 프로그램(torch.export.ExportedProgram)

torch.export를 통해 생성된 내보내기된 프로그램입니다.

PreTrainedModel을 내보낼 수 있는 모듈로 변환하고 torch.export를 사용하여 내보내며, 내보낸 모델이 ExecuTorch와 호환되도록 합니다.

Update on GitHub