1. 소개
이 Codelab에서는 텍스트 생성을 위한 Vertex AI 대규모 언어 모델 ( text-bison)을 Python의 클라우드 함수로 사용하여 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. 요구사항
3. 시작하기 전에
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
- Cloud 프로젝트에 결제가 사용 설정되어 있어야 하므로 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
- 필요한 모든 API (Cloud Storage API, Vertex AI API, Cloud Function API, Cloud Logging)가 사용 설정되어 있는지 확인합니다.
- Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다. gcloud 명령어 및 사용법은 문서를 참고하세요.
- Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.
프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.
gcloud config set project <YOUR_PROJECT_ID>
- Cloud Shell 터미널에서 다음 명령어를 실행하여 필요한 모든 API가 사용 설정되어 있는지 확인합니다.
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
- 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개의 파일이 포함되어 있습니다.
- main.py Python 파일은 Vertex AI 텍스트 생성 모델을 사용하여 텍스트 입력의 짧은 요약을 생성하는 간단한 HTTP Cloud 함수를 정의합니다. 이 함수는 텍스트 입력을 매개변수로 사용하고 입력의 짧은 요약을 반환합니다. 이 함수는 생성된 텍스트의 창의성, 다양성, 유창성 등 다양한 매개변수를 사용하여 생성 프로세스를 제어합니다. HTTP Cloud 함수는 요청 객체를 수락하고 모델의 요약을 응답으로 반환합니다.
- requirements.txt 파일에 패키지 종속 항목이 있습니다.
- functions-framework==3.: 함수가 Functions 프레임워크의 최신 기능과 버그 수정을 사용하도록 합니다.
- google-cloud-aiplatform: Vertex AI 텍스트 생성 모델을 사용하려면 필요합니다.
- google-cloud-storage: Google Cloud Storage에 스토리지 버킷을 만드는 데 필요합니다.
- google-cloud-logging: 로그를 생성하는 데 필요합니다.
5. 함수 배포
- Cloud Storage 버킷 2개를 만듭니다.
- 첫 번째 버킷: 요약할 파일을 업로드하는 데 $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
- 이제 함수를 배포할 준비가 되었습니다. 하지만 그 전에 Cloud Storage 버킷의 서비스 계정에 Pub/Sub 게시자 역할이 있는지 확인합니다.
- Google Cloud Storage로 이동하여 왼쪽 창에서 '설정'을 클릭합니다.
- 설정에서 '서비스 계정'을 복사하여 기록합니다.
- Google Cloud 콘솔 탐색 메뉴에서 IAM 및 관리를 엽니다.
- 권한 탭에서 액세스 권한 부여를 클릭하고 새 주 구성원 섹션에 메모한 서비스 계정 ID를 입력하고 역할로 'Pub/Sub 게시자'를 선택한 다음 저장을 클릭합니다.
- 이 소스를 Cloud Functions에 배포합니다. Cloud Shell 터미널에서 다음 명령어를 실행합니다.
- 이 프로젝트의 summarization-gcs-cloudfunction 폴더에 있는지 확인합니다.
- 다음 명령어를 실행합니다.
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
- Google Cloud 콘솔에서 Cloud Functions로 이동합니다.
그러면 방금 만든 vertex-ai-function Cloud 함수가 공개 URL과 함께 표시됩니다. 이 함수를 사용하여 GCS 트리거를 만듭니다.
6. 함수 호출하기
$BUCKET_NAME 버킷에 파일이 업로드되면 GCS 트리거가 함수를 호출합니다. $BUCKET_NAME"-summaries
버킷에는 이름이 같은 요약 파일이 포함되어 있습니다.
시작하기 전에 summarization-gcs-cloudfunction 폴더의 샘플 story.md 파일을 로컬 머신에 저장합니다.
- Google Cloud 콘솔에서 Cloud Storage로 이동합니다.
- 버킷 목록에서
$BUCKET_NAME
버킷을 엽니다. - '파일 업로드'를 클릭하고 story.md 파일을 선택합니다.
summarizeArticles
함수가 트리거되고 파일 콘텐츠 요약을 시작합니다.
- 왼쪽 탐색창에서 '버킷'을 클릭합니다.
$BUCKET_NAME"-summaries
버킷을 엽니다.
story.md 파일에는 파일 콘텐츠의 요약이 포함되어 있습니다.
7. 삭제
이 게시물에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 '삭제'를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
- 프로젝트를 보존하고 일부 리소스만 삭제하려면 Cloud Storage 콘솔로 이동하여 '버킷'을 클릭하고 목록에서 삭제하려는 버킷을 선택한 다음 '삭제'를 클릭합니다.
- Cloud Functions로 이동하여 함수 목록에서 삭제하려는 함수를 선택하고 '삭제'를 클릭하여 Cloud 함수를 삭제할 수도 있습니다.
8. 축하합니다
축하합니다. Vertex AI 텍스트 생성 LLM을 프로그래매틱 방식으로 사용하여 데이터에 대해 텍스트 요약을 실행했습니다. 사용 가능한 모델에 대한 자세한 내용은 Vertex AI LLM 제품 문서를 참고하세요.