| 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") |
|
|