PaLM Vertex AI API 및 Google Cloud Storage를 사용한 콘텐츠 요약을 위한 Cloud 함수

1. 소개

이 Codelab에서는 텍스트 생성을 위한 Vertex AI 대규모 언어 모델 ( text-bison)을 Python의 Cloud 함수로 사용하여 Google Cloud Storage에 업로드된 콘텐츠의 요약을 수행하는 단계를 확인할 수 있습니다. 사용되는 서비스 목록은 다음과 같습니다.

  • Vertex AI PaLM API: Google AI의 PaLM Text Bison 모델에 대한 액세스를 제공하는 대규모 언어 모델 (LLM) API입니다.
  • Cloud Functions: 서버를 관리할 필요 없이 함수를 실행할 수 있는 서버리스 플랫폼입니다.
  • Cloud Storage: 비정형 데이터를 저장하기 위한 관리형 서비스입니다.
  • Cloud Logging: 로깅 데이터를 저장, 검색, 분석, 모니터링하고 알림을 제공할 수 있는 완전 관리형 서비스입니다.

빌드할 항목

Palm API를 사용하여 텍스트를 요약하는 Python Cloud 함수로 배포된 애플리케이션을 만듭니다.

2. 요구사항

  • 브라우저(Chrome 또는 Firefox 등)
  • 결제가 사용 설정된 Google Cloud 프로젝트

3. 시작하기 전에

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
  2. Cloud 프로젝트에 결제가 사용 설정되어 있어야 하므로 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
  3. 필요한 모든 API (Cloud Storage API, Vertex AI API, Cloud Function API, Cloud Logging)가 사용 설정되어 있는지 확인합니다.
  4. Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다. gcloud 명령어 및 사용법은 문서를 참조하세요.
  5. Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.

51622c00acec2fa.png

프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.

gcloud config set project <YOUR_PROJECT_ID>
  1. Cloud Shell 터미널에서 다음 명령어를 실행하여 필요한 모든 API가 사용 설정되었는지 확인합니다.
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Cloud Shell 터미널에서 다음 명령어를 실행하여 REGION 및 PROJECT_ID의 환경 변수를 만듭니다.
export PROJECT_ID=<your project id>

export REGION=us-central1

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 API는 지속적인 대화 없이 하나의 API 응답으로 완료할 수 있는 작업에 적합합니다. 이제 이를 위한 Cloud 함수를 만들어 보겠습니다.

Cloud Shell에서 다음 명령어를 실행하여 저장소를 클론하고 프로젝트로 이동합니다 (이전 섹션에서 연 것과 동일한 터미널 사용).

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

이 프로젝트에서 중요한 폴더는 summarization-gcs-cloudfunction입니다.

터미널에서 Cloud Shell 편집기를 열고 방금 github에서 Cloud Shell 머신으로 클론된 프로젝트 폴더의 콘텐츠를 확인합니다.

이 폴더에는 다음 2개의 파일이 있습니다.

  1. main.py Python 파일은 Vertex AI 텍스트 생성 모델을 사용하여 텍스트 입력에 대한 짧은 요약을 생성하는 간단한 HTTP Cloud 함수를 정의합니다. 이 함수는 텍스트 입력을 매개변수로 받고 입력에 대한 간단한 요약을 반환합니다. 이 함수는 생성된 텍스트의 창의성, 다양성, 유창함과 같은 다양한 매개변수를 사용하여 생성 프로세스를 제어합니다. HTTP Cloud 함수는 요청 객체를 수락하고 모델의 요약을 응답으로 반환합니다.
  2. requirements.txt 파일에 패키지 종속 항목이 있습니다.
  • functions-framework==3. 함수가 함수 프레임워크의 최신 기능과 버그 수정을 사용하는지 확인합니다.
  • google-cloud-aiplatform: Vertex AI 텍스트 생성 모델을 사용하는 데 필요합니다.
  • google-cloud-storage: Google Cloud Storage에서 스토리지 버킷을 만드는 데 필요합니다.
  • google-cloud-logging: 로그를 생성하는 데 필요합니다.

