ML.GENERATE_TEXT를 반복적으로 호출하여 할당량 오류 처리

이 튜토리얼에서는 BigQuery bqutil.procedure.bqml_generate_text 공개 저장 프러시저를 사용하여 ML.GENERATE_TEXT 함수 호출을 반복하는 방법을 보여줍니다. 함수를 반복적으로 호출하면 함수에 적용되는 할당량 및 한도를 초과하여 발생하는 재시도 가능한 오류를 해결할 수 있습니다.

GitHub에서 bqutil.procedure.bqml_generate_text 저장 프러시저의 소스 코드를 검토하려면 bqml_generate_text.sqlx를 참조하세요. 저장 프러시저 매개변수 및 사용에 대한 자세한 내용은 리드미 파일을 참조하세요.

이 튜토리얼에서는 다음 작업을 안내합니다.

  • gemini-2.0-flash 모델을 통해 원격 모델 만들기
  • bqutil.procedure.bqml_generate_text 저장 프러시저를 통해 원격 모델 및 bigquery-public-data.bbc_news.fulltext 공개 데이터 테이블을 사용하여 ML.GENERATE_TEXT 함수 호출 반복

필수 권한

이 튜토리얼을 실행하려면 다음 Identity and Access Management (IAM) 역할이 필요합니다.

  • BigQuery 데이터 세트, 연결, 모델을 만들고 사용하려면 BigQuery 관리자 (roles/bigquery.admin)가 필요합니다.
  • 연결의 서비스 계정에 권한 부여: 프로젝트 IAM 관리자(roles/resourcemanager.projectIamAdmin)

이러한 사전 정의된 역할에는 이 문서의 작업을 수행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

  • 데이터 세트 만들기: bigquery.datasets.create
  • 연결을 만들고, 위임하고, 사용합니다. bigquery.connections.*
  • 기본 연결 설정: bigquery.config.*
  • 서비스 계정 권한 설정: resourcemanager.projects.getIamPolicyresourcemanager.projects.setIamPolicy
  • 모델을 만들고 추론을 실행합니다.
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

비용

이 문서에서는 비용이 청구될 수 있는 Trusted Cloud by S3NS구성요소( )를 사용합니다.

  • BigQuery ML: You incur costs for the data that you process in BigQuery.
  • Vertex AI: You incur costs for calls to the Vertex AI model.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용합니다.

Trusted Cloud 신규 사용자는 무료 체험판을 사용할 수 있습니다.

BigQuery 가격 책정에 대한 자세한 내용은 BigQuery 가격 책정을 참조하세요.

Vertex AI 가격 책정에 대한 자세한 내용은 Vertex AI 가격 책정을 참고하세요.

시작하기 전에

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

데이터 세트 생성

모델과 샘플 데이터를 저장할 BigQuery 데이터 세트를 만듭니다.

  1. Trusted Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 탐색기 창에서 프로젝트 이름을 클릭합니다.

  3. 작업 보기 > 데이터 세트 만들기를 클릭합니다.

  4. 데이터 세트 만들기 페이지에서 다음을 수행합니다.

    1. 데이터 세트 IDsample를 입력합니다.

    2. 위치 유형에 대해 멀티 리전을 선택한 다음 US(미국 내 여러 리전)를 선택합니다.

    3. 나머지 기본 설정은 그대로 두고 데이터 세트 만들기를 클릭합니다.

텍스트 생성 모델 만들기

호스팅된 Vertex AI gemini-2.0-flash 모델을 나타내는 원격 모델을 만듭니다.

  1. Trusted Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    CREATE OR REPLACE MODEL `sample.generate_text`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'gemini-2.0-flash');

    쿼리가 완료되는 데 몇 초 정도 걸리며 그 이후에는 generate_text 모델이 탐색기 창의 sample 데이터 세트에 표시됩니다. 이 쿼리에서는 CREATE MODEL 문을 사용하여 모델을 만들므로 쿼리 결과가 없습니다.

저장 프러시저 실행

sample.generate_text 모델 및 bigquery-public-data.bbc_news.fulltext 공개 데이터 테이블을 사용하여 ML.GENERATE_TEXT 함수 호출을 반복하는 bqutil.procedure.bqml_generate_text 저장 프러시저를 실행합니다.

  1. Trusted Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    CALL `bqutil.procedure.bqml_generate_text`(
        "bigquery-public-data.bbc_news.fulltext",   -- source table
        "PROJECT_ID.sample.news_generated_text",  -- destination table
        "PROJECT_ID.sample.generate_text",        -- model
        "body",                                     -- content column
        ["filename"],                               -- key columns
        '{}'                                        -- optional arguments
    );

    PROJECT_ID를 이 튜토리얼에서 사용 중인 프로젝트의 프로젝트 ID로 바꿉니다.

    저장 프러시저는 ML.GENERATE_TEXT 함수의 출력을 포함하는 sample.news_generated_text 테이블을 만듭니다.

  3. 쿼리 실행이 완료되면 sample.news_generated_text 테이블에 재시도 가능한 오류가 포함된 행이 없는지 확인합니다. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    SELECT *
    FROM `sample.news_generated_text`
    WHERE ml_generate_text_status LIKE '%A retryable error occurred%';

    쿼리가 No data to display 메시지를 반환합니다.

삭제

  1. In the Trusted Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.