Skorzystaj z podejścia skoncentrowanego na danych, aby zminimalizować ilość danych wymaganych do szkolenia modeli Amazon SageMaker

Skorzystaj z podejścia skoncentrowanego na danych, aby zminimalizować ilość danych wymaganych do szkolenia modeli Amazon SageMaker

W miarę ulepszania modeli uczenia maszynowego (ML) naukowcy zajmujący się danymi, inżynierowie i badacze ML przenieśli większą uwagę na definiowanie i poprawianie jakości danych. Doprowadziło to do pojawienia się skoncentrowanego na danych podejścia do uczenia maszynowego i różnych technik poprawy wydajności modelu poprzez skupienie się na wymaganiach dotyczących danych. Zastosowanie tych technik pozwala praktykom ML zmniejszyć ilość danych wymaganych do trenowania modelu ML.

W ramach tego podejścia pojawiły się zaawansowane techniki selekcji podzbiorów danych w celu przyspieszenia szkolenia poprzez zmniejszenie ilości danych wejściowych. Proces ten polega na automatycznym wybraniu określonej liczby punktów aproksymujących rozkład większego zbioru danych i wykorzystaniu jej do uczenia. Zastosowanie tego typu techniki skraca czas potrzebny do nauczenia modelu ML.

W tym poście opisujemy stosowanie zasad sztucznej inteligencji skoncentrowanych na danych Amazon SageMaker Ground Prawda, jak zaimplementować techniki selekcji podzbiorów danych za pomocą SPODNIE SZTRUKSOWE repozytorium włączone Amazon Sage Maker w celu zmniejszenia ilości danych wymaganych do nauczenia początkowego modelu oraz sposobu przeprowadzania eksperymentów przy użyciu tego podejścia Eksperymenty Amazon SageMaker.

Oparte na danych podejście do uczenia maszynowego

Zanim zagłębisz się w bardziej zaawansowane techniki skoncentrowane na danych, takie jak wybieranie podzbiorów danych, możesz ulepszyć swoje zestawy danych na wiele sposobów, stosując zestaw podstawowych zasad do procesu etykietowania danych. W tym celu Ground Truth obsługuje różne mechanizmy poprawiające spójność etykiet i jakość danych.

Spójność etykiet jest ważna dla poprawy wydajności modelu. Bez tego modele nie mogą stworzyć granicy decyzyjnej oddzielającej każdy punkt należący do różnych klas. Jednym ze sposobów zapewnienia spójności jest użycie konsolidacja adnotacji w Ground Truth, co pozwala udostępnić dany przykład wielu osobom oznaczającym i użyć zagregowanej etykiety dostarczonej jako podstawowej prawdy dla tego przykładu. Rozbieżność na etykiecie jest mierzona na podstawie wyniku ufności generowanego przez Ground Truth. W przypadku rozbieżności na etykietach należy sprawdzić, czy w instrukcjach dotyczących etykiet przekazywanych osobom zajmującym się etykietowaniem nie ma niejasności, które można usunąć. Takie podejście łagodzi skutki stronniczości poszczególnych osób etykietujących, co ma kluczowe znaczenie dla zapewnienia większej spójności etykiet.

Innym sposobem poprawy wydajności modelu poprzez skupienie się na danych jest opracowanie metod analizowania pojawiających się błędów w etykietach w celu zidentyfikowania najważniejszego podzbioru danych, które należy poprawić. możesz to zrobić dla swojego zestawu danych szkoleniowych, łącząc ręczne wysiłki obejmujące nurkowanie w przykładach z etykietami i używanie Amazon Cloud Watch dzienniki i metryki generowane przez zadania etykietowania Ground Truth. Ważne jest również, aby przyjrzeć się błędom, które model popełnia w czasie wnioskowania, aby kierować kolejną iteracją etykietowania dla naszego zbioru danych. Oprócz tych mechanizmów Amazon SageMaker Wyjaśnij pozwala naukowcom danych i inżynierom ML uruchamiać algorytmy takie jak JądroSHAP aby umożliwić im interpretację przewidywań dokonanych przez ich model. Jak wspomniano, głębsze wyjaśnienie przewidywań modelu można odnieść do początkowego procesu etykietowania, aby go ulepszyć.

