반응형


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회만 등록하고나면 추후 재등록을 하지 않아도 된다.

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,