TFX 1.0 이하 버전, KubeFlow 상에서 메시지가 너무 커서 실행이 불가능할 때
TFX를 아직 1.0으로 안올리고 있다가, 컴포넌트가 조금 많이 추가되니 InternalServerError: Failed to create a workflow for (): etcdserver: request is too large
라는 에러가 떠서 관련 버그를 찾아보았다.
상황
tfx==0.30.x
tensorflow==2.4.x
tfx.orchestration.kubeflow.kubeflow_dag_runner.KubeflowDagRunner
로 실행시킨 yaml 파일 결과물은 대략 1.8MB 정도.
해결 과정
- https://stackoverflow.com/questions/60468110/kubernetes-object-size-limitations
- etcd, kubeflow 자체에서 메시지 제한이 있고, 컴파일된 파이프라인이 해당 제한을 넘은 것으로 보임
- 그래도 파이프라인 파일이 1.8MB나 되는 것은 너무 커보임
- 파이프라인 파일을 뜯어보니 TFX IR이 약 3만~4만행 넘게 차지하고 있는 상황 (파일 총 5.5만행)
- TFX IR -> https://github.com/tensorflow/community/blob/master/rfcs/20200705-tfx-ir.md
- https://github.com/tensorflow/tfx/issues/3459
- 비슷한 이슈 발견 후 릴리즈 노트 살펴봄
- https://github.com/tensorflow/tfx/blob/master/RELEASE.md
- 1.0.0 릴리즈 노트 내용 중 하나:
Removed the extra node information in IR for KubeflowDagRunner, to reduce size of generated IR.
- 1.0.0 릴리즈 노트 내용 중 하나:
- https://github.com/tensorflow/tfx/blob/eb1053748313408064e26cb64cf9fd5c06d43f2a/tfx/orchestration/kubeflow/kubeflow_dag_runner.py#L329
- 관련 코드 확인..
- 필요한 IR 내용을 제외하고 dehydrate 하는 스텝 확인..
TFX 1.2버전으로 업데이트 후 kubeflow 파이프라인 컴파일 결과물이 1.8MB에서 257KB 정도로 줄어들었다!
August 20, 2021
Tags:
tensorflow
tfx