|
26 | 26 |
|
27 | 27 | from executorch.examples.models.llama2.llama_transformer import Transformer
|
28 | 28 | from executorch.exir.backend.backend_details import CompileSpec
|
| 29 | +from executorch.extension.pybindings.portable_lib import ( |
| 30 | + _load_for_executorch_from_buffer, |
| 31 | +) |
29 | 32 |
|
30 | 33 | from executorch.sdk.etrecord import generate_etrecord
|
31 | 34 | from executorch.util.activation_memory_profiler import generate_memory_trace
|
@@ -774,6 +777,33 @@ def _export_llama(modelname, args) -> str: # noqa: C901
|
774 | 777 | else:
|
775 | 778 | output_file = f"{builder.output_dir}/{modelname}.pte"
|
776 | 779 |
|
| 780 | + builder.export_program.dump_executorch_program(True) |
| 781 | + et_model = _load_for_executorch_from_buffer(builder.export_program.buffer) |
| 782 | + eager_model = builder.model |
| 783 | + input1 = torch.tensor([[0]], dtype=torch.long) |
| 784 | + input2 = torch.tensor([0], dtype=torch.long) |
| 785 | + if args.use_kv_cache: |
| 786 | + for i in range(0, 100): |
| 787 | + eager_res = eager_model(input1, input2) |
| 788 | + et_res = et_model((input1, input2)) |
| 789 | + assert len(et_res) == 1 |
| 790 | + print("eager res kv", i, eager_res) |
| 791 | + print("et res kv", i, et_res[0]) |
| 792 | + # assert torch.allclose(eager_res, et_res[0], atol=1e-05, rtol=1e-05) |
| 793 | + input1 = torch.tensor([[i + 1]], dtype=torch.long) |
| 794 | + input2 = torch.tensor([i + 1], dtype=torch.long) |
| 795 | + else: |
| 796 | + for i in range(0, 100): |
| 797 | + eager_res = eager_model(input1) |
| 798 | + et_res = et_model((input1,)) |
| 799 | + assert len(et_res) == 1 |
| 800 | + print("eager res", i, eager_res) |
| 801 | + print("et res", i, et_res[0]) |
| 802 | + # assert torch.allclose(eager_res, et_res[0], atol=1e-05, rtol=1e-05) |
| 803 | + input1 = torch.cat( |
| 804 | + [input1, torch.tensor([[i + 1]], dtype=torch.long)], dim=1 |
| 805 | + ) |
| 806 | + |
777 | 807 | builder.save_to_pte(output_file)
|
778 | 808 |
|
779 | 809 | return output_file
|
0 commit comments