| from concurrent.futures import ThreadPoolExecutor, as_completed | |
| import json | |
| import os | |
| import time | |
| import numpy as np | |
| import requests | |
| import torch | |
| from clip_app_client import ClipAppClient | |
| test_image_url = "https://static.wixstatic.com/media/4d6b49_42b9435ce1104008b1b5f7a3c9bfcd69~mv2.jpg/v1/fill/w_454,h_333,fp_0.50_0.50,q_90/4d6b49_42b9435ce1104008b1b5f7a3c9bfcd69~mv2.jpg" | |
| english_text = ( | |
| "It was the best of times, it was the worst of times, it was the age " | |
| "of wisdom, it was the age of foolishness, it was the epoch of belief" | |
| ) | |
| app_client = ClipAppClient() | |
| preprocessed_image = app_client.preprocess_image(test_image_url) | |
| def _send_text_request(number): | |
| embeddings = app_client.text_to_embedding(english_text) | |
| return number, embeddings | |
| def _send_image_url_request(number): | |
| embeddings = app_client.image_url_to_embedding(test_image_url) | |
| return number, embeddings | |
| def _send_preprocessed_image_request(number): | |
| embeddings = app_client.preprocessed_image_to_embedding(preprocessed_image) | |
| return number, embeddings | |
| def process(numbers, send_func, max_workers=10): | |
| with ThreadPoolExecutor(max_workers=max_workers) as executor: | |
| futures = [executor.submit(send_func, number) for number in numbers] | |
| for future in as_completed(futures): | |
| n_result, result = future.result() | |
| print (f"{n_result} : {result.shape}") | |
| if __name__ == "__main__": | |
| n_calls = 300 | |
| # test text | |
| numbers = list(range(n_calls)) | |
| start_time = time.monotonic() | |
| process(numbers, _send_text_request) | |
| end_time = time.monotonic() | |
| total_time = end_time - start_time | |
| avg_time_ms = total_time / n_calls * 1000 | |
| calls_per_sec = n_calls / total_time | |
| print(f"Text...") | |
| print(f" Average time taken: {avg_time_ms:.2f} ms") | |
| print(f" Number of calls per second: {calls_per_sec:.2f}") | |
| # test image url | |
| numbers = list(range(n_calls)) | |
| start_time = time.monotonic() | |
| process(numbers, _send_image_url_request) | |
| end_time = time.monotonic() | |
| total_time = end_time - start_time | |
| avg_time_ms = total_time / n_calls * 1000 | |
| calls_per_sec = n_calls / total_time | |
| print(f"Image passing url...") | |
| print(f" Average time taken: {avg_time_ms:.2f} ms") | |
| print(f" Number of calls per second: {calls_per_sec:.2f}") | |
| # test image as vector | |
| numbers = list(range(n_calls)) | |
| start_time = time.monotonic() | |
| process(numbers, _send_preprocessed_image_request) | |
| end_time = time.monotonic() | |
| total_time = end_time - start_time | |
| avg_time_ms = total_time / n_calls * 1000 | |
| calls_per_sec = n_calls / total_time | |
| print(f"Preprocessed image...") | |
| print(f" Average time taken: {avg_time_ms:.2f} ms") | |
| print(f" Number of calls per second: {calls_per_sec:.2f}") | |
| # from concurrent.futures import ThreadPoolExecutor | |
| # import json | |
| # import os | |
| # import numpy as np | |
| # import requests | |
| # from concurrent.futures import ThreadPoolExecutor, as_completed | |
| # import time | |
| # import torch | |
| # # hack for debugging, set HTTP_ADDRESS to "http://127.0.0.1:8000/" | |
| # # os.environ["HTTP_ADDRESS"] = "http://192.168.7.79:8000" | |
| # test_image_url = "https://static.wixstatic.com/media/4d6b49_42b9435ce1104008b1b5f7a3c9bfcd69~mv2.jpg/v1/fill/w_454,h_333,fp_0.50_0.50,q_90/4d6b49_42b9435ce1104008b1b5f7a3c9bfcd69~mv2.jpg" | |
| # english_text = ( | |
| # "It was the best of times, it was the worst of times, it was the age " | |
| # "of wisdom, it was the age of foolishness, it was the epoch of belief" | |
| # ) | |
| # preprocessed_image = preprocess_image(test_image_url) | |
| # def _send_text_request(number): | |
| # embeddings = text_to_embedding(english_text) | |
| # return number, embeddings | |
| # def _send_image_url_request(number): | |
| # embeddings = image_url_to_embedding(test_image_url) | |
| # return number, embeddings | |
| # def _send_preprocessed_image_request(number): | |
| # embeddings = preprocessed_image_to_embedding(preprocessed_image) | |
| # return number, embeddings | |
| # def process(numbers, send_func, max_workers=10): | |
| # with ThreadPoolExecutor(max_workers=max_workers) as executor: | |
| # futures = [executor.submit(send_func, number) for number in numbers] | |
| # for future in as_completed(futures): | |
| # n_result, result = future.result() | |
| # result = json.loads(result) | |
| # print (f"{n_result} : {len(result[0])}") | |
| # # def process_text(numbers, max_workers=10): | |
| # # for n in numbers: | |
| # # n_result, result = send_text_request(n) | |
| # # result = json.loads(result) | |
| # # print (f"{n_result} : {len(result[0])}") | |
| # if __name__ == "__main__": | |
| # n_calls = 300 | |
| # # test text | |
| # # n_calls = 1 | |
| # numbers = list(range(n_calls)) | |
| # start_time = time.monotonic() | |
| # process(numbers, _send_text_request) | |
| # end_time = time.monotonic() | |
| # total_time = end_time - start_time | |
| # avg_time_ms = total_time / n_calls * 1000 | |
| # calls_per_sec = n_calls / total_time | |
| # print(f"Text...") | |
| # print(f" Average time taken: {avg_time_ms:.2f} ms") | |
| # print(f" Number of calls per second: {calls_per_sec:.2f}") | |
| # # test image url | |
| # # n_calls = 1 | |
| # numbers = list(range(n_calls)) | |
| # start_time = time.monotonic() | |
| # process(numbers, _send_image_url_request) | |
| # end_time = time.monotonic() | |
| # total_time = end_time - start_time | |
| # avg_time_ms = total_time / n_calls * 1000 | |
| # calls_per_sec = n_calls / total_time | |
| # print(f"Image passing url...") | |
| # print(f" Average time taken: {avg_time_ms:.2f} ms") | |
| # print(f" Number of calls per second: {calls_per_sec:.2f}") | |
| # # test image as vector | |
| # # n_calls = 1 | |
| # numbers = list(range(n_calls)) | |
| # start_time = time.monotonic() | |
| # process(numbers, _send_preprocessed_image_request) | |
| # end_time = time.monotonic() | |
| # total_time = end_time - start_time | |
| # avg_time_ms = total_time / n_calls * 1000 | |
| # calls_per_sec = n_calls / total_time | |
| # print(f"Preprocessed image...") | |
| # print(f" Average time taken: {avg_time_ms:.2f} ms") | |
| # print(f" Number of calls per second: {calls_per_sec:.2f}") | |