이 문서에서는 사용자가 엔드포인트를 제공하는 모델을 사용할 때 발생할 수 있는 일반적인 문제에 대한 디버깅 단계를 보여 줍니다. 일반적인 문제에는 엔드포인트가 초기화 또는 시작에 실패할 때 발생하는 오류, 컨테이너와 관련된 빌드 오류 또는 엔드포인트에서 모델을 실행하거나 실행하는 동안 발생하는 문제가 포함될 수 있습니다.
:::tip 배포 문제가 있는 디버깅 전에 유효성을 검사하시겠습니까? 배포 전 유효성 검사부터 시작하여 일반적인 문제가 발생하기 전에 발견합니다. :::
컨테이너 빌드 디버그
Databricks는 워크로드를 제공하는 모델의 디버깅 및 문제 해결을 위해 로그를 검토하는 것이 좋습니다. 로그 및 로그를 보는 방법에 대한 자세한 내용은 모니터 모델 품질 및 엔드포인트 상태를 참조하세요.
작업 영역 UI의 이벤트 로그( 이벤트 탭 클릭)에는 컨테이너 빌드 진행률에 대한 정보가 포함되어 있습니다. 성공적인 컨테이너 빌드는 이벤트 유형 SERVED_ENTITY_CONTAINER_EVENT와 메시지 Container image creation finished successfully를 통해 강조 표시됩니다. 엔드포인트를 만든 후 1시간 후에 빌드 이벤트 또는 메시지가 표시되지 않으면 Databricks 지원에 문의하여 도움을 요청하세요.
빌드가 성공했지만 다른 오류가 발생하면 컨테이너 빌드가 성공한 후 디버그가 표시됩니다. 빌드가 실패하면 컨테이너 빌드 실패 후 디버그를 참조하세요.
컨테이너 빌드 성공 후 디버그
컨테이너가 성공적으로 빌드되더라도 모델을 실행하거나 엔드포인트 자체를 작업하는 동안 문제가 발생할 수 있습니다. 다음 하위 섹션에서는 일반적인 문제와 문제를 해결하는 방법을 자세히 설명합니다.
비고
모델 코드가 MlflowException 오류를 반환하는 경우, 응답 코드는 4xx 응답에 매핑될 것으로 예상합니다. Databricks는 결과 오류 메시지에 따라 해결할 수 있으므로 이러한 모델 코드 오류를 고객으로 인한 오류로 간주합니다.
5xx 오류 코드는 Databricks의 잘못으로 발생한 오류를 전달하기 위해 예약되어 있습니다.
누락된 종속성
컨테이너에서 종속성이 누락되었음을 나타낼 수 있는 다음과 같은 An error occurred while loading the model. No module named <module-name>.오류가 발생할 수 있습니다. 컨테이너 빌드에 포함해야 하는 모든 종속성을 올바르게 표시했는지 확인합니다. 사용자 지정 라이브러리에 특히 주의를 기울이고 .whl 파일이 아티팩트로 포함되어 있는지 확인하십시오.
요청이 엔드포인트로 전송되면 모델이 실패하거나 시간이 초과됩니다.
모델에서 Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference.가 호출될 때 predict()와 같은 오류가 발생할 수 있습니다.
이 오류는 predict() 함수의 코드 문제를 나타낼 수 있습니다. Databricks는 Notebook 내에서 MLflow를 사용하여 모델을 로드하고 호출하는 것을 권장합니다. 이렇게 하면 predict() 함수의 문제가 강조 표시되고 메서드 내에서 오류가 발생하는 위치를 확인할 수 있습니다.
실패한 요청의 근본 원인 분석
엔드포인트에 대한 요청이 실패하는 경우 유추 테이블을 사용하여 근본 원인 분석을 수행할 수 있습니다. 사용하도록 설정된 경우 유추 테이블은 쿼리할 수 있도록 Unity 카탈로그 테이블의 엔드포인트에 대한 모든 요청 및 응답을 자동으로 기록합니다.
- 외부 모델, 프로비전된 처리량 엔드포인트 및 AI 에이전트의 경우 AI 게이트웨이 사용 유추 테이블을 사용하여 제공된 모델 모니터링을 참조하세요.
- 사용자 지정 모델의 경우모델 모니터링 및 디버깅에 대한
유추 테이블을 참조하세요.
유추 테이블을 쿼리하려면 다음을 수행합니다.
- 작업 영역에서 서비스 탭으로 이동하여 엔드포인트 이름을 선택합니다.
-
유추 테이블 섹션에서 유추 테이블의 정규화된 이름을 찾습니다. 예:
my-catalog.my-schema.my-table. - Databricks Notebook에서 다음을 실행합니다.
%sql SELECT * FROM my-catalog.my-schema.my-table - 와 같은
requestresponserequest_time열을 보고 필터링하고status_code요청을 이해하고 결과를 좁힐 수 있습니다.%sql SELECT * FROM my-catalog.my-schema.my-table WHERE status_code != 200 - AI 에이전트에 대한 에이전트 추적을 사용하도록 설정한 경우 자세한 추적을 보려면 응답 열을 참조하세요. AI 에이전트에 대한 유추 테이블 사용을 참조하세요.
작업 영역이 프로비전된 동시성을 초과함
Workspace exceeded provisioned concurrency quota 오류가 발생할 수 있습니다. 프로비전된 동시성에 대한 작업 영역 할당량에 도달했음을 나타냅니다. 동시성 제한에 대한 자세한 내용은 모델 서비스 제한 및 지역을 참조하세요.
사용되지 않는 엔드포인트 를 삭제 하거나 중지 하여 이 할당량을 해제할 수 있습니다.
지역 가용성에 따라 이 제한을 늘릴 수 있습니다. Databricks 계정 팀에 문의하고 작업 영역 ID를 제공하여 동시성 증가를 요청합니다.
작업 영역이 병렬 요청 제한을 초과합니다.
다음과 같은 429 오류가 발생할 수 있습니다: Exceeded max number of parallel requests. Please contact your Databricks representative to increase the limit.
이 제한은 병렬로 보낼 수 있는 최대 요청 수에 대한 작업 영역 제한에 도달했음을 나타냅니다. 이 제한에 대한 자세한 내용은 모델 서비스 제한 및 지역을 참조하세요.
Databricks는 이 제한이 제거 된 경로 최적화 엔드포인트로 이동하는 것이 좋습니다. 경로 최적화 엔드포인트로 이동할 수 없는 경우 유추 요청을 보내는 클라이언트 수를 줄이거나 Databricks 담당자에게 문의하여 할당량 증가를 요청할 수 있습니다.
너무 많은 동시 요청
다음 429 오류가 Too many concurrent requests. Consider increasing the provisioned concurrency of the served entity. 발생할 수 있습니다. 이 오류는 엔드포인트의 현재 프로비전된 동시성이 들어오는 트래픽 볼륨을 처리할 수 없음을 나타냅니다. 엔드포인트에 대해 자동 크기 조정을 사용하도록 설정한 경우 시스템은 증가된 부하를 처리하기 위해 엔드포인트의 구성된 제한까지 추가 동시성을 자동으로 프로비전합니다. 자동 크기 조정을 사용하도록 설정하지 않은 경우 프로비전된 동시성을 수동으로 늘리거나 자동 크기 조정을 사용하여 트래픽 급증을 처리하는 것이 좋습니다.
컨테이너 빌드 실패 후 디버그
이 섹션에서는 빌드가 실패할 때 발생할 수 있는 문제에 대해 자세히 설명합니다.
OSError: [Errno 28] No space left on device
이 오류는 No space left 너무 많은 큰 아티팩트가 불필요하게 모델과 함께 기록되기 때문일 수 있습니다. MLflow에서 불필요한 아티팩트가 모델과 함께 기록되지 않는지 확인하고 축소된 패키지를 다시 배포합니다.
Unity 카탈로그에서 모델 제공과 관련된 Azure Firewall 문제
오류가 표시될 수 있습니다. Build could not start due to an internal error. If you are serving a model from UC and Azure Firewall is enabled, this is not supported by default..
문제를 해결하려면 Databricks 계정 팀에 문의하세요.
GPU 가용성 부족으로 인한 빌드 실패
GPU 공급 및 가용성 제한으로 인해 GPU 빌드가 다음 오류 Build could not start due to an internal error - please contact your Databricks representative.로 인해 실패할 수 있습니다.
문제를 해결하려면 Databricks 계정 팀에 문의하세요. 지역 가용성에 따라 팀은 더 많은 GPU 리소스를 프로비전할 수 있습니다.
설치된 라이브러리 패키지 버전
Databricks는 환경 전체에서 일관되고 재현 가능한 모델 동작을 보장하기 위해 모든 중요한 라이브러리를 모델 종속성으로 정의하는 것이 좋습니다. 빌드 로그에서 올바르게 설치된 패키지 버전을 확인할 수 있습니다.
- MLflow 버전의 경우 지정된 버전이 없는 경우 Model Serving는 최신 버전을 사용합니다.
- 사용자 지정 GPU 서빙을 위해 Model Serving은 공용 PyTorch 및 Tensorflow 설명서에 따라
cuda및cuDNN의 권장 버전을 설치합니다.
필요한 로그 모델 flash-attn
필요한 flash-attn 모델을 로깅해야 하는 경우, Databricks는 flash-attn의 사용자 지정 휠 버전을 사용하는 것을 권장합니다. 그렇지 않다면 ModuleNotFoundError: No module named 'torch'와 같은 빌드 오류가 발생할 수 있습니다.
사용자 지정 휠 버전을 사용하려면 flash-attn, 모든 pip 요구 사항을 목록으로 지정한 후, 이를 mlflow.transformers.log_model 함수의 매개변수로 전달하세요. 또한 flash attn 휠에 지정된 CUDA 버전과 호환되는 pytorch, torch 및 torchvision 버전을 지정해야 합니다.
예를 들어 Databricks는 CUDA 11.8에 다음 버전과 휠을 사용하는 것이 좋습니다.
- 피토르흐 주
- Torch 2.0.1+cu118
- Torchvision 0.15.2+cu118
- Flash-Attn
logged_model=mlflow.transformers.log_model(
transformers_model=test_pipeline,
artifact_path="artifact_path",
pip_requirements=["--extra-index-url https://download.pytorch.org/whl/cu118", "mlflow==2.13.1", "setuptools<70.0.0", "torch==2.0.1+cu118", "accelerate==0.31.0", "astunparse==1.6.3", "bcrypt==3.2.0", "boto3==1.34.39", "configparser==5.2.0", "defusedxml==0.7.1", "dill==0.3.6", "google-cloud-storage==2.10.0", "ipython==8.15.0", "lz4==4.3.2", "nvidia-ml-py==12.555.43", "optree==0.12.1", "pandas==1.5.3", "pyopenssl==23.2.0", "pytesseract==0.3.10", "scikit-learn==1.3.0", "sentencepiece==0.1.99", "torchvision==0.15.2+cu118", "transformers==4.41.2", "https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.8/flash_attn-2.5.8+cu118torch2.0cxx11abiFALSE-cp311-cp311-linux_x86_64.whl"],
input_example=input_example,
registered_model_name=registered_model_name)