Na koniec możesz rozważyć wyrzucenie hałaśliwych lub nadmiernie zbędnych przykładów. W ten sposób można skrócić czas szkolenia przez usunięcie przykładów, które nie przyczyniają się do poprawy wydajności modelu. Jednak ręczna identyfikacja użytecznego podzbioru danego zbioru danych jest trudna i czasochłonna. Zastosowanie technik selekcji podzbiorów danych opisanych w tym poście pozwala zautomatyzować ten proces zgodnie z ustalonymi ramami.

Przypadek użycia

Jak wspomniano, sztuczna inteligencja skoncentrowana na danych koncentruje się na ulepszaniu danych wejściowych modelu, a nie na architekturze samego modelu. Po zastosowaniu tych zasad podczas etykietowania danych lub inżynierii cech można nadal koncentrować się na wprowadzaniu danych do modelu, stosując wybór podzbioru danych w czasie szkolenia.

W tym poście stosujemy wybór podzbioru danych oparty na uogólnieniu w celu wydajnego i solidnego uczenia się (BŁYSK), która jest jedną z wielu technik selekcji podzbiorów danych zaimplementowanych w repozytorium CORDS, do algorytmu uczącego ResNet-18 modelu, aby zminimalizować czas potrzebny do nauczenia modelu do klasyfikacji CIFAR-10 obrazy. Poniżej przedstawiono przykładowe obrazy z odpowiednimi etykietami pobrane z zestawu danych CIFAR-10.

Zbiór danych CIFAR

ResNet-18 jest często używany do zadań klasyfikacyjnych. Jest to 18-warstwowa głęboka konwolucyjna sieć neuronowa. Zbiór danych CIFAR-10 jest często używany do oceny ważności różnych technik i podejść w ML. Składa się z 60,000 32 kolorowych obrazów 32 × 10 oznaczonych w XNUMX klasach.

W poniższych sekcjach pokazujemy, w jaki sposób GLISTER może pomóc w pewnym stopniu odpowiedzieć na następujące pytanie:

Jaki procent danego zestawu danych możemy wykorzystać i nadal osiągnąć dobrą wydajność modelu podczas uczenia?

Zastosowanie GLISTER do algorytmu szkoleniowego wprowadzi ułamek jako hiperparametr do algorytmu szkoleniowego. Reprezentuje procent danego zestawu danych, którego chcesz użyć. Podobnie jak w przypadku każdego hiperparametru, znalezienie wartości dającej najlepszy wynik dla modelu i danych wymaga dostrojenia. W tym poście nie zagłębiamy się w dostrajanie hiperparametrów. Aby uzyskać więcej informacji, patrz Zoptymalizuj hiperparametry za pomocą automatycznego dostrajania modelu Amazon SageMaker.

Przeprowadzamy kilka testów za pomocą SageMaker Experiments, aby zmierzyć wpływ tego podejścia. Wyniki będą się różnić w zależności od początkowego zestawu danych, dlatego ważne jest, aby przetestować podejście z naszymi danymi w różnych rozmiarach podzbiorów.

Chociaż omawiamy użycie GLISTER na obrazach, można go również zastosować do algorytmów szkoleniowych pracujących z danymi strukturalnymi lub tabelarycznymi.

Wybór podzbioru danych

Celem wyboru podzbioru danych jest przyspieszenie procesu uczenia przy jednoczesnym zminimalizowaniu wpływu na dokładność i zwiększeniu niezawodności modelu. Mówiąc dokładniej, GLISTER-ONLINE wybiera podzbiór w miarę uczenia się modelu, próbując zmaksymalizować logarytm wiarygodności tego podzbioru danych treningowych w określonym zbiorze walidacyjnym. Optymalizacja wyboru podzbioru danych w ten sposób ogranicza zakłócenia i nierównowagę klas, które często występują w rzeczywistych zbiorach danych, i umożliwia dostosowanie strategii wyboru podzbioru w miarę uczenia się modelu.

Początkowy papier GLISTER opisuje kompromis między szybkością a dokładnością przy różnych rozmiarach podzbiorów danych, jak następuje przy użyciu a LeNet Model:

