| import time | |
| from urllib.request import urlopen | |
| import timm | |
| import torch | |
| from PIL import Image | |
| model_name = "eva02_large_patch14_448.mim_m38m_ft_in22k_in1k" | |
| model = timm.create_model(model_name, pretrained=True).eval() | |
| data_config = timm.data.resolve_model_data_config(model) | |
| transforms = timm.data.create_transform(**data_config, is_training=False) | |
| img = Image.open( | |
| urlopen( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png" | |
| ) | |
| ) | |
| def run_benchmark(model, device, num_images=10): | |
| model = model.to(device) | |
| with torch.inference_mode(): | |
| start = time.perf_counter() | |
| for _ in range(num_images): | |
| input_tensor = transforms(img).unsqueeze(0).to(device) | |
| model(input_tensor) | |
| end = time.perf_counter() | |
| ms_per_image = (end - start) / num_images * 1000 | |
| fps = num_images / (end - start) | |
| print(f"PyTorch model on {device}: {ms_per_image:.3f} ms per image, FPS: {fps:.2f}") | |
| if __name__ == "__main__": | |
| run_benchmark(model, "cpu") | |
| run_benchmark(model, "cuda") | |