Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

학습 관련 문의 2가지. #8

Open
kittyLunar opened this issue Sep 4, 2023 · 2 comments
Open

학습 관련 문의 2가지. #8

kittyLunar opened this issue Sep 4, 2023 · 2 comments

Comments

@kittyLunar
Copy link

kittyLunar commented Sep 4, 2023

안녕하세요. KOCLIP 학습 진행 도중 의문점이 생겨 질문을 드립니다.

  1. 학습을 진행하면 Loss 와 Eval Loss가 항상 동일합니다. (Learning Rate는 계속 줄어듬)
    저의 데이터만 그런게 아니라, 예시로 있는 coco 데이터도 동일합니다.
    이게 정상적인 학습이 맞는건지,, 확인 요청 드립니다.

1-1 . KoCLIP 에서 제공해주는 coco 데이터와 train.sh 를 이용하여 학습

  • Eval Loss 는 Epoch 2부터 계속 동일. 그냥 Loss 는 Epoch 3부터 동일

09/04/2023 11:01:46 - INFO - main - ***** Running training *****
09/04/2023 11:01:46 - INFO - main - Num examples = 413915
09/04/2023 11:01:46 - INFO - main - Num Epochs = 40
09/04/2023 11:01:46 - INFO - main - Instantaneous batch size per device = 64
09/04/2023 11:01:46 - INFO - main - Total train batch size (w. parallel & distributed) = 64
09/04/2023 11:01:46 - INFO - main - Total optimization steps = 258680
Epoch... (1/40 | Loss: 4.158902168273926, Learning Rate: 4.8750189307611436e-05)
Epoch... (1/40 | Eval Loss: 4.158883094787598)
Epoch... (2/40 | Loss: 4.158882141113281, Learning Rate: 4.7500190703431144e-05)
Epoch... (2/40 | Eval Loss: 4.1588826179504395)
Epoch... (3/40 | Loss: 4.158883094787598, Learning Rate: 4.625019209925085e-05)
Epoch... (3/40 | Eval Loss: 4.1588826179504395)
Epoch... (4/40 | Loss: 4.158883094787598, Learning Rate: 4.5000189857091755e-05)
Epoch... (4/40 | Eval Loss: 4.1588826179504395)
Epoch... (5/40 | Loss: 4.158883094787598, Learning Rate: 4.375019125291146e-05)
Epoch... (5/40 | Eval Loss: 4.1588826179504395)

1-2. 준비한 학습용 데이터와 train.sh 를 이용하여 학습

  • Loss 와 Eval loss 모두 Epoch 1부터 계속 동일 (Epoch 4의 Eval loss 다름)

08/31/2023 15:16:15 - INFO - main - ***** Running training *****
08/31/2023 15:16:15 - INFO - main - Num examples = 2474242
08/31/2023 15:16:15 - INFO - main - Num Epochs = 40
08/31/2023 15:16:15 - INFO - main - Instantaneous batch size per device = 64
08/31/2023 15:16:15 - INFO - main - Total train batch size (w. parallel & distributed) = 64
08/31/2023 15:16:15 - INFO - main - Total optimization steps = 1546400
Epoch... (1/40 | Loss: 4.158883094787598, Learning Rate: 4.8750029236543924e-05)
Epoch... (1/40 | Eval Loss: 4.1588826179504395)
Epoch... (2/40 | Loss: 4.158883094787598, Learning Rate: 4.750003063236363e-05)
Epoch... (2/40 | Eval Loss: 4.1588826179504395)
Epoch... (3/40 | Loss: 4.158883094787598, Learning Rate: 4.625003202818334e-05)
Epoch... (3/40 | Eval Loss: 4.1588826179504395)
Epoch... (4/40 | Loss: 4.158883094787598, Learning Rate: 4.500002978602424e-05)
Epoch... (4/40 | Eval Loss: 4.158883094787598)
Epoch... (5/40 | Loss: 4.158883094787598, Learning Rate: 4.375003118184395e-05)
Epoch... (5/40 | Eval Loss: 4.1588826179504395)
Epoch... (6/40 | Loss: 4.158883094787598, Learning Rate: 4.250002893968485e-05)
Epoch... (6/40 | Eval Loss: 4.1588826179504395)
Epoch... (7/40 | Loss: 4.158883094787598, Learning Rate: 4.125003033550456e-05)
Epoch... (7/40 | Eval Loss: 4.1588826179504395)
Epoch... (8/40 | Loss: 4.158883094787598, Learning Rate: 4.000003173132427e-05)
Epoch... (8/40 | Eval Loss: 4.1588826179504395)
Epoch... (9/40 | Loss: 4.158883094787598, Learning Rate: 3.875002948916517e-05)
Epoch... (9/40 | Eval Loss: 4.1588826179504395)
Epoch... (10/40 | Loss: 4.158883094787598, Learning Rate: 3.750003088498488e-05)
Epoch... (10/40 | Eval Loss: 4.1588826179504395)

