1. Omówienie
Ten moduł zawiera szczegółowy przewodnik po wdrażaniu serwera aplikacji LIT w Google Cloud Platform (GCP) w celu interakcji z modelami podstawowymi Gemini Vertex AI i hostowanymi przez siebie dużymi modelami językowymi (LLM) innych firm. Znajdziesz w nim też wskazówki dotyczące korzystania z interfejsu LIT do szybkiego debugowania i interpretacji modelu.
W tym module użytkownicy dowiedzą się, jak:
- Skonfiguruj serwer LIT w GCP.
- Połącz serwer LIT z modelami Gemini Vertex AI lub innymi hostowanymi lokalnie LLM.
- Korzystaj z interfejsu LIT, aby analizować, debugować i interpretować prompty, co pozwoli Ci zwiększyć skuteczność modelu i uzyskać więcej statystyk.
Co to jest LIT?
LIT to wizualne, interaktywne narzędzie do analizowania interpretowalności, które obsługuje dane tekstowe, obrazowe i tablicowe. Może być uruchamiany jako samodzielny serwer lub w środowiskach notatnika, takich jak Google Colab, Jupyter i Google Cloud Vertex AI. Biblioteka jest dostępna w PyPI i GitHub.
Pierwotnie służył do rozumienia modeli klasyfikacji i regresji, ale w ostatnich aktualizacjach dodano do niego narzędzia do debugowania promptów LLM, które umożliwiają zbadanie wpływu treści użytkownika, modelu i systemu na zachowanie generowania.
Czym są Vertex AI i baza modeli?
Vertex AI to platforma systemów uczących się, która umożliwia trenowanie i wdrażanie modeli systemów uczących się oraz aplikacji AI oraz dostosowywanie modeli LLM do stosowania w aplikacjach opartych na AI. Vertex AI łączy ze sobą przepływy pracy związane z inżynierią danych, nauką o danych i inżynierią systemów uczących się, umożliwiając zespołom współpracę przy użyciu wspólnego zestawu narzędzi oraz skalowanie aplikacji z korzyścią z Google Cloud.
Vertex Model Garden to biblioteka modeli ML, która ułatwia odkrywanie, testowanie, dostosowywanie i wdrażanie zastrzeżonych modeli Google oraz wybranych modeli i zasobów innych firm.
Co należy zrobić
Do wdrożenia kontenera Dockera z gotowego obrazu LIT użyjesz Cloud Shell i Cloud Run.
Cloud Run to zarządzana platforma obliczeniowa, która umożliwia uruchamianie kontenerów bezpośrednio w ramach skalowalnej infrastruktury Google, w tym na procesorach graficznych.
Zbiór danych
Demonstracja domyślnie korzysta z przykładowego zbioru danych do debugowania promptów LIT, ale możesz też załadować własny za pomocą interfejsu.
Zanim zaczniesz
Aby skorzystać z tego przewodnika, musisz mieć projekt Google Cloud. Możesz utworzyć nowy projekt lub wybrać już istniejący.
2. Uruchom konsolę Google Cloud i Cloud Shell
W tym kroku otworzysz konsolę Google Cloud i skorzystasz z Google Cloud Shell.
2-a. Uruchom konsolę Google Cloud
Uruchom przeglądarkę i otwórz konsolę Google Cloud.
Konsola Google Cloud to zaawansowany, bezpieczny interfejs administracyjny w przeglądarce, który umożliwia szybkie zarządzanie zasobami Google Cloud. To narzędzie DevOps na wynos.
2-b. Uruchom Google Cloud Shell
Cloud Shell to środowisko programistyczne i operacyjne online, które można otworzyć w dowolnym miejscu przy użyciu przeglądarki. Możesz zarządzać zasobami za pomocą terminala online wyposażonego w takie narzędzia jak kubectl czy narzędzie wiersza poleceń gcloud. Możesz też tworzyć, kompilować, debugować i wdrażać aplikacje działające w chmurze przy użyciu edytora Cloud Shell online. Cloud Shell udostępnia środowisko online dla programistów z zainstalowanym zestawem ulubionych narzędzi i 5 GB trwałego miejsca na dane. W kolejnych krokach będziesz używać wiersza poleceń.
Uruchom Google Cloud Shell, klikając ikonę w prawym górnym rogu paska menu (zaznaczoną na niebiesko na poniższym zrzucie ekranu).
U dołu strony powinien pojawić się terminal z powłoką Bash.
2-c. Ustaw projekt Google Cloud
Musisz ustawić identyfikator i region projektu za pomocą polecenia gcloud
.
# Set your GCP Project ID.
gcloud config set project your-project-id
# Set your GCP Project Region.
gcloud config set run/region your-project-region
3. Wdrażanie obrazu Dockera serwera aplikacji LIT za pomocą Cloud Run
3-a. Wdróż aplikację LIT w Cloud Run
Najpierw musisz ustawić najnowszą wersję aplikacji LIT-App jako wersję do wdrożenia.
# Set latest version as your LIT_SERVICE_TAG.
export LIT_SERVICE_TAG=latest
# List all the public LIT GCP App server docker images.
gcloud container images list-tags us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app
Po ustawieniu tagu wersji musisz nadać nazwę usłudze.
# Set your lit service name. While 'lit-app-service' is provided as a placeholder, you can customize the service name based on your preferences.
export LIT_SERVICE_NAME=lit-app-service
Następnie uruchom to polecenie, aby wdrożyć kontener do Cloud Run.
# Use below cmd to deploy the LIT App to Cloud Run.
gcloud run deploy $LIT_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app:$LIT_SERVICE_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--no-allow-unauthenticated
LIT umożliwia też dodanie zbioru danych podczas uruchamiania serwera. Aby to zrobić, ustaw zmienną DATASETS
tak, aby zawierała dane, które chcesz wczytać, używając formatu name:path
, np. data_foo:/bar/data_2024.jsonl
. Format zbioru danych powinien być .jsonl, a każdy rekord powinien zawierać pole prompt
oraz opcjonalne pola target
i source
. Aby załadować kilka zbiorów danych, rozdziel je przecinkami. Jeśli nie zostanie ustawiona, zostanie załadowany próbny zbiór danych do debugowania promptów LIT.
# Set the dataset.
export DATASETS=[DATASETS]
Ustawienie parametru MAX_EXAMPLES pozwala określić maksymalną liczbę przykładów do załadowania z każdego zbioru do oceny.
# Set the max examples.
export MAX_EXAMPLES=[MAX_EXAMPLES]
Następnie w komendzie wdrażania możesz dodać
--set-env-vars "DATASETS=$DATASETS" \
--set-env-vars "MAX_EXAMPLES=$MAX_EXAMPLES" \
3-b. Wyświetlanie usługi aplikacji LIT
Po utworzeniu serwera aplikacji LIT możesz znaleźć tę usługę w sekcji Cloud Run w Cloud Console.
Wybierz utworzoną właśnie usługę aplikacji LIT. Upewnij się, że nazwa usługi jest taka sama jak LIT_SERVICE_NAME
.
Adres URL usługi znajdziesz, klikając wdrożoną właśnie usługę.
Następnie powinieneś/powinnaś zobaczyć interfejs LIT. Jeśli pojawi się błąd, zapoznaj się z sekcją Rozwiązywanie problemów.
W sekcji LOGS możesz sprawdzać aktywność, wyświetlać komunikaty o błędach i śledzić postęp wdrożenia.
Dane usługi możesz wyświetlić w sekcji DANE.
3-c. Wczytaj zbiory danych
W interfejsie LIT kliknij opcję Configure
, a następnie Dataset
. Załaduj zbiór danych, podając jego nazwę i adres URL. Format zbioru danych powinien być .jsonl, a każdy rekord powinien zawierać pole prompt
oraz opcjonalne pola target
i source
.
4. Przygotowywanie modeli Gemini w bazie modeli Vertex AI
Modele podstawowe Gemini od Google są dostępne w interfejsie Vertex AI API. LIT udostępnia opakowanie modelu VertexAIModelGarden
, aby można było używać tych modeli do generowania. Wystarczy, że określisz żądaną wersję (np. „gemini-1.5-pro-001”) za pomocą parametru nazwy modelu. Główną zaletą korzystania z tych modeli jest to, że nie wymagają one dodatkowego wysiłku na potrzeby wdrożenia. Domyślnie masz natychmiastowy dostęp do modeli takich jak Gemini 1.0 Pro i Gemini 1.5 Pro w GCP, co eliminuje potrzebę dodatkowych czynności konfiguracyjnych.
4-a. Przyznaj uprawnienia Vertex AI
Aby wysyłać zapytania do Gemini w GCP, musisz przyznać Vertex AI uprawnienia do konta usługi. Sprawdź, czy nazwa konta usługi to Default compute service account
. Skopiuj adres e-mail konta usługi.
Dodaj adres e-mail konta usługi jako podmiot zabezpieczeń z rolą Vertex AI User
na liście dozwolonych uprawnień uprawnień IAM.
4-b. Wczytaj modele Gemini
Postępując zgodnie z podanymi niżej instrukcjami, załaduj modele Gemini i dostosuj ich parametry.
- Kliknij opcję
Configure
w interfejsie LIT.
- Kliknij opcję
- W opcji
Select a base model
wybierz opcjęgemini
.
- W opcji
- Musisz nadać nazwę modelowi w sekcji
new_name
.
- Musisz nadać nazwę modelowi w sekcji
- Wpisz wybrane modele Gemini jako
model_name
.
- Wpisz wybrane modele Gemini jako
- Kliknij
Load Model
.
- Kliknij
- Kliknij
Submit
.
- Kliknij
5. Wdrażanie serwera modelu LLM hostowanego samodzielnie w GCP
Samodzielne hostowanie LLM z obrazem Dockera serwera modelu LIT umożliwia korzystanie z funkcji saliencji i tokenizacji, aby uzyskać lepszy wgląd w zachowanie modelu. Obraz serwera modelu działa z modelami KerasNLP lub Hugging Face Transformers, w tym z wagami dostarczanymi przez bibliotekę i hostowanymi lokalnie, np. w Google Cloud Storage.
5-a. Skonfiguruj modele
Każdy kontener wczytuje jeden model skonfigurowany za pomocą zmiennych środowiskowych.
Musisz określić modele do załadowania, ustawiając MODEL_CONFIG. Format powinien być name:path
, na przykład model_foo:model_foo_path
. Ścieżka może być adresem URL, ścieżką lokalnego pliku lub nazwą wstępnie ustawionego frameworku do deep learningu (więcej informacji znajdziesz w tabeli poniżej). Ten serwer jest testowany przy użyciu Gemma, GPT2, Llama i Mistral przy wszystkich obsługiwanych wartościach DL_FRAMEWORK
. Inne modele powinny działać, ale może być konieczne wprowadzenie pewnych korekt.
# Set models you want to load. While 'gemma2b is given as a placeholder, you can load your preferred model by following the instructions above.
export MODEL_CONFIG=gemma2b:gemma_2b_en
Dodatkowo serwer modelu LIT umożliwia konfigurowanie różnych zmiennych środowiskowych za pomocą podanego niżej polecenia. Szczegóły znajdziesz w tabeli. Pamiętaj, że każdą zmienną trzeba ustawić osobno.
# Customize the variable value as needed.
export [VARIABLE]=[VALUE]
Zmienna | Wartości | Opis |
DL_FRAMEWORK |
| Biblioteka modelowania używana do wczytywania wag modelu do określonego środowiska uruchomieniowego. Domyślna wartość to |
DL_RUNTIME |
| Platforma backendowa do głębokiego uczenia się, na której działa model. Wszystkie modele wczytane przez ten serwer będą używać tego samego backendu, a niezgodności spowodują błędy. Domyślna wartość to |
PRECYZJA |
| precyzję zmiennoprzecinkową dla modeli LLM. Domyślna wartość to |
BATCH_SIZE | Dodatnie liczby całkowite | Liczba przykładów do przetworzenia na jeden wsad. Domyślna wartość to |
SEQUENCE_LENGTH | Dodatnie liczby całkowite | Maksymalna długość sekwencji promptu wejściowego wraz z wygenerowanym tekstem. Domyślna wartość to |
5-b. Wdróż serwer modelu w Cloud Run
Najpierw musisz ustawić najnowszą wersję serwera Model Server jako wersję do wdrożenia.
# Set latest as MODEL_VERSION_TAG.
export MODEL_VERSION_TAG=latest
# List all the public LIT GCP model server docker images.
gcloud container images list-tags us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server
Po ustawieniu tagu wersji musisz nadać nazwę serwerowi model-server.
# Set your Service name.
export MODEL_SERVICE_NAME='gemma2b-model-server'
Następnie uruchom to polecenie, aby wdrożyć kontener do Cloud Run. Jeśli nie skonfigurujesz zmiennych środowiskowych, zostaną zastosowane wartości domyślne. Ponieważ większość modeli LLM wymaga drogich zasobów obliczeniowych, zdecydowanie zalecamy używanie procesora graficznego. Jeśli wolisz uruchamiać model tylko na procesorze (co sprawdza się w przypadku małych modeli, takich jak GPT2), możesz usunąć powiązane argumenty --gpu 1 --gpu-type nvidia-l4 --max-instances 7
.
# Deploy the model service container.
gcloud beta run deploy $MODEL_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server:$MODEL_VERSION_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 7 \
--set-env-vars "MODEL_CONFIG=$MODEL_CONFIG" \
--no-allow-unauthenticated
Możesz też dostosować zmienne środowiskowe, dodając te polecenia. Uwzględniaj tylko zmienne środowiskowe, które są potrzebne do realizacji Twoich konkretnych potrzeb.
--set-env-vars "DL_FRAMEWORK=$DL_FRAMEWORK" \
--set-env-vars "DL_RUNTIME=$DL_RUNTIME" \
--set-env-vars "PRECISION=$PRECISION" \
--set-env-vars "BATCH_SIZE=$BATCH_SIZE" \
--set-env-vars "SEQUENCE_LENGTH=$SEQUENCE_LENGTH" \
Dostęp do niektórych modeli może wymagać dodatkowych zmiennych środowiskowych. W razie potrzeby zapoznaj się z instrukcjami z Kaggle Hub (używanego do modeli KerasNLP) i Hugging Face Hub.
5-c. Dostęp do serwera modelu
Po utworzeniu serwera modelu uruchomioną usługę można znaleźć w sekcji Cloud Run w projekcie GCP.
Wybierz utworzony przez siebie serwer modeli. Upewnij się, że nazwa usługi jest taka sama jak MODEL_SERVICE_NAME
.
Adres URL usługi znajdziesz, klikając właśnie wdrożony model usługi.
W sekcji LOGS możesz monitorować aktywność, wyświetlać komunikaty o błędach i śledzić postęp wdrożenia.
Dane usługi możesz wyświetlić w sekcji DANE.
5-d: wczytywanie modeli hostowanych lokalnie
Jeśli w kroku 3 użyjesz serwera proxy dla serwera LIT (patrz sekcja Rozwiązywanie problemów), musisz uzyskać token tożsamości GCP, wykonując to polecenie.
# Find your GCP identity token.
gcloud auth print-identity-token
Poniższe czynności pozwolą Ci załadować hostowane samodzielnie modele i dostosować ich parametry.
- Kliknij opcję
Configure
w interfejsie LIT. - W opcji
Select a base model
wybierz opcjęLLM (self hosted)
. - Musisz nadać nazwę modelowi w sekcji
new_name
. - W polu
base_url
wpisz adres URL serwera modelu. - Wpisz uzyskany token tożsamości w polu
identity_token
, jeśli używasz serwera aplikacji LIT jako serwera proxy (patrz kroki 3 i 7). W przeciwnym razie pozostaw je puste. - Kliknij
Load Model
. - Kliknij
Submit
.
6. Interakcje z zespołem pomocy Google Cloud
LIT oferuje bogaty zestaw funkcji, które ułatwiają debugowanie i rozumienie zachowań modelu. Możesz wykonać proste zapytanie do modelu, wpisując tekst w polu i sprawdzając prognozy modelu, lub dokładniej przyjrzeć się modelom za pomocą zestawu zaawansowanych funkcji LIT, takich jak:
6-a: Przesyłanie zapytania do modelu za pomocą interfejsu LIT
Po wczytaniu modelu i zbioru danych LIT automatycznie wysyła zapytanie do zbioru danych. Możesz wyświetlić odpowiedź każdego modelu, wybierając ją w kolumnach.
6-b. Użyj techniki wyróżniania sekwencji
Obecnie technika sekwencyjnego wyróżniania w ramach interfejsu Language Identification Tool obsługuje tylko modele hostowane lokalnie.
Wyraźność sekwencji to narzędzie wizualne, które ułatwia debugowanie promptów LLM, ponieważ wyróżnia te części promptu, które są najważniejsze dla danego wyjścia. Więcej informacji o tej funkcji znajdziesz w samouczku.
Aby uzyskać dostęp do wyników dotyczącego znaczenia, kliknij dowolne dane wejściowe lub wyjściowe w promptach lub odpowiedziach. Wyniki dotyczące znaczenia zostaną wyświetlone.
6-c. Ręczne edytowanie promptu i miejsca docelowego
LIT umożliwia ręczne edytowanie wartości prompt
i target
dla istniejącego punktu danych. Kliknięcie Add
spowoduje dodanie nowego źródła danych do zbioru danych.
6-d: Porównaj prompty obok siebie
LIT umożliwia porównywanie promptów obok siebie w przypadku oryginalnych i zmienionych przykładów. Możesz ręcznie edytować przykład i wyświetlić wynik przewidywania oraz analizę wyrazistości sekwencji zarówno w wersji oryginalnej, jak i zmienionej. Możesz zmodyfikować prompt dla każdego punktu danych, a LIT wygeneruje odpowiednią odpowiedź, wysyłając zapytanie do modelu.
6-e: Porównaj ze sobą kilka modeli
Interakcja z modelem umożliwia porównywanie modeli na podstawie pojedynczych przykładów generowania i oceny tekstu, a także zbiorczych przykładów pod kątem określonych danych. Wysyłając zapytanie do różnych załadowanych modeli, możesz łatwo porównać różnice w ich odpowiedziach.
6-f: Automatyczne generatory kontrafaktycznych
Możesz używać automatycznych generatorów kontrafaktualnych, aby tworzyć alternatywne dane wejściowe i od razu sprawdzać, jak zachowuje się Twój model.
6-g. Ocenianie skuteczności modelu
Możesz oceniać skuteczność modelu za pomocą danych (obecnie obsługujemy wyniki BLEU i ROUGE w przypadku generowania tekstu) w całym zbiorze danych lub w dowolnych podzbiorach przefiltrowanych lub wybranych przykładów.
7. Rozwiązywanie problemów
7-a: Możliwe problemy z dostępem i ich rozwiązania
Podczas wdrażania do Cloud Run jest stosowany parametr --no-allow-unauthenticated
, więc możesz napotkać błędy dostępu, jak pokazano poniżej.
Dostęp do usługi aplikacji LIT można uzyskać na 2 sposoby.
1. Pośrednictwo w usługach lokalnych
Możesz przekierować usługę do hosta lokalnego za pomocą podanego niżej polecenia.
# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME
Następnie powinieneś mieć dostęp do serwera LIT, klikając link do usługi proxy.
2. Bezpośrednie uwierzytelnianie użytkowników
Aby uwierzytelnić użytkowników i umożliwić im bezpośredni dostęp do usługi aplikacji LIT, kliknij ten link. Dzięki temu możesz też przyznać dostęp do usługi grupie użytkowników. W przypadku projektowania z udziałem wielu osób jest to skuteczniejsza opcja.
7-b: sprawdzanie, czy serwer modelu został uruchomiony
Aby sprawdzić, czy serwer modelu został uruchomiony, możesz wysłać do niego zapytanie. Serwer modelu udostępnia 3 punkty końcowe: predict
, tokenize
i salience
. Pamiętaj, aby w prośbie podać pola prompt
i target
.
# Query the model server predict endpoint.
curl -X POST http://YOUR_MODEL_SERVER_URL/predict -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'
# Query the model server tokenize endpoint.
curl -X POST http://YOUR_MODEL_SERVER_URL/tokenize -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'
# Query the model server salience endpoint.
curl -X POST http://YOUR_MODEL_SERVER_URL/salience -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'
Jeśli napotkasz problem z dostępem, zapoznaj się z sekcją 7a powyżej.
8. Gratulacje
Gratulujemy ukończenia ćwiczeń z programowania. Czas na odpoczynek.
Czyszczenie danych
Aby wyczyścić laboratorium, usuń wszystkie usługi Google Cloud utworzone na potrzeby laboratorium. Użyj Google Cloud Shell, aby uruchomić te polecenia.
Jeśli połączenie z Google Cloud zostanie utracone z powodu braku aktywności, zresetuj zmienne, wykonując czynności opisane powyżej.
# Delete the LIT App Service.
gcloud run services delete $LIT_SERVICE_NAME
Jeśli uruchomiono serwer modelu, musisz też usunąć serwer modelu.
# Delete the Model Service.
gcloud run services delete $MODEL_SERVICE_NAME
Więcej informacji
Aby dowiedzieć się więcej o funkcjach narzędzia LIT, zapoznaj się z tymi materiałami:
- Gemma: link
- Baza kodu źródłowego open source LIT: repozytorium Git
- Dokument LIT: ArXiv
- Dokument na temat debugowania promptów LIT: ArXiv
- Demonstracja funkcji LIT w filmie: YouTube
- Demo debugowania prompta LIT: YouTube
- Zestaw narzędzi odpowiedzialnej generatywnej AI: link
Nawiązanie kontaktu,
Jeśli masz pytania lub problemy związane z tym Codelab, skontaktuj się z nami na GitHub.
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Uznanie autorstwa 4.0.