Różności i nowinki technologia

Finał nagłówkowego eksperymentu Ars AI — przyjechaliśmy, widzieliśmy, zużyliśmy dużo czasu obliczeniowego

Finał nagłówkowego eksperymentu Ars AI — przyjechaliśmy, widzieliśmy, zużyliśmy dużo czasu obliczeniowego

Aurich Lawson | Obrazy Getty

Mogliśmy odgryźć więcej, niż mogliśmy przeżuć, ludzie.

Inżynier Amazon powiedział mi, że kiedy usłyszał, co próbuję zrobić z nagłówkami w Ars, pierwszą rzeczą, o której pomyślał, było to, że wybraliśmy zwodniczo trudny problem. Ostrzegł, że muszę uważać, aby właściwie ustawić swoje oczekiwania. Jeśli to był prawdziwy problem biznesowy… cóż, najlepszą rzeczą, jaką mógł zrobić, to zasugerować przeformułowanie problemu z „dobrego lub złego nagłówka” na coś mniej konkretnego.

To stwierdzenie było najbardziej przyjaznym dla rodziny i najbardziej zwięzłym sposobem sformułowania wyniku mojego czterotygodniowego kursu szybkiego w niepełnym wymiarze godzin w zakresie uczenia maszynowego. W tej chwili moje jądra PyTorch to nie tyle pochodnie, co pożary śmietników. Dokładność poprawiła się nieznacznie dzięki profesjonalnej interwencji, ale nie jestem nawet w pobliżu wdrożenia działającego rozwiązania. Dzisiaj, jako że podobno na wakacjach odwiedzam rodziców po raz pierwszy od ponad roku, usiadłem na kanapie w ich salonie, pracując nad tym projektem i przypadkowo uruchomiłem modelową pracę szkoleniową lokalnie na przyniesionym przeze mnie laptopie firmy Dell — z Procesor Intel Core i3 7100U 2,4 GHz — zamiast w kopii SageMaker tego samego notebooka Jupyter. Dell zablokował się tak mocno, że musiałem wyciągnąć baterię, aby ją zrestartować.

Ale hej, jeśli maszyna niekoniecznie się uczy, to przynajmniej ja. Jesteśmy prawie na końcu, ale gdyby to było zadanie w klasie, moja ocena w transkrypcji prawdopodobnie byłaby „Nieukończona”.

Ekipa próbuje uczenia maszynowego

Podsumowując: otrzymałem pary nagłówków używanych w artykułach Ars w ciągu ostatnich pięciu lat z danymi na temat zwycięzców testu A/B i ich względnych współczynników klikalności. Następnie poproszono mnie o użycie SageMakera firmy Amazon Web Services do stworzenia algorytmu uczenia maszynowego, aby przewidzieć zwycięzcę w przyszłych parach nagłówków. Skończyło się na tym, że zszedłem do niektórych ślepych uliczek ML, zanim skonsultowałem się z różnymi źródłami Amazon w celu uzyskania bardzo potrzebnej pomocy.

Większość elementów jest na miejscu, aby ukończyć ten projekt. My (a dokładniej, moja linia ratunkowa „zadzwoń do przyjaciela z AWS”) odnieśliśmy pewien sukces z różnymi podejściami do modelowania, chociaż ocena dokładności (nieco na północ od 70 procent) nie była tak ostateczna, jak by się tego chciało. Mam wystarczająco dużo pracy, aby stworzyć (z dodatkowym smarowaniem łokci) wdrożony model i kod, aby uruchomić prognozy na parach nagłówków, jeśli ściągnę ich notatki i użyję algorytmów utworzonych w wyniku.

Ale muszę być szczery: moje wysiłki, aby odtworzyć tę pracę zarówno na moim własnym serwerze lokalnym, jak i na SageMakerze, spełzły na niczym. W trakcie przedzierania się przez zawiłości SageMaker (w tym zapominanie o wyłączeniu notebooków, uruchamianie zautomatyzowanych procesów uczenia się, które, jak mi później doradzono, były przeznaczone dla „klientów korporacyjnych” i inne błędy), spaliłem więcej budżetu AWS niż Byłoby mi wygodnie wydawać na niefinansowaną przygodę. I chociaż rozumiem intelektualnie, jak wdrożyć modele, które powstały w wyniku tego całego zamieszania, wciąż debuguję faktyczne wykonanie tego wdrożenia.

Jeśli nic więcej, ten projekt stał się bardzo ciekawą lekcją na temat wszystkich sposobów, w jakie projekty uczenia maszynowego (i ludzi za nimi stojących) mogą zakończyć się niepowodzeniem. A porażka tym razem zaczęła się od samych danych — a nawet od pytania, które postanowiliśmy z nimi zadać.

Być może nadal uda mi się uzyskać działające rozwiązanie z tego wysiłku. Ale w międzyczasie zamierzam udostępnić zestaw danych na moim GitHubie, z którym pracowałem, aby zapewnić bardziej interaktywny komponent tej przygody. Jeśli jesteś w stanie osiągnąć lepsze wyniki, dołącz do nas w przyszłym tygodniu, aby drwić ze mnie w podsumowaniu na żywo tej serii. (Więcej szczegółów na końcu.)