5. 함수 배포

  1. 2개의 Cloud Storage 버킷을 만듭니다.
  • 첫 번째 버킷: 요약할 파일을 업로드하는 데 $BUCKET_NAME 버킷이 사용됩니다. 다음과 같이 버킷 이름을 저장할 환경 변수를 만듭니다.
export BUCKET_NAME='Your Bucket Name'
  • 두 번째 버킷: $BUCKET_NAME-summaries 버킷은 요약된 파일을 저장하는 데 사용됩니다.
  • gsutil 명령어를 사용하여 버킷을 만듭니다.
  • gsutil은 명령줄에서 Cloud Storage에 액세스할 수 있는 Python 애플리케이션입니다. gsutil로 다양한 버킷 및 객체 관리 작업을 수행할 수 있습니다.
  • mb는 '버킷 만들기'를 의미합니다.
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. 이제 함수를 배포할 준비가 되었습니다. 하지만 그 전에 Cloud Storage 버킷의 서비스 계정에 Pub/Sub 게시자 역할이 있는지 확인하세요.
  2. Google Cloud Storage로 이동하고 왼쪽 창에서 '설정'을 클릭합니다.

8ce34eb05153abf2.png

  1. '서비스 계정'을 복사합니다. 메모해 두세요.
  2. Google Cloud 콘솔 탐색 메뉴에서 IAM 및 관리자를 엽니다.

c5a7103e90689684.png

  1. '권한' 탭에서 '액세스 권한 부여'를 클릭하고 기록해 둔 서비스 계정 ID를 '새로운 주 구성원' 섹션에서 'Pub/Sub 게시자'로 선택합니다. 저장을 클릭합니다

11c2df774fa740a9.png

  1. 이 소스를 Cloud Functions에 배포합니다. Cloud Shell 터미널에서 다음 명령어를 실행합니다.
  2. 현재 위치가 이 프로젝트의 summarization-gcs-cloudfunction 폴더인지 확인합니다.
  3. 다음 명령어를 실행합니다.
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. Google Cloud 콘솔에서 Cloud Functions로 이동합니다.

그러면 방금 만든 vertex-ai-function Cloud 함수가 공개 URL을 사용하여 나열됩니다. 이 함수를 사용하여 GCS 트리거를 만듭니다.

6. 함수 호출하기

파일이 $BUCKET_NAME 버킷에 업로드되면*, GCS 트리거가 함수를 호출합니다. $BUCKET_NAME"-summaries 버킷에는 이름이 같은 요약된 파일이 포함되어 있습니다.

시작하기 전에 summarization-gcs-cloudfunction 폴더의 샘플 story.md 파일을 로컬 머신에 저장합니다.

  1. Google Cloud 콘솔에서 Cloud Storage로 이동합니다.
  2. 버킷 목록에서 $BUCKET_NAME 버킷을 엽니다.
  3. '파일 업로드'를 클릭하고 story.md 파일을 선택합니다.

summarizeArticles 함수가 트리거되고 파일의 콘텐츠 요약이 시작됩니다.

  1. 왼쪽 탐색창에서 버킷을 클릭합니다.
  2. $BUCKET_NAME"-summaries 버킷을 엽니다.

story.md 파일에는 파일 콘텐츠의 요약이 포함되어 있습니다.

7. 삭제

이 게시물에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
  2. 프로젝트 목록에서 삭제할 프로젝트를 선택한 후 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 '종료'를 클릭하여 프로젝트를 삭제합니다.
  4. 프로젝트를 유지하고 일부 리소스만 삭제하려면 Cloud Storage 콘솔로 이동하여 버킷을 클릭하고 목록에서 삭제할 버킷을 선택하고 삭제를 클릭합니다.
  5. Cloud Functions로 이동하고 함수 목록에서 삭제할 함수를 선택하고 삭제를 클릭하여 Cloud 함수를 삭제할 수도 있습니다.

8. 축하합니다

축하합니다. Vertex AI 텍스트 생성 LLM을 프로그래매틱 방식으로 사용하여 데이터에 대한 텍스트 요약을 수행했습니다. Vertex AI LLM 제품 문서에서 사용 가능한 모델에 대해 자세히 알아보세요.