Unbreak optimum-executorch (#38646)
* Unbreak optimum-executorch * use static cache if has layer_types but no sliding_window * revert view on kv_arange --------- Co-authored-by: Guang Yang <guangyang@fb.com>
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
import copy
|
||||
import unittest
|
||||
|
||||
from packaging import version
|
||||
from parameterized import parameterized
|
||||
|
||||
from transformers import set_seed
|
||||
@@ -680,15 +681,27 @@ class CacheExportIntegrationTest(unittest.TestCase):
|
||||
self.assertEqual(n_static_key_caches, model.config.num_hidden_layers)
|
||||
self.assertEqual(n_static_value_caches, model.config.num_hidden_layers)
|
||||
|
||||
# Export with dynamic shapes using Dim.AUTO
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
||||
input_ids = tokenizer("Here's everything I know", return_tensors="pt").input_ids
|
||||
dynamic_shapes = {"input_ids": {1: torch.export.Dim.AUTO}, "cache_position": None}
|
||||
# Export with dynamic shapes
|
||||
input_ids = torch.zeros((1, 3), dtype=torch.long)
|
||||
cache_position = torch.tensor([0, 1, 2], dtype=torch.long)
|
||||
dynamic_shapes = {"input_ids": {1: torch.export.Dim.DYNAMIC}, "cache_position": {0: torch.export.Dim.DYNAMIC}}
|
||||
strict = version.parse(torch.__version__) != version.parse("2.7.0")
|
||||
exported_program = convert_and_export_with_cache(
|
||||
model,
|
||||
example_input_ids=input_ids,
|
||||
example_cache_position=cache_position,
|
||||
dynamic_shapes=dynamic_shapes,
|
||||
strict=False,
|
||||
strict=strict,
|
||||
)
|
||||
|
||||
from transformers.integrations.executorch import TorchExportableModuleForDecoderOnlyLM
|
||||
|
||||
exportable_module = TorchExportableModuleForDecoderOnlyLM(model)
|
||||
exported_program = exportable_module.export(
|
||||
input_ids=input_ids,
|
||||
cache_position=cache_position,
|
||||
dynamic_shapes=dynamic_shapes,
|
||||
strict=strict,
|
||||
)
|
||||
|
||||
def test_hybrid_cache_exportability(self):
|
||||
@@ -727,13 +740,15 @@ class CacheExportIntegrationTest(unittest.TestCase):
|
||||
self.assertEqual(n_g_value_caches, model.config.num_hidden_layers)
|
||||
|
||||
# Export with dynamic shapes using Dim.AUTO
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
||||
input_ids = tokenizer("Here's everything I know", return_tensors="pt").input_ids
|
||||
dynamic_shapes = {"input_ids": {1: torch.export.Dim.AUTO}, "cache_position": None}
|
||||
input_ids = torch.zeros((1, 3), dtype=torch.long)
|
||||
cache_position = torch.tensor([0, 1, 2], dtype=torch.long)
|
||||
dynamic_shapes = {"input_ids": {1: torch.export.Dim.DYNAMIC}, "cache_position": {0: torch.export.Dim.DYNAMIC}}
|
||||
strict = version.parse(torch.__version__) != version.parse("2.7.0")
|
||||
exported_program = exportable_module.export(
|
||||
input_ids=input_ids,
|
||||
cache_position=cache_position,
|
||||
dynamic_shapes=dynamic_shapes,
|
||||
strict=False,
|
||||
strict=strict,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user