이렇게 25 에폭까지 돌리다가 도저히 아닌 것 같아서 종료 했습니다.

  1. configuration 파일 및 weight 파일 저장
    현재 train.sh 및 run.py 구성으로 학습을 진행하면
    에폭을 돌 때 마다
    Configuration saved in /home/test/koclip/checkpoint/config.json
    Model weights saved in /home/test/koclip/checkpoint/flax_model.msgpack

이렇게 항상 같은 경로에 파일을 덮어쓰게 되는데
항상 모든 경우에 덮어 쓰게 되는건지 아니면, 최적의 케이스가 발견되면 그때만 덮어쓰게 되는건지 궁금합니다.

답변 주시면 감사하겠습니다!

@jaketae
Copy link
Owner

jaketae commented Sep 4, 2023

@kittyLunar 님, 안녕하세요.

  1. 학습을 진행하면 Loss 와 Eval Loss가 항상 동일합니다. (Learning Rate는 계속 줄어듬)

에폭 1-3에서는 로스가 변하는 것으로 보아 코드의 문제는 아닌 것 같고, learning rate가 너무 작게 설정된 것 같습니다. train.sh를 보니 디폴트가 5e-5로 설정된 것 같은데, 더 높여보면 결과가 달라지지 않을까 추측합니다.

  1. configuration 파일 및 weight 파일 저장

코드를 보니 매 에폭마다 덮어 쓰도록 되어 있는 것 같습니다 (pointer). Validation loss가 더 낮을 때만 덮어쓰도록 로직을 짤 수 있을 것 같네요.

@kittyLunar
Copy link
Author

@jaketae 님 답변 감사합니다.

제공해주신 train.sh 와 사용하신 coco dataset을 이용하여 작업을 한 결과입니다.

learning rate 를 조금씩 높이면서 테스트 해 보았는데
최초 설정된 5e-5 부터 1e-5, 1e-4, 1e-3, 1e-2, 1e-1(0.1)
모두 다 특정값으로 수렴 후 계속 동일한 값을 보였고
0.5로 설정을 하였을 때

아래와 같은 변화가 있었습니다.

4.158893585205078
4.1588850021362305
4.158884048461914
4.158883094787598
4.159670352935791

4.158877372741699
4.158883094787598
4.158924102783203
4.158883094787598
4.158883094787598

4.1593732833862305
4.158883094787598
4.158908843994141
4.15887975692749
4.158883094787598

4.158883094787598
4.158883094787598
4.158883094787598
4.1588850021362305
4.158050060272217

4.158908843994141

다만. 이러한 변화가 유의미한 변화인가? 에 대해서는 의문점이 들더라구요
왜냐면 4.158 까지는 동일하고 그 뒤 소수점 자리가 대부분 8,9 에서 왔다 갔다 하니까요.

그리고 learning rate 0.5도 너무 큰 값이 아닌가 라는 생각도 들구요.

아무래도 KoCLIP에 대한 reference가 많이 없다 보니 CLIP에서 유사한 상황이 있나 싶어서 좀 찾아보았는데
CLIP에서도 동일한 현상을 보이는 경우가 종종 보이더라구요

github CLIP Issue 1
github CLIP Issue 2
github CLIP Issue 3

하지만, 어디에도 이 부분에 대한 대답은 아직 발견하지 못했습니다. ㅠ

이 현상은 KoCLIP의 문제가 아니라 CLIP 자체의 문제이고, 이런게 아마 KoCLIP 학습시에도
그대로 재현이 되는게 아닐까 라는 생각이 듭니다.

@jaketae 님은 학습시
Loss값이 특정값에 수렴하는 저러한 현상이 나타나지 않으셨었나요?

혹시, 발생하였다면, 어떻게 해결을 하셨는지도 질문 드립니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants