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 でのさらなるローワーおよび実行と互換性を持つことが保証されます。
注:
このクラスは、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 アダプターには、主に2つの目的があります。
モデルを
torch.exportに互換性のある状態にする: アダプターは、Cacheなどのサポートされていないオブジェクトをグラフの入力および出力から隠蔽することで、torch.exportを使用してモデルをエクスポートする際に問題が発生しないようにします。ExecuTorchランタイムとの互換性を確保する: アダプターは、モデルの forward シグネチャがexecutorch/extension/llm/runnerのものと一致することを確認し、エクスポートされたモデルが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 と互換性があることを確認してください。