reflex-1 / example.py
Glitchfix's picture
Publish the current Reflex-1 checkpoint and matching evaluation
1fe108b verified
Raw History Blame Contribute Delete
1.66 kB
"""Download Reflex-1 and exercise single-request and batch inference."""
import argparse
import json
from dataclasses import asdict
import torch
from transformers import AutoModel
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--model", default="gai-labs/reflex-1")
parser.add_argument("--revision", help="Explicit Hub checkpoint branch, tag or commit")
parser.add_argument("--local-files-only", action="store_true")
args = parser.parse_args()
torch.set_num_threads(1)
model = AutoModel.from_pretrained(args.model, trust_remote_code=True,
revision=args.revision, local_files_only=args.local_files_only)
requests = [
{"state": "The lamp is red.", "question": "Which color is the lamp?",
"options": ["red", "blue", "green"]},
{"state": "The customer was charged twice for one card payment.",
"question": "Choose the matching issue.",
"options": ["duplicate charge", "lost card", "unknown fee", "cash withdrawal"]},
]
single = model.predict(requests[0])[0]
batch = model.predict_batch(requests)
assert single.choice == "red"
assert [decisions[0].choice for decisions in batch] == ["red", "duplicate charge"]
torch.testing.assert_close(torch.tensor(single.probabilities),
torch.tensor(batch[0][0].probabilities), atol=2e-5, rtol=1e-4)
print(json.dumps({"passed": True, "revision": getattr(model.config, "_commit_hash", None),
"decisions": [asdict(row[0]) for row in batch]}, indent=2))
if __name__ == "__main__":
main()