Transformers documentation
ExecuTorch
ExecuTorch
ExecuTorch là giải pháp đầu-cuối cho phép khả năng suy luận trên thiết bị trên các thiết bị di động và biên, bao gồm thiết bị đeo, thiết bị nhúng và vi điều khiển. Nó là một phần của hệ sinh thái PyTorch và hỗ trợ triển khai các mô hình PyTorch với trọng tâm vào khả năng di chuyển, năng suất và hiệu suất.
ExecuTorch giới thiệu các điểm vào được định nghĩa rõ ràng để thực hiện các tối ưu hóa cụ thể cho mô hình, thiết bị và/hoặc trường hợp sử dụng, chẳng hạn như ủy quyền cho backend, các phép biến đổi trình biên dịch do người dùng định nghĩa, lập kế hoạch bộ nhớ, và nhiều hơn nữa. Bước đầu tiên trong việc chuẩn bị một mô hình PyTorch để thực thi trên thiết bị biên bằng ExecuTorch là xuất mô hình. Điều này được thực hiện thông qua việc sử dụng một API của PyTorch có tên là torch.export.
Tích hợp ExecuTorch
Một điểm tích hợp đang được phát triển để đảm bảo rằng 🤗 Transformers có thể được xuất bằng torch.export. Mục tiêu của tích hợp này không chỉ là cho phép xuất mà còn đảm bảo rằng sản phẩm xuất ra có thể được hạ thấp và tối ưu hóa thêm để chạy hiệu quả trên ExecuTorch, đặc biệt là cho các trường hợp sử dụng trên thiết bị di động và biên.
class transformers.TorchExportableModuleWithStaticCache
< source >( model: PreTrainedModelbatch_size: int | None = Nonemax_cache_len: int | None = Nonedevice: typing.Optional[torch.device] = None )
Một module công thức được thiết kế để làm cho PreTrainedModel có thể xuất được bằng torch.export,
cụ thể là cho LM chỉ có decoder sang StaticCache. Module này đảm bảo rằng
mô hình đã xuất tương thích với việc hạ thấp và thực thi tiếp theo trong ExecuTorch.
Lưu ý:
Lớp này được thiết kế đặc biệt để hỗ trợ quy trình xuất sử dụng torch.export theo cách đảm bảo mô hình có thể được hạ thấp (lower) và chạy hiệu quả trong ExecuTorch.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor
Tham số
- input_ids (
torch.Tensor) — Tensor đại diện cho id token đầu vào hiện tại của module. - inputs_embeds (
torch.Tensor) — Tensor đại diện cho các embedding đầu vào hiện tại của module. - cache_position (
torch.Tensor) — Tensor đại diện cho vị trí đầu vào hiện tại trong bộ nhớ đệm.
Trả về
torch.Tensor
Đầu ra Logits từ mô hình.
Quá trình truyền thẳng của module, tương thích với runtime ExecuTorch.
Adapter phía trước này phục vụ hai mục đích chính:
Khiến mô hình tương thích với
torch.export: Adapter che giấu các đối tượng không được hỗ trợ, chẳng hạn nhưCache, khỏi các đầu vào và đầu ra của đồ thị, cho phép mô hình có thể được xuất bằngtorch.exportmà không gặp phải sự cố.Đảm bảo tương thích với runtime
ExecuTorch: Adapter khớp chữ ký forward của model với chữ ký trongexecutorch/extension/llm/runner, đảm bảo rằng model đã xuất có thể được thực thi trongExecuTorchngay lập tức.
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)
Tham số
- model (
PreTrainedModel) — Mô hình được huấn luyện trước cần xuất. - example_input_ids (
Optional[torch.Tensor]) — Id của token đầu vào mẫu được sử dụng bởitorch.export. - example_cache_position (
Optional[torch.Tensor]) — Ví trí cache hiện tại được sử dụng bởitorch.export. - dynamic_shapes(
Optional[dict]) — Các hình dạng động được sử dụng bởitorch.export. - strict(
Optional[bool]) — Cờ chỉ thị chotorch.exportsử dụngdynamo.
Trả về
Chương trình đã xuất (torch.export.ExportedProgram)
Chương trình xuất được tạo thông qua torch.export.
Chuyển đổi một PreTrainedModel thành một module có thể xuất và xuất nó bằng torch.export,
đảm bảo mô hình đã xuất tương thích với ExecuTorch.