Identyfikacja tekstu sparafrazowanego ma wartość biznesową w wielu przypadkach użycia. Na przykład, identyfikując parafrazy zdań, system streszczenia tekstu może usunąć zbędne informacje. Innym zastosowaniem jest identyfikacja splagiatowanych dokumentów. W tym poście dopracowujemy a Przytulanie Twarzy włączony transformator Amazon Sage Maker identyfikować sparafrazowane pary zdań w kilku krokach.
Prawdziwie solidny model może identyfikować parafrazowany tekst, gdy używany język może być zupełnie inny, a także identyfikować różnice, gdy używany język ma duże nakładanie się leksykalne. W tym poście skupimy się na tym drugim aspekcie. W szczególności sprawdzamy, czy możemy wyszkolić model, który może zidentyfikować różnicę między dwoma zdaniami, które w dużym stopniu pokrywają się leksykalnie i mają bardzo różne lub przeciwstawne znaczenia. Na przykład następujące zdania mają dokładnie te same słowa, ale przeciwne znaczenie:
- Leciałem z Nowego Jorku do Paryża
- Leciałem z Paryża do Nowego Jorku
Omówienie rozwiązania
Przeprowadzimy Cię przez następujące etapy wysokiego poziomu:
- Skonfiguruj środowisko.
- Przygotuj dane.
- Tokenizuj zestaw danych.
- Dopracuj model.
- Wdróż model i wykonaj wnioskowanie.
- Oceń wydajność modelu.
Jeśli chcesz pominąć konfigurowanie środowiska, możesz użyć następującego notebooka GitHub i uruchom kod w SageMaker.
Hugging Face i AWS ogłosiły partnerstwo na początku 2022 roku, dzięki któremu szkolenie modeli Hugging Face w SageMaker będzie jeszcze łatwiejsze. Ta funkcjonalność jest dostępna dzięki opracowaniu Hugging Face Kontenery głębokiego uczenia AWS (DLC). Te kontenery obejmują Hugging Face Transformers, Tokenizery i bibliotekę Datasets, która pozwala nam używać tych zasobów do zadań szkoleniowych i wnioskowania. Aby uzyskać listę dostępnych obrazów DLC, zobacz Dostępne obrazy kontenerów do głębokiego uczenia się. Są utrzymywane i regularnie aktualizowane za pomocą poprawek bezpieczeństwa. Możesz znaleźć wiele przykładów, jak trenować modele Hugging Face za pomocą tych DLC i Przytulanie Face Pythona SDK w następującym GitHub repo.
Zbiór danych PAWS
Zdając sobie sprawę z braku wydajnych zestawów danych par zdań, które wykazują duże nakładanie się leksykalne bez bycia parafrazami, oryginał ŁAPY zestaw danych wydany w 2019 r. miał na celu zapewnienie społeczności zajmującej się przetwarzaniem języka naturalnego (NLP) nowego źródła do szkolenia i oceny modeli wykrywania parafraz. Pary zdań PAWS są generowane w dwóch krokach przy użyciu Wikipedia oraz Pary pytań Quora (QQP) zbiór danych. Model języka najpierw zamienia słowa w parze zdań z tym samym Bag of Words (BOW), aby wygenerować parę zdań. Następnie krok tłumaczenia wstecznego generuje parafrazy z dużym nakładaniem się BOW, ale przy użyciu innej kolejności słów. Ostateczny zestaw danych PAWS zawiera łącznie 108,000 656,000 par oznakowanych przez człowieka i XNUMX XNUMX par oznakowanych hałaśliwie.
W tym poście używamy Oznaczenie PAWS-Wiki (końcowe) zestaw danych z Hugging Face. Hugging Face wykonał już dla nas podział danych, co daje 49,000 8,000 par zdań w zbiorze danych szkoleniowych i 1 XNUMX par zdań dla zestawów danych do walidacji i testowania. W poniższym przykładzie przedstawiono dwa przykłady par zdań z zestawu danych szkoleniowych. Etykieta XNUMX wskazuje, że te dwa zdania są wzajemnymi parafrazami.
Zdanie 1 | Zdanie 2 | Etykieta |
Chociaż elementy karoserii obu samochodów są wymienne, nie są do siebie podobne. | Chociaż podobne, części karoserii nie są zamienne w 2 samochodach. | 0 |
Katz urodził się w Szwecji w 1947 roku i przeniósł się do Nowego Jorku w wieku 1. | Katz urodził się w 1947 roku w Szwecji i przeniósł się do Nowego Jorku w wieku jednego roku. | 1 |
Wymagania wstępne
Musisz spełnić następujące wymagania wstępne:
- Zarejestruj konto AWS, jeśli go nie masz. Aby uzyskać więcej informacji, zobacz Skonfiguruj wymagania wstępne Amazon SageMaker.
- Zacznij używać Instancje notatników SageMaker.
- Ustaw prawo AWS Zarządzanie tożsamością i dostępem (IAM) uprawnienia. Aby uzyskać więcej informacji, zobacz Role Mędrca.
Skonfiguruj środowisko
Zanim zaczniemy analizować i przygotowywać nasze dane do dostrajania modelu, musimy skonfigurować nasze środowisko. Zacznijmy od uruchomienia instancji notatnika SageMaker. Wybierz region AWS na swoim koncie AWS i postępuj zgodnie z instrukcjami utwórz instancję notatnika SageMaker. Uruchomienie wystąpienia notatnika może zająć kilka minut.
Gdy wystąpienie notesu jest uruchomione, wybierz conda_pytorch_p38
jako typ jądra. Aby korzystać z zestawu danych Hugging Face, musimy najpierw zainstalować i zaimportować bibliotekę Hugging Face:
Następnie ustalmy sesję SageMaker. Używamy domyślnego Usługa Amazon Simple Storage (Amazon S3) wiadro powiązane z sesją SageMaker do przechowywania zestawu danych PAWS i artefaktów modelu:
Przygotuj dane
Możemy załadować wersję zestawu danych PAWS Hugging Face z jej load_dataset()
Komenda. To wywołanie pobiera i importuje skrypt przetwarzania PAWS Python z repozytorium Hugging Face GitHub, które następnie pobiera zestaw danych PAWS z oryginalnego adresu URL zapisanego w skrypcie i zapisuje dane w pamięci podręcznej jako tabelę Arrow na dysku. Zobacz następujący kod:
Zanim zaczniemy dostrajać nasz wstępnie wytrenowany model BERT, przyjrzyjmy się rozkładowi klas docelowych. W naszym przypadku zestaw danych PAWS ma etykiety binarne (0 oznacza, że para zdań nie jest parafrazą, a 1 oznacza, że tak). Utwórzmy wykres kolumnowy, aby wyświetlić rozkład klas, jak pokazano w poniższym kodzie. Widzimy, że w naszym zbiorze treningowym występuje niewielki problem z nierównowagą klas (56% próbek negatywnych w porównaniu z 44% próbek pozytywnych). Jednak nierównowaga jest na tyle mała, że można uniknąć stosowania technik łagodzenia nierównowagi klasowej.
Tokenizuj zestaw danych
Zanim zaczniemy dostrajać, musimy dokonać tokenizacji naszego zbioru danych. Na początek załóżmy, że chcemy dostroić i ocenić plik roberta-base
transformator. Wybraliśmy roberta-base
ponieważ jest to transformator ogólnego przeznaczenia, który został wstępnie przeszkolony na dużym zbiorze danych w języku angielskim i często wykazywał wysoką wydajność w różnych zadaniach NLP. Model został pierwotnie przedstawiony w artykule RoBERTa: Solidnie zoptymalizowane podejście BERT do szkolenia wstępnego.
Wykonujemy tokenizację na zdaniach z a roberta-base
tokenizer firmy Hugging Face, który wykorzystuje kodowanie par bajtów na poziomie bajtów do dzielenia dokumentu na tokeny. Aby uzyskać więcej informacji na temat tokenizera RoBERTa, zobacz RobertaTokenizer. Ponieważ nasze dane wejściowe są parami zdań, musimy tokenizować oba zdania jednocześnie. Ponieważ większość modeli BERT wymaga, aby dane wejściowe miały stałą tokenizowaną długość wejściową, ustawiamy następujące parametry: max_len=128
i truncation=True
. Zobacz następujący kod:
Ostatnim etapem przetwarzania wstępnego w celu dostrojenia naszego modelu BERT jest konwersja tokenizowanych zestawów danych pociągów i walidacji na tensory PyTorch i przesłanie ich do naszego segmentu S3:
Dostosuj model
Teraz, gdy skończyliśmy przygotowywanie danych, jesteśmy gotowi do dostrojenia naszych wstępnie przeszkolonych roberta-base
model na zadaniu identyfikacji parafrazy. Możemy użyć klasy SageMaker Hugging Face Estimator, aby zainicjować proces dostrajania w dwóch krokach. Pierwszym krokiem jest określenie hiperparametrów treningowych i definicji metryk. Zmienna definicji metryk informuje narzędzie do szacowania przytulania twarzy, jakie typy metryk mają zostać wyodrębnione z dzienników szkolenia modelu. W tym przypadku jesteśmy przede wszystkim zainteresowani wyodrębnianiem metryk zestawu sprawdzania poprawności w każdej epoce szkoleniowej.
Drugim krokiem jest utworzenie instancji kalkulatora przytulania twarzy i rozpoczęcie procesu dostrajania za pomocą narzędzia .fit()
metoda:
Proces dostrajania trwa około 30 minut przy użyciu określonych hiperparametrów.
Wdróż model i wykonaj wnioskowanie
SageMaker oferuje wiele opcji wdrażania w zależności od przypadku użycia. W przypadku trwałych punktów końcowych w czasie rzeczywistym, które wykonują jedną prognozę na raz, zalecamy użycie Usługi hostingu w czasie rzeczywistym SageMaker. Jeśli masz obciążenia, które mają okresy bezczynności między skokami ruchu i mogą tolerować zimne uruchamianie, zalecamy użycie Wnioskowanie bezserwerowe. Bezserwerowe punkty końcowe automatycznie uruchamiają zasoby obliczeniowe i skalują je w zależności od ruchu, eliminując konieczność wybierania typów instancji lub zarządzania zasadami skalowania. Pokazujemy, jak wdrożyć nasz precyzyjnie dostrojony model Hugging Face zarówno w punkcie końcowym wnioskowania w czasie rzeczywistym, jak iw punkcie końcowym wnioskowania bezserwerowego.
Wdróż w punkcie końcowym wnioskowania w czasie rzeczywistym
Możesz wdrożyć obiekt szkoleniowy na hostingu wnioskowania w czasie rzeczywistym w SageMaker za pomocą .deploy()
metoda. Aby uzyskać pełną listę akceptowanych parametrów, patrz Model przytulania twarzy. Aby rozpocząć, wdróżmy model w jednej instancji, przekazując następujące parametry: initial_instance_count
, instance_type
, endpoint_name
. Zobacz następujący kod:
Wdrożenie modelu zajmuje kilka minut. Po wdrożeniu modelu możemy przesłać przykładowe rekordy z niewidocznego zestawu danych testowych do punktu końcowego w celu wnioskowania.
Wdróż w punkcie końcowym wnioskowania bezserwerowego
Aby wdrożyć nasz obiekt szkoleniowy na bezserwerowym punkcie końcowym, musimy najpierw określić bezserwerowy plik konfiguracyjny za pomocą memory_size_in_mb
i max_concurrency
argumenty:
memory_size_in_mb
definiuje całkowity rozmiar pamięci RAM bezserwerowego punktu końcowego; minimalny rozmiar pamięci RAM to 1024 MB (1 GB) i można go skalować do 6144 MB (6 GB). Ogólnie rzecz biorąc, powinieneś dążyć do wybrania rozmiaru pamięci, który jest co najmniej tak duży, jak rozmiar twojego modelu. max_concurrency
określa przydział dla liczby współbieżnych wywołań, które mogą być przetwarzane w tym samym czasie (do 50 równoczesnych wywołań) dla pojedynczego punktu końcowego.
Musimy również podać identyfikator URI obrazu wnioskowania Hugging Face, który można pobrać za pomocą następującego kodu:
Teraz, gdy mamy plik konfiguracyjny bez serwera, możemy utworzyć bezserwerowy punkt końcowy w taki sam sposób, jak nasz punkt końcowy wnioskowania w czasie rzeczywistym, używając .deploy()
metoda:
Punkt końcowy powinien zostać utworzony w ciągu kilku minut.
Wykonaj wnioskowanie o modelu
Aby przewidywać, musimy utworzyć parę zdań, dodając [CLS]
i [SEP]
specjalne tokeny, a następnie przesłać dane wejściowe do punktów końcowych modelu. Składnia wnioskowania w czasie rzeczywistym i wnioskowania bezserwerowego jest taka sama:
W poniższych przykładach widzimy, że model jest w stanie poprawnie sklasyfikować, czy wejściowa para zdań zawiera zdania sparafrazowane.
Poniżej znajduje się przykład wnioskowania w czasie rzeczywistym.
Poniżej znajduje się przykład wnioskowania bezserwerowego.
Oceń wydajność modelu
Aby ocenić model, rozwińmy poprzedni kod i prześlijmy wszystkie 8,000 niewidocznych rekordów testów do punktu końcowego w czasie rzeczywistym:
Następnie możemy utworzyć raport klasyfikacyjny, korzystając z wyodrębnionych prognoz:
Otrzymujemy następujące wyniki testu.
Możemy to zaobserwować roberta-base
ma łączny makrośredni wynik F1 na poziomie 92% i nieco lepiej radzi sobie z wykrywaniem zdań, które są parafrazami. The roberta-base
model działa dobrze, ale dobrą praktyką jest obliczanie wydajności modelu przy użyciu co najmniej jednego innego modelu.
Poniższa tabela porównuje roberta-base
wyniki wydajności na tym samym zestawie testowym w porównaniu z innym precyzyjnie dostrojonym transformatorem o nazwie paraphrase-mpnet-base-v2
, transformator zdań wstępnie przeszkolony specjalnie do zadania identyfikacji parafrazy. Oba modele zostały przeszkolone na instancji ml.p3.8xlarge.
Wyniki pokazują, że roberta-base
ma o 1% wyższy wynik F1 z bardzo podobnymi czasami uczenia i wnioskowania przy użyciu hostingu wnioskowania w czasie rzeczywistym w SageMaker. Różnica w wydajności między modelami jest jednak stosunkowo niewielka, roberta-base
jest ostatecznie zwycięzcą, ponieważ ma nieznacznie lepsze wskaźniki wydajności i prawie identyczne czasy uczenia i wnioskowania.
Detaliczność | Odwołanie | Wynik F1 | Czas szkolenia (płatny) | Czas wnioskowania (pełny zestaw testów) | |
roberta-baza | 0.92 | 0.93 | 0.92 | 18 minut | 2 minut |
parafraza-mpnet- baza-v2 |
0.92 | 0.91 | 0.91 | 17 minut | 2 minut |
Sprzątać
Gdy skończysz korzystać z punktów końcowych modelu, możesz je usunąć, aby uniknąć naliczania przyszłych opłat:
Wnioski
W tym poście omówiliśmy, jak szybko zbudować model identyfikacji parafrazy przy użyciu transformatorów Hugging Face w SageMaker. Dostroiliśmy dwa wstępnie wytrenowane transformatory, roberta-base
i paraphrase-mpnet-base-v2
, używając zbioru danych PAWS (zawierającego pary zdań z dużym nakładaniem się leksykalnym). Zademonstrowaliśmy i omówiliśmy zalety wnioskowania w czasie rzeczywistym w porównaniu z wdrożeniem wnioskowania bezserwerowego, przy czym ta ostatnia jest nową funkcją ukierunkowaną na gwałtowne obciążenia i eliminującą potrzebę zarządzania zasadami skalowania. Na niewidocznym zbiorze testów obejmującym 8,000 rekordów wykazaliśmy, że oba modele uzyskały wynik F1 większy niż 90%.
Aby rozwinąć to rozwiązanie, rozważ następujące kwestie:
- Wypróbuj dostrojenie za pomocą własnego niestandardowego zestawu danych. Jeśli nie masz wystarczającej liczby etykiet szkoleniowych, możesz ocenić wydajność precyzyjnie dostrojonego modelu, takiego jak pokazany w tym poście na niestandardowym zestawie danych testowych.
- Zintegruj ten dopracowany model z aplikacją podrzędną, która wymaga informacji o tym, czy dwa zdania (lub bloki tekstu) są wzajemnymi parafrazami.
Szczęśliwy budynek!
O autorach
Bala Krishnamoorthy’ego jest Data Scientist w AWS Professional Services, gdzie lubi stosować uczenie maszynowe do rozwiązywania problemów biznesowych klientów. Specjalizuje się w przypadkach użycia przetwarzania języka naturalnego i pracował z klientami z branż takich jak oprogramowanie, finanse i opieka zdrowotna. W wolnym czasie lubi próbować nowych potraw, oglądać komedie i filmy dokumentalne, ćwiczyć w Orange Theory i spędzać czas na wodzie (pływanie na desce z wiosłem, nurkowanie z rurką i miejmy nadzieję, że wkrótce nurkowanie).
Iwan Cui jest Data Scientist w AWS Professional Services, gdzie pomaga klientom budować i wdrażać rozwiązania wykorzystujące uczenie maszynowe w AWS. Pracował z klientami z różnych branż, w tym oprogramowania, finansów, farmacji i opieki zdrowotnej. W wolnym czasie lubi czytać, spędzać czas z rodziną i maksymalizować swój portfel giełdowy.
- Coinsmart. Najlepsza w Europie giełda bitcoinów i kryptowalut.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. DARMOWY DOSTĘP.
- CryptoJastrząb. Radar Altcoin. Bezpłatna wersja próbna.
- Źródło: https://aws.amazon.com/blogs/machine-learning/identify-paraphrased-text-with-hugging-face-on-amazon-sagemaker/
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- O nas
- dostęp
- Konto
- osiągnięty
- w poprzek
- Wszystkie kategorie
- już
- Amazonka
- ogłosił
- Inne
- Zastosowanie
- Stosowanie
- w przybliżeniu
- argumenty
- dostępny
- AWS
- jest
- Korzyści
- ciało
- granica
- budować
- biznes
- wezwanie
- zdolny
- samochody
- Etui
- Opłaty
- Dodaj
- Miasto
- klasa
- klasyfikacja
- kod
- Kolumna
- połączony
- społeczność
- całkowicie
- obliczać
- pewność siebie
- Pojemniki
- zawiera
- mógłby
- Stwórz
- stworzony
- zwyczaj
- klient
- Klientów
- dane
- naukowiec danych
- wykazać
- wykazać
- W zależności
- rozwijać
- wdrażane
- Wdrożenie
- detale
- Wykrywanie
- oprogramowania
- różne
- 分配
- dokumentalne
- dokumenty
- pliki do pobrania
- napęd
- wydajny
- Punkt końcowy
- Angielski
- Środowisko
- zapewniają
- oceniać
- przykład
- pokazać
- Rozszerzać
- Twarz
- członków Twojej rodziny
- Cecha
- finansować
- i terminów, a
- lot
- Skupiać
- obserwuj
- następujący
- jedzenie
- Darmowy
- pełny
- funkcjonować
- Funkcjonalność
- przyszłość
- ogólny cel
- ogólnie
- Generować
- GitHub
- dobry
- większy
- opieki zdrowotnej
- wysokość
- pomaga
- tutaj
- Wysoki
- wyższy
- Hosting
- W jaki sposób
- How To
- HTTPS
- Identyfikacja
- zidentyfikować
- identyfikacja
- tożsamość
- obraz
- zawierać
- Włącznie z
- przemysłowa
- Informacja
- wkład
- zainstalować
- zainteresowany
- problem
- IT
- Oferty pracy
- Etykiety
- język
- duży
- uruchomić
- nauka
- Biblioteka
- Lista
- załadować
- maszyna
- uczenie maszynowe
- WYKONUJE
- zarządzanie
- Pamięć
- Metryka
- ML
- model
- modele
- jeszcze
- większość
- wielokrotność
- Naturalny
- ujemny
- I Love New York
- nowy jork
- notatnik
- Oferty
- zoptymalizowane
- Opcje
- zamówienie
- Inne
- własny
- Papier
- Paryż
- Współpraca
- Przechodzący
- Łatki
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- okresy
- Przemysł farmaceutyczny
- punkt
- polityka
- teczka
- pozytywny
- praktyka
- przepowiednia
- Przewidywania
- problemy
- wygląda tak
- przetwarzanie
- profesjonalny
- zapewniać
- pytanie
- Quora
- RAM
- rand
- Czytający
- w czasie rzeczywistym
- polecić
- dokumentacja
- wydany
- raport
- składnica
- wymagać
- Zasób
- Zasoby
- Efekt
- powrót
- run
- bieganie
- Skala
- skalowaniem
- Naukowiec
- bezpieczeństwo
- wybrany
- Bezserwerowe
- Usługi
- zestaw
- ustawienie
- podobny
- Prosty
- Rozmiar
- mały
- Tworzenie
- solidny
- rozwiązanie
- Rozwiązania
- ROZWIĄZANIA
- specjalny
- specjalizuje się
- swoiście
- Spędzanie
- Spin
- dzielić
- początek
- rozpoczęty
- rozpocznie
- stany magazynowe
- przechowywanie
- sklep
- Następnie
- Dostawa
- Szwecja
- system
- cel
- zadania
- Techniki
- mówi
- test
- Przez
- czas
- tokenizacja
- tokenizowany
- Żetony
- Top
- pochodnia
- ruch drogowy
- Trening
- Tłumaczenie
- us
- posługiwać się
- uprawomocnienie
- wartość
- różnorodność
- Zobacz i wysłuchaj
- Woda
- Co
- czy
- Wikipedia
- w ciągu
- bez
- słowa
- pracował
- pracujący
- wypracowanie