BigQuery DataFrames를 사용하여 Python에서 멀티모달 데이터 분석
이 튜토리얼에서는 BigQuery DataFrames 클래스와 메서드를 사용하여 Python 노트북에서 다중 모달 데이터를 분석하는 방법을 보여줍니다.
이 튜토리얼에서는 공개 Cymbal 애완 동물 상점 데이터 세트의 제품 카탈로그를 사용합니다.
이 튜토리얼에서 다룬 작업으로 이미 채워진 노트북을 업로드하려면 BigFrames 멀티모달 DataFrame을 참고하세요.
목표
- 멀티모달 DataFrame을 만듭니다.
- DataFrame에서 구조화된 데이터와 비정형 데이터를 결합합니다.
- 이미지 변환
- 이미지 데이터를 기반으로 텍스트 및 임베딩을 생성합니다.
- 추가 분석을 위해 PDF를 청크 처리합니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Trusted Cloud by S3NS구성요소를 사용합니다.
- BigQuery: you incur costs for the data that you process in BigQuery.
- BigQuery Python UDFs: you incur costs for using BigQuery DataFrames image transformation and chunk PDF methods.
- Cloud Storage: you incur costs for the objects stored in Cloud Storage.
- Vertex AI: you incur costs for calls to Vertex AI models.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용합니다.
자세한 내용은 다음 가격 책정 페이지를 참고하세요.
시작하기 전에
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Make sure that billing is enabled for your Trusted Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Storage, and Vertex AI APIs.
필요한 역할
이 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음의 IAM 역할을 부여해 달라고 요청하세요.
-
연결 만들기:
BigQuery 연결 관리자 (
roles/bigquery.connectionAdmin
) -
연결의 서비스 계정에 권한 부여:
프로젝트 IAM 관리자 (
roles/resourcemanager.projectIamAdmin
) -
Cloud Storage 버킷 만들기:
스토리지 관리자 (
roles/storage.admin
) -
BigQuery 작업 실행:
BigQuery 사용자 (
roles/bigquery.user
) -
Python UDF 만들기 및 호출하기:
BigQuery 데이터 편집자 (
roles/bigquery.dataEditor
) -
Cloud Storage 객체를 읽고 수정할 수 있는 URL을 만듭니다.
BigQuery ObjectRef 관리자 (
roles/bigquery.objectRefAdmin
) -
노트북 사용:
-
BigQuery 읽기 세션 사용자 (
roles/bigquery.readSessionUser
) -
노트북 런타임 사용자 (
roles/aiplatform.notebookRuntimeUser
) -
노트북 런타임 사용자 (
roles/aiplatform.notebookRuntimeUser
) -
코드 생성자 (
roles/dataform.codeCreator
)
-
BigQuery 읽기 세션 사용자 (
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
설정
이 섹션에서는 이 튜토리얼에서 사용되는 Cloud Storage 버킷, 연결, 노트북을 만듭니다.
버킷 만들기
변환된 객체를 저장할 Cloud Storage 버킷을 만듭니다.
Trusted Cloud 콘솔에서 버킷 페이지로 이동합니다.
만들기를 클릭합니다.
버킷 만들기 페이지의 시작하기 섹션에서 버킷 이름 요구사항을 충족하는 전역적으로 고유한 이름을 입력합니다.
만들기를 클릭합니다.
연결 만들기
클라우드 리소스 연결을 만들고 연결의 서비스 계정을 가져옵니다. BigQuery는 이 연결을 사용하여 Cloud Storage의 객체에 액세스합니다.
BigQuery 페이지로 이동합니다.
탐색기 창에서
데이터 추가를 클릭합니다.데이터 추가 대화상자가 열립니다.
필터링 기준 창의 데이터 소스 유형 섹션에서 비즈니스 애플리케이션을 선택합니다.
또는 데이터 소스 검색 필드에
Vertex AI
를 입력할 수도 있습니다.추천 데이터 소스 섹션에서 Vertex AI를 클릭합니다.
Vertex AI 모델: BigQuery 제휴 솔루션 카드를 클릭합니다.
연결 유형 목록에서 Vertex AI 원격 모델, 원격 함수, BigLake (Cloud 리소스)를 선택합니다.
연결 ID 필드에
bigframes-default-connection
을 입력합니다.연결 만들기를 클릭합니다.
연결로 이동을 클릭합니다.
연결 정보 창에서 나중의 단계에 사용할 서비스 계정 ID를 복사합니다.
연결의 서비스 계정에 권한 부여
연결의 서비스 계정에 Cloud Storage 및 Vertex AI에 액세스하는 데 필요한 역할을 부여합니다. 시작하기 전에 섹션에서 만들었거나 선택한 것과 동일한 프로젝트에서 이러한 역할을 부여해야 합니다.
역할을 부여하려면 다음 단계를 따르세요.
IAM 및 관리자 페이지로 이동합니다.
액세스 권한 부여를 클릭합니다.
새 주 구성원 필드에 앞에서 복사한 서비스 계정 ID를 입력합니다.
역할 선택 필드에서 Cloud Storage를 선택한 후 스토리지 객체 사용자를 선택합니다.
다른 역할 추가를 클릭합니다.
역할 선택 필드에서 Vertex AI를 선택한 후 Vertex AI 사용자를 선택합니다.
저장을 클릭합니다.
노트북 만들기
Python 코드를 실행할 수 있는 노트북을 만듭니다.
BigQuery 페이지로 이동합니다.
편집기 창의 탭 표시줄에서
SQL 쿼리 옆에 있는 드롭다운 화살표를 클릭한 다음 노트북을 클릭합니다.템플릿으로 시작 창에서 닫기를 클릭합니다.
연결 > 런타임에 연결을 클릭합니다.
기존 런타임이 있는 경우 기본 설정을 수락하고 연결을 클릭합니다. 기존 런타임이 없는 경우 새 런타임 만들기를 선택한 다음 연결을 클릭합니다.
런타임이 설정되는 데 몇 분 정도 걸릴 수 있습니다.
멀티모달 DataFrame 만들기
Session
클래스의 from_glob_path
메서드를 사용하여 정형 데이터와 비정형 데이터를 통합하는 멀티모달 DataFrame을 만듭니다.
- 노트북에서 코드 셀을 만들고 다음 코드를 셀에 복사합니다.
실행을 클릭합니다.
df_image
의 마지막 호출은 DataFrame에 추가된 이미지를 반환합니다. 또는.display
메서드를 호출할 수 있습니다.
DataFrame에서 정형 데이터와 비정형 데이터 결합
멀티모달 DataFrame에서 텍스트 데이터와 이미지 데이터를 결합합니다.
- 노트북에서 코드 셀을 만들고 다음 코드를 셀에 복사합니다.
실행
을 클릭합니다.이 코드는 DataFrame 데이터를 반환합니다.
노트북에서 코드 셀을 만들고 다음 코드를 복사하여 붙여넣습니다.
실행
을 클릭합니다.이 코드는
author
열 값이alice
인 DataFrame의 이미지를 반환합니다.
이미지 변환 실행
Series.BlobAccessor
클래스의 다음 메서드를 사용하여 이미지 데이터를 변환합니다.
변환된 이미지가 Cloud Storage에 기록됩니다.
이미지 변환:
- 노트북에서 코드 셀을 만들고 다음 코드를 셀에 복사합니다.
{dst_bucket}
에 대한 모든 참조를 만든 버킷을 참조하도록gs://mybucket
형식으로 업데이트합니다.실행
을 클릭합니다.이 코드는 원본 이미지와 모든 변환을 반환합니다.
텍스트 생성
GeminiTextGenerator
클래스의 predict
메서드를 사용하여 멀티모달 데이터에서 텍스트를 생성합니다.
- 노트북에서 코드 셀을 만들고 다음 코드를 셀에 복사합니다.
실행
을 클릭합니다.이 코드는
df_image
의 처음 두 이미지와 두 이미지에 대한what item is it?
질문에 대한 응답으로 생성된 텍스트를 반환합니다.노트북에서 코드 셀을 만들고 다음 코드를 복사하여 붙여넣습니다.
실행
을 클릭합니다.이 코드는
df_image
의 처음 두 이미지를 반환하며, 첫 번째 이미지의 경우 질문what item is it?
에 대한 응답으로 생성된 텍스트를, 두 번째 이미지의 경우 질문what color is the picture?
에 대한 응답으로 생성된 텍스트를 포함합니다.
임베딩 생성
MultimodalEmbeddingGenerator
클래스의 predict
메서드를 사용하여 멀티모달 데이터의 임베딩을 생성합니다.
- 노트북에서 코드 셀을 만들고 다음 코드를 셀에 복사합니다.
실행
을 클릭합니다.이 코드는 임베딩 모델 호출에 의해 생성된 임베딩을 반환합니다.
PDF 청크
Series.BlobAccessor
클래스의 pdf_chunk
메서드를 사용하여 PDF 객체를 청크 처리합니다.
- 노트북에서 코드 셀을 만들고 다음 코드를 셀에 복사합니다.
실행
을 클릭합니다.코드는 청크된 PDF 데이터를 반환합니다.
삭제
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.