Rozmiar podzbioru SpeedUp Dokładność
10% 6x -3%
30% 2.5x -1.20%
50% 1.5x -0.20%

Aby wytrenować model, uruchamiamy a Praca szkoleniowa SageMaker przy użyciu niestandardowego skryptu szkoleniowego. Przesłaliśmy już również nasz zestaw danych obrazu do Usługa Amazon Simple Storage (Amazon S3). Podobnie jak w przypadku każdego zadania szkoleniowego SageMaker, musimy zdefiniować Estimator obiekt. Estymator PyTorch z sagemaker.pytorch pozwala nam na uruchomienie własnego skryptu szkoleniowego w zarządzanym kontenerze PyTorch. The inputs zmienna przekazywana estymatorowi .fit zawiera słownik lokalizacji S3 zbioru danych szkoleniowych i sprawdzania poprawności.

Połączenia train.py skrypt jest uruchamiany po uruchomieniu zadania szkoleniowego. W tym skrypcie importujemy model ResNet-18 z biblioteki CORDS i przekazujemy mu liczbę klas w naszym zbiorze danych w następujący sposób:

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

Następnie używamy tzw gen_dataset funkcja CORDS do tworzenia uczących, walidacyjnych i testowych zestawów danych:

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

Z każdego zestawu danych tworzymy równoważny program ładujący dane PyTorch:

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

Na koniec używamy tych modułów ładujących dane do utworzenia pliku GLISTERDataLoader z biblioteki CORDS. Wykorzystuje implementację strategii selekcji GLISTER-ONLINE, która stosuje selekcję podzbiorów podczas aktualizacji modelu podczas szkolenia, jak omówiono wcześniej w tym poście.

Aby utworzyć obiekt, przekazujemy argumenty specyficzne dla strategii wyboru jako a DotMap obiekt wraz z train_loader, validation_loader, logger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

Połączenia GLISTERDataLoader można teraz zastosować jako zwykły program ładujący dane do pętli szkoleniowej. Wybierze podzbiory danych do następnej partii szkoleniowej, gdy model uczy się na podstawie utraty tego modelu. Jak pokazano w powyższej tabeli, dodanie strategii wyboru podzbioru danych pozwala nam znacznie skrócić czas uczenia, nawet przy dodatkowym kroku wyboru podzbioru danych, przy niewielkim kompromisie w zakresie dokładności.

Analitycy danych i inżynierowie ML często muszą ocenić ważność podejścia, porównując je z pewnym punktem odniesienia. W następnej sekcji pokażemy, jak to zrobić.

Śledzenie eksperymentu

Możesz użyć Eksperymentów SageMaker do pomiaru ważności podejścia polegającego na wyborze podzbioru danych. Aby uzyskać więcej informacji, zobacz Eksperymenty Amazon SageMaker nowej generacji — organizuj, śledź i porównuj szkolenia z uczenia maszynowego na dużą skalę.

W naszym przypadku przeprowadzamy cztery eksperymenty: linię bazową bez stosowania selekcji podzbiorów danych i trzy inne z różnicowaniem fraction parametry, które reprezentują rozmiar podzbioru w stosunku do całego zestawu danych. Oczywiście używając mniejszego fraction parametr powinien skutkować skróceniem czasu uczenia, ale także niższą dokładnością modelu.

W tym poście każdy bieg treningowy jest reprezentowany jako Run w Eksperymentach SageMaker. Wszystkie przebiegi związane z naszym eksperymentem są zgrupowane w jednym Experiment obiekt. Przebiegi można dołączyć do typowego eksperymentu podczas tworzenia pliku Estimator z SDK. Zobacz następujący kod:

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

W ramach niestandardowego skryptu treningowego możesz zbierać metryki biegu za pomocą load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

Następnie, używając obiektu run zwróconego przez poprzednią operację, możesz zbierać punkty danych na epokę, wywołując run.log_metric(name, value, step) oraz podanie nazwy metryki, wartości i aktualnego numeru epoki.

