Udostępnij przez


Konfigurowanie testu obciążeniowego dla punktów końcowych wyszukiwania wektorów

Ta strona zawiera przykładowy notes do testowania obciążenia i obejmuje wymagania dotyczące konfiguracji, uwierzytelniania, konfiguracji klastra i instrukcje krok po kroku dotyczące uruchamiania testów obciążeniowych w celu zoptymalizowania wydajności punktu końcowego wyszukiwania wektorowego.

Aby uzyskać więcej informacji na temat testowania obciążenia i powiązanych pojęć, zobacz Testowanie obciążenia pod kątem obsługi punktów końcowych.

Wymagania

Pobierz i zaimportuj kopię następujących plików oraz przykładowy notes do obszaru roboczego usługi Azure Databricks:

  • input.json. Ten plik określa ładunek, który jest wysyłany przez wszystkie współbieżne połączenia z punktem końcowym. Jeśli testujesz punkt końcowy, który jest wrażliwy na rozmiar ładunku, sprawdź, czy ładunek wejściowy odzwierciedla oczekiwany sposób użycia punktu końcowego. Zobacz Testowanie ładunku.
  • fast_vs_load_test_async_load.py. Ten skrypt jest używany przez przykładowy notebook do weryfikacji tokenu uwierzytelniania i odczytu zawartości pliku input.json.

Notatnik testu obciążeniowego Locust

Pobierz laptopa

Aby uzyskać najlepszą wydajność, wybierz dużą ilość rdzeni i pamięci dla procesów roboczych w klastrze używanym do uruchamiania notatnika.

Szarańcza

Locust to platforma typu open source do testowania obciążenia, która jest często używana do oceny punktów końcowych klasy produkcyjnej. Struktura Locust umożliwia modyfikowanie różnych parametrów, takich jak liczba połączeń klientów i szybkość tworzenia połączeń klientów, a jednocześnie pomiar wydajności punktu końcowego w całym teście. Locust jest używany dla całego przykładowego kodu, ponieważ standandalizuje i automatyzuje podejście.

Locust opiera się na zasobach procesora CPU do uruchamiania testów. W zależności od obciążenia, ułatwia to obsługę około 4000 żądań na sekundę na rdzeń CPU. W przykładowym notatniku flaga --processes -1 jest ustawiona tak, aby umożliwić Locust automatyczne wykrywanie liczby rdzeni CPU na sterowniku i pełne korzystanie z nich.

Jeśli działanie Locust ogranicza CPU, zostanie wyświetlony komunikat wyjściowy.

Konfigurowanie jednostki usługi

Zrób to poza przykładowym notesem.

Aby korzystać z punktu końcowego zoptymalizowanego pod kątem trasy, test locust musi być w stanie wygenerować tokeny OAuth z uprawnieniami do wykonywania zapytań dotyczących punktu końcowego. Wykonaj następujące kroki, aby skonfigurować uwierzytelnianie:

  1. Utwórz jednostkę usługi Databricks.
  2. Przejdź do strony internetowej punktu końcowego wyszukiwania wektorów. Kliknij Uprawnienia i nadaj podmiotowi usługi uprawnienia na poziomie Can Query.
  3. Utwórz zakres tajemnic Databricks nazwany, zawierający dwa klucze:
    1. Identyfikator jednostki usługi Databricks. Na przykład: service_principal_client_id .
    2. Wpis tajny klienta dla jednostki usługi Databricks. Na przykład: service_principal_client_secret.
  4. Umieść identyfikator klienta i klucz tajny jednostki usługi w sekrecie Databricks.

Konfigurowanie notesu

W poniższych sekcjach opisano sposób konfigurowania przykładowego notesu i pobranych plików pomocniczych.

Konfigurowanie zmiennych

W kopii przykładowego notesu skonfiguruj następujące parametry:

Parameter Opisy
endpoint_name Nazwa punktu końcowego wyszukiwania wektorów.
locust_run_time Jak długo należy uruchomić poszczególne testy obciążeniowe. Wiele testów obciążeniowych jest uruchamianych, więc czas trwania 5–10 minut jest dobrym ustawieniem domyślnym.
csv_output_prefix Narzędzie Locust w testach obciążeniowych generuje pliki CSV zawierające informacje i metryki. Ten ciąg definiuje prefiks, który jest dodawany do plików CSV.
secret_scope_name Nazwa zakresu sekretu Databricks, który zawiera informacje o głównej jednostce usługi.

Określanie ładunku

Określ swój ładunek w pliku input.json, obok przykładowego notebooku.

Aby sprawdzić poprawność wyników testu obciążeniowego, należy uwzględnić obciążenie, które powinno być wysyłane przez klientów Locust. Wybierz ładunek, który dokładnie reprezentuje typ ładunku, który ma być wysyłany w środowisku produkcyjnym. Na przykład, jeśli Twój model jest modelem wykrywania oszustw, który ocenia transakcje kart kredytowych w czasie rzeczywistym, na przykład jedną transakcję na żądanie, sprawdź, czy dane wejściowe reprezentują tylko jedną typową transakcję.

Testowanie ładunku

Przetestuj ładunek, kopiując i wklejając pełne input.json dane w oknie Zapytanie w punkcie końcowym wyszukiwania wektorów i upewniając się, że model odpowiada z żądanymi danymi wyjściowymi.

Aby otworzyć pole Zapytanie dla punktu końcowego:

  1. Na lewym pasku bocznym w obszarze roboczym usługi Azure Databricks wybierz pozycję Obsługa.
  2. Wybierz punkt końcowy, który ma być używany do testowania obciążenia.
  3. W prawym górnym rogu z menu rozwijanego Użyj wybierz pozycję Zapytanie.

Współbieżność punktu końcowego wymagana do osiągnięcia określonego percentyla opóźnienia jest skalowana liniowo z liczbą połączeń współbieżnych. Oznacza to, że można przetestować mały punkt końcowy i obliczyć potrzebny rozmiar punktu końcowego przed wykonaniem testu końcowego.

Uruchamianie testu obciążeniowego

Po skonfigurowaniu punktu końcowego, notesów i ładunku, możesz rozpocząć wykonywanie krok po kroku notatnika.
Notatnik uruchamia 30-sekundowy test obciążeniowy, aby potwierdzić, że punkt końcowy jest online i działa.

W przykładowym notebooku można uruchomić serię testów obciążeniowych przy użyciu różnych poziomów współbieżności po stronie klienta. Po zakończeniu serii testów obciążeniowych wyniki notatnika pokazują zawartość wszelkich niepowodzeń żądań lub wyjątków, a także wyświetla wykres przedstawiający percentyle opóźnienia w zależności od współbieżności klienta.

W notesie przedstawiono tabelę wyników i należy wybrać wiersz, który najlepiej odpowiada wymogom dotyczącym latencji, i wprowadzić żądaną wartość RPS aplikacji. Na podstawie podanych informacji notes zaleca, jak określić rozmiar punktu końcowego w celu osiągnięcia celów rpS i opóźnień.

Po zaktualizowaniu konfiguracji punktu końcowego w celu dopasowania do zaleceń notesu można uruchomić końcowy test obciążeniowy notesu, aby potwierdzić, że punkt końcowy spełnia zarówno wymagania dotyczące opóźnień, jak i rpS.