디버깅 - kfp 네임스페이스 미지정 오류

Kangyeol Kim·2023년 6월 25일
0
  • SDK를 이용해서 Kubeflow pipeline를 만들고 run를 하려던 중에 create_experiment 함수라인에서 아래와 같은 에러를 만났다.

kfp_server_api.exceptions.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'x-powered-by': 'Express', 'content-type': 'application/json', 'date': 'Sun, 25 Jun 2023 12:47:20 GMT', 'content-length': '553', 'x-envoy-upstream-service-time': '4', 'server': 'istio-envoy'})
HTTP response body: {"error":"Invalid input error: Invalid resource references for experiment. ListExperiment requires filtering by namespace.","code":3,"message":"Invalid input error: Invalid resource references for experiment. ListExperiment requires filtering by namespace.","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는 멀티-테넌트 환경에서 작업을 위해서 네임스페이스 단위의 그룹핑 기능을 제공한다. 따라서 experiment를 만들 때는 네임스페이스를 지정해 주어야 한다.
  • 네임스페이스에 대한 지정은create_experiment 함수에서 지정하지는 않고, kfp.Client를 통해 초기에 설정할 수 있다. 따라서 아래와 같이 해결해 주었다.

client = kfp.Client(host=ENDPOINT, cookies=authservice_session)
client.set_user_namespace(namespace=NAMESPACE)
print(client.get_user_namespace())

  • 참고로 위와 같이 세팅된 환경변수는 $HOME/.config/kfp/context.json에 저장된다.

{"namespace": "kubeflow-user-example-com"}

profile
Ph.D. Student @ KAIST / Co-Founder @ Letsur

0개의 댓글