배치 사이즈와 정확도 관계는 이론적으로는 자료가 많지만 실무에서의 상황은 다양한 실험을 통해 알아야 한다고 생각한다. GPU 환경이나 cuda, python, tensor flow 버전 등 이론에서 고려하는 인자 외 다른 인자도 모두 알아야겠지만, 시장의 변화 속도가 더 빨라서 제품 만들다
뻑
난 경우가 아니라면, 딱히 알아볼 새도 없다. 그래서 틈틈이 시간을 내어 연구한다.
우선, 특정 상황에서의 8배 치 사이즈에서의 학습 로그이다. 보통 인공지능이 짜 주는 학습 스크립트의 경우 최소 60%가 넘는다. 그러나 이런 상황에서는 제품 개발용 실무적 노하우를 알아보기엔 신뢰성이 부족해진다. 누군가 시뮬레이션을 만들고, 또 수많은 실험으로 GPU 사용률에 관계되는 인자들에 대한 상관관계와 그리고 내가 하려고 하는 학습에 대한 점화식을 만들어서 수식에만 대입하면 어느 정도의 하드웨어를 쓰면 될지 궁금하다. 구글은 이미 만들어 놨을 것 같은데 이 데이터가 있으면 학습 요청 수가 확 줄어들 테니 오픈을 안 하는 것일 수도 있고, 아직 안 만들었는데 내가 먼저 해보는 것일 수도 있겠다.
실험에 쓰일 데이터 학습수는 클래스당 765개부터 7360개까지 다양하며, pre-trained class 는 제외했다. 테스트 벤치 스펙은 nvidia H100 CUDA12.4, TF2.15, Python 3.10, RAM 192Gb, GPU RAM 80Gb 다. 모든 에포트를 돌리지는 않고 early stop이 되게 하였다. accuracy는 30% 보다 낮게 나오는 상황 즉, 모델 크기를 35%로 축소(alpha=0.35) 하였다. 이 실험은 통하면 사실,
배치사이즈와 정확도의 상관관계 데이터 1개
를 뽑을 수 있다. 또 다른 실험을 해야 상관관계 데이터를 추가한다. 고작 1개지만, 위대한 여정의 작은 발자국이라 생각(정신승리) 삽질을 시작한다.
6475/23376 ━━━━━━━━━━━━━━━━━━━━ 1:11 4ms/step - accuracy: 0.1649 - loss: [23376/23376 ━━━━━━━━━━━━━━━━━━━━ 108s 4ms/step - accuracy: 0.2034 - loss: 3.1025 [Epoch 2/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 95s 4ms/step - accuracy: 0.2583 - loss: 2.8156
Epoch 3/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2662 - loss: 2.7832
Epoch 4/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2705 - loss: 2.7652
Epoch 5/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 97s 4ms/step - accuracy: 0.2732 - loss: 2.7596
Epoch 6/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2742 - loss: 2.7561
Epoch 7/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2758 - loss: 2.7545
Epoch 8/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 95s 4ms/step - accuracy: 0.2758 - loss: 2.7474
Epoch 9/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2774 - loss: 2.7472
Epoch 10/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2768 - loss: 2.7452
Epoch 11/50 15533/23376 ━━━━━━━━━━━━━━━━━━━━ 31s 4ms/step - accuracy: 0.2775 - loss: 2.744123376/23376 ━━━━━━━━━━━━━━━━━━━━ 95s 4ms/step - accuracy: 0.2583 - loss: 2.8156
Epoch 3/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2662 - loss: 2.7832
Epoch 4/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2705 - loss: 2.7652
Epoch 5/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 97s 4ms/step - accuracy: 0.2732 - loss: 2.7596
Epoch 6/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2742 - loss: 2.7561
Epoch 7/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2758 - loss: 2.7545
Epoch 8/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 95s 4ms/step - accuracy: 0.2758 - loss: 2.7474
Epoch 9/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2774 - loss: 2.7472
Epoch 10/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2775 - loss: 2.7460
Epoch 12/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2791 - loss: 2.7421
Epoch 13/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 94s 4ms/step - accuracy: 0.2785 - loss: 2.7458
Epoch 14/50 23376/23376 ━━━━━━━━━━━━━━━━━━━━ 93s 4ms/step - accuracy: 0.2801 - loss: 2.7441
배치 사이즈를 16으로 늘였다.
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 94s 7ms/step - accuracy: 0.2079 - loss: 3.0723
Epoch 2/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 80s 7ms/step - accuracy: 0.2689 - loss: 2.7464
Epoch 3/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2758 - loss: 2.7078
Epoch 4/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2796 - loss: 2.6875
Epoch 5/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2844 - loss: 2.6750
Epoch 6/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2843 - loss: 2.6688
Epoch 7/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2861 - loss: 2.6620
Epoch 8/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2871 - loss: 2.6586
Epoch 9/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2898 - loss: 2.6498
Epoch 10/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2907 - loss: 2.6451
Epoch 11/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 80s 7ms/step - accuracy: 0.2901 - loss: 2.6464
Epoch 12/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2903 - loss: 2.6457
Epoch 13/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2918 - loss: 2.6370
Epoch 14/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2922 - loss: 2.6412
Epoch 15/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2920 - loss: 2.6393
Epoch 16/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2916 - loss: 2.6376
Epoch 17/50
11688/11688 ━━━━━━━━━━━━━━━━━━━━ 79s 7ms/step - accuracy: 0.2911 - loss: 2.6420
배치 사이즈를 32로 늘였다.
배치 사이즈가 계속 커져서 학습 데이터 수만큼 돼버리면 해당 샘플에 대해서 과적합이 된다. 그러나 뭐 샘플 수 자체가 모수의 크기라면 과적합이 되어도 괜찮다고 생각한다.
5844/5844 ━━━━━━━━━━━━━━━━━━━━ 92s 14ms/step - accuracy: 0.1995 - loss: 3.0936
Epoch 2/50
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.
오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