juuuding

[캡스톤 B] GPT가 만든 모델 코드, 믿을 수 있을까? - JSON 블록 기반 PyTorch 코드 검증 자동화 시스템 구축 본문

컴퓨터공학/캡스톤

[캡스톤 B] GPT가 만든 모델 코드, 믿을 수 있을까? - JSON 블록 기반 PyTorch 코드 검증 자동화 시스템 구축

jiuuu 2025. 5. 18. 12:05

 

들어가기 전에...

 

아래 깃허브 링크로 가시면, 전체 코드와 서비스 상세 소개 글을 확인할 수 있습니다. 

https://github.com/orgs/highway-bestdriver/repositories

 

 


 

BuildX프로그래밍 지식 없이도 CNN 모델을 만들 수 있는 웹 플랫폼입니다.

사용자는 블록을 쌓듯이 모델을 설계하고,
GPT가 이를 PyTorch 코드로 자동 변환합니다.

그런데 한 가지 의문이 생깁니다.

정말로 GPT가 사용자의 설계와 같은 코드를 만들었을까?”

 

오늘 포스팅에서는 블록으로 만든 모델(JSON)을 기반으로,

GPT가 생성한 코드가 설계대로 만들어졌는지 검증하는 과정을 소개합니다.

 

검증 시스템 순서

 

🔍 Why - 왜 필요할까?

GPT는 때때로 실수합니다.
레이어 순서를 바꾸거나,
하이퍼파라미터 값을 다르게 적용할 수 있습니다.

사용자의 설계 의도와 실제 코드가 다르다면,
모델의 성능도 완전히 달라질 수 있습니다.

 

그래서,
“설계와 코드가 일치하는가?”
이걸 자동으로 검증하는 시스템이 필요했습니다.

 

 

✅ What -  무엇을 검증할까?

총 두 가지를 확인합니다.

  1. 레이어 흐름
    • input → output까지의 연결 순서
    • forward() 코드 흐름과 동일해야 합니다
  2. 하이퍼파라미터
    • epochs, batch size, learning rate 등
    • 코드와 JSON의 값이 정확히 일치해야 합니다

이제 각각의 검증 방식을 살펴보겠습니다.


 

🔧 어떻게 검증할까?

검증 흐름 구조도

 

 

✔️ 레이어 흐름 검증

설계된 모델과 GPT가 만든 코드의 레이어 순서가 같은지 확인합니다.

 

1. JSON 흐름 추적 (DFS) 

 

 

  • 사용자가 만든 블록 설계는 JSON으로 표현됩니다.
  • 각 레이어의 .input 필드를 따라
  • DFS(깊이 우선 탐색) 방식으로 연결 순서를 추적합니다.

이 함수를 적용하면,

 

다음과 같이 사용자가 설계한 순서를 그대로 재현합니다.

 

 

 

2. forward 코드 흐름 파싱

 

 

  • GPT가 생성한 코드를 정규식으로 분석합니다.
  • x = self.xxx(x) 형태를 찾습니다.

      EX) x = self.flatten(x)
             x = self.fc(x)
             x = self.softmax(x)

 

 

→ 정규식으로 forward() 안의 레이어 흐름을 추출하여 실제 코드 실행 순서를 파악합니다. 

 

 

 

3. JSON 흐름과 코드 흐름 비교

 

이처럼 설계 흐름과 코드 흐름이 다르면, 오류로 처리합니다

 

 

따라서...

  • 설계와 다르게 연결된 모델을 즉시 검출합니다. 
  • 사용자 실수나 GPT 오류를 빠르게 알 수 있습니다.

 

✔️ 하이퍼파라미터 검증

JSON과 코드의 학습 설정 값이 같은지 확인합니다.

 

1. 기대값 추출 (JSON)

 

이건 쉽게, 사용자가 설정한 하이퍼파라미터가 저장된 것(JSON 객체)을 그대로 불러오기만 하면 됩니다. 

 

2. 실제값 추출 (PyTorch 코드)

 

→ 변수 정의를 먼저 파싱하고,
→ range(EPOCHS), lr=LEARNING_RATE 등 사용 위치를 찾아 값을 역추적합니다.

 

 

3. 기대값과 실제값 비교

 

 

  • 위에서 추출한 두 하이퍼파라미터 값을 비교합니다. 
  • 숫자를 직접 쓰면 잡지 못하므로
    → 프롬프트에서 무조건 변수를 사용하여 코드를 생성하도록 유도합니다. 

 

 

[최종 결과]

위의 검증 방식을 사용하면 최종 결과는 다음과 같습니다.
이 오류는 하이퍼파라미터는 일치하지만, 레이어 흐름에 오류가 발생했을 때 나오는 결과입니다. 

 


 

 

이와 같은 방식으로 모델이 생성한 코드를 검증해보았습니다. 

 

이 검증 시스템을 통해, 모델 구조와 하이퍼파라미터가 정확히 일치하는지 자동으로 확인할 수 있게 되었습니다. 

 

하지만, 아직 이것이 적용되지 못하는 경우도 존재합니다. 

  • 입력이 다중 레이어인 경우

입력 값이 단순한 x가 아닌, 다른 레이어의 출력 값들이 함께 들어가야 하는 경우, 아직 파싱에 어려움이 있습니다. 

 

따라서, 남은 기간 동안 이러한 검증 처리 방식을 만들어 보고 포스팅 하도록 하겠습니다. 

 

읽어주셔서 감사합니다.