AI 엔지니어링 스킬 맵: AI 애플리케이션 구축과 배포
TMT앞서 저희 AI 엔지니어링 역량 지도에 대해 글을 올린 적이 있습니다. 최상위 역량은 (i) AI 애플리케이션 구축과 배포, (ii) 소프트웨어 엔지니어링 기본기, (iii) 코딩 에이전트 활용, (iv) 빌드 방향 설정입니다. 이 글에서는 그중 첫 번째를 자세히 살펴보겠습니다.
AI 애플리케이션을 구축하고 배포하는 데 능숙하다는 것은 다음을 알고 있다는 뜻입니다.
- LLM 기초
- 데이터를 통한 모델 그라운딩
- 에이전틱 시스템 구축
- 평가 주도 개발
- 프로덕션 운영
- 머신러닝 기초
이 역량 지도는 다수의 채용 공고와 구조화된 전문가 인터뷰, 설문 응답을 분석해 만들었습니다.
AI 애플리케이션과 AI가 아닌 소프트웨어의 결정적인 차이는 전자의 출력이 더 예측하기 어렵다는 점입니다. LLM이 무엇을 출력할지, 지도학습 알고리즘이 어떤 예측을 내놓을지 미리 알 수 없습니다. 이런 불확실성 때문에 AI 시스템 구축은 전통적인 소프트웨어 개발보다 훨씬 반복적인 과정이며, 과정을 미리 계획하기도 더 어렵습니다. 숙련된 AI 엔지니어는 소프트웨어를 만들고, 살펴보고, 다음에 무엇을 시도할지 정하는 일을 반복하면서 중간 결과에 크게 좌우되는 일련의 단계를 밟아 나갑니다. 다음에 무엇을 할지 능숙하게 판단할 수 있으면, 신뢰하기 어려운 AI 구성 요소 위에서도 신뢰할 수 있는 소프트웨어 시스템을 만들어 낼 수 있습니다. 그러려면 다음을 알아야 합니다.
LLM 기초. 대규모 언어 모델이 입력을 어떻게 토큰화하고 출력을 어떻게 생성하는지 이해하면, 언제 모델을 믿고 맡겨도 되는지, 언제 실패할 수 있는지 가늠할 수 있습니다. 멀티모달 모델을 언제 써야 하는지, 컨텍스트 윈도에 무엇을 넣을지 어떻게 취사선택할지도 판단할 수 있고, 캐시 적중, 지식 컷오프, 추론 강도(reasoning effort), 샘플링 파라미터를 따져 보거나 도구 호출(tool calling) 같은 특수 기능을 언제 쓸지도 판단할 수 있습니다. 이런 기초를 이해하면 알맞은 모델이나 모델 조합을 고를 수 있고, 필요할 때 파인튜닝이나 모델 자체 호스팅 같은 전문 기법도 적용할 수 있습니다.
데이터를 통한 모델 그라운딩. LLM이 쓸모 있는 출력을 내려면 좋은 입력 컨텍스트가 필요합니다. 벡터 검색을 이용한 RAG는 LLM에 관련 컨텍스트를 제공하려는 초기 시도였고, 이후 데이터로 모델을 그라운딩하는 기법은 크게 늘었습니다. 예를 들어 무엇을 프롬프트에 직접 넣고 무엇을 LLM이 필요할 때 도구로 가져오게 할지 정해야 하고, 벡터 인덱스, 지식 그래프, 고객 레코드 같은 정형 데이터 위의 시맨틱 레이어 가운데 어떤 표현 방식이 데이터와 검색 질의에 맞는지도 정해야 합니다. 텍스트, PDF, HTML, 이미지 같은 문서를 LLM이 바로 쓸 수 있는 입력으로 변환하고, 데이터를 깨끗하고 최신 상태로 유지하는 파이프라인도 설계하게 됩니다. 데이터를 가져오는 데 쓸 수 있는 기법에 어떤 것들이 있는지 알고 있으면, LLM에 관련 컨텍스트를 더 잘 제공할 수 있습니다.
에이전틱 시스템 구축. 에이전틱 시스템은 미리 정해 둔 순서대로 LLM 호출을 실행하는 워크플로부터, LLM이 스스로 다음 단계를 거듭 결정하게 하는 에이전트 하네스 기반 시스템까지 폭이 넓습니다. 어떤 단계를 연결하고 무엇을 병렬화할지, 언제 코드를 쓰고 언제 LLM을 쓸지 같은 아키텍처를 선택해야 하고, 대비책(fallback)을 갖춘 워크플로나 하네스도 설계해야 합니다. 에이전트 루프를 설계할 때는 모델이 호출할 수 있는 도구를 무엇으로 할지(MCP, CLI, 샌드박스 실행 환경 포함), 어떤 메모리 아키텍처를 쓸지, 긴 세션에서 컨텍스트를 어떻게 관리할지, 어떤 작업에 단일 에이전트 대신 멀티 에이전트 오케스트레이션이 필요한지도 결정하게 됩니다. 유망한 프로토타입을 프로덕션에서 쓸 수 있는, 신뢰할 수 있고 안전하며 보안까지 갖춘 에이전트로 발전시키는 일도 필요합니다. 그러려면 가드레일과 적대적 입력을 이해하고, 데이터 유출 같은 핵심 위험을 찾아내 대처하는 방법과 거버넌스도 알아야 합니다.
에이전틱 워크플로는 빠르게 발전하고 있으므로, 음성 에이전트, 컴퓨터 사용(computer-use) 에이전트, 생성형 UI처럼 자신의 애플리케이션 분야와 관련된 최신 기법을 이해해 두면 도움이 됩니다.
평가 주도 개발. 제 경험상 AI 시스템을 정말 잘 만드는 사람을 가르는 가장 중요한 특징은, 규율 잡힌 평가(evals)와 오류 분석 루프를 돌려 개발을 이끌어 갈 수 있느냐입니다. 이렇게 하면 성과가 날 가능성이 높은 방향에 노력을 거듭 집중할 수 있습니다. 다만 프로젝트마다, 심지어 프로젝트 단계에 따라서도 올바른 접근이 크게 달라지기 때문에, 저는 이것이 익히기 까다로운 역량이라고 느꼈습니다.
좋은 평가를 만드는 일은 깊이 있는 기술 역량입니다. 시스템의 트레이스와 출력을 살펴보고 탐색적 데이터 분석을 수행한 뒤, 제품과 비즈니스에 대한 통찰을 결합해 무엇을 측정할지 정하기도 합니다. 결정론적(코드 기반) 평가는 언제 쓰고, LLM 심판(LLM-as-a-judge)은 언제 쓰고, 사람의 검토(human in the loop)는 언제 넣을지 같은 평가 방식의 선택지도 이해해야 하며, 평가 자체를 평가해서 계속 발전시키는 방법도 알아야 합니다. 이렇게 만든 평가는 다시 반복 개발 과정에 반영되어 이후 개발을 이끌고, 진전이 우연에 기대지 않고 체계적으로 이루어지게 합니다.
프로덕션 운영. AI 소프트웨어 운영은 예측 불가능성, 비용, 지연 시간 때문에 전통적인 소프트웨어 운영과 다릅니다. 먼저 실제 사용 환경에서 시스템 성능을 파악할 수 있도록 관측 가능성(observability) 장치를 만드는 방법을 알아야 합니다. 성능을 추적하고, 드리프트를 감지하고, 모델 장애나 적대적 프롬프트 주입 같은 보안 사고에 신속히 대응하게 됩니다. 회귀 테스트와 CI/CD를 갖추는 데는 전통적인 소프트웨어보다 더 많은 통계적 평가가 필요하며, 테스트에 들이는 노력은 실수가 일으킬 위험의 크기에 맞춰 조절해야 합니다. 또한 애플리케이션이 많은 사용자에게 도달할수록, 모델 선택 최적화, 증류(distillation)와 파인튜닝, 에이전틱 워크플로 단순화 같은 기법을 알맞게 조합해 비용과 지연 시간을 최적화하는 방법을 아는 것이 중요합니다.
머신러닝 기초. 최신 LLM은 지도학습과 강화학습을 비롯한 머신러닝 기법으로 만들어집니다. 제가 아는, LLM으로 뭔가를 잘 만드는 엔지니어는 모두 머신러닝과 딥러닝도 어느 정도 깊이 이해하고 있습니다. 게다가 많은 애플리케이션은 여전히 머신러닝을 다룰 줄 알아야 합니다. 다른 사람이 학습시킨 모델을 쓰든 직접 학습시키든 마찬가지입니다. 그러려면 널리 쓰이는 머신러닝과 딥러닝 모델, 그리고 정확도, 학습 속도, 추론 속도 등의 트레이드오프를 알아야 하고, 이런 모델을 학습시키고 평가하는 데 필요한 데이터를 어떻게 다듬을지도 이해해야 합니다. 편향/분산(bias/variance), 오류 분석, 데이터 엔지니어링 같은 머신러닝 개념은 출력이 불확실한 시스템을 다루는 길을 잡아 주는 핵심 사고 틀로서, AI 시스템 개발의 폭넓은 결정을 내리는 데 지금도 중요한 역할을 합니다.
AI 시스템을 잘 구축하고 배포하려면 배울 것이 많습니다. 그만큼 기술적 깊이가 상당한 분야입니다. 하지만 하나씩 배울 때마다 AI 엔지니어링 실력이 늘고, 더 흥미로운 애플리케이션을 만들 수 있게 됩니다. 이 역량들을 든든하게 뒷받침하는 것이 소프트웨어 엔지니어링입니다. 이 주제는 앞으로 올릴 글에서 다루겠습니다.