Klej modelarski

Po kilku iteracjach dostrajania modelu SqueezeBert, którego użyliśmy w naszej przekierowanej próbie uczenia nagłówków, uzyskany zestaw konsekwentnie uzyskiwał 66-procentową dokładność w testach — nieco mniej niż wcześniej sugerowana powyżej 70-procentowa obietnica.

Obejmowało to wysiłki mające na celu zmniejszenie rozmiaru kroków podejmowanych między cyklami uczenia się w celu dostosowania danych wejściowych — hiperparametru „szybkości uczenia się”, który służy do unikania nadmiernego lub niedopasowania modelu. Znacznie zmniejszyliśmy szybkość uczenia się, ponieważ gdy masz małą ilość danych (tak jak my tutaj) i szybkość uczenia się jest ustawiona zbyt wysoko, w zasadzie będzie to robić większe założenia pod względem struktury i składni zestawu danych. Zmniejszenie tego zmusza model do dostosowania tych skoków do małych kroków dziecka. Nasz pierwotny wskaźnik uczenia się został ustawiony na 2×10-5 (2E-5); obniżyliśmy to do 1E-5.

Wypróbowaliśmy również znacznie większy model, który został wstępnie przeszkolony w zakresie dużej ilości tekstu, o nazwie DeBERTa (BERT z ulepszonym dekodowaniem i rozproszoną uwagą). DeBERTa to bardzo wyrafinowany model: 48 warstw transformacji o 1,5 miliarda parametrów.

DeBERTa jest tak fantazyjny, że wyprzedził ludzi w zadaniach związanych z rozumieniem języka naturalnego w benchmarku SuperGLUE — pierwszym modelu, który to zrobił.

Powstały pakiet wdrożeniowy jest również dość duży: 2,9 gigabajta. Przy całej tej dodatkowej wadze uczenia maszynowego wróciliśmy do 72 procent dokładności. Biorąc pod uwagę, że DeBERTa jest podobno lepsza niż człowiek, jeśli chodzi o dostrzeganie znaczenia w tekście, ta dokładność jest, jak powiedział kiedyś słynny operator elektrowni jądrowej, „nie wielka, nie straszna”.

Spirala śmierci wdrożeń

Do tego zegar tykał. Musiałem spróbować uruchomić własną wersję, aby przetestować ją na prawdziwych danych.

Próba lokalnego wdrożenia nie poszła dobrze, szczególnie z punktu widzenia wydajności. Bez dostępnego dobrego GPU zadania PyTorch uruchamiające model i punkt końcowy dosłownie zatrzymały mój system.

Wróciłem więc do prób wdrożenia na SageMaker. Próbowałem samodzielnie uruchomić mniejsze zadanie modelowania SqueezeBert w programie SageMaker, ale szybko stało się to bardziej skomplikowane. Szkolenie wymaga PyTorch, frameworka uczenia maszynowego Python, a także zbioru innych modułów. Ale kiedy zaimportowałem różne moduły Pythona wymagane do mojego jądra SageMaker PyTorch, mimo aktualizacji nie pasowały do ​​siebie.

W rezultacie części kodu, które działały na moim lokalnym serwerze, zawiodły, a moje wysiłki pogrążyły się w gąszczu zależności. Okazało się, że jest to problem z wersją biblioteki NumPy, z wyjątkiem sytuacji, gdy wymusiłem ponowną instalację (pip uninstall numpy, pip install numpy -no-cache-dir), wersja była taka sama, a błąd się powtarzał. W końcu to naprawiłem, ale potem spotkałem się z innym błędem, który mocno powstrzymał mnie przed uruchomieniem zadania szkoleniowego i polecił mi skontaktować się z obsługą klienta:

ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling the CreateTrainingJob operation: The account-level service limit 'ml.p3.2xlarge for training job usage' is 0 Instances, with current utilization of 0 Instances and a request delta of 1 Instances. Please contact AWS support to request an increase for this limit.

Aby w pełni ukończyć ten wysiłek, musiałem zwiększyć limit Amazona – nie było to coś, czego się spodziewałem, kiedy zacząłem się podłączać. To proste rozwiązanie, ale rozwiązywanie konfliktów modułów pochłonęło większość dnia. A czas mi się skończył, gdy próbowałem obejść się, korzystając z gotowego modelu dostarczonego przez moją ekspercką pomoc, wdrażając go jako punkt końcowy SageMaker.

Ten wysiłek jest teraz w dogrywce. W tym miejscu dyskutowałbym o tym, jak model poradził sobie w testach z ostatnimi parami nagłówków – jeśli kiedykolwiek udało mi się doprowadzić model do tego punktu. Jeśli ostatecznie uda mi się to zrobić, umieszczę wynik w komentarzach i notatce na mojej stronie GitHub.

Zostaw komentarz

Maciek Luboński
Z wykształcenia jestem kucharzem , ale to nie przeszkadza mi pisać dla Was tekstów z wielu ciekawych dziedzin , których sam jestem fanem.Piszę dużo i często nie na tak jak trzeba , ale co z tego skoro tak naprawdę liczy się pasja.

Najlepsze recenzje

Video

gallery

Facebook