Katib Docker container issue

노하람·2022년 2월 8일
0

아주.. 웃기는 버그를 찾았습니다.(하루종일 해결 못해서 기빠져서 웃깁니다...)

Katib를 통해 하이퍼 파라미터 최적화를 진행하는데,
experiment, suggestion, trials 모두 정상 생성 됐음에도 불구하고
trial이 running 상태에서 아무것도 하지 않는 이슈가 발생한지 꽤 됐습니다.
(저번에도 발생했는데 해결 못하고 있다가 다시 만남, 반갑다 친구야)

kubectl logs, describe로도 아무런 정보를 토해내지 않아서 버그를 파악하려고 애썼는데(대략 아래 순서로 진행..)

Lens를 통해 pod의 기록이 남는 것을 발견했습니다. Lens는 전에 소개드렸듯이 k8s 리소스 관리 툴입니다.
기록을 보니 코드의 argument로 전처리된 데이터 df_me.pkl을 받아와야하는데
경로를 못찾고 있었습니다.

분명 docker run -it moey920/train_predict_model:latest --df_me df_me.pkl --input_width 8 --label_width 7 --shift 3 --model_name ar_lstm 같이 제가 빌드한 이미지에 args로 경로를 그냥 df_me.pkl로 주면 정상적으로 동작하는데 말이죠.
이게 katib spec에서 동일하게 df_me.pkl로 주면 동작이 안됩니다.

해결 방법을 찾으면 이어서 포스팅하겠습니다.

======

원인

도커 이미지를 빌드할 때 Entrypoint로 바로 실행할 python main.py를 지정했더라도, k8s spec을 작성할 때 command에선 반드시 exec를 지정해주어야한다.

해결

"containers": [
                {
                    "name": "tensorflow",
                    "image": "docker.io/moey920/train_predict_model",
                    "command": [
                        "python",
                        "/code/main.py",
                        f"--df_me={df_me}",
                        "--input_width=${trialParameters.inputWidth}",
                        "--label_width=${trialParameters.labelWidth}",
                        "--shift=${trialParameters.shift}",
                        "--model_name=${trialParameters.modelName}",
                    ],
                }
            ]
profile
MLOps, MLE 직무로 일하고 있습니다😍

0개의 댓글