1. 소개
이 Codelab에는 Svelte Kit 프레임워크에서 텍스트 생성 ( text-bison) API를 위해 Vertex AI 대규모 언어 모델을 사용하여 텍스트 요약을 수행할 수 있는 웹 앱을 빌드하는 단계를 설명했습니다. 사용되는 서비스 및 기술 스택 목록은 다음과 같습니다.
- Svelte 키트: Svelte를 기반으로 하는 웹 애플리케이션 프레임워크입니다.
- Vertex AI PaLM 2 API: Google AI의 PaLM 2 모델에 대한 액세스를 제공하는 대규모 언어 모델 (LLM) API입니다.
- Cloud Functions: 서버를 관리할 필요 없이 함수를 실행할 수 있는 서버리스 플랫폼입니다.
- Cloud Run: 컨테이너화된 애플리케이션을 실행하기 위한 서버리스 플랫폼입니다.
빌드할 항목
생성할 항목:
- makePalm API를 호출하는 데 사용되는 Python Cloud 함수
- Cloud 함수를 통해 Vertex AI API와 상호작용하는 사용자 인터페이스용 Svelte 웹 애플리케이션
- 위에서 만든 앱을 서버리스 방식으로 배포하는 Cloud Run 서비스
2. 요구사항
3. 시작하기 전에
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
- Cloud 프로젝트에 결제가 사용 설정되어 있어야 하므로 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
- Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용하여 Google Cloud 서비스와 상호작용합니다. gcloud 명령어 및 사용법은 문서를 참조하세요. Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.
프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.
gcloud config set project <YOUR_PROJECT_ID>
- Cloud Shell 터미널에서 다음 명령어를 실행하여 필요한 모든 API가 사용 설정되었는지 확인합니다.
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
- Cloud Shell 터미널에서 다음 명령어를 실행하여 REGION 및 PROJECT_ID의 환경 변수를 만듭니다.
export PROJECT_ID=<your project id>
export REGION=asia-south1
4. Vertex AI API를 호출하는 Cloud 함수
Python Cloud 함수를 만들고 이 함수에서 Vertex AI API를 호출합니다.
새 서비스 계정 만들기
Cloud Shell 터미널에서 다음 명령어를 실행하여 새 서비스 계정을 만듭니다.
gcloud iam service-accounts create vertex-service-acc
프로젝트 및 리소스에 대한 액세스 권한을 제공하려면 서비스 계정에 역할을 부여합니다.
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer
서비스 계정의 역할을 사용하고 서비스 계정을 다른 리소스에 연결할 수 있는 역할을 Google 계정에 부여하려면 USER_EMAIL을 Google 계정 이메일 ID로 바꿉니다.
gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Python 함수 만들기
텍스트용 PaLM 2는 지속적인 대화 없이 하나의 API 응답으로 완료할 수 있는 작업에 적합합니다. 이제 이를 위한 Cloud 함수를 만들어 보겠습니다.
Cloud Shell을 사용하여 새 디렉터리를 만들고 해당 디렉터리로 이동합니다. (이전 섹션에서 연 동일한 터미널 사용):
mkdir vertex-ai-functions
cd vertex-ai-functions
Python Cloud 함수를 작성하기 위한 main.py 파일과 종속 항목을 저장하기 위한 requirements.txt 파일을 만듭니다.
touch main.py requirements.txt
이 Python 파일은 Vertex AI 텍스트 생성 모델을 사용하여 텍스트 입력에 대한 간단한 요약을 생성하는 간단한 HTTP Cloud 함수를 정의합니다. 이 함수는 텍스트 입력을 매개변수로 받고 입력에 대한 간단한 요약을 반환합니다. 이 함수는 생성된 텍스트의 창의성, 다양성, 유창함과 같은 다양한 매개변수를 사용하여 생성 프로세스를 제어합니다. HTTP Cloud 함수는 요청 객체를 수락하고 모델의 요약을 응답으로 반환합니다.
Google Cloud 편집기를 엽니다. 새 Google Cloud 콘솔 탭을 열고 Cloud Shell 활성화 버튼을 클릭한 후 터미널이 로드되면 아래 이미지와 같이 빠르게 편집기 열기 버튼을 클릭하여 열 수 있습니다.
편집기가 열리면 main.py 파일이 표시됩니다. 콘텐츠를 이 저장소 링크의 코드로 교체하세요. 코드에 대한 설명은 코드 주석으로 포함되어 있습니다. 요약하면 이 코드는 Vertex AI를 사용하여 텍스트 입력에 대한 짧은 요약을 생성하는 간결한 방법을 제공합니다.
requirements.txt 파일에는 패키지 종속 항목(functions-framework==3.*)이 있습니다. 함수가 함수 프레임워크의 최신 기능과 버그 수정을 사용하는지 확인합니다. google-cloud-aiplatform: Vertex AI 텍스트 생성 모델을 사용하는 데 필요합니다.
requirements.txt 파일에 다음을 추가합니다.
functions-framework==3.*
google-cloud-aiplatform
Cloud Functions에 배포
이제 이 소스를 Cloud Functions에 배포해 보겠습니다. 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
검색창을 사용하여 Cloud Functions 콘솔로 이동합니다.
그러면 공개 URL로 방금 만든 Vertex-ai-function Cloud 함수가 함수 페이지에 나열됩니다. 이를 사용하여 프런트엔드와 Vertex AI API를 연결합니다. 이 URL을 저장합니다. 기본 Cloud Run 서비스에 인증되지 않은 액세스를 허용해야 할 수도 있습니다. 보안을 위해 인증된 서비스를 사용하는 것이 좋습니다.
5. 프런트엔드 빌드 및 배포
이 앱에는 Google Cloud Functions를 통해 Vertex AI API와 상호작용할 수 있는 프런트엔드 인터페이스가 포함되어 있습니다. 이제 만들어 보겠습니다.
저장소 클론 및 Dockerfile 설정
루트 디렉터리로 이동하여 git 저장소를 클론합니다.
cd ~/
git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git
cd vertex-summarizer-svelte
이 애플리케이션을 실행하려면 Dockerfile에 PUBLIC_FUNCTION_URL 환경 변수를 추가해야 합니다. 이 URL은 이전 섹션에서 만들고 저장한 Cloud 함수 URL입니다.
Cloud Editor를 열고 Dockerfile 파일의 콘텐츠를 수정합니다. PUBLIC_FUNCTION_URL 변수를 Cloud 함수 URL로 바꿉니다.
Cloud Run에 프런트엔드 배포
Google Artifact Registry를 사용하여 Docker 이미지를 빌드하고 저장하겠습니다. Cloud Run은 서버리스 아키텍처에서 컨테이너를 배포하는 데 사용됩니다.
Cloud Shell 터미널에서 아래 명령어를 실행하여 Artifact Registry 저장소를 만듭니다.
gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}
Artifact Registry 저장소 URL의 환경 변수를 만듭니다.
export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image
Docker 컨테이너를 빌드하고 Artifact Registry 저장소 위치로 태그를 지정합니다. Docker 이미지에 저장소 이름으로 태그를 지정하면 docker push 명령어가 이미지를 특정 위치로 푸시하도록 구성됩니다.
docker build . -t ${DOCKER_URL}
이미지를 Artifact Registry로 푸시합니다.
docker push ${DOCKER_URL}
Cloud Run에 Docker 컨테이너를 배포합니다.
gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}
야호!! Vertex Summarizer가 실행 중입니다. URL이 Cloud Shell에 표시되므로 Vertex AI를 살펴보고 즐기세요.
6. 삭제
이 게시물에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.
7. 축하합니다
축하합니다. Vertex AI PaLM2 API를 사용하여 프로그래매틱 방식으로 텍스트 요약을 수행하고, Svelte 웹 앱을 빌드하고, Cloud Functions에 배포했습니다. Vertex AI LLM 제품 문서에서 사용 가능한 모델에 대해 자세히 알아보세요.