AI 모델은 소프트웨어인가? – 저수준 기술적 관점
I’m happy to help translate the article, but I don’t have the full text of the post you’d like translated. Could you please paste the content you want translated (excluding the source line you already provided)? Once I have the text, I’ll translate it into Korean while preserving the original formatting, markdown, and technical terms.
Background
저는 최근 dev.to에 작은 언어 모델과 큰 언어 모델을 테스트한 경험을 기록한 글을 올렸습니다. 저는 소프트웨어 엔지니어, 개발자, 프로그래머, 코더가 아니라 엔지니어링 기술자입니다. dev.to가 소프트웨어 분야 종사자를 위한 플랫폼이다 보니 AI가 정말 소프트웨어인지, 그리고 여기서 AI 관련 글을 올려야 하는지 고민하게 되었습니다.
요즘 AI는 소프트웨어와 너무 얽혀 있어서 이상한 질문처럼 보이기도 합니다. 일상적인 대화에서는 “예”라고 답합니다. 대형 언어 모델(LLM)과 소형 언어 모델(SLM)은 엔지니어가 만들고, 소프트웨어 파이프라인을 통해 배포되며, 프로그램에 의해 실행됩니다. 하지만 시스템 프로그래머, 컴파일러 작성자, 하드웨어 설계자의 관점에서는 이 질문이 결코 사소하지 않습니다. AI 모델이 정확히 무엇이며, 무엇을 포함하고 있는지, 그리고 기술적인 소프트웨어 정의를 만족하는지에 대한 물음입니다.
What Is Software?
하드웨어 및 시스템 설계의 관점에서 소프트웨어는 실행 가능한 로직—프로세서가 실행할 수 있는 명령어 시퀀스(머신 코드, 바이트코드 또는 인터프리터가 해석하는 소스)입니다. 이는 제어 흐름을 구현합니다:
- 분기
- 루프
- 호출 및 반환
CPU나 가속기가 실행할 수 있는 명령 스트림으로 해석되는 모든 것은 소프트웨어에 해당합니다. 반대로, 단순히 데이터를 저장하는 파일(애플리케이션에 번들되어 있더라도)은 이 정의에 진정으로 부합하지 않습니다.
AI 모델이란?
가장 순수한 의미에서, 훈련된 소형 혹은 대형 언어 모델은 일반적으로 .safetensors, .gguf, .pth와 같은 확장자를 가진 파일 형태로 배포됩니다. 파일 내부에는 훈련 과정에서 학습된 가중치와 편향을 포함한 거대한 다차원 숫자 배열이 들어 있습니다. 이 숫자들은 고정된 수학 함수를 매개변수화(parameterize) 합니다: 뉴런이 다른 뉴런에 얼마나 강하게 영향을 미칠지, 특징을 얼마나 가중할지, 그리고 신호가 레이어를 통해 어떻게 전파되는지를 정의합니다.
핵심 특성
- 모델 파일에는 제어 흐름이 포함되지 않음—조건문, 반복문, “만약 X이면 Y”와 같은 명령이 없습니다.
- 이것은 알고리즘이 아니라, 다른 곳에 존재하는 알고리즘을 매개변수화한 것입니다.
- safetensors와 같은 포맷은 원시 데이터와 메타데이터만을 저장하도록 의도적으로 설계되었으며, 원격 코드 실행 공격을 방지하기 위해 임베디드 실행 코드를 명시적으로 금지합니다. 이러한 설계 선택은 모델이 실행 가능한 아티팩트가 아니라 관성 데이터(inert data)로 취급되어야 함을 강조합니다.
실행 및 런타임
CPU는 .gguf 파일을 해석할 수 없으며, GPU는 드라이버 없이는 실행할 수 없습니다; 파일에 실행 권한을 부여(chmod +x)하고 바로 실행할 수도 없습니다. 출력을 얻으려면 모델을 추론 엔진에 로드해야 합니다—C++, Python, Rust 등으로 작성된 소프트웨어로, 모델의 아키텍처를 알고 텐서 연산을 수행하며 작업을 스케줄링하고 메모리를 관리합니다.
행렬을 곱하고, 활성화 함수를 적용하고, 캐시를 관리하는 모든 로직은 모델이 아니라 이 런타임에 존재합니다. 동일한 모델 파일이라도 다음에 따라 크게 다른 방식으로 동작할 수 있습니다:
- 런타임 구현 방식
- 하드웨어(CPU, GPU, 가속기)
- 정밀도 또는 양자화 방식
이러한 의존성은 **데이터(모델)**와 그 모델을 실행하는 소프트웨어(추론 엔진) 사이에 명확한 경계를 그립니다.
신경망은 데이터와 코드 사이의 전통적인 경계를 흐리게 합니다. 일반 프로그램에서는 동작이 조건문과 반복문에 명시적으로 인코딩됩니다. 신경망에서는 동작이 수치 가중치에 암묵적으로 인코딩됩니다: 수백만 개의 숫자를 미세 조정하면 수천 줄의 코드를 재작성하여 소프트웨어 출력을 바꾸는 것과 같은 방식으로 시스템의 출력을 바꿀 수 있습니다.
그럼에도 불구하고 가중치는 어떤 값을 사용할지를 설명할 뿐, 그 값을 어떻게 계산할지는 설명하지 않습니다. 알고리즘—즉 “어떻게” 하는지는 고정되어 외부에 존재하며, 가중치는 그 알고리즘 안의 계수에 불과합니다. 그래서 두 개의 서로 다른 런타임이 동일한 모델을 로드해도 완전히 다른 실행 전략을 사용하면서도 동일한 결과를 낼 수 있습니다. 소프트웨어가 실행 방식을 결정하고, 모델은 매개변수를 제공합니다.
함의
이 모델들이 소프트웨어라는 연관성은 주로 가장 흔히 사용되는 응용 프로그램—Claude Opus, Qwen, Copilot 같은 개발자‑보조 도구—에서 비롯됩니다. 그러나 소스 코드를 생성하는 것은 범용 통계 모델의 한 응용에 불과합니다. 모델이 파이썬 코드를 작성하든, 언어를 번역하든, 단백질 구조를 예측하든, 이미지를 분류하든 내부 구조는 변하지 않습니다. 코드를 출력하는 모델은 코드 조각이 들어 있는 CSV 파일만큼이나 “소프트웨어”가 아닙니다.
모델 파일을 고려하고 체크섬을 계산해 보세요—바이트를 전혀 건드리지 않은 상태로. 이제 주변 스택만 바꿔 보세요:
- PyTorch를
llama.cpp로 교체 - CUDA에서 CPU로 이동
- fp32에서 int4로 양자화
- AVX2에서 AVX‑512로 전환
모델 자체는 동일하지만, 지연 시간, 메모리 사용량, 심지어 수치 결과까지도 몇 배에서 몇 천 배까지 차이가 날 수 있습니다. 바뀐 유일한 것은 실행 로직이며, 이는 모델 자체가 소프트웨어가 아님을 확인시켜 줍니다.
실제로 모델은 다른 소프트웨어 구성 요소와 마찬가지로 버전 관리, 배포, 캐시, 배치, 롤백이 이루어집니다. 저장소에 보관되고, 호환성 제약을 가지며, 회귀를 모니터링합니다. 하지만 그것은 소프트웨어가 아닙니다.
결론
AI 모델은 고립된 상태에서는 데이터에 불과합니다—수학적 함수의 매개변수를 인코딩한 훈련된 수치적 산물입니다. 실행 가능한 로직, 제어 흐름, 혹은 명령을 포함하고 있지 않습니다. 오직 추론 엔진(소프트웨어)이 그 숫자를 해석할 때 비로소 모델은 소프트웨어 시스템의 일부가 됩니다.
이 구분은 정확성, 보안, 감사, 그리고 형식적 추론에 있어 중요합니다. 현대 AI가 마법 같은 알고리즘을 대체하는 것이 아니라, 전통적인 코드에 의해 평가되는 학습된 매개변수로 손으로 작성한 규칙을 대체한다는 점을 상기시켜 줍니다.
따라서 스스로 질문을 제기해 본 결과, SLM이나 LLM은 소프트웨어가 아니라 훈련된 숫자 집합이며, 실행 가능한 코드에 의해 해석될 때에만 소프트웨어 시스템의 일부가 된다는 결론에 이르게 됩니다.