1. Wprowadzenie
W ramach tego ćwiczenia w Codelabs znajdziesz instrukcje tworzenia aplikacji internetowej, która umożliwia wykonywanie podsumowań tekstu przy użyciu dużego modelu językowego Vertex AI do generowania tekstu ( text-bison) na platformie Svelte Kit. Lista używanych usług i stosu technologicznego to:
- Svelte Kit: platforma aplikacji internetowych oparta na technologii Svelte.
- Vertex AI PaLM 2 API: interfejs API dużego modelu językowego (LLM), który zapewnia dostęp do modelu PaLM 2 opracowanego przez Google AI.
- Cloud Functions: bezserwerowa platforma do uruchamiania funkcji bez konieczności zarządzania serwerami.
- Cloud Run: bezserwerowa platforma do uruchamiania aplikacji skonteneryzowanych.
Co utworzysz
Tworzenie:
- Do wywoływania interfejsu API MakePalm używana jest funkcja w Pythonie w Cloud Functions
- Aplikacja internetowa firmy Svelte umożliwiająca interakcję z interfejsem Vertex AI API za pomocą funkcji w Cloud Functions
- Usługa Cloud Run do wdrażania bezserwerowej aplikacji utworzonej powyżej
2. Wymagania
3. Zanim zaczniesz
- Na stronie selektora projektów w konsoli Google Cloud wybierz lub utwórz projekt Google Cloud.
- Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
- Do interakcji z usługami Google Cloud będziesz używać Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud. Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji. W prawym górnym rogu konsoli Cloud kliknij Aktywuj Cloud Shell:
Jeśli Twój projekt nie jest skonfigurowany, ustaw go za pomocą tego polecenia:
gcloud config set project <YOUR_PROJECT_ID>
- Sprawdź, czy wszystkie niezbędne interfejsy API są włączone, uruchamiając w terminalu Cloud Shell to polecenie:
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
- Utwórz zmienne środowiskowe dla regionu REGION i IDENTYFIKATOR_PROJEKTU, uruchamiając w terminalu Cloud Shell to polecenie:
export PROJECT_ID=<your project id>
export REGION=asia-south1
4. Funkcja w Cloud Functions do wywoływania interfejsu Vertex AI API
Utworzymy funkcję w Cloud Functions w języku Python i wywołamy interfejs Vertex AI API w tej funkcji.
Tworzę nowe konto usługi
Utwórz nowe konto usługi, wykonując to polecenie w terminalu Cloud Shell.
gcloud iam service-accounts create vertex-service-acc
Aby zapewnić dostęp do projektu i zasobów, przypisz rolę do konta usługi.
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer
Przypisanie do konta Google roli, która pozwala korzystać z ról konta usługi i dołączać je do innych zasobów. Zastąp USER_EMAIL identyfikatorem e-mail swojego konta Google.
gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Tworzenie funkcji w Pythonie
PaLM 2 w przypadku tekstu idealnie nadaje się do zadań, które można wykonać za pomocą jednej odpowiedzi interfejsu API, bez potrzeby ciągłej rozmowy. Utwórzmy dla niej funkcję w Cloud Functions.
Utwórz nowy katalog przy użyciu Cloud Shell i przejdź do niego. (użyj tego samego terminala otwartego w poprzedniej sekcji):
mkdir vertex-ai-functions
cd vertex-ai-functions
Utwórz plik main.py do zapisywania funkcji w Cloud Functions w języku Python i plik requirements.txt do przechowywania zależności.
touch main.py requirements.txt
Ten plik Pythona definiuje prostą funkcję HTTP w Cloud Functions, która wykorzystuje model generowania tekstu Vertex AI do generowania krótkich podsumowań danych wejściowych tekstowych. Funkcja pobiera dane tekstowe jako parametr i zwraca krótkie podsumowanie tych danych. Funkcja ta wykorzystuje różne parametry, takie jak kreatywność, różnorodność i płynność generowanego tekstu, aby kontrolować proces generowania. Funkcja HTTP w Cloud Functions akceptuje obiekt żądania i zwraca w odpowiedzi podsumowanie modelu.
Otwórz edytor Google Cloud. Aby go otworzyć, otwórz nową kartę konsoli Google Cloud i kliknij przycisk AKTYWUJ CLOUD SHELL. Po wczytaniu terminala szybko kliknij przycisk OTWÓRZ EDYTOR, tak jak na ilustracji poniżej:
Po otwarciu edytora powinien być widoczny plik main.py. Zastąp jego zawartość kodem z tego linku do repozytorium. Wyjaśnienie kodu jest zawarte w komentarzach do kodu. Podsumowując, ten kod zapewnia zwięzły sposób generowania krótkich podsumowań danych wejściowych tekstowych za pomocą Vertex AI.
Plik requirements.txt zawiera zależności pakietów: features-framework==3.*: Zapewnia, że funkcja korzysta z najnowszych funkcji i poprawek błędów platformy Functions. google-cloud-aiplatform: wymagany do korzystania z modelu generowania tekstu Vertex AI.
Dodaj to polecenie do pliku requirements.txt:
functions-framework==3.*
google-cloud-aiplatform
Wdrażanie w Cloud Functions
Teraz wdróżmy to źródło w Cloud Functions. Uruchom to polecenie w terminalu Cloud Shell:
gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30
Użyj paska wyszukiwania i otwórz konsolę Cloud Functions:
Spowoduje to wyświetlenie utworzonej właśnie funkcji w Cloud Functions z wykorzystaniem vertex-ai z jej publicznym adresem URL zostanie podana na stronie funkcji. Używamy tego do łączenia interfejsów Frontend i Vertex AI API. Zapisz ten adres URL. Konieczne może być też zezwolenie podstawowej usłudze Cloud Run w przypadku nieuwierzytelnionego dostępu. Ze względów bezpieczeństwa zalecamy używanie uwierzytelnionej usługi.
5. Tworzenie i wdrażanie interfejsu
Ta aplikacja ma interfejs frontendowy do interakcji z naszym interfejsem Vertex AI API za pomocą Google Cloud Functions. Utwórzmy go.
Klonowanie repozytorium i konfiguracja pliku Dockerfile
Przejdź do katalogu głównego i sklonuj repozytorium git.
cd ~/
git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git
cd vertex-summarizer-svelte
Aby uruchomić tę aplikację, musisz dodać zmienną środowiskową PUBLIC_FUNCTION_URL w pliku Dockerfile. Ten URL to adres URL w funkcji w Cloud Functions utworzony i zapisany w poprzedniej sekcji.
Otwórz Cloud Editor i edytuj zawartość pliku Dockerfile. Zastąp zmienną PUBLIC_FUNCTION_URL adresem URL funkcji w Cloud Functions.
Wdrażanie frontendu w Cloud Run
Będziemy korzystać z Google Artifact Registry do utworzenia i przechowywania obrazów Dockera. Do wdrażania kontenerów w architekturze bezserwerowej służy Cloud Run.
Utwórz repozytorium Artifact Registry, uruchamiając w terminalu Cloud Shell to polecenie:
gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}
Utwórz zmienną środowiskową dla adresu URL repozytorium Artifact Registry.
export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image
Utwórz kontener Dockera i oznacz go lokalizacją repozytorium Artifact Registry. Dodanie do obrazu Dockera nazwy repozytorium powoduje, że polecenie push dockera powoduje wypchnięcie obrazu do określonej lokalizacji.
docker build . -t ${DOCKER_URL}
Przekaż obraz do Artifact Registry.
docker push ${DOCKER_URL}
wdrożyć kontener Dockera w Cloud Run,
gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}
Hip hip hurra! Usługa Vertex Summarizer jest już uruchomiona. Adres URL będzie widoczny w Cloud Shell, więc warto skorzystać z Vertex AI🤖.
6. Czyszczenie danych
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym poście, wykonaj te czynności:
- W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
- Na liście projektów wybierz projekt do usunięcia, a potem kliknij Usuń
- W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.
- Jeśli chcesz zachować projekt i usunąć tylko usługę Cloud Run, wykonaj czynności opisane tutaj
- Jeśli chcesz usunąć funkcję w Cloud Functions lub anulować dostęp, możesz to zrobić tutaj.
7. Gratulacje
Gratulacje! Udało Ci się użyć interfejsu API Vertex AI PaLM2 do automatycznego generowania podsumowania tekstu, utworzenia aplikacji internetowej Svelte i wdrożenia jej w Cloud Functions. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji usługi Vertex AI LLM.