Aby zmierzyć ważność naszego podejścia, zbieramy metryki odpowiadające utracie treningu, dokładności szkolenia, utracie walidacji, dokładności walidacji i czasowi do ukończenia epoki. Następnie, po uruchomieniu zadań szkoleniowych, możemy zapoznać się z wynikami naszego eksperymentu in Studio Amazon SageMaker lub za pośrednictwem zestawu SageMaker Experiments SDK.

Aby wyświetlić dokładność sprawdzania poprawności w Studio, wybierz Analizować na eksperymencie Działa strona.

Lista eksperymentów

Dodaj wykres, ustaw właściwości wykresu i wybierz Stwórz. Jak pokazano na poniższym zrzucie ekranu, zobaczysz wykres dokładności walidacji w każdej epoce dla wszystkich przebiegów.

Wykres eksperymentów

SDK umożliwia również pobieranie informacji związanych z eksperymentem w postaci ramki danych Pandas:

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

Opcjonalnie zadania szkoleniowe można sortować. Moglibyśmy dodać np "metrics.validation:accuracy.max" jako wartość tzw sort_by parametr przekazany do ExperimentAnalytics aby zwrócić wynik uporządkowany według dokładności walidacji.

Zgodnie z oczekiwaniami nasze eksperymenty pokazują, że zastosowanie GLISTER i wyboru podzbioru danych do algorytmu szkoleniowego skraca czas szkolenia. Podczas uruchamiania naszego podstawowego algorytmu szkoleniowego mediana czasu do ukończenia jednej epoki wynosi około 27 sekund. Natomiast zastosowanie GLISTER do wybrania podzbioru odpowiadającego 50%, 30% i 10% całego zbioru danych skutkuje czasem ukończenia epoki wynoszącym odpowiednio około 13, 8.5 i 2.75 sekundy w przypadku instancji ml.p3.2xlarge .

Obserwujemy również stosunkowo minimalny wpływ na dokładność walidacji, zwłaszcza przy użyciu podzbiorów danych wynoszących 50%. Po trenowaniu przez 100 epok linia bazowa zapewnia dokładność walidacji na poziomie 92.72%. Natomiast zastosowanie GLISTER do wybrania podzbioru odpowiadającego 50%, 30% i 10% całego zbioru danych skutkuje dokładnością walidacji odpowiednio 91.42%, 89.76% i 82.82%.

Wnioski

SageMaker Ground Truth i SageMaker Experiments umożliwiają skoncentrowane na danych podejście do uczenia maszynowego, umożliwiając naukowcom danych i inżynierom ML tworzenie bardziej spójnych zestawów danych i śledzenie wpływu bardziej zaawansowanych technik podczas ich wdrażania w fazie budowania modelu. Wdrożenie podejścia skoncentrowanego na danych w ML pozwala zmniejszyć ilość danych wymaganych przez model i poprawić jego niezawodność.

Wypróbuj i daj nam znać, co myślisz w komentarzach.


O autorach

Użyj podejścia skoncentrowanego na danych, aby zminimalizować ilość danych wymaganych do uczenia modeli Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Mikołaj Bernier jest architektem rozwiązań, członkiem kanadyjskiego zespołu sektora publicznego w AWS. Obecnie prowadzi studia magisterskie z obszarem badawczym w zakresie głębokiego uczenia się i posiada pięć certyfikatów AWS, w tym ML Specialty Certification. Nicolas z pasją pomaga klientom pogłębiać wiedzę na temat AWS, współpracując z nimi, aby przełożyć ich wyzwania biznesowe na rozwiązania techniczne.

Użyj podejścia skoncentrowanego na danych, aby zminimalizować ilość danych wymaganych do uczenia modeli Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Givanildo Alvesa jest architektem prototypów w zespole prototypowania i inżynierii chmury w Amazon Web Services, pomagając klientom wprowadzać innowacje i przyspieszać, pokazując sztukę możliwości w AWS, mając już na swoim koncie kilka prototypów opartych na sztucznej inteligencji. Ma za sobą długą karierę w inżynierii oprogramowania, a wcześniej pracował jako inżynier rozwoju oprogramowania w Amazon.com.br.

Znak czasu:

Więcej z Uczenie maszynowe AWS