Skip to content

Commit f646371

Browse files
lucylqfacebook-github-bot
authored andcommitted
Add eval for eager et (#2856)
Summary: Pull Request resolved: #2856 Test Plan: Imported from GitHub, without a `Test Plan:` line. ``` python3 -m examples.models.llama2.eval_llama --pte stories_fp32.pte -t ../llama-models/stories/tokenizer.model ``` Results: ``` 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [2:21:53<00:00, 1702.63s/it] wikitext: {'word_perplexity,none': 10885.21588720899, 'word_perplexity_stderr,none': 'N/A', 'byte_perplexity,none': 6.144013580095854, 'byte_perplexity_stderr,none': 'N/A', 'bits_per_byte,none': 2.619181404847365, 'bits_per_byte_stderr,none': 'N/A', 'alias': 'wikitext'} ``` Reviewed By: Jack-Khuu Differential Revision: D55777043 Pulled By: lucylq fbshipit-source-id: d3d52bc5fd7674d69c2bf36a084974f3276d32a7
1 parent 3b4a9e8 commit f646371

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

examples/models/llama2/eval_llama_lib.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
from typing import Optional
1010

1111
import lm_eval
12-
1312
import torch
13+
1414
from lm_eval.api.model import LM
1515
from lm_eval.evaluator import evaluate
1616
from lm_eval.models.huggingface import HFLM as eval_wrapper
@@ -33,7 +33,7 @@ class GPTFastEvalWrapper(eval_wrapper):
3333
def __init__(
3434
self,
3535
model: nn.Module,
36-
tokenizer,
36+
tokenizer: SentencePieceProcessor,
3737
max_seq_length: Optional[int] = None,
3838
):
3939
super().__init__()
@@ -97,16 +97,18 @@ def __init__(
9797
max_seq_length: Optional[int] = None,
9898
):
9999
super().__init__(None, tokenizer, max_seq_length)
100-
self._model = model
100+
self._model = model # Expects model to be path to a .pte file
101101

102-
def _model_call(self, inps):
103-
# Given inps (tokens), return the logits from a single
104-
# forward call
102+
from executorch.extension.pybindings.portable_lib import _load_for_executorch
105103

106-
# Example:
107-
# inps: Tensor of shape (1, N)
108-
# logits: Tensor of shape (1, N, 32000)
109-
pass
104+
self._et_model = _load_for_executorch(self._model)
105+
106+
def _model_call(self, inps):
107+
# Given inps (tokens), return the logits from a single forward call
108+
# inps: Tensor of shape (1, max_seq_len - 1)
109+
# logits: Tensor of shape (1, max_seq_len - 1, 32000)
110+
result = self._et_model.forward((inps,))
111+
return result[0]
110112

111113

112114
class ETRunnerEvalWrapper(GPTFastEvalWrapper):
@@ -198,7 +200,9 @@ def gen_eval_wrapper(
198200
return ETEagerEvalWrapper(
199201
model=model,
200202
tokenizer=tokenizer,
201-
max_seq_length=args.max_seq_length,
203+
# Exported model takes at most (max_seq_length - 1) tokens.
204+
# Note that the eager model takes at most max_seq_length tokens.
205+
max_seq_length=args.max_seq_length - 1,
202206
)
203207

204208
# GPTFastEvalWrapper: Create a wrapper around a pre-exported model

0 commit comments

Comments
 (0)