Jednym z najpopularniejszych obecnie dostępnych modeli jest XGBoost. Dzięki możliwości rozwiązywania różnych problemów, takich jak klasyfikacja i regresja, XGBoost stał się popularną opcją, która również należy do kategorii modeli opartych na drzewach. W tym poście nurkujemy głęboko, aby zobaczyć, jak to zrobić Amazon Sage Maker może obsługiwać te modele za pomocą Serwer wnioskowania NVIDIA Triton. Obciążenia wnioskowania w czasie rzeczywistym mogą mieć różne poziomy wymagań i umowy dotyczące poziomu usług (SLA) pod względem opóźnień i przepustowości, i można je spełnić za pomocą punktów końcowych SageMaker działających w czasie rzeczywistym.
SageMaker zapewnia pojedyncze punkty końcowe modelu, które umożliwiają wdrożenie pojedynczego modelu uczenia maszynowego (ML) względem logicznego punktu końcowego. W przypadku innych przypadków użycia możesz zarządzać kosztami i wydajnością za pomocą wielomodelowe punkty końcowe, które umożliwiają określenie wielu modeli do hostowania za logicznym punktem końcowym. Niezależnie od wybranej opcji, punkty końcowe SageMaker zapewniają skalowalny mechanizm nawet dla najbardziej wymagających klientów korporacyjnych, zapewniając jednocześnie wartość w postaci mnóstwa funkcji, w tym warianty cieni, automatyczne skalowaniei natywna integracja z Amazon Cloud Watch (aby uzyskać więcej informacji, patrz Metryki CloudWatch dla wielomodelowych wdrożeń punktów końcowych).
Triton obsługuje różne backendy jako silniki wspierające uruchamianie i obsługę różnych modeli ML do wnioskowania. W przypadku każdego wdrożenia Triton kluczowe znaczenie ma wiedza, w jaki sposób zachowanie zaplecza wpływa na obciążenia robocze i czego można się spodziewać, aby odnieść sukces. W tym poście pomożemy Ci zrozumieć Zaplecze biblioteki wnioskowania o lasach (FIL)., który jest obsługiwany przez Triton w SageMaker, dzięki czemu możesz podejmować świadome decyzje dotyczące swoich obciążeń i uzyskać najlepszą możliwą wydajność i optymalizację kosztów.
Głębokie zanurzenie się w zapleczu FIL
Triton obsługuje Zaplecze FIL obsłużyć modele drzew, np XGBoost, LightGBM, nauka-scikit Losowy las, RAPIDS cuML Losowy lasi każdy inny model obsługiwany przez Treelit. Modele te od dawna są wykorzystywane do rozwiązywania problemów, takich jak klasyfikacja czy regresja. Chociaż tego typu modele tradycyjnie działają na procesorach, popularność tych modeli i wymagania wnioskowania doprowadziły do różnych technik zwiększania wydajności wnioskowania. Backend FIL wykorzystuje wiele z tych technik za pomocą konstrukcji cuML i jest zbudowany na C++ i podstawowej bibliotece CUDA w celu optymalizacji wydajności wnioskowania na akceleratorach GPU.
Zaplecze FIL wykorzystuje biblioteki cuML do wykorzystania rdzeni procesora lub karty graficznej w celu przyspieszenia uczenia się. Aby korzystać z tych procesorów, dane są przywoływane z pamięci hosta (na przykład tablic NumPy) lub macierzy GPU (uDF, Numba, cuPY lub dowolnej biblioteki obsługującej __cuda_array_interface__
) API. Po umieszczeniu danych w pamięci zaplecze FIL może uruchamiać przetwarzanie na wszystkich dostępnych rdzeniach procesora lub karty graficznej.
Wątki zaplecza FIL mogą komunikować się ze sobą bez korzystania z pamięci współdzielonej hosta, ale w przypadku obciążeń zespołowych należy wziąć pod uwagę pamięć hosta. Poniższy diagram przedstawia architekturę środowiska uruchomieniowego harmonogramu zespołowego, w której można precyzyjnie dostroić obszary pamięci, w tym adresowalną pamięć współdzieloną procesora, która jest używana do komunikacji między procesami między Tritonem (C++) a procesem Pythona (zaplecze Pythona) do wymiany tensory (wejście/wyjście) z backendem FIL.
Triton Inference Server zapewnia programistom konfigurowalne opcje w celu dostrojenia ich obciążeń i optymalizacji wydajności modelu. Konfiguracja dynamic_batching
umożliwia Tritonowi przechowywanie żądań po stronie klienta i grupowanie ich po stronie serwera w celu efektywnego wykorzystania obliczeń równoległych FIL do wnioskowania o całej partii. Opcja max_queue_delay_microseconds
oferuje bezpieczną kontrolę nad tym, jak długo Triton czeka na utworzenie partii.
Istnieje wiele innych specyficznych dla FIL dostępne opcje które wpływają na wydajność i zachowanie. Proponujemy zacząć od storage_type
. Podczas uruchamiania backendu na GPU, FIL tworzy nową strukturę pamięci/danych, która jest reprezentacją drzewa, dla którego FIL może wpływać na wydajność i rozmiar. Można to skonfigurować za pomocą parametru środowiska storage_type
, który ma opcje gęsty, rzadki i automatyczny. Wybranie gęstej opcji zużyje więcej pamięci GPU i nie zawsze skutkuje lepszą wydajnością, więc najlepiej to sprawdzić. W przeciwieństwie do tego opcja rzadka zużywa mniej pamięci GPU i może działać równie dobrze lub lepiej niż gęsta. Wybranie opcji auto spowoduje, że model będzie domyślnie gęsty, chyba że spowoduje to zużycie znacznie większej pamięci GPU niż w trybie rzadkim.
Jeśli chodzi o wydajność modelu, możesz rozważyć podkreślenie threads_per_tree
opcja. Jedną z rzeczy, których możesz przeoczyć w rzeczywistych scenariuszach, jest to threads_per_tree
może mieć większy wpływ na przepustowość niż jakikolwiek inny parametr. Ustawienie go na dowolną potęgę 2 od 1 do 32 jest uzasadnione. Trudno jest przewidzieć optymalną wartość tego parametru, ale gdy oczekuje się, że serwer będzie obsługiwał większe obciążenie lub przetwarzał większe partie, zwykle korzysta z większej wartości niż w przypadku przetwarzania kilku wierszy na raz.
Kolejnym parametrem, o którym należy pamiętać, jest algo
, który jest również dostępny, jeśli korzystasz z GPU. Ten parametr określa algorytm używany do przetwarzania żądań wnioskowania. Obsługiwane opcje to ALGO_AUTO
, NAIVE
, TREE_REORG
, BATCH_TREE_REORG
. Opcje te określają sposób organizacji węzłów w drzewie i mogą również powodować wzrost wydajności. The ALGO_AUTO
domyślnie opcja to NAIVE
do rzadkiego przechowywania i BATCH_TREE_REORG
do gęstego przechowywania.
Wreszcie, FIL jest dostarczany z objaśnieniem Shapley, które można aktywować za pomocą treeshap_output
parametr. Należy jednak pamiętać, że dane wyjściowe Shapley obniżają wydajność ze względu na rozmiar danych wyjściowych.
Format modelu
Obecnie nie ma standardowego formatu plików do przechowywania modeli opartych na lasach; każdy framework ma tendencję do definiowania własnego formatu. W celu obsługi wielu formatów plików wejściowych, FIL importuje dane za pomocą open-source Treelit biblioteka. Dzięki temu FIL może obsługiwać modele przeszkolone w popularnych frameworkach, takich jak XGBoost i LekkiGBM. Pamiętaj, że format dostarczanego modelu musi być ustawiony w pliku model_type
wartość konfiguracyjna określona w pliku config.pbtxt
plik.
Konfiguracja.pbtxt
Każdy model w repozytorium modeli musi zawierać konfigurację modelu, która zawiera wymagane i opcjonalne informacje o modelu. Zazwyczaj ta konfiguracja jest dostarczana w pliku a config.pbtxt
plik określony jako Protobuf ModelConfig. Aby dowiedzieć się więcej o ustawieniach konfiguracji, patrz Konfiguracja modelu. Oto niektóre parametry konfiguracyjne modelu:
- maksymalna_wielkość_wsadu – Określa maksymalną wielkość partii, która może zostać przekazana do tego modelu. Ogólnie rzecz biorąc, jedynym ograniczeniem rozmiaru partii przekazywanych do zaplecza FIL jest dostępna pamięć do ich przetwarzania. W przypadku uruchamiania GPU dostępna pamięć jest określana na podstawie wielkości puli pamięci CUDA Tritona, którą można ustawić za pomocą argumentu wiersza poleceń podczas uruchamiania serwera.
- wkład – Opcje w tej sekcji informują Tritona o liczbie funkcji, jakich można oczekiwać dla każdej próbki wejściowej.
- wydajność – Opcje w tej sekcji mówią Tritonowi ile wartości wyjściowych będzie dla każdej próbki. jeśli
predict_proba
opcja jest ustawiona na true, wówczas dla każdej klasy zostanie zwrócona wartość prawdopodobieństwa. W przeciwnym razie zwrócona zostanie pojedyncza wartość wskazująca klasę przewidywaną dla danej próbki. - grupa_instancji – To określa, ile wystąpień tego modelu zostanie utworzonych i czy będą one korzystać z GPU czy CPU.
- typ modelu – Ten ciąg wskazuje, w jakim formacie znajduje się model (
xgboost_json
w tym przykładzie, alexgboost
,lightgbm
,tl_checkpoint
są również poprawnymi formatami). - przewidywać_proba – W przypadku ustawienia wartości true wartości prawdopodobieństwa będą zwracane dla każdej klasy, a nie tylko dla przewidywania klasy.
- klasa_wyjściowa – To ustawienie ma wartość true dla modeli klasyfikacyjnych i false dla modeli regresji.
- próg – Jest to próg punktowy służący do określenia klasyfikacji. Gdy
output_class
jest ustawiona na true, musi być podana, chociaż nie zostanie użyta ifpredict_proba
jest również ustawiona na wartość true. - typ składowania – Ogólnie rzecz biorąc, użycie AUTO dla tego ustawienia powinno wystarczyć do większości przypadków użycia. Jeśli wybrano przechowywanie AUTO, FIL załaduje model przy użyciu rzadkiej lub gęstej reprezentacji w oparciu o przybliżony rozmiar modelu. W niektórych przypadkach możesz chcieć jawnie ustawić to na SPARSE, aby zmniejszyć zużycie pamięci przez duże modele.
Triton Inference Server na SageMaker
SageMaker pozwala wdrażać zarówno pojedyncze, jak i wielomodelowe punkty końcowe za pomocą NVIDIA Triton Inference Server. Poniższy rysunek przedstawia architekturę wysokiego poziomu Triton Inference Server. The repozytorium modeli to oparte na systemie plików repozytorium modeli, które Triton udostępni do wnioskowania. Żądania wnioskowania docierają do serwera i są kierowane do odpowiedniego harmonogramu dla danego modelu. narzędzia Triton wiele algorytmów planowania i przetwarzania wsadowego które można konfigurować w zależności od modelu. Harmonogram każdego modelu opcjonalnie wykonuje przetwarzanie wsadowe żądań wnioskowania, a następnie przekazuje żądania do Backend odpowiada typowi modelu. Zaplecze przeprowadza wnioskowanie przy użyciu danych wejściowych dostarczonych w żądaniach wsadowych w celu wytworzenia żądanych danych wyjściowych. Wyjścia są następnie zwracane.
Podczas konfigurowania grup automatycznego skalowania dla punktów końcowych SageMaker warto to rozważyć SageMakerVariantInvocationsPerInstance
jako podstawowe kryterium do określenia charakterystyki skalowania grupy automatycznego skalowania. Ponadto, w zależności od tego, czy Twoje modele działają na GPU czy CPU, możesz również rozważyć użycie CPUUtilization lub GPUUtilization jako dodatkowych kryteriów. Należy pamiętać, że w przypadku punktów końcowych z pojedynczym modelem, ponieważ wszystkie wdrożone modele są takie same, ustawienie odpowiednich zasad w celu spełnienia umów SLA jest dość proste. W przypadku punktów końcowych z wieloma modelami zalecamy wdrożenie podobnych modeli za danym punktem końcowym, aby uzyskać bardziej stabilną przewidywalną wydajność. W przypadkach użycia, w których używane są modele o różnych rozmiarach i wymaganiach, możesz chcieć rozdzielić te obciążenia na wiele punktów końcowych z wieloma modelami lub poświęcić trochę czasu na dostrajanie zasad grupy automatycznego skalowania, aby uzyskać najlepszą równowagę kosztów i wydajności.
Aby uzyskać listę kontenerów NVIDIA Triton Deep Learning Containers (DLC) obsługiwanych przez wnioskowanie SageMaker, patrz Dostępne obrazy kontenerów do głębokiego uczenia się.
Przewodnik po notatniku SageMaker
Aplikacje ML są złożone i często mogą wymagać wstępnego przetwarzania danych. W tym notatniku zagłębimy się w to, jak wdrożyć oparty na drzewie model ML, taki jak XGBoost, przy użyciu zaplecza FIL w Triton na wielomodelowym punkcie końcowym SageMaker. Omówimy również, jak zaimplementować potok wnioskowania wstępnego przetwarzania danych oparty na języku Python dla twojego modelu przy użyciu funkcji zespołowej w Triton. Umożliwi nam to wysłanie nieprzetworzonych danych ze strony klienta i umożliwi zarówno wstępne przetwarzanie danych, jak i wnioskowanie o modelu w punkcie końcowym Triton SageMaker w celu uzyskania optymalnej wydajności wnioskowania.
Funkcja zespołu modelu Triton
Triton Inference Server znacznie upraszcza wdrażanie modeli AI na dużą skalę w produkcji. Triton Inference Server jest dostarczany z wygodnym rozwiązaniem, które upraszcza tworzenie potoków przetwarzania wstępnego i końcowego. Platforma Triton Inference Server udostępnia program planujący zespoły, który jest odpowiedzialny za potokowanie modeli uczestniczących w procesie wnioskowania, zapewniając jednocześnie wydajność i optymalizację przepustowości. Korzystanie z modeli zespolonych może uniknąć narzutu związanego z przenoszeniem tensorów pośrednich i zminimalizować liczbę żądań, które należy wysłać do Tritona.
W tym notatniku pokazujemy, jak używać funkcji zespołowej do budowania potoku wstępnego przetwarzania danych z wnioskowaniem o model XGBoost, a także można na tej podstawie ekstrapolować, aby dodać niestandardowe przetwarzanie końcowe do potoku.
Skonfiguruj środowisko
Zaczynamy od skonfigurowania wymaganego środowiska. Instalujemy zależności wymagane do spakowania naszego potoku modelowego i uruchamiamy wnioskowanie za pomocą Triton Inference Server. Określamy również AWS Zarządzanie tożsamością i dostępem (IAM), która zapewni SageMakerowi dostęp do artefaktów modelu i NVIDIA Triton Rejestr elastycznego pojemnika Amazon (Amazon ECR). Zobacz następujący kod:
Utwórz środowisko Conda do wstępnego przetwarzania zależności
Backend Pythona w Tritonie wymaga od nas użycia pliku Conda środowisko dla wszelkich dodatkowych zależności. W tym przypadku używamy backendu Pythona do wstępnego przetworzenia nieprzetworzonych danych przed wprowadzeniem ich do modelu XGBoost działającego w backendzie FIL. Mimo że pierwotnie używaliśmy RAPIDS cuDF i cuML do wstępnego przetwarzania danych, tutaj używamy Pand i scikit-learn jako zależności wstępnego przetwarzania podczas wnioskowania. Robimy to z trzech powodów:
- Pokazujemy, jak stworzyć środowisko Conda dla swoich zależności i jak spakować je w oczekiwany format przez backend Tritona w Pythonie.
- Pokazując model przetwarzania wstępnego działający w zapleczu Pythona na CPU, podczas gdy XGBoost działa na GPU w zapleczu FIL, ilustrujemy, w jaki sposób każdy model w potoku zespołu Tritona może działać na innym zapleczu frameworka, a także na różnych konfiguracjach sprzętowych.
- Podkreśla, w jaki sposób biblioteki RAPIDS (cuDF, cuML) są kompatybilne z ich odpowiednikami w procesorach (Pandas, scikit-learn). Na przykład możemy pokazać, jak to zrobić
LabelEncoders
utworzone w cuML mogą być używane w scikit-learn i odwrotnie.
Postępujemy zgodnie z instrukcjami z Dokumentacja Tritona do pakowania zależności przetwarzania wstępnego (scikit-learn i Pandas) do wykorzystania w zapleczu Pythona jako plik TAR środowiska Conda. Skrypt basha utwórz_prep_env.sh tworzy plik TAR środowiska Conda, następnie przenosimy go do katalogu modelu preprocessingu. Zobacz następujący kod:
Po uruchomieniu poprzedniego skryptu generuje on preprocessing_env.tar.gz
, który kopiujemy do katalogu preprocessing:
Skonfiguruj przetwarzanie wstępne za pomocą backendu Triton Python
Do wstępnego przetwarzania używamy Tritona Zaplecze Pythona do wykonywania wstępnego przetwarzania danych tabelarycznych (kodowanie kategoryczne) podczas wnioskowania dla żądań surowych danych przychodzących do serwera. Aby uzyskać więcej informacji na temat przetwarzania wstępnego, które zostało wykonane podczas szkolenia, zapoznaj się z sekcją zeszyt treningowy.
Zaplecze Pythona umożliwia zaimplementowanie w Pythonie przetwarzania wstępnego, końcowego i dowolnej innej niestandardowej logiki i obsługiwane z Tritonem. Korzystanie z Triton w SageMaker wymaga od nas skonfigurowania folderu repozytorium modeli zawierającego modele, które chcemy obsłużyć. Skonfigurowaliśmy już model wstępnego przetwarzania danych w Pythonie, zwany preprocessingiem cpu_model_repository
i gpu_model_repository
.
Triton ma określone wymagania dotyczące układu repozytorium modeli. W katalogu repozytorium modelu najwyższego poziomu każdy model ma swój własny podkatalog zawierający informacje dotyczące odpowiedniego modelu. Każdy katalog modelu w Tritonie musi mieć co najmniej jeden numeryczny podkatalog reprezentujący wersję modelu. Wartość 1 reprezentuje wersję 1 naszego modelu przetwarzania wstępnego języka Python. Każdy model jest uruchamiany przez określony backend, więc w każdym podkatalogu wersji musi znajdować się artefakt modelu wymagany przez ten backend. W tym przykładzie używamy backendu Pythona, który wymaga, aby plik Pythona, który udostępniasz, nazywał się model.py, a plik musi implementować pewne funkcje. Gdybyśmy korzystali z backendu PyTorch, wymagany byłby plik model.pt i tak dalej. Aby uzyskać więcej informacji na temat konwencji nazewnictwa plików modeli, zobacz Pliki modeli.
Połączenia model.py Używany tutaj plik Pythona implementuje całą logikę wstępnego przetwarzania danych tabelarycznych w celu konwersji nieprzetworzonych danych na funkcje, które można wprowadzić do naszego modelu XGBoost.
Każdy model Triton musi również zapewniać config.pbtxt
plik opisujący konfigurację modelu. Aby dowiedzieć się więcej o ustawieniach konfiguracji, patrz Konfiguracja modelu. Nasz konfiguracja.pbtxt plik określa backend jako python i wszystkie kolumny wejściowe dla surowych danych wraz z wstępnie przetworzonymi danymi wyjściowymi, które składają się z 15 funkcji. Określamy również, że chcemy uruchomić ten model przetwarzania wstępnego Pythona na CPU. Zobacz następujący kod:
Skonfiguruj oparty na drzewie model ML dla zaplecza FIL
Następnie skonfigurujemy katalog modelu dla modelu ML opartego na drzewie, takiego jak XGBoost, który będzie korzystał z zaplecza FIL.
Oczekiwany układ dla cpu_memory_repository
i gpu_memory_repository
są podobne do tych, które pokazaliśmy wcześniej.
Tutaj, FIL
to nazwa modelu. Możemy nadać mu inną nazwę, np xgboost
jeśli chcemy. 1
jest podkatalogiem wersji, który zawiera artefakt modelu. W tym przypadku jest to xgboost.json
model, który uratowaliśmy. Stwórzmy ten oczekiwany układ:
Musimy mieć plik konfiguracyjny config.pbtxt
opis konfiguracji modelu dla modelu ML opartego na drzewie, aby backend FIL w Tritonie mógł zrozumieć, jak go obsłużyć. Aby uzyskać więcej informacji, zapoznaj się z najnowszą wersją ogólną Opcje konfiguracji Tritona oraz opcje konfiguracyjne specyficzne dla Zaplecze FIL. W tym przykładzie skupiamy się na kilku najbardziej powszechnych i odpowiednich opcjach.
Stwórz config.pbtxt
dla model_cpu_repository
:
Podobnie ustaw config.pbtxt
dla model_gpu_repository
(zauważ, że różnica jest USE_GPU = True
):
Skonfiguruj potok wnioskowania zaplecza Pythona i zaplecza FIL do wstępnego przetwarzania danych za pomocą zespołów
Teraz jesteśmy gotowi do skonfigurowania potoku wnioskowania na potrzeby wstępnego przetwarzania danych i wnioskowania o modelu opartym na drzewie przy użyciu pliku model zespołu. Model zespołowy reprezentuje potok jednego lub więcej modeli oraz połączenie tensorów wejściowych i wyjściowych między tymi modelami. Tutaj używamy modelu zespołowego do zbudowania potoku wstępnego przetwarzania danych w zapleczu Pythona, a następnie XGBoost w zapleczu FIL.
Oczekiwany układ dla ensemble
model katalog jest podobny do tych, które pokazaliśmy wcześniej:
Stworzyliśmy model zespołowy konfiguracja.pbtxt postępując zgodnie z wytycznymi w Modele zespołu. Co ważne, musimy skonfigurować harmonogram zespołu w config.pbtxt
, który określa przepływ danych między modelami w zespole. Harmonogram zespołu zbiera tensory wyjściowe w każdym kroku i dostarcza je jako tensory wejściowe dla innych kroków zgodnie ze specyfikacją.
Spakuj repozytorium modelu i prześlij do Amazon S3
Ostatecznie otrzymujemy następującą strukturę katalogów repozytorium modeli, zawierającą model przetwarzania wstępnego Pythona i jego zależności wraz z modelem XGBoost FIL i zespołem modeli.
Katalog i jego zawartość pakujemy jako model.tar.gz
do załadowania do Usługa Amazon Simple Storage (Amazon S3). W tym przykładzie mamy dwie opcje: użycie instancji opartej na procesorze lub instancji opartej na GPU. Instancja oparta na GPU jest bardziej odpowiednia, gdy potrzebujesz większej mocy obliczeniowej i chcesz używać rdzeni CUDA.
Utwórz i prześlij pakiet modelu dla instancji opartej na procesorze (zoptymalizowanej pod kątem procesora) z następującym kodem:
Utwórz i prześlij pakiet modelu dla instancji opartej na GPU (zoptymalizowanej pod kątem GPU) z następującym kodem:
Utwórz punkt końcowy SageMaker
Mamy teraz artefakty modelu przechowywane w zasobniku S3. W tym kroku możemy również podać dodatkową zmienną środowiskową SAGEMAKER_TRITON_DEFAULT_MODEL_NAME
, który określa nazwę modelu do załadowania przez Triton. Wartość tego klucza powinna być zgodna z nazwą folderu w pakiecie modelu przesłanym do Amazon S3. Ta zmienna jest opcjonalna w przypadku pojedynczego modelu. W przypadku modeli zespołowych ten klucz musi zostać określony, aby Triton mógł się uruchomić w SageMaker.
Dodatkowo możesz ustawić SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT
i SAGEMAKER_TRITON_THREAD_COUNT
do optymalizacji liczby wątków.
Używamy poprzedniego modelu do stworzenia konfiguracji punktu końcowego, w której możemy określić typ i liczbę instancji, które chcemy w punkcie końcowym
Używamy tej konfiguracji punktu końcowego do utworzenia punktu końcowego SageMaker i czekamy na zakończenie wdrażania. Dzięki SageMaker MME mamy możliwość hostowania wielu modeli zespołowych poprzez powtórzenie tego procesu, ale w tym przykładzie trzymamy się jednego wdrożenia:
Status zmieni się na InService
gdy wdrożenie zakończy się pomyślnie.
Wywołaj swój model hostowany w punkcie końcowym SageMaker
Po uruchomieniu punktu końcowego możemy użyć przykładowych nieprzetworzonych danych do przeprowadzenia wnioskowania przy użyciu JSON jako formatu ładunku. W przypadku formatu żądania wnioskowania Triton używa formatu KFServing
standard społeczności protokoły wnioskowania. Zobacz następujący kod:
Notatnik, o którym mowa w blogu można znaleźć w Repozytorium GitHub.
Najlepsze praktyki
Poza wspomnianymi wcześniej opcjami dostrajania ustawień backendu FIL, analitycy danych mogą również zapewnić, że dane wejściowe dla backendu są zoptymalizowane pod kątem przetwarzania przez silnik. Jeśli to możliwe, wprowadzaj dane w formacie głównym wiersza do tablicy GPU. Inne formaty wymagają wewnętrznej konwersji i zajmują cykle, zmniejszając wydajność.
Ze względu na sposób, w jaki struktury danych FIL są utrzymywane w pamięci GPU, należy pamiętać o głębokości drzewa. Im głębsza głębokość drzewa, tym większy będzie ślad pamięci GPU.
Użyj instance_group_count
parametr, aby dodać procesy robocze i zwiększyć przepustowość zaplecza FIL, co spowoduje większe zużycie pamięci procesora i karty graficznej. Ponadto należy wziąć pod uwagę zmienne specyficzne dla SageMaker, które są dostępne w celu zwiększenia przepustowości, takie jak wątki HTTP, rozmiar bufora HTTP, rozmiar partii i maksymalne opóźnienie.
Wnioski
W tym poście zagłębiliśmy się w backend FIL, który Triton Inference Server obsługuje w SageMaker. Ten backend zapewnia akcelerację zarówno CPU, jak i GPU modeli opartych na drzewie, takich jak popularny algorytm XGBoost. Aby uzyskać najlepszą wydajność wnioskowania, należy wziąć pod uwagę wiele opcji, takich jak rozmiary partii, formaty wprowadzania danych i inne czynniki, które można dostosować do własnych potrzeb. SageMaker umożliwia wykorzystanie tej możliwości z pojedynczymi i wieloma modelowymi punktami końcowymi w celu zrównoważenia wydajności i oszczędności kosztów.
Zachęcamy do zapoznania się z informacjami zawartymi w tym poście i sprawdzenia, czy SageMaker może spełnić Twoje potrzeby w zakresie hostingu, aby obsługiwać modele oparte na drzewie, spełniając Twoje wymagania dotyczące redukcji kosztów i wydajności obciążenia.
Notatnik, do którego odwołuje się ten post, można znaleźć w przykładach SageMaker Repozytorium GitHub. Ponadto można znaleźć najnowszą dokumentację dotyczącą zaplecza FIL GitHub.
O autorach
Raghu Ramesza jest starszym architektem rozwiązań ML w zespole Amazon SageMaker Service. Koncentruje się na pomaganiu klientom w budowaniu, wdrażaniu i migracji obciążeń produkcyjnych ML do SageMaker na dużą skalę. Specjalizuje się w dziedzinie uczenia maszynowego, sztucznej inteligencji i wizji komputerowej oraz posiada tytuł magistra informatyki uzyskany na UT Dallas. W wolnym czasie lubi podróżować i fotografować.
James Park jest architektem rozwiązań w Amazon Web Services. Współpracuje z Amazon.com przy projektowaniu, budowaniu i wdrażaniu rozwiązań technologicznych w AWS, a szczególnie interesuje się sztuczną inteligencją i uczeniem maszynowym. W wolnym czasie lubi poszukiwać nowych kultur, nowych doświadczeń i być na bieżąco z najnowszymi trendami technologicznymi.
Dawal Patel jest głównym architektem uczenia maszynowego w AWS. Pracował z organizacjami od dużych przedsiębiorstw po średniej wielkości start-upy nad problemami związanymi z przetwarzaniem rozproszonym i sztuczną inteligencją. Koncentruje się na głębokim uczeniu, w tym w domenach NLP i wizji komputerowej. Pomaga klientom uzyskać wnioskowanie o wysokiej wydajności modelu w Amazon SageMaker.
Jiahong Liu jest architektem rozwiązań w zespole Cloud Service Provider firmy NVIDIA. Pomaga klientom we wdrażaniu rozwiązań uczenia maszynowego i sztucznej inteligencji, które wykorzystują akcelerowane obliczenia NVIDIA, aby sprostać wyzwaniom związanym ze szkoleniem i wnioskowaniem. W wolnym czasie lubi origami, projekty DIY i grę w koszykówkę.
Kszitiz Gupta jest architektem rozwiązań w firmie NVIDIA. Lubi edukować klientów korzystających z chmury na temat technologii GPU AI, które firma NVIDIA ma do zaoferowania, i pomagać im w przyspieszaniu ich aplikacji do uczenia maszynowego i uczenia głębokiego. Poza pracą lubi biegać, wędrować i obserwować dziką przyrodę.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoAiStream. Analiza danych Web3. Wiedza wzmocniona. Dostęp tutaj.
- Wybijanie przyszłości w Adryenn Ashley. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/hosting-ml-models-on-amazon-sagemaker-using-triton-xgboost-lightgbm-and-treelite-models/
- :ma
- :Jest
- :nie
- :Gdzie
- $W GÓRĘ
- 1
- 100
- 11
- 13
- 200
- 23
- 24
- 7
- 8
- 9
- a
- zdolność
- O nas
- przyśpieszyć
- przyśpieszony
- przyspieszenie
- akceleratory
- dostęp
- Stosownie
- odpowiednio
- Konto
- Osiągać
- w poprzek
- Dodaj
- dodatek
- Dodatkowy
- adres
- adresowalny
- Przyjęcie
- Po
- przed
- umowy
- AI
- algorytm
- Wszystkie kategorie
- przydziały
- dopuszczać
- pozwala
- wzdłuż
- już
- również
- Chociaż
- zawsze
- Amazonka
- Amazon Sage Maker
- Amazon Web Services
- Amazon.com
- ilość
- an
- i
- każdy
- api
- aplikacje
- właściwy
- architektura
- SĄ
- obszary
- argument
- Szyk
- sztuczny
- sztuczna inteligencja
- AS
- pomaga
- At
- samochód
- dostępny
- uniknąć
- AWS
- Backend
- Bilans
- na podstawie
- bash
- podstawa
- Koszykówka
- BE
- bo
- stają się
- być
- zanim
- rozpocząć
- za
- poniżej
- korzyści
- BEST
- Ulepsz Swój
- pomiędzy
- większe
- Blog
- ciało
- obie
- bufor
- budować
- Budowanie
- wybudowany
- ale
- by
- C + +
- nazywa
- CAN
- karta
- walizka
- Etui
- Kategoria
- Spowodować
- wyzwania
- zmiana
- Charakterystyka
- ZOBACZ
- żeton
- Dodaj
- Wybierając
- Miasto
- klasa
- klasyfikacja
- klient
- klientów
- Chmura
- kod
- kolumny
- COM
- byliśmy spójni, od początku
- przyjście
- wspólny
- komunikować
- Komunikacja
- społeczność
- zgodny
- kompleks
- obliczenia
- komputer
- Computer Science
- Wizja komputerowa
- computing
- systemu
- połączenie
- Rozważać
- za
- konsumować
- konsumpcja
- Pojemnik
- Pojemniki
- zawiera
- treść
- kontrast
- kontrola
- Wygodny
- Konwersja
- konwertować
- rdzeń
- Odpowiedni
- Koszty:
- redukcja kosztów
- oszczędności
- pokrywa
- Stwórz
- stworzony
- tworzy
- Kryteria
- istotny
- Obecnie
- zwyczaj
- Klientów
- Cykle
- Dallas
- dane
- Data
- dzień
- sprawa
- decyzja
- głęboko
- głęboka nauka
- głębiej
- Domyślnie
- Domyślnie
- Stopień
- opóźnienie
- wymagający
- wymagania
- W zależności
- rozwijać
- wdrażane
- wdrażanie
- Wdrożenie
- głębokość
- Wnętrze
- detale
- Ustalać
- ustalona
- określa
- określaniu
- deweloperzy
- różnica
- różne
- dystrybuowane
- przetwarzanie rozproszone
- DIY
- do
- dokumentacja
- Nie
- robi
- domeny
- zrobić
- gołąb
- z powodu
- podczas
- każdy
- Wcześniej
- edukowanie
- efektywność
- skutecznie
- bądź
- podkreślając
- Umożliwia
- zachęcać
- zakończenia
- Punkt końcowy
- silnik
- silniki
- zapewnić
- zapewnienie
- Enterprise
- przedsiębiorstwa
- Cały
- Środowisko
- Błędy
- Parzyste
- Każdy
- przykład
- przykłady
- wymiana
- oczekiwać
- spodziewany
- Doświadczenia
- eksport
- Czynniki
- dość
- Spada
- fałszywy
- Cecha
- Korzyści
- nakarmiony
- karmienie
- kilka
- Postać
- filet
- Akta
- Znajdź
- koniec
- i terminów, a
- pływ
- Skupiać
- koncentruje
- obserwuj
- następnie
- następujący
- Ślad stopy
- W razie zamówieenia projektu
- Nasz formularz
- format
- znaleziono
- Framework
- Ramy
- oszustwo
- Darmowy
- od
- Ponadto
- Zyski
- Ogólne
- generuje
- otrzymać
- Dać
- dany
- GPU
- bardzo
- Zarządzanie
- Grupy
- poradnictwo
- zdarzyć
- Ciężko
- sprzęt komputerowy
- Have
- he
- pomoc
- pomoc
- pomaga
- tutaj
- na wysokim szczeblu
- wysoka wydajność
- wyższy
- pasemka
- jego
- przytrzymaj
- posiada
- gospodarz
- hostowane
- Hosting
- W jaki sposób
- How To
- Jednak
- HTML
- http
- HTTPS
- Zranić
- tożsamość
- ids
- IDX
- if
- obraz
- Rezultat
- Oddziaływania
- wdrożenia
- realizowane
- narzędzia
- import
- in
- zawierać
- Włącznie z
- Zwiększać
- wskazuje
- Informacja
- poinformowany
- wkład
- zainstalować
- przykład
- instrukcje
- integracja
- Inteligencja
- odsetki
- wewnętrzny
- najnowszych
- IT
- JEGO
- jpg
- json
- właśnie
- Trzymać
- Klawisz
- Uprzejmy
- Wiedzieć
- duży
- Duże przedsiębiorstwa
- większe
- Utajenie
- firmy
- układ
- UCZYĆ SIĘ
- nauka
- najmniej
- Doprowadziło
- prawowity
- mniej
- poziom
- poziomy
- Dźwignia
- biblioteki
- Biblioteka
- lubić
- LIMIT
- Linia
- Lista
- załadować
- logika
- logiczny
- długo
- maszyna
- uczenie maszynowe
- robić
- zarządzanie
- wiele
- mistrzowski
- Mecz
- max
- maksymalny
- Może..
- mechanizm
- Poznaj nasz
- Spotkanie
- Pamięć
- wzmiankowany
- Kupiec
- Metryka
- może
- migrować
- nic
- ML
- Moda
- model
- modele
- Miesiąc
- jeszcze
- większość
- Najbardziej popularne posty
- ruch
- Wielomodelowy punkt końcowy
- wielokrotność
- musi
- Nazwa
- nazywania
- rodzimy
- Potrzebować
- wymagania
- Nowości
- nlp
- Nie
- węzły
- notatnik
- już dziś
- numer
- tępy
- Nvidia
- uzyskać
- of
- oferta
- Oferty
- często
- on
- ONE
- te
- tylko
- open source
- Optymalny
- optymalizacja
- Optymalizacja
- zoptymalizowane
- optymalizacji
- Option
- Opcje
- or
- zamówienie
- organizacji
- Zorganizowany
- pierwotnie
- OS
- Inne
- Inaczej
- ludzkiej,
- na zewnątrz
- wydajność
- zewnętrzne
- własny
- pakiet
- opakowania
- pandy
- Parallel
- parametr
- parametry
- uczestnictwo
- szczególny
- minęło
- przebiegi
- ścieżka
- wykonać
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- wykonuje
- pozwolenie
- fotografia
- rurociąg
- Platforma
- plato
- Analiza danych Platona
- PlatoDane
- gra
- Proszę
- nadmiar
- polityka
- polityka
- basen
- Popularny
- popularność
- możliwy
- możliwie
- Post
- power
- przewidzieć
- Możliwy do przewidzenia
- Przewiduje
- przepowiednia
- Przewidywania
- poprzednio
- pierwotny
- Główny
- problemy
- wygląda tak
- procesów
- przetwarzanie
- Moc przetwarzania
- Procesory
- produkować
- Produkcja
- projektowanie
- właściwy
- Proto
- zapewniać
- pod warunkiem,
- dostawca
- zapewnia
- że
- Python
- płomień
- przypadkowy
- nośny
- raczej
- Surowy
- gotowy
- Prawdziwy świat
- w czasie rzeczywistym
- Przyczyny
- polecić
- zmniejszyć
- , o którym mowa
- Bez względu
- region
- związane z
- obsługi produkcji rolnej, która zastąpiła
- składnica
- reprezentacja
- reprezentowanie
- reprezentuje
- zażądać
- wywołań
- wymagać
- wymagany
- wymagania
- Wymaga
- odpowiedź
- odpowiedzialny
- dalsze
- Efekt
- Rola
- run
- bieganie
- s
- sagemaker
- Wnioskowanie SageMakera
- taki sam
- Oszczędności
- skalowalny
- Skala
- skalowaniem
- scenariusze
- szeregowanie
- nauka
- Naukowcy
- nauka-scikit
- wynik
- Sekcja
- widzieć
- poszukuje
- wybrany
- wysłać
- senior
- oddzielny
- służyć
- usługa
- Usługodawca
- Usługi
- służąc
- zestaw
- ustawienie
- w panelu ustawień
- Shape
- shared
- powinien
- pokazać
- Targi
- bok
- znacznie
- podobny
- Prosty
- pojedynczy
- Rozmiar
- rozmiary
- So
- rozwiązanie
- Rozwiązania
- ROZWIĄZANIA
- Rozwiązywanie
- kilka
- Źródło
- specjalizuje się
- specyficzny
- specyfikacja
- określony
- wydać
- standard
- początek
- Startowy
- Startups
- Stan
- Rynek
- stały
- Ewolucja krok po kroku
- Cel
- przechowywanie
- sklep
- przechowywany
- bezpośredni
- sznur
- Struktura
- udany
- taki
- sugerować
- odpowiedni
- wsparcie
- Utrzymany
- podpory
- Brać
- zespół
- Techniki
- Technologies
- Technologia
- powiedzieć
- REGULAMIN
- niż
- że
- Połączenia
- Informacje
- ich
- Im
- następnie
- Tam.
- Te
- one
- rzecz
- to
- tych
- chociaż?
- trzy
- próg
- wydajność
- czas
- do
- już dziś
- razem
- najwyższy poziom
- tradycyjnie
- przeszkolony
- Trening
- Przesyłanie
- Podróżowanie
- drzewo
- Trendy
- Tryton
- prawdziwy
- drugiej
- rodzaj
- typy
- zazwyczaj
- zrozumieć
- przesłanych
- Uploading
- us
- posługiwać się
- używany
- Użytkownik
- za pomocą
- wykorzystuje
- Wykorzystując
- wartość
- Wartości
- różnorodny
- wersja
- przez
- wizja
- W
- czekać
- chcieć
- była
- oglądania
- Droga..
- we
- sieć
- usługi internetowe
- DOBRZE
- były
- Co
- jeśli chodzi o komunikację i motywację
- ilekroć
- czy
- który
- Podczas
- będzie
- w
- w ciągu
- bez
- Praca
- pracował
- pracownik
- działa
- by
- XGBoost
- rok
- You
- Twój
- zefirnet
- Zamek błyskawiczny