애플리케이션 배포 문제 해결

이 문서에서는 애플리케이션을 배포할 때 발생할 수 있는 오류를 해결하는 방법을 보여줍니다.

사전 빌드된 템플릿 오류

배포 중에 LangchainAgent 템플릿에 문제가 발생하면 이 섹션의 문제 중 하나 때문일 수 있습니다.

모델 빌더 또는 실행 파일 빌더 오류

문제:

다음과 유사한 오류 메시지가 표시됩니다.

AttributeError: 'LangchainAgent' object has no attribute '_model_builder'

또는

AttributeError: 'LangchainAgent' object has no attribute '_runnable_builder'

가능한 원인:

개발 환경에서 1.50.0 이상 버전의 google-cloud-aiplatform을 사용하여 LangchainAgent를 정의했지만 requirements=에서 1.51.0 미만 버전으로 배포하면 이러한 문제가 발생할 수 있습니다. 개발 환경에서 사용 중인 버전을 확인하려면 터미널에서 다음 명령어를 실행합니다.

pip show google-cloud-aiplatform

추천 솔루션:

1.51.0 이하 버전의 google-cloud-aiplatform을 사용하는 경우 추론 엔진을 배포할 때 requirements=에서 1.51.0 이전 버전의 google-cloud-aiplatform을 지정합니다.

1.50.0 버전 이후의 google-cloud-aiplatform을 사용하는 경우 추론 엔진을 배포할 때 requirements=에서 1.50.0 버전 이후의 google-cloud-aiplatform을 지정합니다.

내부 서버 오류

문제:

다음과 유사한 오류 메시지가 표시됩니다.

InternalServerError: 500 Revision XXX is not ready and cannot serve traffic.

안타깝게도 이 오류는 런타임 시 컨테이너와 관련된 모든 문제에 대한 포괄적인 오류이며 발생할 수 있는 여러 오류 중 하나가 원인일 수 있습니다.

가능한 원인

  • LangchainAgent의 더티 상태 이는 추론 엔진에 배포하기 전에 LangchainAgent에서 .set_up()이 호출된 경우에 발생할 수 있습니다.
  • 일관되지 않은 패키지 버전 이는 개발 환경에 설치된 패키지가 추론 엔진의 원격 환경에 설치된 패키지와 다르면 발생할 수 있습니다.

추천 해결 방법

  • LangchainAgent의 더티 상태 추론 엔진에 배포하기 전에 LangchainAgent의 새 인스턴스를 인스턴스화하거나 코드에서 agent.set_up()을 삭제합니다.
  • 일관되지 않은 패키지 사양 직렬화 오류 문제 해결 섹션을 참조하세요.

직렬화 오류

일반적으로 추론 엔진에 배포할 때 '로컬' 및 '원격' 환경이 동기화되어 있는지 확인하는 것이 중요합니다. 추론 엔진에 배포할 때 requirements=를 지정하면 동기화 여부를 확인할 수 있습니다.

직렬화에 문제가 발생하는 경우('pickle' 또는 'pickling'과 관련된 오류는 'serialization' 오류와 동의어임) 이 섹션에 설명된 문제 중 하나가 원인일 수 있습니다.

Pydantic 버전

문제:

다음과 유사한 오류 메시지가 표시됩니다.

PicklingError: Can't pickle <cyfunction str_validator at 0x7ca030133d30>: it's
not the same object as pydantic.validators.str_validator

가능한 원인:

pydantic 패키지가 2.6.4 이전 버전이면 이러한 문제가 발생할 수 있습니다. 사용 중인 버전을 확인하려면 터미널에서 다음 명령어를 실행합니다.

pip show pydantic

추천 솔루션:

터미널에서 다음 명령어를 실행하여 패키지를 업데이트합니다.

pip install pydantic --upgrade

터미널에서 다음 명령어를 실행하여 사용 중인 버전이 2.6.4 이상인지 확인합니다.

pip show pydantic

노트북 인스턴스(예: Jupyter, Colab 또는 Workbench)를 사용하는 경우 런타임을 다시 시작하여 업데이트된 패키지를 사용해야 할 수 있습니다.

Cloudpickle 버전

문제:

다음과 유사한 오류 메시지가 표시됩니다.

AttributeError: Can't get attribute '_class_setstate' on <module 'cloudpickle.cloudpickle'
from '/usr/local/lib/python3.10/site-packages/cloudpickle/cloudpickle.py'>

가능한 원인:

이는 개발 환경과 배포 환경에서 cloudpickle 패키지 버전이 다르면 발생할 수 있습니다. 개발에서 사용 중인 버전을 확인하려면 터미널에서 다음 명령어를 실행합니다.

pip show cloudpickle

추천 솔루션:

추론 엔진을 배포할 때 requirements=를 지정하여 두 환경(즉, 로컬 개발 환경과 원격으로 배포된 추론 엔진 환경)에 동일한 버전의 cloudpickle을 배포합니다.

내부 서버 오류

문제:

다음과 유사한 오류 메시지가 표시됩니다.

InternalServerError: 500 Revision XXX is not ready and cannot serve traffic.

가능한 원인:

이는 추론 엔진에 배포할 때 sys_version=이 개발 환경과 다르면 발생할 수 있습니다.

추천 솔루션:

추론 엔진에 배포할 때 입력 인수에서 sys_version=을 삭제하는 것이 좋습니다. 문제가 여전히 해결되지 않으면 버그 신고를 제출합니다.

Cloud Storage 버킷 오류

배포 시 에이전트를 수집하고 업로드하는 데 사용되는 Cloud Storage 스테이징 버킷에서 문제가 발생하는 경우 다음 문제 중 하나가 원인일 수 있습니다.

권한 오류

추천 솔루션:

기존 버킷을 사용하려면 Vertex AI를 사용하도록 인증된 주 구성원(사용자 또는 서비스 계정)에 버킷에 대한 Storage Admin 액세스 권한이 있는지 확인하고 Google 관리 추론 엔진 서비스 계정에 권한을 부여합니다.

또는 추론 엔진에 배포할 때 새 버킷을 지정하면 됩니다. 이렇게 하면 추론 엔진 클라이언트 SDK에서 필요한 권한으로 버킷을 만듭니다.

문제가 여전히 해결되지 않으면 버그 신고를 제출합니다.

Cloud Storage 버킷 하위 디렉터리가 생성되지 않음

문제:

다음과 유사한 오류 메시지가 표시됩니다.

NotFound: 404 Can not copy from \"gs://[LOCATION]-*/reasoning_engine/reasoning_engine.pkl\" to \"gs://*/code.pkl\", check if the source object and target bucket exist.

시스템이 존재하지 않는 폴더에 복사하려고 시도하면 404 오류가 발생합니다.

가능한 원인:

1.49.0 버전 이전의 google-cloud-aiplatform에서 발생하는 문자열 보간 유형 문제가 원인일 수 있습니다. 이 문제는 이후 버전에서 수정되었습니다. 사용 중인 google-cloud-aiplatform 버전을 확인하려면 터미널에서 다음 명령어를 실행합니다.

pip show google-cloud-aiplatform

추천 솔루션:

터미널에서 다음 명령어를 실행하여 패키지를 업데이트합니다.

pip install google-cloud-aiplatform --upgrade

터미널에서 다음 명령어를 실행하여 1.49.0 이상 버전의 google-cloud-aiplatform을 사용하고 있는지 확인합니다.

pip show google-cloud-aiplatform

노트북 인스턴스(예: Jupyter, Colab 또는 Workbench)를 사용하는 경우 업데이트된 패키지를 사용하려면 먼저 런타임을 다시 시작해야 할 수 있습니다.