Transformers documentation
ExecuTorch
ExecuTorch
ExecuTorch는 웨어러블, 임베디드 장치, 마이크로컨트롤러를 포함한 모바일 및 엣지 디바이스에서 온디바이스 추론 기능을 활성화하기 위한 엔드투엔드 솔루션입니다. PyTorch 생태계의 일부이며, 휴대성, 생산성, 성능에 초점을 맞춰 PyTorch 모델의 배포를 지원합니다.
ExecuTorch는 백엔드 위임, 사용자 정의 컴파일러 변환, 메모리 계획 등 모델, 장치 및/또는 사용 사례에 특화된 최적화를 수행하기 위한 명확하게 정의된 진입점을 제공합니다. ExecuTorch를 사용하여 엣지 장치에서 PyTorch 모델을 실행하기 위한 준비 과정의 첫 단계는 모델을 내보내는 것입니다. 이는 torch.export라는 PyTorch API를 사용하여 수행됩니다.
ExecuTorch 통합
🤗 Transformers를 torch.export를 사용하여 내보낼 수 있도록 통합 지점이 개발되고 있습니다. 이 통합의 목표는 내보내기를 활성화하는 것뿐만 아니라, 내보낸 산출물이 ExecuTorch에서 효율적으로 실행되도록 추가로 낮추고 최적화할 수 있도록 보장하는 것입니다. 특히 모바일 및 엣지 사용 사례에 중점을 둡니다.
class transformers.TorchExportableModuleWithStaticCache
< source >( 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
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor
ExecuTorch 런타임과 호환되는 모듈의 Forward pass입니다.
이 forward 어댑터는 두 가지 주요 목적을 수행합니다:
모델을
torch.export와 호환되게 만들기: 어댑터는Cache와 같이 지원되지 않는 객체를 그래프 입력 및 출력에서 숨겨,torch.export를 사용하여 모델을 내보내는 과정에서 문제가 발생하지 않도록 합니다.ExecuTorch런타임과의 호환성 보장: 어댑터는executorch/extension/llm/runner의 시그니처와 모델의 forward 시그니처가 일치하도록 하여, 내보낸 모델이ExecuTorch에서 바로 실행될 수 있도록 보장합니다.
transformers.convert_and_export_with_cache
< source >( 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와 호환되도록 합니다.