[에러노트 / Kubeflow] kfp_server_api.exceptions.ApiException: (400)Reason: Bad Request 해결법
Machine Learning/ML 개발 2021. 10. 9. 02:26반응형
kfp_server_api.exceptions.ApiException: (400)Reason: Bad Request 해결법
분명히 포워드도 다 해줬고, pod들도 정상적으로 동작하고 있는데도 불구하고,
python api에서 experiments run이 되지 않는 문제가 발생했다.
에러 메시지
kfp_server_api.exceptions.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'x-powered-by': 'Express', 'content-type': 'application/json', 'trailer': 'Grpc-Trailer-Content-Type', 'date': 'Fri, 08 Oct 2021 16:22:37 GMT', 'x-envoy-upstream-service-time': '2', 'server': 'istio-envoy', 'transfer-encoding': 'chunked'})
HTTP response body: {"error":"Invalid input error: Invalid resource references for experiment.
ListExperiment requires filtering by namespace.",
"message":"Invalid input error: Invalid resource references for experiment. ListExperiment requires filtering by namespace.",
"code":3,"details":[{"@type":"type.googleapis.com/api.Error",
"error_message":"Invalid resource references for experiment. ListExperiment requires filtering by namespace.",
"error_details":"Invalid input error: Invalid resource references for experiment. ListExperiment requires filtering by namespace."}]}
에러 발생 지점
kfp.Client(...).create_run_from_pipeline_func(...)
# 이외에도, run과 관련된 모든 함수
해결법
kubeflow가 사용자별로 분리된 workspace를 가지게 함에 따라서,
독립 환경의 namespace를 인자로 전달받아야 해당 Workspace의 Owner 자격을 얻어 정상적인 동작이 가능하다고 한다.
import kfp
client = kfp.Client(...) # host등 인자는 개인에 맞게 변경
client.set_user_namespace(namespace="<설정한 NAMESPACE>")
print(client.get_user_namespace())
# 입력한 NAMESPACE가 정상 출력되면 완료
본 설정은 $HOME/.config/kfp/context.json 파일에 기록되므로, 1회만 등록하고나면 추후 재등록을 하지 않아도 된다.
반응형