문제 해결 지침
이 문서에서는 프롬프트 흐름 사용과 관련된 질문과 대답을 다룹니다.
흐름 작성 관련 문제
"패키지 도구를 찾을 수 없음" 오류는 코드 우선 환경에 대한 흐름을 업데이트할 때 발생합니다.
코드 우선 환경을 위해 흐름을 업데이트할 때 흐름이 Faiss 인덱스 조회, 벡터 인덱스 조회, 벡터 DB 조회 또는 콘텐츠 안전(텍스트) 도구를 사용하는 경우 다음과 같은 오류 메시지가 표시될 수 있습니다.
Package tool 'embeddingstore.tool.faiss_index_lookup.search' is not found in the current environment.
문제를 해결하려면 다음 두 가지 옵션이 있습니다.
옵션 1
컴퓨팅 세션을 최신 기본 이미지 버전으로 업데이트합니다.
원시 파일 모드를 선택하여 원시 코드 보기로 전환합니다. 그런 다음 flow.dag.yaml 파일을 엽니다.
도구 이름을 업데이트합니다.
도구 새로운 도구 이름 Faiss 인덱스 조회 promptflow_vectordb.tool.faiss_index_lookup.FaissIndexLookup.search 벡터 인덱스 조회 promptflow_vectordb.tool.vector_index_lookup.VectorIndexLookup.search 벡터 DB 조회 promptflow_vectordb.tool.vector_db_lookup.VectorDBLookup.search 콘텐츠 안전(텍스트) content_safety_text.tools.content_safety_text_tool.analyze_text flow.dag.yaml 파일을 저장합니다.
옵션 2
- 컴퓨팅 세션을 최신 기본 이미지 버전으로 업데이트
- 이전 도구를 제거하고 새 도구를 다시 만듭니다.
"해당하는 파일이나 디렉터리가 없습니다" 오류
프롬프트 흐름은 파일 공유 스토리지를 사용하여 흐름의 스냅샷을 저장합니다. 파일 공유 스토리지에 문제가 있는 경우 다음과 같은 문제가 발생할 수 있습니다. 다음은 시도해볼 수 있는 몇 가지 해결 방법입니다.
프라이빗 스토리지 계정을 사용하는 경우 프롬프트 흐름의 네트워크 격리를 참조하여 작업 영역이 스토리지 계정에 액세스할 수 있는지 확인합니다.
스토리지 계정이 공용 액세스를 사용하도록 설정된 경우 작업 영역에
workspaceworkingdirectory
라는 데이터 저장소가 있는지 여부를 확인합니다. 이는 파일 공유 형식이어야 합니다.- 이 데이터 저장소를 가져오지 못한 경우 작업 영역에 추가해야 합니다.
- 이름이
code-391ff5ac-6576-460f-ba4d-7e03433c68b6
인 파일 공유를 만듭니다. - 이름이
workspaceworkingdirectory
인 데이터 저장소를 만듭니다. 데이터 저장소 만들기를 참조하세요.
- 이름이
workspaceworkingdirectory
데이터 저장소가 있지만 해당 형식이fileshare
대신blob
인 경우 새 작업 영역을 만듭니다. Azure Data Lake Storage Gen2에 대해 계층 구조 네임스페이스를 사용하도록 설정하지 않는 스토리지를 작업 영역 기본 스토리지 계정으로 사용합니다. 자세한 내용은 작업 영역 만들기를 참조하세요.
- 이 데이터 저장소를 가져오지 못한 경우 작업 영역에 추가해야 합니다.
흐름이 없습니다
이 문제에는 다음과 같은 여러 가지 이유가 있을 수 있습니다.
스토리지 계정에 대한 공용 액세스가 사용하지 않도록 설정되어 있는 경우에는 스토리지 방화벽에 IP를 추가하거나 스토리지 계정에 연결된 프라이빗 엔드포인트가 있는 가상 네트워크를 통해 액세스를 사용하도록 설정하여 액세스를 보장해야 합니다.
데이터 저장소의 계정 키가 스토리지 계정과 동기화되지 않는 경우가 있습니다. 데이터 저장소 세부 정보 페이지에서 계정 키를 업데이트하여 이 문제를 해결할 수 있습니다.
AI 스튜디오를 사용하는 경우 스토리지 계정은 AI 스튜디오가 스토리지 계정에 액세스할 수 있도록 CORS를 설정해야 하며, 그렇지 않으면 흐름 누락 문제가 표시됩니다. 스토리지 계정에 다음 CORS 설정을 추가하여 이 문제를 해결할 수 있습니다.
- 스토리지 계정 페이지로 이동하여
settings
아래에서Resource sharing (CORS)
을 선택하고File service
탭으로 선택합니다. - 허용된 원본:
https://mlworkspace.azure.ai,https://ml.azure.com,https://*.ml.azure.com,https://ai.azure.com,https://*.ai.azure.com,https://mlworkspacecanary.azure.ai,https://mlworkspace.azureml-test.net
- 허용된 메서드:
DELETE, GET, HEAD, POST, OPTIONS, PUT
- 스토리지 계정 페이지로 이동하여
컴퓨팅 세션 관련 문제
"XXX라는 모듈 없음"으로 인해 실행하지 못했습니다.
컴퓨팅 세션과 관련된 이러한 유형의 오류에는 필수 패키지가 없습니다. 기본 환경을 사용하는 경우 컴퓨팅 세션의 이미지가 최신 버전을 사용하고 있는지 확인합니다. 사용자 지정 기본 이미지를 사용하는 경우 Docker 컨텍스트에 필요한 모든 패키지를 설치했는지 확인합니다. 자세한 내용은 컴퓨팅 세션에 대한 기본 이미지 사용자 지정을 참조하세요.
컴퓨팅 세션에서 사용하는 서버리스 인스턴스는 어디에서 찾을 수 있나요?
컴퓨팅 세션에 사용되는 서버리스 인스턴스는 컴퓨팅 페이지의 컴퓨팅 세션 목록 탭에서 확인할 수 있습니다. 서버리스 인스턴스 관리 방법에 대해 자세히 알아보세요.
사용자 지정 기본 이미지를 사용하여 세션 오류 계산
requirements.txt 또는 사용자 지정 기본 이미지로 컴퓨팅 세션 시작 실패
requirements.txt
또는 flow.dag.yaml
의 사용자 지정 기본 이미지를 사용하여 이미지를 사용자 지정하는 컴퓨팅 세션 지원 pip install -r requirements.txt
를 사용하여 패키지를 설치하는 일반적인 경우 requirements.txt
를 사용하는 것이 좋습니다. Python 패키지보다 종속성이 많은 경우 기본 이미지 사용자 지정에 따라 프롬프트 흐름 기본 이미지 위에 새 이미지 기반을 만들어야 합니다. 그런 다음 flow.dag.yaml
을 사용합니다. 컴퓨팅 세션에서 기본 이미지를 지정하는 방법에 대해 자세히 알아봅니다.
- 임의 기본 이미지를 사용하여 컴퓨팅 세션을 만들 수 없으며 프롬프트 흐름에서 제공하는 기본 이미지를 사용해야 합니다.
promptflow
및promptflow-tools
의 버전이 기본 이미지에 이미 포함되어 있으므로requirements.txt
에 고정하지 않습니다. 이전 버전의promptflow
및promptflow-tools
를 사용하면 예기치 않은 동작이 발생할 수 있습니다.
흐름 실행 관련 문제
추가 조사를 위해 LLM 도구에서 원시 입력 및 출력을 찾으려면 어떻게 해야 하나요?
프롬프트 흐름에서 실행 성공 및 실행 상세 페이지가 있는 흐름 페이지의 출력 섹션에서 LLM 도구의 원시 입력 및 출력을 확인할 수 있습니다. view full output
단추를 선택하여 전체 출력을 확인합니다.
Trace
섹션에는 LLM 도구에 대한 각 요청 및 응답이 포함됩니다. LLM 모델로 전송된 원시 메시지와 LLM 모델의 원시 응답을 확인할 수 있습니다.
Azure OpenAI에서 409 오류를 해결하려면 어떻게 해야 하나요?
Azure OpenAI에서 409 오류가 발생할 수 있는데, 이는 Azure OpenAI의 속도 제한에 도달했음을 의미합니다. LLM 노드의 출력 섹션에서 오류 메시지를 확인할 수 있습니다. Azure OpenAI 속도 제한에 대해 자세히 알아보세요.
가장 많은 시간을 이용하는 노드 식별
컴퓨팅 세션 로그를 확인합니다.
다음 경고 로그 형식을 찾아봅니다.
{node_name}이 {duration}초 동안 실행되었습니다.
예시:
사례 1: 오랫동안 실행되는 Python 스크립트 노드.
이 경우
PythonScriptNode
가 오랫동안(거의 300초) 동안 실행되고 있었음을 알 수 있습니다. 그런 다음 노드 세부 정보를 확인하여 문제가 무엇인지 확인할 수 있습니다.사례 2: 오랫동안 실행되는 LLM 노드.
이 경우 로그에서
request canceled
메시지가 확인되면 OpenAI API 호출이 너무 오래 걸리고 런타임 제한을 초과하기 때문일 수 있습니다.OpenAI API 시간 제한은 네트워크 문제 또는 더 많은 처리 시간이 필요한 복잡한 요청으로 인해 발생할 수 있습니다. 자세한 내용은 OpenAI API 시간 제한을 참조하세요.
몇 초 정도 기다렸다가 요청을 다시 시도합니다. 이렇게 하면 일반적으로 네트워크 문제가 해결됩니다.
다시 시도가 작동하지 않으면
gpt-4-32k
와 같은 긴 컨텍스트 모델을 사용하고 있는지 확인하고max_tokens
에 큰 값을 설정했는지 확인합니다. 그렇다면 프롬프트가 대화형 모드 상한 임계값보다 오래 걸리는 긴 응답을 생성할 수 있으므로 이는 예상된 동작입니다. 이 경우에는 시간 제한 설정이 없는Bulk test
를 시도해 보시기 바랍니다.
로그에서 특정 노드 문제임을 나타내는 항목을 찾을 수 없는 경우 다음을 수행합니다.
- 로그와 함께 프롬프트 흐름 팀(promptflow-eng)에 문의하세요. 근본 원인을 파악하려고 노력하고 있습니다.
흐름 배포 관련 문제
"Microsoft.MachineLearningService/workspaces/datastores/read" 작업을 수행할 수 있는 권한이 부족합니다.
흐름에 인덱스 조회 도구가 포함된 경우 흐름을 배포한 후 엔드포인트는 청크 및 포함이 포함된 MLIndex yaml 파일 또는 FAISS 폴더를 읽으려면 작업 영역 데이터 저장소에 액세스해야 합니다. 따라서 이를 수행하려면 엔드포인트 ID 권한을 수동으로 부여해야 합니다.
작업 영역 범위에 대해 엔드포인트 ID AzureML 데이터 과학자를 부여하거나 "MachineLearningService/workspace/datastore/reader" 작업이 포함된 사용자 지정 역할을 부여할 수 있습니다.
엔드포인트를 사용할 때 업스트림 요청 시간 초과 문제
CLI 또는 SDK를 사용하여 흐름을 배포하는 경우 시간 제한 오류가 발생할 수 있습니다. 기본적으로 request_timeout_ms
는 5000입니다. 최대 5분(300,000ms)까지 지정할 수 있습니다. 다음은 배포 yaml 파일에서 요청 시간 초과를 지정하는 방법을 보여 주는 예입니다. 자세한 내용은 배포 스크립트를 참조하세요.
request_settings:
request_timeout_ms: 300000
OpenAI API가 인증 오류에 도달
Azure OpenAI 키를 다시 생성하고 프롬프트 흐름에 사용된 연결을 수동으로 업데이트하는 경우 키를 다시 생성하기 전에 만든 기존 엔드포인트를 호출할 때 "권한 없음. 액세스 토큰이 누락되었거나, 잘못되었거나, 대상이 잘못되었거나, 만료되었습니다."와 같은 오류가 발생할 수 있습니다.
엔드포인트/배포에 사용되는 연결이 자동으로 업데이트되지 않기 때문입니다. 배포의 키 또는 비밀에 대한 변경은 의도하지 않은 오프라인 작업으로 인해 온라인 프로덕션 배포에 영향을 주지 않도록 하는 수동 업데이트를 통해 수행해야 합니다.
- 엔드포인트가 스튜디오 UI에 배포된 경우 동일한 배포 이름을 사용하여 흐름을 기존 엔드포인트에 다시 배포할 수 있습니다.
- 엔드포인트가 SDK 또는 CLI를 사용하여 배포된 경우 더미 환경 변수 추가와 같은 배포 정의를 일부 수정한 다음
az ml online-deployment update
를 사용하여 배포를 업데이트해야 합니다.
프롬프트 흐름 배포의 취약성 문제
프롬프트 흐름 런타임 관련 취약성의 경우 다음 접근방식을 통해 완화할 수 있습니다.
- 흐름 폴더의 requirements.txt에서 종속성 패키지를 업데이트합니다.
- 흐름에 사용자 지정된 기본 이미지를 사용하는 경우 프롬프트 흐름 런타임을 최신 버전으로 업데이트하고 기본 이미지를 다시 빌드한 다음 흐름을 다시 배포해야 합니다.
관리되는 온라인 배포의 다른 취약성에 대해 Azure Machine Learning은 매월 문제를 해결합니다.
"MissingDriverProgram 오류" 또는 "요청에서 드라이버 프로그램을 찾을 수 없습니다."
흐름을 배포하고 다음 오류가 발생하는 경우 배포 환경과 관련이 있을 수 있습니다.
'error':
{
'code': 'BadRequest',
'message': 'The request is invalid.',
'details':
{'code': 'MissingDriverProgram',
'message': 'Could not find driver program in the request.',
'details': [],
'additionalInfo': []
}
}
Could not find driver program in the request
이 오류를 해결하는 두 가지 방법이 있습니다.
(권장) 사용자 지정 환경 세부 정보 페이지에서 컨테이너 이미지 URI를 찾아 flow.dag.yaml 파일의 흐름 베이스 이미지로 설정할 수 있습니다. UI에서 흐름을 배포하는 경우 현재 흐름 정의 환경 사용을 선택하면 벡 엔드 서비스에서 해당 베이스 이미지를 기반으로 배포에 적합한 사용자 지정된 환경과
requirement.txt
을 만듭니다. Learn more about 흐름 정의에 지정된 환경에 대해 자세히 알아봅니다.사용자 지정 환경 정의에
inference_config
를 추가하여 오류를 해결할 수 있습니다.다음은 사용자 지정된 환경 정의의 예입니다.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
모델 응답이 너무 오래 걸립니다
경우에 따라 배포가 응답하는 데 너무 오래 걸리는 것을 알 수 있습니다. 이 문제가 발생할 수 있는 몇 가지 잠재적인 요인이 있습니다.
- 흐름에 사용되는 모델은 충분히 강력하지 않습니다(예: text-ada 대신 GPT 3.5 사용).
- 인덱스 쿼리가 최적화되지 않아 시간이 너무 오래 걸립니다.
- 흐름에 처리해야 할 단계가 많습니다.
위의 고려 사항으로 엔드포인트를 최적화하여 모델의 성능을 향상시키는 것이 좋습니다.
배포 스키마를 가져올 수 없습니다.
엔드포인트를 배포하고 엔드포인트 세부 정보 페이지의 테스트 탭에서 이를 테스트하려는 경우, 테스트 탭에 배포 스키마를 가져올 수 없습니다가 표시되는 경우, 다음 두 가지 방법을 시도하여 이 문제를 완화할 수 있습니다.
- 엔드포인트 ID에 올바른 권한을 부여했는지 확인합니다. 엔드포인트 ID에 권한을 부여하는 방법에 대해 자세히 알아봅니다.
- 이전 버전 런타임에서 흐름을 실행한 다음 흐름을 배포했기 때문에 배포에서도 이전 버전에 있었던 런타임 환경을 사용했기 때문일 수 있습니다. 런타임을 업데이트하려면 UI에서 런타임 업데이트에 따라 최신 런타임에서 흐름을 다시 실행한 다음 흐름을 다시 배포하세요.
작업 영역 비밀을 나열하기 위한 액세스가 거부되었습니다.
"작업 영역 비밀을 나열하기 위한 액세스가 거부되었습니다."와 같은 오류가 발생하는 경우 엔드포인트 ID에 올바른 권한을 부여했는지 확인합니다. 엔드포인트 ID에 권한을 부여하는 방법에 대해 자세히 알아봅니다.
인증 및 ID 관련 문제
프롬프트 흐름에서 자격 증명이 없는 데이터 저장소를 사용하는 방법
Azure AI Studio에서 자격 증명 없는 스토리지를 사용하려면 기본적으로 다음 작업을 수행해야 합니다.
- 데이터 저장소 인증 유형을 None으로 변경합니다.
- 스토리지에 대한 프로젝트 MSI 및 사용자 Blob/파일 데이터 기여자 권한을 부여합니다.
데이터 저장소의 인증 유형을 None으로 변경
이 부분에서 ID 기반 데이터 인증을 따라 데이터 저장소 자격 증명을 없도록 만들 수 있습니다.
데이터 저장소의 인증 형식을 None으로 변경해야 합니다. 이는 meid_token 기반 인증을 의미합니다. 데이터 저장소 세부 정보 페이지 또는 CLI/SDK에서 변경할 수 있습니다. https://github.com/Azure/azureml-examples/tree/main/cli/resources/datastore
Blob 기반 데이터 저장소의 경우 인증 유형을 변경하고 작업 영역 MSI가 스토리지 계정에 액세스할 수 있도록 설정할 수도 있습니다.
파일 공유 기반 데이터 저장소의 경우 인증 유형만 변경할 수 있습니다.
사용자 ID 또는 관리 ID에 권한 부여
프롬프트 흐름에서 자격 증명이 없는 데이터 저장소를 사용하려면 사용자 ID 또는 관리 ID에 충분한 권한을 부여하여 데이터 저장소에 액세스해야 합니다.
- 작업 영역 시스템이 할당한 관리 ID
Storage Blob Data Contributor
가 스토리지 계정에 있는지 확인합니다Storage File Data Privileged Contributor
. 적어도 읽기/쓰기(삭제 포함) 권한이 필요합니다. - 프롬프트 흐름에서 이 기본 옵션인 사용자 ID를 사용하는 경우 사용자 ID에 스토리지 계정에서 다음 역할이 있는지 확인해야 합니다.
Storage Blob Data Contributor
스토리지 계정에서 적어도 읽기/쓰기(삭제 포함) 권한이 필요합니다.Storage File Data Privileged Contributor
스토리지 계정에서 적어도 읽기/쓰기(삭제 포함) 권한이 필요합니다.
- 사용자가 할당한 관리 ID를 사용하는 경우 관리 ID에 스토리지 계정에서 다음 역할이 있는지 확인해야 합니다.
Storage Blob Data Contributor
스토리지 계정에서 적어도 읽기/쓰기(삭제 포함) 권한이 필요합니다.Storage File Data Privileged Contributor
스토리지 계정에서 적어도 읽기/쓰기(삭제 포함) 권한이 필요합니다.- 한편, 작성 및 테스트 흐름에 프롬프트 흐름을 사용하려는 경우 적어도 스토리지 계정에 사용자 ID
Storage Blob Data Read
역할을 할당해야 합니다.
- 흐름 세부 정보 페이지를 볼 수 없고 프롬프트 흐름을 처음 사용하는 경우 2024-01-01 이전인 경우 작업 영역과 연결된 스토리지 계정에 대해 작업 영역 MSI
Storage Table Data Contributor
를 부여해야 합니다.