Modele językowe Wiki40B

Zobacz na TensorFlow.org Uruchom w Google Colab Zobacz na GitHub Pobierz notatnik Zobacz modele piasty TF

Generowanie Wikipedia podobny tekst przy użyciu modeli językowych Wiki40B z TensorFlow Hub !

Ten notatnik ilustruje, jak:

  • Załaduj 41 mono i 2 modele językowe wielojęzyczne, które są częścią kolekcji Wiki40b-LM na TF-Hub
  • Użyj modeli, aby uzyskać zakłopotanie, aktywacje poszczególnych warstw i osadzania słów dla danego fragmentu tekstu
  • Generuj tekst token po tokenie z fragmentu tekstu źródłowego

Modele językowe są przeszkoleni na nowo opublikowany, oczyszczone-up Wiki40B zbiór danych dostępny na TensorFlow zbiorów danych. Konfiguracja Szkolenie oparte jest na papierze „Wiki-40B: Wielojęzyczny Język modelu zestawu danych” .

Ustawiać

Instalowanie zależności

Import

Wybierz język

Załóżmy, wybrać język modelu załadować z TF-Hub i długość tekstu, który zostanie wygenerowany.

Using the https://tfhub.dev/google/wiki40b-lm-en/1 model to generate sequences of max length 20.

Zbuduj model

Dobrze, że teraz mamy skonfigurowany który wstępnie przeszkoleni modelu do użytku, niech go skonfigurować, aby wygenerować tekst do max_gen_len . Będziemy musieli załadować model języka z TF-Hub, wstawić fragment tekstu startowego, a następnie w miarę ich generowania w sposób iteracyjny wprowadzać tokeny.

Załaduj elementy modelu języka

2021-11-05 13:33:19.950673: W tensorflow/core/common_runtime/graph_constructor.cc:1511] Importing a graph with a lower producer version 359 into an existing graph with producer version 808. Shape inference will have run different parts of the graph with different producer versions.

Skonstruuj wykres generacji na token

Zbudować statycznie rozwinięty wykres dla max_gen_len tokenów

Wygeneruj tekst

Wygenerujmy jakiś tekst! Będziemy ustawić tekst seed skłonić model językowy.

Można użyć jednego z predefiniowanych nasion lub ewentualnie wprowadzić własne. Ten tekst zostanie wykorzystany jako źródło modelu językowego, aby pomóc podpowiedzieć modelowi językowemu, co ma wygenerować w następnej kolejności.

Możesz użyć następujących specjalnych tokenów poprzedzających specjalne części wygenerowanego artykułu. Zastosowanie _START_ARTICLE_ aby wskazać początek artykułu _START_SECTION_ aby wskazać początek sekcji, a _START_PARAGRAPH_ wygenerować tekst w artykule

Predefiniowane nasiona

Wprowadź własne ziarno (opcjonalnie).

Generating text from seed:

_START_ARTICLE_
1882 Prince Edward Island general election
_START_PARAGRAPH_
The 1882 Prince Edward Island election was held on May 8, 1882 to elect members of the House of Assembly of the province of Prince Edward Island, Canada.

Zainicjuj sesję.

Generuj tekst

_START_SECTION_ Candidates _START_PARAGRAPH_ Thirteen members of the House of Assembly were all members nominations. Among

Możemy również przyjrzeć się innym wynikom modelu - zakłopotaniu, identyfikatorom tokenów, aktywacjom pośrednim i embeddingom

ppl_result
array([23.507753], dtype=float32)
token_ids_result
array([[   8,    3, 6794, 1579, 1582,  721,  489,  448,    8,    5,   26,
        6794, 1579, 1582,  721,  448,   17,  245,   22,  166, 2928, 6794,
          16, 7690,  384,   11,    7,  402,   11, 1172,   11,    7, 2115,
          11, 1579, 1582,  721,    9,  646,   10]], dtype=int32)
activations_result.shape
(12, 1, 39, 768)
embeddings_result
array([[[ 0.12262525,  5.548009  ,  1.4743135 , ...,  2.4388404 ,
         -2.2788858 ,  2.172028  ],
        [-2.3905468 , -0.97108954, -1.5513545 , ...,  8.458472  ,
         -2.8723319 ,  0.6534524 ],
        [-0.83790785,  0.41630274, -0.8740793 , ...,  1.6446769 ,
         -0.9074106 ,  0.3339265 ],
        ...,
        [-0.8054745 , -1.2495526 ,  2.6232922 , ...,  2.893288  ,
         -0.91287214, -1.1259722 ],
        [ 0.64944506,  3.3696785 ,  0.09543293, ..., -0.7839227 ,
         -1.3573489 ,  1.862214  ],
        [-1.2970612 ,  0.5961366 ,  3.3531897 , ...,  3.2853985 ,
         -1.6212384 ,  0.30257902]]], dtype=float32)