그래픽카드 교체 성능 비교 - 판정이 두 번 뒤집힌 이유
처음 방향 판정도, 나중 추가구매 판정도 서로 다른 이유로 틀렸습니다 — 벤치마크를 읽는 방식 자체가 문제였습니다
그래픽카드를 다른 브랜드 제품으로 교체하면서, 새 카드에 맞는 실행 방식을 골라야 했습니다.
후보가 두 갈래였는데, 처음엔 그중 하나가 확실히 낫다고 판단했습니다. 그런데 이 판단이 방향 자체가 반대였다는 게 곧 드러났고, 그 뒤로도 판정이 한 번 더 뒤집혔습니다. 정리하면서 왜 이런 일이 반복됐는지 짚어봤습니다.
첫 판정 — 방향이 반대였다
새 카드로 넘어오면서 두 실행 방식 중 하나를 골라야 했습니다. 참고할 만한 외부 자료를 찾아 비교했더니, 지금 쓰는 속도 향상 기법(다음 토큰을 미리 여러 개 예측해두는 방식)이 한쪽 방식에서는 잘 안 먹힌다는 결론이 나왔습니다.
이 결론대로면 그 기법을 포기하는 게 맞았습니다. 그런데 다음 날 다시 들여다보니 정반대였습니다. 실제로는 그 기법이 아예 지원되지 않는 게 아니라, 정확성 자체가 깨지는(출력이 쓰레기값으로 나오는) 문제였습니다.
원인은 참고했던 성능 수치를 잘못 읽은 데 있었습니다. 인용한 두 숫자 중 하나가 지금 쓰는 것과 다른 종류의 모델(계산량이 훨씬 적은 구조) 결과였는데, 이름이 비슷해서 같은 모델로 착각했습니다. 어떤 계산으로 역산해보니 그 숫자는 지금 쓰는 모델 구조로는 물리적으로 나올 수 없는 값이었고, 그제야 오독이 드러났습니다.
방향을 바로잡고 나서 실제로 배포까지 갔습니다. 카드 한 장으로 예전 두 장과 비슷하거나 더 나은 처리 속도가 나왔고, 배치 크기 같은 세부 설정도 함께 튜닝해서 실측으로 확인했습니다. 이 단계까지는 판정이 안정된 것처럼 보였습니다.
두 번째 판정 — 추가 구매를 검토하다 또 뒤집혔다
며칠 뒤, 지금 카드에 하나를 더 보태거나 다른 카드를 추가로 사는 게 이득인지 다시 검토할 일이 생겼습니다. 이번엔 외부 벤치마크 수치를 여러 개 모아 비교표까지 만들었습니다.
그런데 표를 다시 훑어보다가 근거 칸이 통째로 비어 있는 항목을 발견했습니다. 그 항목이 인용한 원본 자료의 핵심 근거 네 가지 중 세 가지가, 이미 우리 쪽 실측으로 반증된 내용이었습니다.
더 근본적인 문제도 함께 드러났습니다. 카드 간 처리 속도 차이를 메모리 대역폭 비율로 환산해서 비교하고 있었는데, 이 환산식은 지금 쓰는 속도 향상 기법을 켠 상태에서는 성립하지 않았습니다. 이 기법을 켜면 다음 토큰 계산이 대역폭에 발목 잡히지 않는 구간이 생기는데, 환산식은 그걸 반영하지 못해서 한쪽 카드는 과소평가하고 다른 쪽은 과대평가하는 식으로 양방향으로 틀렸습니다.
같은 날 외부에서 새로 찾은 실측 자료를 대조해보니 또 다른 결함이 나왔습니다. 참고한 외부 벤치마크 대부분이 "입력 문맥 길이"를 통제하지 않은 채 측정된 자료였습니다. 문맥이 길어질수록 처리 속도가 크게 떨어지는 걸 감안하지 않은 숫자를, 실제로는 훨씬 긴 문맥을 쓰는 우리 작업에 그대로 대입하고 있었던 겁니다.
세 번째 확인 — 다른 사람에게 검토를 맡겼더니 또 고칠 점이 나왔다
이 정도로 정리했다고 생각했는데, 다른 AI에게 같은 자료를 다시 검토시켰더니 세 군데를 더 정정받았습니다.
하나는 모델 구조 차이였습니다. 지금 운영 중인 모델과 검토 후보 카드를 비교한 수치가, 실제로는 계산량이 훨씬 큰 다른 구조의 모델 기준이었습니다. 결론(추가 구매 보류)은 바뀌지 않았지만, "근거 없음"이라는 판정 이유 자체를 고쳐 써야 했습니다.
다른 하나는 오독의 방향이었습니다. 순수 연산 성능(속도 향상 기법을 끈 상태)끼리 비교할 때는 대역폭 환산식이 여전히 유효했는데, 앞서 "환산식이 통째로 무효"라고 단정했던 게 과했습니다. 무효인 건 그 기법을 켠 구간에 한정된 얘기였습니다.
세 번째는 아예 근거 자체가 무너진 항목이었습니다. 특정 언어가 섞여 나오는 현상을 양자화 정밀도 탓으로 돌렸는데, 같은 정밀도로 돌리는 다른 모델에서는 그 현상이 전혀 없었습니다. 이미 손에 있던 반증 자료를 놓치고 있었던 겁니다.
결국 정리한 방법 — 저비용 직접 실험
검토를 반복할수록 외부 벤치마크를 더 정교하게 읽는 쪽으로 힘을 쏟게 됐는데, 매번 새로운 결함이 나왔습니다. 그래서 방향을 바꿨습니다.
이미 주문해뒀던 고가의 추가 카드는 반품하기로 하고, 대신 지금 가진 카드로 비용이 거의 안 드는 직접 실험(정밀도를 한 단계 올렸을 때 실제로 무엇이 얼마나 좋아지는지를 며칠 안에 직접 재보는 실험)부터 하기로 했습니다.
카탈로그와 외부 벤치마크를 아무리 정교하게 대조해도, 우리 작업 조건(문맥 길이·모델 구조·속도 향상 기법 사용 여부)과 정확히 일치하는 자료는 애초에 존재하지 않았습니다. 반면 직접 실험은 조건이 항상 우리 작업과 정확히 같습니다.
일반화한 교훈
돌아보면 첫 번째 오판과 두 번째 오판은 겉으로는 비슷해 보여도 뿌리가 달랐습니다. 첫 번째는 참고 자료를 잘못 짝지은 단순 오독이었고, 두 번째는 참고 자료 자체는 맞았지만 우리 작업 조건과 안 맞는 걸 그대로 대입한 문제였습니다.
두 오판을 겪고 나서 하드웨어나 제품을 비교할 때 스스로 점검하는 항목이 늘었습니다. 인용하는 수치가 정말 비교하려는 대상과 같은 조건(같은 모델 구조, 같은 부가 기법 사용 여부, 같은 작업 조건)에서 나온 값인지부터 확인합니다.
비교 공식이나 환산식을 쓸 때는, 그 공식이 성립하는 전제 조건이 무엇인지 먼저 확인합니다. 조건이 하나라도 바뀌면(이번엔 속도 향상 기법 사용 여부) 공식 자체가 깨질 수 있다는 걸 이번에 배웠습니다.
그리고 판정이 짧은 시간에 두 번 이상 뒤집힌다면, 그건 세 번째 검토가 필요하다는 신호로 받아들이기로 했습니다. 카탈로그 비교로 답이 안 나올 때는, 계속 더 정교하게 비교하기보다 저비용으로 직접 재보는 쪽이 더 빨리 답에 닿았습니다.